sgcPDF Matrice delle funzionalità

Tutto ciò che fa sgcPDF, raggruppato per attività. Ogni funzionalità è implementata in Object Pascal nelle unità sgcPDF_*.pas ed è fornita con il codice sorgente completo. Gli esempi di codice in questa pagina sono stati compilati con i sorgenti sgcPDF ed eseguiti.

Creazione

14 funzionalità

Modifica

7 funzionalità

Estrazione

5 funzionalità

Moduli

4 funzionalità

Sicurezza & firme

8 funzionalità

Prestampa

7 funzionalità

.NET

5 pacchetti NuGet

Creazione

FunzionalitàDettagli
PagineQualsiasi formato e orientamento pagina, A4, Letter o personalizzato, e rotazione pagina.
TestoI 14 font PDF standard e testo colorato, con avvolgimento dei paragrafi tramite il canvas e i renderer HTML.
Font incorporatiTrueType, OpenType (contorni TrueType e CFF) e collezioni TrueType, incorporati e in subset automaticamente, con mappe Unicode ToUnicode per copiare e cercare il testo.
Script complessiKerning e legature, forme di collegamento arabe tramite GSUB, e l’algoritmo bidirezionale Unicode per il testo da destra a sinistra.
Testo CJKTesto cinese, giapponese e coreano tramite font TrueType e collezioni TrueType incorporati.
ImmaginiJPEG, PNG con alfa, BMP e TIFF (incluse immagini fax CCITT), con maschere morbide.
Grafica vettorialeLinee, rettangoli, cerchi, ellissi, curve di Bézier, poligoni, pattern tratteggiati, terminazioni e giunzioni di linea, trasparenza e sfumature.
TabelleTabelle con intestazioni, bordi, spaziatura interna delle celle e colori che continuano tra le pagine.
Codici a barreCode 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, QR Code, DataMatrix (ECC200) e PDF417, disegnati come vettori. I controlli TsgcPDFBarcodeControl (VCL) e TsgcPDFBarcodeFMX (FireMonkey), e in .NET TsgcPDFBarcodeControl (WinForms), TsgcWpfPDFBarcodeControl e TsgcAvaloniaPDFBarcodeControl, li mostrano nei form, li salvano in PNG o SVG e li disegnano su una pagina PDF tramite Symbol.DrawToPDF. I controlli WPF e Avalonia disegnano i moduli come geometria vettoriale su pixel interi del dispositivo, e ogni proprietà è una proprietà di dipendenza o con stile, quindi il testo si associa in XAML. Tutti sono presenti in ogni edizione di sgcPDF.
Annotazioni e linkNote adesive, testo libero, evidenziazione, sottolineatura e barrato, linee e frecce, quadrati e cerchi, inchiostro a mano libera e timbri, oltre a link a URL e pagine. Gli appearance stream vengono generati, quindi le annotazioni sono visualizzate in Adobe Acrobat, nei browser e in altri visualizzatori.
Risposte ai commentiLe risposte collegate a qualsiasi annotazione formano una discussione a thread, ciascuna con il proprio autore, data e contenuto.
Segnalibri e livelliSegnalibri annidati (struttura) e gruppi di contenuto opzionale (livelli) che i lettori possono mostrare o nascondere.
HTML in PDFTsgcPDFHTMLRenderer: intestazioni, paragrafi, stili CSS inline, elenchi, tabelle, immagini, link, interruzioni di pagina, intestazioni, piè di pagina e numeri di pagina.
Canvas ed EMF in PDFTsgcPDFCanvas registra le chiamate di disegno nel contenuto PDF, e i metafile EMF vengono riprodotti come vettori PDF, così il codice di report e grafici esistente produce output PDF.

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

Modifica

FunzionalitàDettagli
Filigrane e timbriFiligrane di testo con font, dimensione, rotazione, colore e opacità, su una pagina o su tutte.
Intestazioni, piè di pagina, numeriTesto di intestazione e piè di pagina e numeri di pagina con un formato come Page %d of %d.
Operazioni sulle pagineUnire documenti, dividere, estrarre intervalli di pagine, inserire, eliminare, ruotare e riordinare le pagine.
Salvataggio incrementaleLe modifiche vengono aggiunte al file originale come nuova revisione, mantenendo valide le firme digitali precedenti.
Annotazioni esistentiLe annotazioni di un PDF esistente vengono caricate come oggetti tipizzati con autore, data, risposte e geometria. Modificale nel codice o nel visualizzatore e salva, oppure chiama SaveIncremental per aggiungere le modifiche senza toccare i byte originali, così le firme esistenti restano intatte.
Output compattoStream di oggetti e stream di riferimenti incrociati per file più piccoli, più TsgcPDFOptimizer per rimuovere duplicati e oggetti inutilizzati e ridurre la risoluzione delle immagini.
File di grandi dimensioniGli offset sono a 64 bit end-to-end e gli oggetti vengono caricati su richiesta da uno stream, quindi è possibile aprire e salvare file di oltre 2 GB.

