Delphi 7 a 13 y C++ Builder Sin DLL

sgcPDF, una biblioteca PDF en Object Pascal puro para Delphi y C++ Builder

Crea, edita, visualiza, renderiza, extrae, cifra, firma, tacha contenido y valida archivos PDF con componentes escritos enteramente en Object Pascal. No hay ninguna DLL que distribuir ni ningún motor PDF externo: el analizador, el escritor, las fuentes, los decodificadores de imagen, los renderizadores y la criptografía se compilan dentro de tu aplicación. El núcleo se ejecuta en Windows, Linux, macOS, iOS y Android, con un control visor VCL, un visor FireMonkey y un renderizador ráster para servidores. Se incluye el código fuente completo.

Código fuente completo
Windows, Linux, macOS, iOS & Android
Delphi 7 → 13, C++ Builder
Edición .NET en NuGet
Cero dependencias externas
20 componentes sgcPDF_*.pas PDF 1.0 a 2.0, lectura y escritura, en Object Pascal puro.
Crear TsgcPDFDocument
Editar TsgcPDFEditor
Visualizar TsgcPDFViewerControl
Extraer TsgcPDFTextExtractor
Firmar PAdES B-B to B-LTA
PDF/A & PDF/UA TsgcPDFAValidator
Tachar TsgcPDFRedactor
20 Componentes de la paleta Documento, editor, visores, extractores, firma
0 DLL que distribuir Analizador, renderizador, fuentes y criptografía en Pascal
5 Sistemas operativos Windows, Linux, macOS, iOS, Android
8 Niveles de conformidad PDF/A PDF/A-1, 2 y 3 (niveles a y b), PDF/A-4 y 4f, más PDF/UA-1 y PDF/UA-2

Tres cosas que conviene saber primero

Nada que instalar en la máquina de destino

sgcPDF no envuelve PDFium, Ghostscript, un servidor COM ni ninguna otra biblioteca nativa. El análisis, la escritura, la incrustación y subconjunto de fuentes, la decodificación de imágenes, el renderizado, el cifrado y la firma están implementados en las unidades sgcPDF_*.pas, de modo que tu ejecutable es todo el despliegue.

Las unidades del núcleo no tienen dependencia de VCL ni de FMX, de modo que el mismo código se ejecuta en una herramienta de consola, un servicio de Windows, un demonio de Linux o un servidor web.

Alcance de plataformas

Qué partes se ejecutan dónde

La creación, la edición, la extracción de texto e imágenes, los formularios, el cifrado, las firmas, el tachado de contenido, PDF/A y el renderizador ráster se compilan para Windows y Linux64, y para macOS, iOS y Android. El renderizador GDI, el exportador y los controles visores VCL son solo para Windows, y TsgcPDFViewerFMX tiene como destino Windows, macOS, iOS y Android. En .NET, los controles de visor están disponibles para WinForms, WPF y Avalonia.

Firmas avanzadas

PAdES a través de sgcSign, firma básica incorporada

sgcPDF firma y verifica archivos PDF por sí solo con un certificado PFX. Para los niveles PAdES baseline B-B, B-T, B-LT y B-LTA, y para claves alojadas en tarjetas inteligentes, el almacén de certificados de Windows o HSM en la nube, el puente opcional TsgcPDFPAdESSigner utiliza los proveedores de claves de sgcSign, que se licencia por separado.

Una biblioteca para todo el ciclo de vida del PDF

Desde la primera página que escribes hasta el archivo firmado, archivado y con los datos sensibles tachados que entregas, cada paso se ejecuta en la misma base de código Object Pascal.

Crear: Documentos desde código, HTML o un lienzo

Páginas, texto en las 14 fuentes estándar o fuentes TrueType y OpenType incrustadas y en subconjunto, imágenes (JPEG, PNG, BMP, TIFF), líneas, curvas, degradados, tablas que fluyen entre páginas, códigos de barras y QR, anotaciones y comentarios con respuestas en hilo, marcadores y capas de contenido opcional. Los usuarios finales también pueden añadir, editar y responder anotaciones con el ratón, directamente en los visores. TsgcPDFHTMLRenderer convierte HTML con CSS en PDF paginado, y TsgcPDFCanvas junto con la reproducción de EMF convierten código de dibujo existente.

Ver las funciones →

Editar: Modifica archivos que no escribiste

Marcas de agua, encabezados, pies de página, números de página y sellos, combinar y dividir, extraer, insertar, eliminar, rotar y reordenar páginas. El guardado incremental añade una nueva revisión al archivo original, lo que mantiene válidas las firmas anteriores.

Ver las funciones →

Visualizar y renderizar: visores VCL, FMX, WinForms, WPF y Avalonia, más un renderizador de servidor

