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

3 funzionalità

Sicurezza & firme

7 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) li mostrano nei form, li salvano in PNG o SVG e li disegnano su una pagina PDF tramite Symbol.DrawToPDF.
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.
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. Visualizzano annotazioni e campi modulo ma non li modificano.
Annotazioni interattiveIn Delphi VCL e FMX, C++Builder e .NET WinForms, 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.
Pannello commentiTsgcPDFCommentsView (VCL) e TsgcPDFCommentsViewFMX elencano ogni annotazione per pagina con autore, data, contenuto e risposte a thread, sincronizzati con il visualizzatore.
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.

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

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 e TsgcPDFOutlineView, 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. Per .NET Framework 4.7.2, .NET 8, .NET 9 e .NET 10 su Windows.
esegece.sgcPDF.AvaloniaVisualizzatore Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView e TsgcAvaloniaPDFOutlineView. 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.

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.