Rendering & visualizzatori

FunzionalitàDettagli
Visualizzatore VCLTsgcPDFViewerControl con scorrimento, modalità zoom, navigazione pagine, selezione e copia testo, ricerca con evidenziazione, compilazione campi modulo, navigazione link e stampa, più TsgcPDFThumbnailView e TsgcPDFOutlineView.
Visualizzatore FireMonkeyTsgcPDFViewerFMX disegna tramite il canvas FMX su Windows, macOS, iOS e Android. Lo zoom a rettangolo (SelectionMode psmZoom, OnMarqueeZoom) ingrandisce un rettangolo trascinato con il mouse o con una pressione prolungata seguita dal trascinamento. Ricerca del testo: FindText trova ed evidenzia ogni corrispondenza e scorre fino alla prima, FindNext e FindPrevious passano da una corrispondenza all’altra, e OnSearchProgress segnala ogni pagina e può interrompere una ricerca lunga. SearchColor e SearchCurrentColor impostano i colori dell’evidenziazione. Modalità di visualizzazione: ViewMode seleziona pagina singola (fvmSinglePage, cambia pagina con la rotella del mouse e Pag Su e Pag Giù), continua (fvmContinuous, il valore predefinito) o due pagine (fvmTwoPage, affiancate, con supporto da destra a sinistra).
Visualizzatori .NETTsgcPDFViewerControl per WinForms, TsgcWpfPDFViewer per WPF e TsgcAvaloniaPDFViewer per Avalonia, ciascuno con viste a miniature e struttura. I visualizzatori WPF e Avalonia offrono modalità di zoom, zoom con Ctrl+rotellina e a rettangolo (pizzico su Avalonia), selezione e copia del testo, ricerca con evidenziazione, navigazione tra collegamenti e struttura, riquadri di pagina e strumento di misura. Come il visualizzatore WinForms, modificano le annotazioni e compilano i moduli.
Annotazioni interattiveIn Delphi VCL e FMX, C++Builder e .NET WinForms, WPF e Avalonia, gli utenti finali creano annotazioni con il mouse: note adesive, testo libero, evidenziazione, sottolineatura e barrato sul testo, linee e frecce, rettangoli ed ellissi, inchiostro a mano libera e timbri. Le selezionano, spostano, ridimensionano, modificano ed eliminano. Facendo clic su una nota si apre un popup con autore, data, contenuto e risposte, dove possono modificare e rispondere. I visualizzatori generano gli eventi OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete e OnAnnotationSelect. Nei visualizzatori WPF e Avalonia, AnnotationEditing attiva la modifica e AnnotationTool sceglie lo strumento.
Tema del visualizzatore (con sgcUI)Con UseUITheme i visualizzatori VCL, FireMonkey, WinForms, WPF e Avalonia, e le viste di miniature, struttura e commenti, prendono i colori dal tema dell'applicazione sgcUI: l'area attorno alle pagine, i popup, la selezione e le barre di scorrimento scure con un tema scuro, ridisegnati quando cambiano il tema, il preset o l'accento. Le pagine e i colori delle annotazioni non cambiano. Richiede l'unit sgcUIPDF_Theme in Delphi e C++Builder, oppure il pacchetto esegece.sgcUICore.sgcPDF in .NET.
Pannello commentiTsgcPDFCommentsView (VCL) e TsgcPDFCommentsViewFMX elencano ogni annotazione per pagina con autore, data, contenuto e risposte a thread, sincronizzati con il visualizzatore.
Visualizzatore ed editor di immaginiTsgcPDFImageEditor (VCL), TsgcPDFImageEditorFMX, e in .NET TsgcPDFImageEditor (WinForms), TsgcWpfPDFImageEditor e TsgcAvaloniaPDFImageEditor mostrano una foto o una pagina scansionata con zoom, panoramica e modalità di adattamento, permettono di ruotarla, capovolgerla e ritagliarla, e di disegnarvi annotazioni a penna, linea, freccia, rettangolo, ellisse, testo ed evidenziatore, con annullamento e ripristino. Il risultato viene salvato in PNG, JPEG o BMP, oppure ExportToPDF scrive una pagina PDF con l’immagine originale e le annotazioni come grafica vettoriale. L’immagine caricata non viene mai modificata: le modifiche sono salvate in JSON e ricaricate più tardi, e ReadOnly trasforma il controllo in un visualizzatore. Guida
Renderer raster per serverTsgcPDFRendererRaster è un rasterizzatore in puro Object Pascal che esegue il rendering delle pagine in pixel o PNG senza GDI, su Windows e Linux.
Renderer GDI ed esportazioneRendering su bitmap o contesto di dispositivo su Windows, ed esportazione di pagine e miniature in BMP, PNG o JPEG con TsgcPDFExporter.
Modello graficoSpazi colore DeviceGray, DeviceRGB, DeviceCMYK, indicizzato, ICCBased e Lab, sfumature assiali e radiali, pattern a tasselli, maschere morbide, opacità di fusione e XObject di tipo form.
FontI programmi font TrueType, CFF, OpenType e Type 1 incorporati vengono renderizzati dai loro contorni, con le codifiche standard e i font CID Identity-H.
Decoder immagineFlate, LZW, ASCII85, ASCIIHex, RunLength, JPEG (baseline e progressivo, CMYK), JPEG 2000, CCITT gruppo 3 e 4, e JBIG2.

