sgcPDF Feature-Matrix

Alles, was sgcPDF tut, nach Aufgabe gruppiert. Jede Funktion ist in Object Pascal in den sgcPDF_*.pas-Units implementiert und wird mit vollständigem Quellcode ausgeliefert. Die Codebeispiele auf dieser Seite wurden gegen die sgcPDF-Quellen kompiliert und ausgeführt.

Erstellung

13 Funktionen

Bearbeitung

6 Funktionen

Rendering & Viewer

7 Funktionen

Extraktion

5 Funktionen

Formulare

3 Funktionen

Erstellung

FunktionDetails
SeitenJede Seitengröße und -ausrichtung, A4, Letter oder benutzerdefiniert, sowie Seitendrehung.
TextDie 14 Standard-PDF-Schriftarten und farbiger Text, mit Absatzumbruch über die Canvas- und HTML-Renderer.
Eingebettete SchriftartenTrueType, OpenType (TrueType- und CFF-Outlines) und TrueType-Sammlungen, automatisch eingebettet und in Teilmengen zerlegt, mit Unicode-ToUnicode-Zuordnungen, sodass der Text kopiert und durchsucht werden kann.
Komplexe SchriftsystemeKerning und Ligaturen, arabische Verbindungsformen über GSUB und der bidirektionale Unicode-Algorithmus für Text von rechts nach links.
CJK-TextChinesischer, japanischer und koreanischer Text über eingebettete TrueType- und TrueType-Sammlungsschriftarten.
BilderJPEG, PNG mit Alphakanal, BMP und TIFF (einschließlich CCITT-Faxbildern), mit weichen Masken.
VektorgrafikenLinien, Rechtecke, Kreise, Ellipsen, Bézier-Kurven, Polygone, Strichmuster, Linienenden und -verbindungen, Transparenz und Farbverläufe.
TabellenTabellen mit Überschriften, Rändern, Zellenabständen und Farben, die sich über mehrere Seiten fortsetzen.
BarcodesCode 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, QR-Code, DataMatrix (ECC200) und PDF417, als Vektoren gezeichnet.
Anmerkungen und LinksTextnotizen, Hervorhebungen, Links zu URLs und Seiten, Stempel und Freitextanmerkungen.
Lesezeichen und EbenenVerschachtelte Lesezeichen (Gliederung) und optionale Inhaltsgruppen (Ebenen), die Leser ein- oder ausblenden können.
HTML zu PDFTsgcPDFHTMLRenderer: Überschriften, Absätze, Inline-CSS-Stile, Listen, Tabellen, Bilder, Links, Seitenumbrüche, Kopf- und Fußzeilen sowie Seitenzahlen.
Canvas und EMF zu PDFTsgcPDFCanvas zeichnet Zeichenaufrufe in PDF-Inhalte auf, und EMF-Metadateien werden in PDF-Vektoren zurückgespielt, sodass vorhandener Berichts- und Diagrammcode PDF-Ausgaben erzeugt.

HTML zu 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;

Bearbeitung

FunktionDetails
Wasserzeichen und StempelText-Wasserzeichen mit Schriftart, Größe, Drehung, Farbe und Deckkraft, auf einer oder allen Seiten.
Kopf-/Fußzeilen, SeitenzahlenKopf- und Fußzeilentext sowie Seitenzahlen mit einem Format wie Page %d of %d.
SeitenoperationenDokumente zusammenführen, aufteilen, Seitenbereiche extrahieren, einfügen, löschen, drehen und neu ordnen.
Inkrementelles SpeichernÄnderungen werden als neue Revision an die ursprüngliche Datei angehängt, wodurch frühere digitale Signaturen gültig bleiben.
Kompakte AusgabeObjekt-Streams und Querverweis-Streams für kleinere Dateien, plus TsgcPDFOptimizer zum Entfernen von Duplikaten und ungenutzten Objekten und zum Verkleinern von Bildern.
Große DateienOffsets sind durchgängig 64 Bit und Objekte werden bei Bedarf aus einem Stream geladen, sodass Dateien über 2 GB geöffnet und gespeichert werden können.

Rendering & Viewer

FunktionDetails
VCL-ViewerTsgcPDFViewerControl mit Scrollen, Zoommodi, Seitennavigation, Textauswahl und Kopieren, Suche mit Hervorhebung, Formularfeldausfüllung, Linknavigation und Drucken, plus TsgcPDFThumbnailView und TsgcPDFOutlineView.
FireMonkey-ViewerTsgcPDFViewerFMX zeichnet über den FMX-Canvas unter Windows, macOS, iOS und Android.
Raster-Renderer für ServerTsgcPDFRendererRaster ist ein reiner Pascal-Rasterizer, der Seiten ohne GDI unter Windows und Linux in Pixel oder PNG rendert.
GDI-Renderer und ExportRendern in eine Bitmap oder einen Gerätekontext unter Windows und Exportieren von Seiten und Miniaturen nach BMP, PNG oder JPEG mit TsgcPDFExporter.
GrafikmodellDeviceGray, DeviceRGB, DeviceCMYK, indizierte, ICCBased- und Lab-Farbräume, axiale und radiale Verläufe, Kachelmuster, weiche Masken, Deckkraft-Blending und Formular-XObjects.
SchriftartenEingebettete TrueType-, CFF-, OpenType- und Type-1-Schriftprogramme werden aus ihren Konturen gerendert, mit den Standardkodierungen und Identity-H-CID-Schriftarten.
BilddecoderFlate, LZW, ASCII85, ASCIIHex, RunLength, JPEG (Baseline und progressiv, CMYK), JPEG 2000, CCITT Gruppe 3 und 4 sowie JBIG2.

