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

13 funciones

Edición

6 funciones

Extracción

5 funciones

Formularios

3 funciones

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.
Anotaciones y enlacesNotas de texto, resaltados, enlaces a URL y a páginas, sellos y anotaciones de texto libre.
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.
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.
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.
RedacciónTsgcPDFRedactor 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.

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;

Redactar 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;

Archivo y accesibilidad

FunciónDetalles
PDF/ASalida PDF/A-1, PDF/A-2 y PDF/A-3 en niveles a y b, con metadatos XMP, intención de salida y fuentes incrustadas.
ValidadorTsgcPDFAValidator comprueba un archivo con respecto al nivel PDF/A seleccionado e informa de errores y advertencias.
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.
AdjuntosArchivos incrustados con tipo MIME, fechas y relaciones asociadas de PDF/A-3.
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;
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

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