Annota una foto ed esportala in PDF

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;

Ritaglia la foto, aggiunge in codice una freccia e una nota di testo con annullamento, poi scrive un PNG appiattito, una pagina PDF con annotazioni vettoriali e le modifiche in JSON. Unit: sgcPDF_ImageEditor, sgcPDF_ImageEditor_VCL. Vedi TsgcPDFImageEditor.

Estrazione

FunzionalitàDettagli
TestoTesto della pagina o dell’intero documento, con mappatura Unicode dei font incorporati e CID.
Posizioni del testoTsgcPDFTextExtractor restituisce ogni frammento di testo con X, Y, nome e dimensione del font.
RicercaTrova testo in una pagina o nel documento.
ImmaginiTsgcPDFImageExtractor elenca le immagini di una pagina, incluse le immagini inline e quelle degli XObject di tipo form, e le decodifica in PNG, JPEG o BMP.
Metadati e allegatiInformazioni sul documento, metadati XMP, segnalibri, livelli e file incorporati.

Moduli

FunzionalitàDettagli
Crea moduliCampi di testo, caselle di controllo, pulsanti di opzione, caselle combinate, caselle di riepilogo e pulsanti con stream di aspetto.
Compila e appiattisciImposta i valori dei campi nel codice o nel visualizzatore, quindi appiattisci il modulo in contenuto statico della pagina.
Compilazione dei moduli nei visualizzatori WPF e AvaloniaCon FormFilling (attivo per impostazione predefinita) gli utenti compilano campi di testo, caselle di controllo, pulsanti di opzione, caselle combinate e caselle di riepilogo in TsgcWpfPDFViewer e TsgcAvaloniaPDFViewer, e Tab si sposta tra i campi nel loro ordine di tabulazione. OnFieldChange viene generato una volta per ogni valore confermato, Esc mantiene il vecchio valore e Core.Document.SaveToFile salva il modulo compilato.
FDF e XFDFImporta ed esporta i dati del modulo come FDF e XFDF.

Sicurezza & firme

