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

13 funzionalità

Modifica

6 funzionalità

Estrazione

5 funzionalità

Moduli

3 funzionalità

Sicurezza & firme

6 funzionalità

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.
Annotazioni e linkNote di testo, evidenziazioni, link a URL e pagine, timbri e annotazioni di testo libero.
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.
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.
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.
RedazioneTsgcPDFRedactor 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.

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;

Archiviazione & accessibilità

FunzionalitàDettagli
PDF/AOutput PDF/A-1, PDF/A-2 e PDF/A-3 nei livelli a e b, con metadati XMP, output intent e font incorporati.
ValidatoreTsgcPDFAValidator verifica un file rispetto al livello PDF/A selezionato e segnala errori e avvisi.
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.
AllegatiFile incorporati con tipo MIME, date e relazioni di file associati PDF/A-3.
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;
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

Richiedi una prova e aggiungi funzionalità PDF alla tua applicazione Delphi o C++ Builder.