sgcPDF Matriz de funciones

Todo lo que hace sgcPDF, agrupado por tarea. Cada función está implementada en Object Pascal en las unidades sgcPDF_*.pas y se entrega con el código fuente completo. Las muestras de código de esta página se compilaron con las fuentes de sgcPDF y se ejecutaron.

Creación

14 funciones

Edición

7 funciones

Extracción

5 funciones

Formularios

3 funciones

Preimpresión

7 funciones

.NET

5 paquetes NuGet

Creación

FunciónDetalles
PáginasCualquier tamaño y orientación de página, A4, Letter o personalizado, y rotación de página.
TextoLas 14 fuentes PDF estándar y texto en color, con ajuste de párrafo mediante el lienzo y los renderizadores HTML.
Fuentes incrustadasTrueType, OpenType (contornos TrueType y CFF) y colecciones TrueType, incrustadas y en subconjunto automáticamente, con mapas Unicode ToUnicode para que el texto se pueda copiar y buscar.
Escrituras complejasKerning y ligaduras, formas de unión árabes mediante GSUB, y el algoritmo bidireccional Unicode para texto de derecha a izquierda.
Texto CJKTexto en chino, japonés y coreano mediante fuentes TrueType y colecciones TrueType incrustadas.
ImágenesJPEG, PNG con alfa, BMP y TIFF (incluidas imágenes de fax CCITT), con máscaras suaves.
Gráficos vectorialesLíneas, rectángulos, círculos, elipses, curvas Bezier, polígonos, patrones de trazo, terminaciones y uniones de línea, transparencia y degradados.
TablasTablas con encabezados, bordes, relleno de celdas y colores que continúan entre páginas.
Códigos de barrasCode 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, código QR, DataMatrix (ECC200) y PDF417, dibujados como vectores. Los controles TsgcPDFBarcodeControl (VCL) y TsgcPDFBarcodeFMX (FireMonkey) los muestran en formularios, los guardan en PNG o SVG y los dibujan en una página PDF mediante Symbol.DrawToPDF.
Anotaciones y enlacesNotas adhesivas, texto libre, resaltado, subrayado y tachado, líneas y flechas, cuadrados y círculos, tinta a mano alzada y sellos, además de enlaces a URL y a páginas. Se generan flujos de apariencia, de modo que las anotaciones se muestran en Adobe Acrobat, en los navegadores y en otros visores.
Respuestas a comentariosLas respuestas adjuntas a cualquier anotación forman una conversación en hilo, cada respuesta con su propio autor, fecha y contenido.
Marcadores y capasMarcadores anidados (esquema) y grupos de contenido opcional (capas) que los lectores pueden mostrar u ocultar.
HTML a PDFTsgcPDFHTMLRenderer: encabezados, párrafos, estilos CSS en línea, listas, tablas, imágenes, enlaces, saltos de página, encabezados, pies de página y números de página.
Lienzo y EMF a PDFTsgcPDFCanvas registra las llamadas de dibujo en contenido PDF, y los metarchivos EMF se reproducen como vectores PDF, de modo que el código de informes y gráficos existente produce salida PDF.

HTML a PDF

procedure HTMLToPDF(const APDFFile: string);
var
  oHTML: TsgcPDFHTMLRenderer;
begin
  oHTML := TsgcPDFHTMLRenderer.Create(nil);
  try
    oHTML.PageWidth := 595;
    oHTML.PageHeight := 842;
    oHTML.FooterText := 'Page {page} of {pages}';
    oHTML.HTMLToPDFFile(
      '<html><head><style>h1 { color: #003366 }</style></head><body>' +
      '<h1>Invoice 2026-001</h1>' +
      '<table><tr><th>Item</th><th>Amount</th></tr>' +
      '<tr><td>Consulting</td><td>299.00</td></tr></table>' +
      '</body></html>', APDFFile);
  finally
    oHTML.Free;
  end;
end;

Edición

FunciónDetalles
Marcas de agua y sellosMarcas de agua de texto con fuente, tamaño, rotación, color y opacidad, en una página o en todas.
Encabezados, pies, números de páginaTexto de encabezado y pie de página y números de página con un formato como Page %d of %d.
Operaciones de páginaCombinar documentos, dividir, extraer rangos de páginas, insertar, eliminar, rotar y reordenar páginas.
Guardado incrementalLos cambios se anexan al archivo original como una nueva revisión, lo que mantiene válidas las firmas digitales anteriores.
Anotaciones existentesLas anotaciones de un PDF existente se cargan como objetos tipados con autor, fecha, respuestas y geometría. Se pueden editar en código o en el visor y guardar, o llamar a SaveIncremental para añadir los cambios sin tocar los bytes originales, de modo que las firmas existentes permanezcan intactas.
Salida compactaFlujos de objetos y flujos de referencia cruzada para archivos más pequeños, además de TsgcPDFOptimizer para eliminar duplicados y objetos no utilizados y reducir la resolución de las imágenes.
Archivos grandesLos desplazamientos son de 64 bits de extremo a extremo y los objetos se cargan bajo demanda desde un flujo, por lo que se pueden abrir y guardar archivos de más de 2 GB.

