sgcPDF Matrice des fonctionnalités

Tout ce que fait sgcPDF, groupé par tâche. Chaque fonctionnalité est implémentée en Object Pascal dans les unités sgcPDF_*.pas et livrée avec le code source complet. Les exemples de code de cette page ont été compilés avec les sources sgcPDF et exécutés.

Création

13 fonctionnalités

Modification

6 fonctionnalités

Rendu & visionneuses

7 fonctionnalités

Extraction

5 fonctionnalités

Formulaires

3 fonctionnalités

Sécurité & signatures

6 fonctionnalités

Archivage & accessibilité

6 fonctionnalités

Création

FonctionnalitéDétails
PagesToute taille et orientation de page, A4, Letter ou personnalisée, et rotation de page.
TexteLes 14 polices PDF standard et texte coloré, avec retour à la ligne des paragraphes via le canevas et les moteurs de rendu HTML.
Polices incorporéesTrueType, OpenType (contours TrueType et CFF) et collections TrueType, incorporées et sous-ensembles automatiquement, avec des correspondances Unicode ToUnicode pour que le texte soit copiable et recherchable.
Scripts complexesKerning et ligatures, formes de liaison arabes via GSUB, et l’algorithme bidirectionnel Unicode pour le texte de droite à gauche.
Texte CJKTexte chinois, japonais et coréen via des polices TrueType et des collections TrueType incorporées.
ImagesJPEG, PNG avec alpha, BMP et TIFF (y compris les images fax CCITT), avec masques doux.
Graphiques vectorielsLignes, rectangles, cercles, ellipses, courbes de Bézier, polygones, motifs de trait, extrémités et jonctions de ligne, transparence et dégradés.
TableauxTableaux avec en-têtes, bordures, marges de cellule et couleurs qui se poursuivent sur plusieurs pages.
Codes-barresCode 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, QR Code, DataMatrix (ECC200) et PDF417, dessinés en vecteurs.
Annotations et liensNotes de texte, surlignages, liens vers des URL et des pages, tampons et annotations en texte libre.
Signets et calquesSignets imbriqués (plan) et groupes de contenu optionnel (calques) que les lecteurs peuvent afficher ou masquer.
HTML vers PDFTsgcPDFHTMLRenderer : titres, paragraphes, styles CSS en ligne, listes, tableaux, images, liens, sauts de page, en-têtes, pieds de page et numéros de page.
Canevas et EMF vers PDFTsgcPDFCanvas enregistre les appels de dessin dans le contenu PDF, et les métafichiers EMF sont rejoués en vecteurs PDF, de sorte que le code de rapport et de graphique existant produit une sortie PDF.

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

Modification

FonctionnalitéDétails
Filigranes et tamponsFiligranes texte avec police, taille, rotation, couleur et opacité, sur une page ou toutes les pages.
En-têtes, pieds de page, numérosTexte d’en-tête et de pied de page et numéros de page avec un format tel que Page %d of %d.
Opérations sur les pagesFusionner des documents, diviser, extraire des plages de pages, insérer, supprimer, faire pivoter et réorganiser les pages.
Enregistrement incrémentielLes modifications sont ajoutées au fichier d’origine comme une nouvelle révision, ce qui conserve la validité des signatures numériques antérieures.
Sortie compacteFlux d’objets et flux de références croisées pour des fichiers plus petits, plus TsgcPDFOptimizer pour supprimer les doublons et les objets inutilisés et sous-échantillonner les images.
Fichiers volumineuxLes décalages sont sur 64 bits de bout en bout et les objets sont chargés à la demande depuis un flux, de sorte que des fichiers de plus de 2 Go peuvent être ouverts et enregistrés.

Rendu & visionneuses

FonctionnalitéDétails
Visionneuse VCLTsgcPDFViewerControl avec défilement, modes de zoom, navigation de page, sélection et copie de texte, recherche avec surlignage, remplissage de champs de formulaire, navigation par liens et impression, plus TsgcPDFThumbnailView et TsgcPDFOutlineView.
Visionneuse FireMonkeyTsgcPDFViewerFMX dessine via le canevas FMX sous Windows, macOS, iOS et Android.
Moteur de rendu matriciel pour serveursTsgcPDFRendererRaster est un rasteriseur en Object Pascal pur qui rend les pages en pixels ou en PNG sans GDI, sous Windows et Linux.
Moteur de rendu GDI et exportRendu vers un bitmap ou un contexte de périphérique sous Windows, et export des pages et vignettes en BMP, PNG ou JPEG avec TsgcPDFExporter.
Modèle graphiqueEspaces colorimétriques DeviceGray, DeviceRGB, DeviceCMYK, indexé, ICCBased et Lab, dégradés axiaux et radiaux, motifs en mosaïque, masques doux, opacité de fusion et XObjects de formulaire.
PolicesLes programmes de polices TrueType, CFF, OpenType et Type 1 incorporés sont rendus à partir de leurs contours, avec les encodages standard et les polices CID Identity-H.
Décodeurs d’imageFlate, LZW, ASCII85, ASCIIHex, RunLength, JPEG (baseline et progressif, CMYK), JPEG 2000, CCITT groupe 3 et 4, et JBIG2.