Un control visor VCL con miniaturas, esquema, panel de comentarios, selección de texto, búsqueda, relleno de formularios e impresión, un visor FireMonkey para Windows, macOS, iOS y Android con zoom por rectángulo, visores .NET para WinForms, WPF y Avalonia, y un renderizador ráster en Object Pascal puro que convierte páginas en PNG en servidores Windows y Linux sin GDI.

Ver las funciones →

Extraer: Texto, posiciones e imágenes

Texto plano por página o de todo el documento, fragmentos de texto con coordenadas, fuente y tamaño, y las imágenes de una página decodificadas a PNG, JPEG o BMP. Los decodificadores cubren Flate, LZW, ASCII85, RunLength, JPEG (baseline y progresivo), JPEG 2000, CCITT G3/G4 y JBIG2.

Ver las funciones →

Proteger y firmar: Cifrado, firmas, tachado de contenido

Cifrado con contraseña RC4 40/128, AES-128 y AES-256, cifrado por certificado (clave pública), firmas digitales con campos visibles y sellos de tiempo, PAdES B-B, B-T, B-LT y B-LTA a través del puente sgcSign, verificación de firmas y tachado real que elimina el contenido en lugar de cubrirlo.

Ver las funciones →

Cumplir: PDF/A, PDF/UA, PDF etiquetado, Factur-X

Salida PDF/A-1, PDF/A-2 y PDF/A-3 en niveles a y b, PDF/A-4 y PDF/A-4f, con un validador incorporado, PDF etiquetado con árbol de estructura y texto alternativo, salida y comprobaciones PDF/UA-1 y PDF/UA-2, archivos incrustados con relaciones PDF/A-3 y PDF/A-4f, e incrustación de facturas electrónicas Factur-X, ZUGFeRD y XRechnung.

Ver las funciones →

Preimpresión: cuadros de página, imposición, marcas

Cuadros de página (Media, Crop, Bleed, Trim y Art), páginas de otros documentos colocadas como formularios para la imposición, marcas de corte, de sangrado y de registro, colores Separation y DeviceN, vista previa de sobreimpresión e intención de salida PDF/X, en Delphi y .NET.

Ver las funciones →

Unas pocas líneas de Delphi

Cada muestra de esta página procede de un programa compilado con las fuentes de sgcPDF y ejecutado. Las coordenadas están en puntos PDF (1/72 de pulgada), con el origen en la esquina inferior izquierda de la página.