Renderizado y visores

FunciónDetalles
Visor VCLTsgcPDFViewerControl con desplazamiento, modos de zoom, navegación de páginas, selección y copia de texto, búsqueda con resaltado, relleno de campos de formulario, navegación de enlaces e impresión, además de TsgcPDFThumbnailView y TsgcPDFOutlineView.
Visor FireMonkeyTsgcPDFViewerFMX dibuja mediante el lienzo FMX en Windows, macOS, iOS y Android. El zoom por rectángulo (SelectionMode psmZoom, OnMarqueeZoom) hace zoom a un rectángulo trazado con el ratón o con una pulsación larga y arrastre.
Visores .NETTsgcPDFViewerControl para WinForms, TsgcWpfPDFViewer para WPF y TsgcAvaloniaPDFViewer para Avalonia, cada uno con vistas de miniaturas y de esquema. Los visores WPF y Avalonia ofrecen modos de zoom, Ctrl+rueda y zoom por rectángulo (pellizco en Avalonia), selección y copia de texto, búsqueda con resaltado, enlaces y navegación por el esquema, cuadros de página y la herramienta de medición. Muestran anotaciones y campos de formulario, pero no los editan.
Anotaciones interactivasEn Delphi VCL y FMX, C++Builder y .NET WinForms, los usuarios finales crean anotaciones con el ratón: notas adhesivas, texto libre, resaltado, subrayado y tachado sobre el texto, líneas y flechas, rectángulos y elipses, tinta a mano alzada y sellos. Las seleccionan, mueven, redimensionan, editan y eliminan. Al hacer clic en una nota se abre una ventana emergente con el autor, la fecha, el contenido y las respuestas, donde se puede editar y responder. Los visores lanzan los eventos OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete y OnAnnotationSelect.
Panel de comentariosTsgcPDFCommentsView (VCL) y TsgcPDFCommentsViewFMX muestran todas las anotaciones por página con autor, fecha, contenido y respuestas en hilo, sincronizados con el visor.
Renderizador ráster para servidoresTsgcPDFRendererRaster es un rasterizador en Object Pascal puro que renderiza páginas a píxeles o PNG sin GDI, en Windows y Linux.
Renderizador GDI y exportaciónRenderiza a un mapa de bits o a un contexto de dispositivo en Windows, y exporta páginas y miniaturas a BMP, PNG o JPEG con TsgcPDFExporter.
Modelo gráficoEspacios de color DeviceGray, DeviceRGB, DeviceCMYK, indexado, ICCBased y Lab, sombreados axiales y radiales, patrones de mosaico, máscaras suaves, opacidad de mezcla y XObjects de formulario.
FuentesLos programas de fuentes TrueType, CFF, OpenType y Type 1 incrustados se renderizan a partir de sus contornos, con las codificaciones estándar y fuentes CID Identity-H.
Decodificadores de imagenFlate, LZW, ASCII85, ASCIIHex, RunLength, JPEG (baseline y progresivo, CMYK), JPEG 2000, CCITT grupo 3 y 4, y JBIG2.

Extracción

FunciónDetalles
TextoTexto de página o texto de todo el documento, con mapeo Unicode de fuentes incrustadas y CID.
Posiciones de textoTsgcPDFTextExtractor devuelve cada fragmento de texto con X, Y, nombre de fuente y tamaño de fuente.
BúsquedaBuscar texto en una página o en el documento.
ImágenesTsgcPDFImageExtractor enumera las imágenes de una página, incluidas las imágenes en línea y las de los XObjects de formulario, y las decodifica a PNG, JPEG o BMP.
Metadatos y adjuntosInformación del documento, metadatos XMP, marcadores, capas y archivos incrustados.

Formularios

FunciónDetalles
Crear formulariosCampos de texto, casillas de verificación, botones de radio, cuadros combinados, listas y botones con flujos de apariencia.
Rellenar y aplanarEstablece los valores de los campos en código o en el visor, y luego aplana el formulario en contenido de página estático.
FDF y XFDFImporta y exporta datos de formulario como FDF y XFDF.

