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

14 Funktionen

Bearbeitung

7 Funktionen

Rendering & Viewer

11 Funktionen

Extraktion

5 Funktionen

Formulare

4 Funktionen

Druckvorstufe

7 Funktionen

.NET

5 NuGet-Pakete

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. Die Steuerelemente TsgcPDFBarcodeControl (VCL) und TsgcPDFBarcodeFMX (FireMonkey) zeigen sie auf Formularen an, speichern sie als PNG oder SVG und zeichnen sie über Symbol.DrawToPDF auf eine PDF-Seite. In .NET sind es TsgcPDFBarcodeControl (WinForms), TsgcWpfPDFBarcodeControl und TsgcAvaloniaPDFBarcodeControl. Die Steuerelemente für WPF und Avalonia zeichnen die Module als Vektorgeometrie auf ganzen Geräte-Pixeln, und jede Eigenschaft ist eine Abhängigkeits- oder Styled Property, sodass sich der Text in XAML binden lässt. Alle sind in jeder sgcPDF-Edition enthalten.
Anmerkungen und LinksHaftnotizen, Freitext, Hervorhebung, Unterstreichung und Durchstreichung, Linien und Pfeile, Rechtecke und Kreise, Freihandzeichnungen (Tinte) und Stempel, dazu Links zu URLs und Seiten. Darstellungsströme (Appearance Streams) werden erzeugt, sodass die Anmerkungen in Adobe Acrobat, Browsern und anderen Viewern angezeigt werden.
KommentarantwortenAntworten auf beliebige Anmerkungen bilden eine Diskussion mit Verlauf, jede Antwort mit eigenem Autor, Datum und Inhalt.
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.
Vorhandene AnmerkungenDie Anmerkungen eines vorhandenen PDFs werden als typisierte Objekte mit Autor, Datum, Antworten und Geometrie geladen. Bearbeiten Sie sie im Code oder im Viewer und speichern Sie, oder rufen Sie SaveIncremental auf, um die Änderungen anzuhängen, ohne die ursprünglichen Bytes anzutasten, sodass vorhandene Signaturen intakt 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. Der Rechteckzoom (SelectionMode psmZoom, OnMarqueeZoom) zoomt auf ein Rechteck, das mit der Maus oder mit langem Drücken und Ziehen aufgezogen wird. Textsuche: FindText findet und hebt jeden Treffer hervor und scrollt zum ersten, FindNext und FindPrevious wechseln zwischen den Treffern, und OnSearchProgress meldet jede Seite und kann eine lange Suche abbrechen. SearchColor und SearchCurrentColor legen die Farben der Hervorhebung fest. Ansichtsmodi: ViewMode wählt Einzelseite (fvmSinglePage, Seitenwechsel mit dem Mausrad und Bild auf und Bild ab), fortlaufend (fvmContinuous, der Standard) oder zwei Seiten (fvmTwoPage, nebeneinander, mit Unterstützung für Rechts nach Links).
.NET-ViewerTsgcPDFViewerControl für WinForms, TsgcWpfPDFViewer für WPF und TsgcAvaloniaPDFViewer für Avalonia, jeweils mit Miniaturansicht und Gliederung. Die WPF- und Avalonia-Viewer bieten Zoommodi, Strg+Mausrad und Rechteckzoom (Pinch auf Avalonia), Textauswahl und Kopieren, Suche mit Hervorhebung, Links und Gliederungsnavigation, Seitenboxen und das Messwerkzeug. Wie der WinForms-Viewer bearbeiten sie Anmerkungen und füllen Formulare aus.
Interaktive AnmerkungenIn Delphi VCL und FMX, C++Builder und .NET WinForms, WPF und Avalonia erstellen Endanwender Anmerkungen mit der Maus: Haftnotizen, Freitext, Hervorhebung, Unterstreichung und Durchstreichung über Text, Linien und Pfeile, Rechtecke und Ellipsen, Freihandzeichnungen und Stempel. Sie wählen sie aus, verschieben, skalieren, bearbeiten und löschen sie. Ein Klick auf eine Notiz öffnet ein Popup mit Autor, Datum, Inhalt und Antworten, in dem sie bearbeiten und antworten können. Die Viewer lösen OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete und OnAnnotationSelect aus. In den WPF- und Avalonia-Viewern schaltet AnnotationEditing das Bearbeiten ein, und AnnotationTool wählt das Werkzeug.
Viewer-Theme (mit sgcUI)Mit UseUITheme beziehen die Viewer für VCL, FireMonkey, WinForms, WPF und Avalonia sowie die Miniatur-, Gliederungs- und Kommentaransichten ihre Farben vom sgcUI-Anwendungs-Theme: der Bereich um die Seiten, die Pop-ups, die Auswahl und dunkle Bildlaufleisten unter einem dunklen Theme, neu gezeichnet, wenn sich Theme, Preset oder Akzent ändern. Die Seiten und die Anmerkungsfarben ändern sich nicht. Es benötigt die Unit sgcUIPDF_Theme in Delphi und C++Builder oder das Paket esegece.sgcUICore.sgcPDF in .NET.
KommentarbereichTsgcPDFCommentsView (VCL) und TsgcPDFCommentsViewFMX listen jede Anmerkung nach Seite mit Autor, Datum, Inhalt und Antwortverlauf auf, synchronisiert mit dem Viewer.
Bildviewer und -editorTsgcPDFImageEditor (VCL), TsgcPDFImageEditorFMX und in .NET TsgcPDFImageEditor (WinForms), TsgcWpfPDFImageEditor und TsgcAvaloniaPDFImageEditor zeigen ein Foto oder eine gescannte Seite mit Zoom-, Verschiebe- und Anpassungsmodi, drehen, spiegeln und beschneiden es und zeichnen Anmerkungen mit Stift, Linie, Pfeil, Rechteck, Ellipse, Text und Markierung, mit Rückgängig und Wiederholen. Das Ergebnis wird als PNG, JPEG oder BMP gespeichert, oder ExportToPDF schreibt eine PDF-Seite mit dem Originalbild und den Anmerkungen als Vektorgrafik. Das geladene Bild wird nie verändert: Die Änderungen werden als JSON gespeichert und später wieder geladen, und ReadOnly macht aus dem Steuerelement einen Viewer. Hilfe
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.