procedure CreateHelloPDF(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.Info.Title := 'Hello sgcPDF';
    // A4 portrait: 595 x 842 points, origin at the bottom left corner
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawTextColor('Hello sgcPDF', 50, 780, sfHelveticaBold, 24, 0, 0.2, 0.6);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    oPage.DrawText('A PDF written in pure Pascal.', 50, 740, sfHelvetica, 12);
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;
procedure StampExistingPDF(const AInput, AOutput: string);
var
  oEditor: TsgcPDFEditor;
  oWatermark: TsgcPDFWatermarkOptions;
begin
  oEditor := TsgcPDFEditor.Create;
  try
    oEditor.LoadFromFile(AInput);
    oWatermark.Text := 'CONFIDENTIAL';
    oWatermark.Font := sfHelveticaBold;
    oWatermark.FontSize := 48;
    oWatermark.Rotation := 45;
    oWatermark.Opacity := 0.3;
    oWatermark.R := 0.5;
    oWatermark.G := 0.5;
    oWatermark.B := 0.5;
    oEditor.AddWatermarkAllPages(oWatermark);
    oEditor.AddPageNumbers(sfHelvetica, 10, 'Page %d of %d');
    oEditor.SaveToFile(AOutput);
  finally
    oEditor.Free;
  end;
end;
procedure PrintAllText(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  i: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(AFileName);
    for i := 0 to oPDF.PageCount - 1 do
      WriteLn(string(oPDF.ExtractTextW(i)));
  finally
    oPDF.Free;
  end;
end;
procedure RenderPageToPNG(const APDFFile, APNGFile: string; ADPI: Integer);
var
  oPDF: TsgcPDFDocument;
  oRenderer: TsgcPDFRendererRaster;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(APDFFile);
    oPage := oPDF.Pages[0];
    // pure Pascal rasterizer: no GDI, runs on Windows and Linux servers
    oRenderer := TsgcPDFRendererRaster.Create;
    try
      oRenderer.RenderPageToPNG(oPDF.Parser, oPage.PageDict,
        Round(oPage.Width * ADPI / 72), Round(oPage.Height * ADPI / 72),
        APNGFile);
    finally
      oRenderer.Free;
    end;
  finally
    oPDF.Free;
  end;
end;
procedure CreateTicketPDF(const aFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
  oSymbol: TsgcPDFBarcodeSymbol;
begin
  oPDF := TsgcPDFDocument.Create(nil);
  oSymbol := TsgcPDFBarcodeSymbol.Create;
  try
    oPDF.Info.Title := 'Ticket';
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawText('Ticket 2026-001', 50, 780, sfHelveticaBold, 24);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol.Symbology := bcCode128;
    oSymbol.Text := 'TKT-2026-001';
    oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, $000000, $FFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol.Symbology := bcQRCode;
    oSymbol.QRErrorLevel := qrecQ;
    oSymbol.Text := 'https://www.esegece.com';
    oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, $000000, $FFFFFF);
    oPDF.SaveToFile(aFileName);
  finally
    oSymbol.Free;
    oPDF.Free;
  end;
end;

Dibuja el código de barras como gráficos vectoriales directamente sobre la página. Unidades: sgcPDF_Document, sgcPDF_Barcodes, sgcPDF_Barcode_Symbol. Consulta TsgcPDFBarcodeSymbol y la guía de códigos de barras.

#include <System.hpp>
#include "sgcPDF_Document.hpp"
#include "sgcPDF_Barcodes.hpp"
#include "sgcPDF_Barcode_Symbol.hpp"

void __fastcall CreateTicketPDF(const String aFileName)
{
  TsgcPDFDocument *oPDF = new TsgcPDFDocument(NULL);
  TsgcPDFBarcodeSymbol *oSymbol = new TsgcPDFBarcodeSymbol();
  try
  {
    oPDF->Info->Title = "Ticket";
    TsgcPDFPage *oPage = oPDF->AddPage(595, 842);
    oPage->DrawText("Ticket 2026-001", 50, 780, sfHelveticaBold, 24);
    oPage->DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol->Symbology = bcCode128;
    oSymbol->Text = "TKT-2026-001";
    oSymbol->DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol->Symbology = bcQRCode;
    oSymbol->QRErrorLevel = qrecQ;
    oSymbol->Text = "https://www.esegece.com";
    oSymbol->DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);
    oPDF->SaveToFile(aFileName);
  }
  __finally
  {
    delete oSymbol;
    delete oPDF;
  }
}

Compilado con las cabeceras de C++ Builder generadas a partir de los fuentes de sgcPDF. Consulta el tema TsgcPDFBarcodeSymbol y las notas de C++ Builder.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.Info.Title = "Ticket";
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Ticket 2026-001", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.5);

            // Code 128 barcode in a 250 x 60 point box, black on white
            TsgcPDFBarcodeSymbol oSymbol = new TsgcPDFBarcodeSymbol();
            oSymbol.Symbology = TsgcPDFBarcodeType.bcCode128;
            oSymbol.Text = "TKT-2026-001";
            oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);

            // QR Code in a 120 x 120 point box
            oSymbol.Symbology = TsgcPDFBarcodeType.bcQRCode;
            oSymbol.QRErrorLevel = TsgcPDFQRErrorLevel.qrecQ;
            oSymbol.Text = "https://www.esegece.com";
            oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);

            oDoc.SaveToFile("ticket.pdf");
        }
    }
}

La clase .NET no depende de WinForms ni de GDI, así que también funciona en servidores y en herramientas de consola. Consulta las diferencias de la API .NET.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        // Create a one page A4 document and save it
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Hello from sgcPDF", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.0);
            oPage.DrawText("Created with sgcPDF .NET.", 50, 740, TsgcPDFStandardFont.sfHelvetica, 12);
            oDoc.SaveToFile("hello.pdf");
        }

        // Load it again and extract the text of every page
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.LoadFromFile("hello.pdf");
            for (int i = 0; i < oDoc.PageCount(); i++)
                Console.WriteLine(oDoc.ExtractTextW(i));
        }
    }
}
TsgcPDFBarcodeControl mostrando los símbolos Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, QR Code, DataMatrix, PDF417 y GS1-128
Un solo control de código de barras, once simbologías, entre ellas QR Code, DataMatrix y PDF417

20 componentes en la paleta de sgcPDF

Colócalos en un formulario o un módulo de datos, o créalos en código. Cada componente también se puede usar sin formulario, desde aplicaciones de consola y servicios.

Todos los componentes

Prueba y licencias

sgcPDF se licencia por separado, desde €249 para un solo desarrollador. Cada licencia incluye código fuente completo, 1 año de actualizaciones y un 50% al 70% de descuento de renovación. Para evaluarlo primero, descarga la prueba gratuita. sgcPDF también forma parte de sgcUI Enterprise y del pack All-Access.

sgcPDF

€249