Seguridad y firmas

FunciónDetalles
Cifrado con contraseñaRC4 de 40 y 128 bits, AES-128 y AES-256 (revisiones 5 y 6), con contraseña de usuario y de propietario y banderas de permiso. Los archivos cifrados se descifran al cargarlos.
Cifrado por certificadoCifrado de clave pública para uno o más certificados de destinatario (adbe.pkcs7.s4 y adbe.pkcs7.s5).
Firmas digitalesFirma con un certificado PFX, campos de firma visibles o invisibles, SHA-256, SHA-384 y SHA-512, sellos de tiempo RFC 3161 y sellos de tiempo de documento.
PAdES a través de sgcSignTsgcPDFPAdESSigner produce firmas ETSI.CAdES.detached en los niveles B-B, B-T, B-LT y B-LTA, con datos de validación DSS, usando cualquier proveedor de claves de sgcSign (PEM, PFX, PKCS#11, almacén de certificados de Windows, HSM en la nube). sgcSign se licencia por separado.
VerificaciónTsgcPDFSignatureVerifier comprueba la integridad, la cobertura del rango de bytes, el certificado del firmante y la cadena de certificados de cada firma.
TachadoTsgcPDFRedactor elimina texto a nivel de glifo, píxeles de imagen, trazados vectoriales y anotaciones bajo una región o que coincidan con un texto, añade una superposición y puede eliminar los metadatos. El texto eliminado no se puede extraer de la salida.
Texto a contornosTsgcPDFTextOutliner sustituye cada glifo por un trazado vectorial con la misma posición, color y tamaño, en el contenido de la página, los form XObjects, los patrones de mosaico, las fuentes Type3 y las apariencias de anotaciones, y después elimina las fuentes que quedan sin uso. El archivo se imprime y se ve igual pero ya no necesita ninguna fuente, lo que conviene a imprentas, RIP y licencias de fuente que prohíben incrustarlas. El texto en fuentes no incrustadas se convierte con la fuente sustituta del sistema que usaría un visor, y el texto invisible se elimina. El texto ya no se puede seleccionar ni buscar.

Cifrado con contraseña AES-256

procedure CreateEncryptedPDF(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.AddPage(595, 842).DrawText('Secret', 50, 780, sfHelveticaBold, 24);
    // user password opens the file, owner password grants full rights
    oPDF.SetEncryption(emAES_256, 'user123', 'owner456');
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;

Firmar con un certificado PFX

procedure SignPDF(const AInput, AOutput: string);
var
  oSigner: TsgcPDFSignatureHandler;
begin
  oSigner := TsgcPDFSignatureHandler.Create;
  try
    oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
    oSigner.Reason := 'Document approval';
    oSigner.Location := 'Barcelona';
    oSigner.HashAlgorithm := shaSHA256;
    // visible signature field on page 1: Left, Bottom, Right, Top
    oSigner.SetField('Signature1', 0, 50, 50, 250, 100);
    oSigner.SignDocument(AInput, AOutput);
  finally
    oSigner.Free;
  end;
end;

PAdES a través del puente sgcSign

procedure SignPAdES(const AInput, AOutput: string);
var
  oKey: TsgcPEMKeyProvider;
  oSigner: TsgcPDFPAdESSigner;
begin
  oKey := TsgcPEMKeyProvider.Create(nil);
  oSigner := TsgcPDFPAdESSigner.Create(nil);
  try
    // any sgcSign key provider: PEM, PFX, PKCS#11, Windows store, cloud HSM
    oKey.LoadFromFile('signer.pem', 'signer.key');
    oSigner.KeyProvider := oKey;
    // paBB, paBT (timestamp), paBLT and paBLTA (long term validation)
    oSigner.Level := paBB;
    // signature field and appearance through the sgcPDF handler
    oSigner.Handler.SetField('Signature1', 0, 350, 50, 550, 110);
    oSigner.Handler.SignerName := 'John Smith';
    oSigner.Handler.Reason := 'Approved';
    oSigner.SignPDFFile(AInput, AOutput);
    oSigner.KeyProvider := nil;
  finally
    oSigner.Free;
    oKey.Free;
  end;
end;

Tachar un nombre y un área

procedure RedactFile(const AInput, AOutput: string);
var
  oRedactor: TsgcPDFRedactor;
  vOptions: TsgcPDFRedactionOptions;
begin
  oRedactor := TsgcPDFRedactor.Create;
  try
    // every occurrence of a text, on all pages
    oRedactor.AddText('John Smith');
    // an area of page 0: left, bottom, right, top in points
    oRedactor.AddArea(0, 50, 500, 250, 650);
    vOptions := oRedactor.Options;
    vOptions.OverlayText := 'REDACTED';
    vOptions.RemoveMetadata := True;
    oRedactor.Options := vOptions;
    oRedactor.Apply(AInput, AOutput);
  finally
    oRedactor.Free;
  end;
end;

Convertir todo el texto a contornos

procedure OutlineText(const AInput, AOutput: string);
var
  oOutliner: TsgcPDFTextOutliner;
begin
  oOutliner := TsgcPDFTextOutliner.Create;
  try
    // every glyph becomes a vector path, unused fonts are removed
    oOutliner.Apply(AInput, AOutput);
    WriteLn('Glyphs outlined: ', oOutliner.ConvertedGlyphs);
    WriteLn('Fonts removed: ', oOutliner.RemovedFonts);
  finally
    oOutliner.Free;
  end;
end;

Archivo y accesibilidad

FunciónDetalles
PDF/ASalida PDF/A-1, PDF/A-2 y PDF/A-3 en niveles a y b, y PDF/A-4 y PDF/A-4f (paA4, paA4f) como archivos PDF 2.0, con metadatos XMP, intención de salida y fuentes incrustadas. En Delphi y .NET.
ValidadorTsgcPDFAValidator comprueba un archivo con respecto al nivel PDF/A seleccionado, incluidos PDF/A-4 y PDF/UA-2, e informa de errores y advertencias. La salida PDF/A-4, PDF/A-4f y PDF/UA-2 se comprueba con veraPDF.
PDF etiquetadoÁrbol de estructura con Document, Part, Sect, H1 a H6, P, L, LI, Table, TR, TH, TD y Figure con texto alternativo, contenido marcado, mapa de roles, idioma y MarkInfo.
PDF/UA-1Salida accesible junto con PDF/A-2a o PDF/A-3a, y comprobaciones PDF/UA-1 en el validador.
PDF/UA-2Establece PDFUAPart en puaPart2 para obtener salida PDF/UA-2 (ISO 14289-2), sola o junto con PDF/A-4, con el espacio de nombres de estructura de PDF 2.0 y destinos de estructura. En Delphi y .NET, incluidos la exportación de sgcReports y el puente sgcUIPDF.
AdjuntosArchivos incrustados con tipo MIME, fechas y relaciones asociadas de PDF/A-3 y PDF/A-4f.
Factur-X y ZUGFeRDIncrusta el XML de la factura con el esquema de extensión XMP Factur-X para los perfiles Minimum, Basic WL, Basic, EN 16931, Extended y XRechnung, y guarda el archivo como PDF/A-3b.

Factura Factur-X como PDF/A-3b

procedure CreateFacturX(const AInvoiceXML, AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oXML: TMemoryStream;
  vXML: TBytes;
  vFont: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  oXML := TMemoryStream.Create;
  try
    // the invoice XML (CII) is created by your application
    oXML.LoadFromFile(AInvoiceXML);
    SetLength(vXML, oXML.Size);
    Move(oXML.Memory^, vXML[0], oXML.Size);
    oPDF.Info.Title := 'Invoice 2026-001';
    // PDF/A requires embedded fonts
    vFont := oPDF.AddTrueTypeFont('Arial', False, False);
    oPDF.AddPage(595, 842).DrawTextTT('Invoice 2026-001', 50, 780, vFont, 18);
    // embeds factur-x.xml, adds the Factur-X XMP schema, saves as PDF/A-3b
    oPDF.Attachments.AddFacturX(vXML, fxpEN16931);
    oPDF.SaveToFile(AFileName);
  finally
    oXML.Free;
    oPDF.Free;
  end;
end;

Validar PDF/A

procedure ValidatePDFA(const AFileName: string);
var
  oParser: TsgcPDFParser;
  oValidator: TsgcPDFAValidator;
  i: Integer;
begin
  oParser := TsgcPDFParser.Create;
  oValidator := TsgcPDFAValidator.Create(paA3b);
  try
    oParser.LoadFromFile(AFileName);
    oParser.Parse;
    if oValidator.Validate(oParser) then
      WriteLn('PDF/A-3b: no errors')
    else
      for i := 0 to oValidator.Errors.Count - 1 do
        WriteLn('Error: ', oValidator.Errors[i]);
  finally
    oValidator.Free;
    oParser.Free;
  end;
end;

PDF/A-4 y PDF/UA-2 en un solo archivo

procedure CreateArchive(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
  vFont: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.Info.Title := 'Annual report';
    oPDF.Tagged := True;
    oPDF.StructureTree.Lang := 'en-US';
    // PDF/A-4 and PDF/UA-2 in the same PDF 2.0 file
    oPDF.SetPDFALevel(paA4);
    oPDF.PDFUA := True;
    oPDF.PDFUAPart := puaPart2;
    vFont := oPDF.AddTrueTypeFont('Arial', False, False);
    oPage := oPDF.AddPage(595, 842);
    oPage.Tagging.BeginElement(stH1);
    oPage.DrawTextTT('Annual report', 50, 770, vFont, 20);
    oPage.Tagging.EndElement;
    oPage.Tagging.BeginElement(stP);
    oPage.DrawTextTT('Archived and accessible.', 50, 740, vFont, 11);
    oPage.Tagging.EndElement;
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;

Para validar el archivo, crea el TsgcPDFAValidator con paA4 y establece sus propiedades PDFUA y PDFUAPart. Consulta los temas de ayuda PDF/A-4 y PDF/UA-2.

Preimpresión

La misma API de preimpresión en Delphi y .NET, con los mismos nombres.

FunciónDetalles
Cuadros de páginaMediaBox, CropBox, BleedBox, TrimBox y ArtBox en TsgcPDFPage, con Rotate y UserUnit, conservados al cargar y guardar un archivo.
ImposiciónAddPageAsForm convierte una página de otro documento, recortada por un cuadro de página o un rectángulo, en un XObject de formulario que DrawForm, DrawFormInRect y DrawFormMatrix colocan en un pliego. La demo PDFImposition construye diseños de pliego con ellos.
Marcas de impresiónDrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar y DrawSlugText.
Colores planosEspacios de color Separation, Registration y DeviceN, y estados gráficos de sobreimpresión para relleno y trazo.
Vista previa de sobreimpresiónOverprintPreview en el renderizador simula la sobreimpresión en pantalla y en la salida ráster.
Intención de salida PDF/XSetOutputIntent escribe una intención de salida GTS_PDFX con un perfil ICC opcional, y PDFXVersion establece la clave de versión PDF/X.
Herramientas del visorVisualización de cuadros de página, indicaciones de cuadros de página y una herramienta de medición en los visores VCL y WinForms, y en los visores WPF y Avalonia.

Dos páginas en un pliego con marcas de corte (.NET)

using esegece.sgcPDF;
using static esegece.sgcPDF.sgcPDF_Types;

using (TsgcPDFDocument oSource = new TsgcPDFDocument())
using (TsgcPDFDocument oSheet = new TsgcPDFDocument())
{
    oSource.LoadFromFile("flyer.pdf");
    // two A4 pages side by side, placed by their trim box, with crop marks
    TsgcPDFPage oPage = oSheet.AddPage(1270, 922);
    for (int i = 0; i < 2; i++)
    {
        int vForm = oSheet.AddPageAsForm(oSource, i, TsgcPDFPageBox.ppbTrimBox);
        TsgcPDFRect oTrim = sgcPDFRect(40 + i * 595, 40, 635 + i * 595, 882);
        oPage.DrawFormInRect(vForm, oTrim, true);
        oPage.DrawCropMarks(oTrim);
    }
    oSheet.SaveToFile("sheet.pdf");
}

sgcPDF para .NET

Un port en C# totalmente gestionado de la biblioteca, un archivo C# por cada unidad Delphi, con los mismos nombres de clase (TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor, etc.). Se distribuye como paquetes NuGet, cada uno disponible también como edición Community gratuita con el sufijo .Community.

PaqueteDetalles
esegece.sgcPDFLa 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. Compatible con .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 y .NET 10.
esegece.sgcPDF.WinFormsRenderizador 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, TsgcPDFBarcodeControl y TsgcPDFOutlineView, con cuadros de página y la herramienta de medición. Compatible con .NET Framework 4.7.2 y .NET 8 en Windows.
esegece.sgcPDF.WpfVisor WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView y TsgcWpfPDFOutlineView. Compatible con .NET Framework 4.7.2, .NET 8, .NET 9 y .NET 10 en Windows.
esegece.sgcPDF.AvaloniaVisor Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView y TsgcAvaloniaPDFOutlineView. Compatible con .NET 8, .NET 9 y .NET 10.
esegece.sgcPDF.sgcSignPuente opcional con sgcSign .NET: TsgcPDFPAdESSigner firma en PAdES B-B, B-T, B-LT y B-LTA con cualquier proveedor de claves de sgcSign.
Edición CommunityMismas funciones que la edición registrada. 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, con un breve aviso al iniciar.

Instalación

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
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

Desarrolla con sgcPDF

Descarga la prueba y añade funciones PDF a tu aplicación Delphi o C++ Builder.