Ein Foto mit Anmerkungen versehen und als PDF exportieren

procedure AnnotatePhoto(aEditor: TsgcPDFImageEditor; const aFileName: string);
var
  oModel: TsgcPDFImageEditorModel;
  oArrow, oNote: TsgcPDFImageAnnotation;
begin
  aEditor.LoadFromFile(aFileName);
  oModel := aEditor.Model;
  oModel.SaveUndoState;
  // crop: source pixels, the annotations below use output pixels
  oModel.CropRect := sgcPDFImageRect(40, 30, 840, 630);
  // an arrow from the start point to the tip
  oArrow := oModel.Annotations.Add(iakArrow);
  oArrow.Color := $FFFF0000;
  oArrow.Width := 5;
  oArrow.AddPoint(120, 420);
  oArrow.AddPoint(360, 240);
  // a text note: Rect is the text box, FontSize in points
  oNote := oModel.Annotations.Add(iakText);
  oNote.Color := $FF0000FF;
  oNote.FontName := 'Arial';
  oNote.FontSize := 18;
  oNote.Text := 'Scratch on the door';
  oNote.Rect := sgcPDFImageRect(60, 440, 360, 480);
  oModel.Changed;
  // PNG from the extension, the image and the annotations flattened
  aEditor.SaveToFile(ChangeFileExt(aFileName, '.edited.png'));
  // the image placed unchanged, the annotations as vector paths and text
  aEditor.ExportToPDF(ChangeFileExt(aFileName, '.pdf'));
  // the edits as JSON, to edit them again later
  aEditor.SaveEditsToFile(ChangeFileExt(aFileName, '.json'));
end;