Extraktion

FunktionDetails
TextSeitentext oder gesamter Dokumenttext, mit Unicode-Zuordnung eingebetteter und CID-Schriftarten.
TextpositionenTsgcPDFTextExtractor gibt jedes Textfragment mit X, Y, Schriftname und Schriftgröße zurück.
SucheText auf einer Seite oder im Dokument finden.
BilderTsgcPDFImageExtractor zählt die Bilder einer Seite auf, einschließlich Inline-Bildern und Bildern in Formular-XObjects, und dekodiert sie nach PNG, JPEG oder BMP.
Metadaten und AnhängeDokumentinformationen, XMP-Metadaten, Lesezeichen, Ebenen und eingebettete Dateien.

Formulare

FunktionDetails
Formulare erstellenTextfelder, Kontrollkästchen, Optionsfelder, Kombinationsfelder, Listenfelder und Schaltflächen mit Erscheinungsbild-Streams.
Ausfüllen und flach machenFeldwerte im Code oder im Viewer festlegen und dann das Formular in statischen Seiteninhalt umwandeln.
FDF und XFDFFormulardaten als FDF und XFDF importieren und exportieren.

Sicherheit & Signaturen

FunktionDetails
PasswortverschlüsselungRC4 40 Bit und 128 Bit, AES-128 und AES-256 (Revisionen 5 und 6), mit Benutzer- und Eigentümerpasswort sowie Berechtigungs-Flags. Verschlüsselte Dateien werden beim Öffnen entschlüsselt.
ZertifikatsverschlüsselungPublic-Key-Verschlüsselung für ein oder mehrere Empfängerzertifikate (adbe.pkcs7.s4 und adbe.pkcs7.s5).
Digitale SignaturenSignieren mit einem PFX-Zertifikat, sichtbaren oder unsichtbaren Signaturfeldern, SHA-256, SHA-384 und SHA-512, RFC-3161-Zeitstempeln und Dokumentzeitstempeln.
PAdES über sgcSignTsgcPDFPAdESSigner erzeugt ETSI.CAdES.detached-Signaturen der Stufen B-B, B-T, B-LT und B-LTA, mit DSS-Validierungsdaten, unter Verwendung jedes Schlüsselanbieters von sgcSign (PEM, PFX, PKCS#11, Windows-Zertifikatspeicher, Cloud-HSMs). sgcSign wird separat lizenziert.
VerifizierungTsgcPDFSignatureVerifier prüft Integrität, Byte-Bereichsabdeckung, das Signaturzertifikat und die Zertifikatskette jeder Signatur.
SchwärzungTsgcPDFRedactor entfernt Text auf Glyphenebene, Bildpixel, Vektorpfade und Anmerkungen unter einem Bereich oder passend zu einem Text, fügt eine Überdeckung hinzu und kann Metadaten entfernen. Der entfernte Text kann aus der Ausgabe nicht extrahiert werden.

AES-256-Passwortverschlüsselung

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;

Signieren mit einem PFX-Zertifikat

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 über die sgcSign-Brücke

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;

Einen Namen und einen Bereich schwärzen

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;

Archivierung & Barrierefreiheit

FunktionDetails
PDF/APDF/A-1-, PDF/A-2- und PDF/A-3-Ausgabe in den Stufen a und b, mit XMP-Metadaten, Ausgabeabsicht und eingebetteten Schriftarten.
ValidatorTsgcPDFAValidator prüft eine Datei gegen die ausgewählte PDF/A-Stufe und meldet Fehler und Warnungen.
Getaggtes PDFStrukturbaum mit Document, Part, Sect, H1 bis H6, P, L, LI, Table, TR, TH, TD und Figure mit Alternativtext, markiertem Inhalt, Rollenzuordnung, Sprache und MarkInfo.
PDF/UA-1Barrierefreie Ausgabe zusammen mit PDF/A-2a oder PDF/A-3a sowie PDF/UA-1-Prüfungen im Validator.
AnhängeEingebettete Dateien mit MIME-Typ, Daten und PDF/A-3-Zuordnungsbeziehungen.
Factur-X und ZUGFeRDBettet das Rechnungs-XML mit dem Factur-X-XMP-Erweiterungsschema für die Profile Minimum, Basic WL, Basic, EN 16931, Extended und XRechnung ein und speichert die Datei als PDF/A-3b.

Factur-X-Rechnung als 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;

PDF/A validieren

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;
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Mit sgcPDF entwickeln

Fordern Sie eine Testversion an und fügen Sie PDF-Funktionen zu Ihrer Delphi- oder C++-Builder-Anwendung hinzu.