Extraction

FonctionnalitéDétails
TexteTexte de page ou de tout le document, avec mappage Unicode des polices incorporées et CID.
Positions du texteTsgcPDFTextExtractor renvoie chaque fragment de texte avec X, Y, nom et taille de police.
RechercheTrouver du texte sur une page ou dans le document.
ImagesTsgcPDFImageExtractor énumère les images d’une page, y compris les images en ligne et celles des XObjects de formulaire, et les décode en PNG, JPEG ou BMP.
Métadonnées et pièces jointesInformations sur le document, métadonnées XMP, signets, calques et fichiers incorporés.

Formulaires

FonctionnalitéDétails
Créer des formulairesChamps de texte, cases à cocher, boutons radio, listes déroulantes, zones de liste et boutons poussoirs avec flux d’apparence.
Remplir et aplatirDéfinissez les valeurs des champs en code ou dans la visionneuse, puis aplatissez le formulaire en contenu de page statique.
FDF et XFDFImportez et exportez les données de formulaire au format FDF et XFDF.

Sécurité & signatures

FonctionnalitéDétails
Chiffrement par mot de passeRC4 40 bits et 128 bits, AES-128 et AES-256 (révisions 5 et 6), avec mot de passe utilisateur et propriétaire et indicateurs de permission. Les fichiers chiffrés sont déchiffrés au chargement.
Chiffrement par certificatChiffrement à clé publique pour un ou plusieurs certificats destinataires (adbe.pkcs7.s4 et adbe.pkcs7.s5).
Signatures numériquesSignature avec un certificat PFX, champs de signature visibles ou invisibles, SHA-256, SHA-384 et SHA-512, horodatages RFC 3161 et horodatages de document.
PAdES via sgcSignTsgcPDFPAdESSigner produit des signatures ETSI.CAdES.detached aux niveaux B-B, B-T, B-LT et B-LTA, avec des données de validation DSS, en utilisant n’importe quel fournisseur de clés de sgcSign (PEM, PFX, PKCS#11, magasin de certificats Windows, HSM cloud). sgcSign est sous licence séparée.
VérificationTsgcPDFSignatureVerifier vérifie l’intégrité, la couverture de plage d’octets, le certificat du signataire et la chaîne de certificats de chaque signature.
CaviardageTsgcPDFRedactor supprime le texte au niveau du glyphe, les pixels d’image, les tracés vectoriels et les annotations sous une zone ou correspondant à un texte, ajoute une superposition et peut supprimer les métadonnées. Le texte supprimé ne peut pas être extrait de la sortie.

Chiffrement par mot de passe 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;

Signer avec un certificat 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 via le pont 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;

Caviarder un nom et une zone

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;

Archivage & accessibilité

FonctionnalitéDétails
PDF/ASortie PDF/A-1, PDF/A-2 et PDF/A-3 aux niveaux a et b, avec métadonnées XMP, intention de sortie et polices incorporées.
ValidateurTsgcPDFAValidator vérifie un fichier par rapport au niveau PDF/A sélectionné et signale les erreurs et avertissements.
PDF baliséArborescence de structure avec Document, Part, Sect, H1 à H6, P, L, LI, Table, TR, TH, TD et Figure avec texte alternatif, contenu marqué, correspondance de rôles, langue et MarkInfo.
PDF/UA-1Sortie accessible avec PDF/A-2a ou PDF/A-3a, et contrôles PDF/UA-1 dans le validateur.
Pièces jointesFichiers incorporés avec type MIME, dates et relations de fichiers associés PDF/A-3.
Factur-X et ZUGFeRDIncorpore le XML de facture avec le schéma d’extension XMP Factur-X pour les profils Minimum, Basic WL, Basic, EN 16931, Extended et XRechnung, et enregistre le fichier en PDF/A-3b.

Facture Factur-X en 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;

Valider le 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;
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Développez avec sgcPDF

Demandez un essai et ajoutez des fonctionnalités PDF à votre application Delphi ou C++ Builder.