Schneidet das Foto zu, fügt im Code einen Pfeil und eine Textnotiz mit Rückgängig hinzu und schreibt dann ein PNG mit eingerechneten Anmerkungen, eine PDF-Seite mit Vektor-Anmerkungen und die Änderungen als JSON. Units: sgcPDF_ImageEditor, sgcPDF_ImageEditor_VCL. Siehe TsgcPDFImageEditor.

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.
Formularausfüllung in den WPF- und Avalonia-ViewernMit FormFilling (standardmäßig an) füllen Benutzer in TsgcWpfPDFViewer und TsgcAvaloniaPDFViewer Textfelder, Kontrollkästchen, Optionsfelder, Kombinationsfelder und Listenfelder aus, und die Tab-Taste wechselt in der Tabulatorreihenfolge zwischen den Feldern. OnFieldChange wird für jeden übernommenen Wert einmal ausgelöst, Esc behält den alten Wert, und Core.Document.SaveToFile speichert das ausgefüllte Formular.
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.
Handschriftliche UnterschriftenTsgcPDFSignaturePad (VCL), TsgcPDFSignaturePadFMX und in .NET TsgcPDFSignaturePad (WinForms), TsgcWpfPDFSignaturePad und TsgcAvaloniaPDFSignaturePad erfassen eine Unterschrift mit der Maus, einem Touchscreen oder einem Stift. Die Strichstärke folgt dem Stiftdruck (Pointer-Nachrichten unter VCL und WinForms, der Stylus unter WPF und Avalonia; FireMonkey meldet keinen Druck) und der Geschwindigkeit, die Striche werden zu Kurven geglättet, und Rückgängig und Wiederholen funktionieren. Die Unterschrift wird als PNG, SVG oder JSON gespeichert, und ApplyToSignature legt sie als Vektortinte und PNG-Bild in das sichtbare Feld einer digitalen Signatur. Ein PNG oder JPEG in Appearance.ImageData, etwa eine gescannte Unterschrift, wird ebenfalls im Feld gezeichnet. Hilfe
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.
Text in KurvenTsgcPDFTextOutliner ersetzt jedes Glyph durch einen Vektorpfad mit derselben Position, Farbe und Größe, im Seiteninhalt, in Form-XObjects, Kachelmustern, Type3-Schriften und Anmerkungsdarstellungen, und entfernt anschließend die nicht mehr verwendeten Schriften. Die Datei druckt und sieht gleich aus, benötigt aber keine Schrift mehr, was für Druckereien, RIPs und Schriftlizenzen passt, die das Einbetten verbieten. Text in nicht eingebetteten Schriften wird mit der Ersatzschrift des Systems umgewandelt, die ein Viewer verwenden würde, und unsichtbarer Text wird entfernt. Der Text kann nicht mehr markiert oder durchsucht 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;

Mit einer handschriftlichen Unterschrift signieren

procedure SignWithStoredSignature(const aJSONFile, aInput, aOutput: string);
var
  oModel: TsgcPDFSignaturePadModel;
  oStream: TFileStream;
  oSigner: TsgcPDFSignatureHandler;
  vAppearance: TsgcPDFSignatureAppearance;
begin
  oModel := TsgcPDFSignaturePadModel.Create;
  try
    // the strokes saved before with SaveToJSON
    oStream := TFileStream.Create(aJSONFile, fmOpenRead or fmShareDenyWrite);
    try
      oModel.LoadFromJSON(oStream);
    finally
      oStream.Free;
    end;
    oSigner := TsgcPDFSignatureHandler.Create;
    try
      oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
      oSigner.SetField('Signature1', 0, 50, 50, 300, 120);
      vAppearance := oSigner.Appearance;
      // ImageData: a PNG of the ink, InkContent: the vector ink
      oModel.ApplyToAppearance(vAppearance);
      vAppearance.ShowName := True;
      vAppearance.ShowDate := True;
      vAppearance.Text := 'Approved';
      oSigner.Appearance := vAppearance;
      oSigner.SignDocument(aInput, aOutput);
    finally
      oSigner.Free;
    end;
  finally
    oModel.Free;
  end;
end;

Lädt eine von einem Signaturpad als JSON gespeicherte Unterschrift und signiert ohne Formular, zum Beispiel auf einem Server. Das Feld zeigt die Tinte neben dem Namen, dem Datum und dem Text. Auf einem Formular erledigt TsgcPDFSignaturePad.ApplyToSignature dasselbe in einem Aufruf. Siehe die Anleitung zu digitalen Signaturen.

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;

Den gesamten Text in Kurven umwandeln

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;

Archivierung & Barrierefreiheit

FunktionDetails
PDF/APDF/A-1-, PDF/A-2- und PDF/A-3-Ausgabe in den Stufen a und b sowie PDF/A-4 und PDF/A-4f (paA4, paA4f) als PDF-2.0-Dateien, mit XMP-Metadaten, Ausgabeabsicht und eingebetteten Schriftarten. In Delphi und .NET.
ValidatorTsgcPDFAValidator prüft eine Datei gegen die ausgewählte PDF/A-Stufe, einschließlich PDF/A-4 und PDF/UA-2, und meldet Fehler und Warnungen. Die Ausgabe in PDF/A-4, PDF/A-4f und PDF/UA-2 wird gegen veraPDF geprüft.
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.
PDF/UA-2Setze PDFUAPart auf puaPart2 für die Ausgabe nach PDF/UA-2 (ISO 14289-2), allein oder zusammen mit PDF/A-4, mit dem PDF-2.0-Strukturnamensraum und Strukturzielen. In Delphi und .NET, einschließlich des sgcReports-Exports und der sgcUIPDF-Brücke.
AnhängeEingebettete Dateien mit MIME-Typ, Daten und PDF/A-3- und PDF/A-4f-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;