Licencias Single, Team y Site disponibles.

  • Los 20 componentes y las unidades sgcPDF_*.pas
  • Delphi 7 a 13 y C++ Builder
  • Windows, Linux, macOS, iOS y Android
  • Código fuente completo
  • 1 año de actualizaciones

sgcPDF .NET

€249

Licencias Single, Team y Site disponibles.

  • NuGet: esegece.sgcPDF
  • .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10
  • Código fuente completo
  • 1 año de actualizaciones

sgcPDF para .NET

sgcPDF también está disponible para .NET como un port en C# totalmente gestionado, con los mismos nombres de clase que la biblioteca Delphi. Se distribuye como paquetes NuGet para .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 y .NET 10, sin DLL nativa.

esegece.sgcPDF

La biblioteca: modelo de documento, analizador, escritor, editor, núcleo de renderizado, fuentes, imágenes, formularios, firmas, cifrado, extracción de texto e imágenes, preimpresión, PDF/A (incluido PDF/A-4) y PDF/UA-2.

esegece.sgcPDF.WinForms

Complemento Windows Forms: renderizador GDI y lienzo, reproducción de EMF, exportación de páginas a imágenes, y los controles TsgcPDFViewerControl (con anotaciones interactivas y respuestas a comentarios), TsgcPDFThumbnailView y TsgcPDFOutlineView, con cuadros de página y una herramienta de medición.

esegece.sgcPDF.Wpf

Visor WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView y TsgcWpfPDFOutlineView, con modos de zoom, zoom por rectángulo, selección de texto, búsqueda, enlaces, cuadros de página y la herramienta de medición. Las anotaciones y los campos de formulario se muestran.

esegece.sgcPDF.Avalonia

Visor Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView y TsgcAvaloniaPDFOutlineView, con las mismas funciones de visualización que el visor WPF y además zoom por pellizco.

esegece.sgcPDF.sgcSign

Puente opcional con sgcSign .NET: TsgcPDFPAdESSigner firma en PAdES B-B, B-T, B-LT y B-LTA con cualquier proveedor de claves de sgcSign.

dotnet add package esegece.sgcPDF
dotnet add package esegece.sgcPDF.WinForms
dotnet add package esegece.sgcPDF.Wpf
dotnet add package esegece.sgcPDF.Avalonia
dotnet add package esegece.sgcPDF.sgcSign

Cada paquete también se distribuye como edición Community gratuita con el sufijo .Community, por ejemplo dotnet add package esegece.sgcPDF.Community. Ambas ediciones tienen las mismas funciones. La edición Community es gratuita para particulares y organizaciones con menos de 1 millón de euros de facturación bruta anual y no más de 5 desarrolladores, y muestra un breve aviso al iniciar. La edición registrada elimina el aviso e incluye la licencia comercial.

Ver en NuGet Descargas .NET

sgcPDF forma parte de sgcUI Enterprise

sgcPDF pertenece a la suite sgcUI de componentes para Delphi y C++ Builder y está incluido en la edición sgcUI Enterprise, junto con el resto de productos sgcUI. También está disponible como paquete individual. Los precios están en la página de precios de sgcUI y en la página de precios de sgcPDF.

sgcReports

Diseñador y motor de informes que exporta los informes terminados a PDF mediante sgcPDF.

Explorar sgcReports →

sgcGrid

Cuadrícula de datos de alto rendimiento para Delphi y C++ Builder.

Explorar sgcGrid →

sgcCharts

Gráficos para paneles e informes.

Explorar sgcCharts →

sgcDashboard

Mosaicos, KPI y diseños para paneles.

Explorar sgcDashboard →

Ayuda en línea: introducción, inicio rápido, instalación e instalación de .NET.

Otros productos de eSeGeCe

Combina sgcPDF con nuestras otras bibliotecas de componentes para Delphi y C++ Builder.

sgcSign

Firmas digitales empresariales. XAdES, PAdES, CAdES y ASiC con 10 proveedores de claves y 21 perfiles de país de la UE.

Más información →

sgcWebSockets

Componentes empresariales de WebSocket, HTTP/2, MQTT, AMQP y WebRTC para Delphi, C++ Builder y .NET.

Más información →

sgcHTML

Componentes HTML y de interfaz de usuario del lado del servidor para Delphi y C++ Builder, construidos sobre Bootstrap y htmx.

Más información →

sgcCrypto

Criptografía moderna en Object Pascal puro: AES-GCM, SHA-3, Ed25519, X.509 y post-cuánticos ML-KEM y ML-DSA.

Más información →
3,000+Desarrolladores
20+Años
761+Componentes
30+Integraciones de API
5Plataformas
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso

PDF sin la DLL

Crea, visualiza, firma y archiva archivos PDF con el código Delphi o C++ Builder que ya tienes.