FunzionalitàDettagli
Cifratura con passwordRC4 a 40 e 128 bit, AES-128 e AES-256 (revisioni 5 e 6), con password utente e proprietario e flag di autorizzazione. I file cifrati vengono decifrati al caricamento.
Cifratura tramite certificatoCifratura a chiave pubblica per uno o più certificati destinatari (adbe.pkcs7.s4 e adbe.pkcs7.s5).
Firme digitaliFirma con un certificato PFX, campi di firma visibili o invisibili, SHA-256, SHA-384 e SHA-512, marche temporali RFC 3161 e marche temporali del documento.
Firme autografeTsgcPDFSignaturePad (VCL), TsgcPDFSignaturePadFMX, e in .NET TsgcPDFSignaturePad (WinForms), TsgcWpfPDFSignaturePad e TsgcAvaloniaPDFSignaturePad acquisiscono una firma con il mouse, uno schermo tattile o una penna. Lo spessore segue la pressione della penna (messaggi del puntatore su VCL e WinForms, lo stilo su WPF e Avalonia; FireMonkey non fornisce la pressione) e la velocità, i tratti sono levigati in curve, e annullamento e ripristino funzionano. La firma viene salvata in PNG, SVG o JSON, e ApplyToSignature la inserisce nel campo visibile di una firma digitale come inchiostro vettoriale e immagine PNG. Anche un PNG o JPEG in Appearance.ImageData, come una firma scansionata, viene disegnato nel campo. Guida
PAdES tramite sgcSignTsgcPDFPAdESSigner produce firme ETSI.CAdES.detached ai livelli B-B, B-T, B-LT e B-LTA, con dati di validazione DSS, usando qualsiasi provider di chiavi di sgcSign (PEM, PFX, PKCS#11, archivio certificati Windows, HSM cloud). sgcSign è concesso in licenza separatamente.
VerificaTsgcPDFSignatureVerifier verifica l’integrità, la copertura dell’intervallo di byte, il certificato del firmatario e la catena di certificati di ogni firma.
OscuramentoTsgcPDFRedactor rimuove il testo a livello di glifo, i pixel dell’immagine, i tracciati vettoriali e le annotazioni sotto una regione o corrispondenti a un testo, aggiunge una sovrapposizione e può rimuovere i metadati. Il testo rimosso non può essere estratto dall’output.
Testo in contorniTsgcPDFTextOutliner sostituisce ogni glifo con un tracciato vettoriale della stessa posizione, colore e dimensione, nel contenuto della pagina, negli XObject di modulo, nei pattern a tassello, nei font Type3 e nelle apparenze delle annotazioni, quindi rimuove i font rimasti inutilizzati. Il file si stampa e appare identico ma non richiede più alcun font, il che si adatta a tipografie, RIP e licenze di font che vietano l’incorporamento. Il testo nei font non incorporati viene convertito in contorni con il font di sistema sostitutivo che userebbe un visualizzatore, e il testo invisibile viene rimosso. Il testo non può più essere selezionato né cercato.

Cifratura con password 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;

Firma con un certificato 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;

Firma con una firma autografa

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;

Carica una firma salvata in JSON da un pad per le firme e firma senza modulo, per esempio su un server. Il campo mostra l’inchiostro accanto al nome, alla data e al testo. In un modulo, TsgcPDFSignaturePad.ApplyToSignature fa lo stesso in una sola chiamata. Vedi la guida alle firme digitali.

PAdES tramite il ponte 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;

Redigi un nome e un’area

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;

Converti tutto il testo in contorni

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;

Archiviazione & accessibilità

FunzionalitàDettagli
PDF/AOutput PDF/A-1, PDF/A-2 e PDF/A-3 nei livelli a e b, e PDF/A-4 e PDF/A-4f (paA4, paA4f) come file PDF 2.0, con metadati XMP, output intent e font incorporati. In Delphi e .NET.
ValidatoreTsgcPDFAValidator verifica un file rispetto al livello PDF/A selezionato, inclusi PDF/A-4 e PDF/UA-2, e segnala errori e avvisi. L’output PDF/A-4, PDF/A-4f e PDF/UA-2 è verificato con veraPDF.
PDF taggatoAlbero di struttura con Document, Part, Sect, H1-H6, P, L, LI, Table, TR, TH, TD e Figure con testo alternativo, contenuto marcato, role map, lingua e MarkInfo.
PDF/UA-1Output accessibile insieme a PDF/A-2a o PDF/A-3a, e controlli PDF/UA-1 nel validatore.
PDF/UA-2Imposta PDFUAPart su puaPart2 per un output PDF/UA-2 (ISO 14289-2), da solo o insieme a PDF/A-4, con il namespace di struttura PDF 2.0 e le destinazioni di struttura. In Delphi e .NET, inclusi l’esportazione sgcReports e il ponte sgcUIPDF.
AllegatiFile incorporati con tipo MIME, date e relazioni di file associati PDF/A-3 e PDF/A-4f.
Factur-X e ZUGFeRDIncorpora l’XML della fattura con lo schema di estensione XMP Factur-X per i profili Minimum, Basic WL, Basic, EN 16931, Extended e XRechnung, e salva il file come PDF/A-3b.

Fattura Factur-X come 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;

Valida 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 e PDF/UA-2 in un solo file

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;

Per convalidare il file, crea il TsgcPDFAValidator con paA4 e imposta le sue proprietà PDFUA e PDFUAPart. Vedi gli argomenti della guida PDF/A-4 e PDF/UA-2.

Prestampa

La stessa API di prestampa in Delphi e .NET, con gli stessi nomi.

FunzionalitàDettagli
Riquadri di paginaMediaBox, CropBox, BleedBox, TrimBox e ArtBox su TsgcPDFPage, con Rotate e UserUnit, conservati quando un file viene caricato e salvato.
ImposizioneAddPageAsForm trasforma una pagina di un altro documento, ritagliata da un riquadro di pagina o da un rettangolo, in un form XObject che DrawForm, DrawFormInRect e DrawFormMatrix posizionano su un foglio. La demo PDFImposition costruisce con questi metodi i layout dei fogli.
Segni di stampaDrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar e DrawSlugText.
Colori specialiSpazi colore Separation, Registration e DeviceN, e stati grafici di sovrastampa per riempimento e tratto.
Anteprima di sovrastampaOverprintPreview sul renderer simula la sovrastampa a schermo e nell’output raster.
Output intent PDF/XSetOutputIntent scrive un output intent GTS_PDFX con un profilo ICC facoltativo, e PDFXVersion imposta la chiave di versione PDF/X.
Strumenti del visualizzatoreVisualizzazione dei riquadri di pagina, suggerimenti sui riquadri e strumento di misura nei visualizzatori VCL e WinForms, e nei visualizzatori WPF e Avalonia.

Due pagine su un foglio con segni di taglio (.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 per .NET

Un port in C# completamente gestito della libreria, un file C# per ogni unit Delphi, con gli stessi nomi di classe (TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor e così via). Viene distribuito come pacchetti NuGet, ciascuno disponibile anche come edizione Community gratuita con il suffisso .Community.

PacchettoDettagli
esegece.sgcPDFLa libreria: modello documentale, parser, writer, editor, motore di rendering, font, immagini, moduli, firme, cifratura, estrazione di testo e immagini, prestampa, PDF/A (incluso PDF/A-4) e PDF/UA-2. Per .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 e .NET 10.
esegece.sgcPDF.WinFormsRenderer GDI e canvas, riproduzione EMF, esportazione delle pagine in immagini, e i controlli TsgcPDFViewerControl (con annotazioni interattive e risposte ai commenti), TsgcPDFThumbnailView, TsgcPDFBarcodeControl, TsgcPDFOutlineView, TsgcPDFSignaturePad e TsgcPDFImageEditor, con riquadri di pagina e strumento di misura. Per .NET Framework 4.7.2 e .NET 8 su Windows.
esegece.sgcPDF.WpfVisualizzatore WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView e TsgcWpfPDFOutlineView, più TsgcWpfPDFBarcodeControl, TsgcWpfPDFSignaturePad e TsgcWpfPDFImageEditor. Per .NET Framework 4.7.2, .NET 8, .NET 9 e .NET 10 su Windows.
esegece.sgcPDF.AvaloniaVisualizzatore Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView e TsgcAvaloniaPDFOutlineView, più TsgcAvaloniaPDFBarcodeControl, TsgcAvaloniaPDFSignaturePad e TsgcAvaloniaPDFImageEditor. Per .NET 8, .NET 9 e .NET 10.
esegece.sgcPDF.sgcSignPonte opzionale verso sgcSign .NET: TsgcPDFPAdESSigner firma in PAdES B-B, B-T, B-LT e B-LTA con qualsiasi provider di chiavi sgcSign.
Edizione CommunityStesse funzionalità dell'edizione registrata. Gratuita per privati e organizzazioni con un fatturato lordo annuo inferiore a 1 milione di euro e non più di 5 sviluppatori, con un breve avviso all'avvio. I pacchetti hanno gli stessi id con il suffisso .Community, per esempio esegece.sgcPDF.Community.

Installazione

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 scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Sviluppa con sgcPDF

Scarica la prova e aggiungi funzionalità PDF alla tua applicazione Delphi o C++ Builder.