PDF/A-4 und PDF/UA-2 in einer Datei

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;

Um die Datei zu validieren, erstelle den TsgcPDFAValidator mit paA4 und setze seine Eigenschaften PDFUA und PDFUAPart. Siehe die Hilfethemen PDF/A-4 und PDF/UA-2.

Druckvorstufe

Dieselbe Druckvorstufen-API in Delphi und .NET, mit denselben Namen.

FunktionDetails
SeitenboxenMediaBox, CropBox, BleedBox, TrimBox und ArtBox an TsgcPDFPage, mit Rotate und UserUnit, die beim Laden und Speichern einer Datei erhalten bleiben.
AusschießenAddPageAsForm macht aus einer Seite eines anderen Dokuments, zugeschnitten durch eine Seitenbox oder ein Rechteck, ein Form-XObject, das DrawForm, DrawFormInRect und DrawFormMatrix auf einem Bogen platzieren. Die PDFImposition-Demo baut damit Bogenlayouts.
DruckermarkenDrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar und DrawSlugText.
SonderfarbenFarbräume Separation, Registration und DeviceN sowie Überdruck-Grafikzustände für Füllung und Kontur.
ÜberdruckvorschauOverprintPreview am Renderer simuliert das Überdrucken auf dem Bildschirm und in der Rasterausgabe.
PDF/X-AusgabeabsichtSetOutputIntent schreibt eine GTS_PDFX-Ausgabeabsicht mit optionalem ICC-Profil, und PDFXVersion setzt den PDF/X-Versionsschlüssel.
Viewer-WerkzeugeSeitenbox-Anzeige, Seitenbox-Hinweise und ein Messwerkzeug in den VCL- und WinForms-Viewern sowie in den WPF- und Avalonia-Viewern.

Zwei Seiten auf einem Bogen mit Schnittmarken (.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 für .NET

Ein vollständig verwalteter C#-Port der Bibliothek, eine C#-Datei pro Delphi-Unit, mit denselben Klassennamen (TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor usw.). Er wird als NuGet-Pakete bereitgestellt, jedes auch als kostenlose Community Edition mit dem Suffix .Community erhältlich.

PaketDetails
esegece.sgcPDFDie Bibliothek: Dokumentmodell, Parser, Writer, Editor, Rendering-Kern, Schriftarten, Bilder, Formulare, Signaturen, Verschlüsselung, Text- und Bildextraktion, Druckvorstufe, PDF/A (einschließlich PDF/A-4) und PDF/UA-2. Für .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 und .NET 10.
esegece.sgcPDF.WinFormsGDI-Renderer und Canvas, EMF-Wiedergabe, Seitenexport zu Bildern, sowie die Steuerelemente TsgcPDFViewerControl (mit interaktiven Anmerkungen und Kommentarantworten), TsgcPDFThumbnailView, TsgcPDFBarcodeControl, TsgcPDFOutlineView, TsgcPDFSignaturePad und TsgcPDFImageEditor, mit Seitenboxen und dem Messwerkzeug. Für .NET Framework 4.7.2 und .NET 8 unter Windows.
esegece.sgcPDF.WpfWPF-Viewer: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView und TsgcWpfPDFOutlineView, dazu TsgcWpfPDFBarcodeControl, TsgcWpfPDFSignaturePad und TsgcWpfPDFImageEditor. Für .NET Framework 4.7.2, .NET 8, .NET 9 und .NET 10 unter Windows.
esegece.sgcPDF.AvaloniaAvalonia-Viewer: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView und TsgcAvaloniaPDFOutlineView, dazu TsgcAvaloniaPDFBarcodeControl, TsgcAvaloniaPDFSignaturePad und TsgcAvaloniaPDFImageEditor. Für .NET 8, .NET 9 und .NET 10.
esegece.sgcPDF.sgcSignOptionale Brücke zu sgcSign .NET: TsgcPDFPAdESSigner signiert nach PAdES B-B, B-T, B-LT und B-LTA mit jedem sgcSign-Schlüsselanbieter.
Community EditionGleicher Funktionsumfang wie die registrierte Edition. Kostenlos für Einzelpersonen und Organisationen mit weniger als 1 Million Euro Jahresbruttoumsatz und höchstens 5 Entwicklern, mit einem kurzen Hinweis beim Start. Die Pakete haben dieselben Ids mit dem Suffix .Community, zum Beispiel esegece.sgcPDF.Community.

Installation

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

Mit sgcPDF entwickeln

Laden Sie die Testversion herunter und fügen Sie PDF-Funktionen zu Ihrer Delphi- oder C++-Builder-Anwendung hinzu.