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

14 fonctionnalités

Modification

7 fonctionnalités

Rendu & visionneuses

10 fonctionnalités

Extraction

5 fonctionnalités

Formulaires

3 fonctionnalités

Sécurité & signatures

7 fonctionnalités

Archivage & accessibilité

7 fonctionnalités

Prépresse

7 fonctionnalités

.NET

5 paquets NuGet

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. Les contrôles TsgcPDFBarcodeControl (VCL) et TsgcPDFBarcodeFMX (FireMonkey) les affichent sur les fiches, les enregistrent en PNG ou SVG et les dessinent sur une page PDF via Symbol.DrawToPDF.
Annotations et liensNotes autocollantes, texte libre, surlignage, soulignement et barré, lignes et flèches, carrés et cercles, encre à main levée et tampons, plus des liens vers des URL et des pages. Les flux d’apparence sont générés, de sorte que les annotations s’affichent dans Adobe Acrobat, les navigateurs et d’autres visionneuses.
Réponses aux commentairesLes réponses rattachées à n’importe quelle annotation forment une discussion en fil, chaque réponse ayant son propre auteur, sa date et son contenu.
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.
Annotations existantesLes annotations d’un PDF existant se chargent sous forme d’objets typés avec auteur, date, réponses et géométrie. Modifie-les en code ou dans la visionneuse puis enregistre, ou appelle SaveIncremental pour ajouter les modifications sans toucher aux octets d’origine, afin que les signatures existantes restent intactes.
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. Le zoom par rectangle (SelectionMode psmZoom, OnMarqueeZoom) zoome sur un rectangle tracé à la souris ou par un appui long suivi d’un glissement.
Visionneuses .NETTsgcPDFViewerControl pour WinForms, TsgcWpfPDFViewer pour WPF et TsgcAvaloniaPDFViewer pour Avalonia, chacune avec des vues de vignettes et de plan. Les visionneuses WPF et Avalonia offrent des modes de zoom, le zoom Ctrl+molette et par rectangle (pincement sur Avalonia), la sélection et la copie de texte, la recherche avec surbrillance, la navigation par liens et par plan, les zones de page et l’outil de mesure. Elles affichent les annotations et les champs de formulaire, mais ne les modifient pas.
Annotations interactivesDans Delphi VCL et FMX, C++Builder et .NET WinForms, les utilisateurs créent des annotations à la souris : notes autocollantes, texte libre, surlignage, soulignement et barré sur le texte, lignes et flèches, rectangles et ellipses, encre à main levée et tampons. Ils les sélectionnent, les déplacent, les redimensionnent, les modifient et les suppriment. Un clic sur une note ouvre une fenêtre contextuelle avec l’auteur, la date, le contenu et les réponses, où ils peuvent modifier et répondre. Les visionneuses déclenchent OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete et OnAnnotationSelect.
Panneau de commentairesTsgcPDFCommentsView (VCL) et TsgcPDFCommentsViewFMX listent chaque annotation par page avec auteur, date, contenu et réponses en fil, synchronisés avec la visionneuse.
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éfinis les valeurs des champs en code ou dans la visionneuse, puis aplatis le formulaire en contenu de page statique.
FDF et XFDFImporte et exporte 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.
Texte en contoursTsgcPDFTextOutliner remplace chaque glyphe par un tracé vectoriel de même position, couleur et taille, dans le contenu de la page, les form XObjects, les motifs de pavage, les polices Type3 et les apparences d’annotations, puis supprime les polices devenues inutiles. Le fichier s’imprime et s’affiche de la même façon mais n’a plus besoin d’aucune police, ce qui convient aux imprimeurs, aux RIP et aux licences de police qui interdisent l’incorporation. Le texte dans des polices non incorporées est converti avec la police de substitution du système qu’un lecteur utiliserait, et le texte invisible est supprimé. Le texte ne peut plus être sélectionné ni recherché.

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;

Convertir tout le texte en contours

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;

Archivage & accessibilité

FonctionnalitéDétails
PDF/ASortie PDF/A-1, PDF/A-2 et PDF/A-3 aux niveaux a et b, et PDF/A-4 et PDF/A-4f (paA4, paA4f) en fichiers PDF 2.0, avec métadonnées XMP, intention de sortie et polices incorporées. Dans Delphi et .NET.
ValidateurTsgcPDFAValidator vérifie un fichier par rapport au niveau PDF/A sélectionné, y compris PDF/A-4 et PDF/UA-2, et signale les erreurs et avertissements. La sortie PDF/A-4, PDF/A-4f et PDF/UA-2 est vérifiée avec veraPDF.
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.
PDF/UA-2Définissez PDFUAPart sur puaPart2 pour une sortie PDF/UA-2 (ISO 14289-2), seule ou avec PDF/A-4, avec l’espace de noms de structure PDF 2.0 et les destinations de structure. Dans Delphi et .NET, y compris l’export sgcReports et le pont sgcUIPDF.
Pièces jointesFichiers incorporés avec type MIME, dates et relations de fichiers associés PDF/A-3 et PDF/A-4f.
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;

PDF/A-4 et PDF/UA-2 dans un seul fichier

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;

Pour valider le fichier, créez le TsgcPDFAValidator avec paA4 et définissez ses propriétés PDFUA et PDFUAPart. Consultez les rubriques d’aide PDF/A-4 et PDF/UA-2.

Prépresse

La même API de prépresse dans Delphi et .NET, avec les mêmes noms.

FonctionnalitéDétails
Zones de pageMediaBox, CropBox, BleedBox, TrimBox et ArtBox sur TsgcPDFPage, avec Rotate et UserUnit, conservées au chargement et à l’enregistrement d’un fichier.
ImpositionAddPageAsForm transforme une page d’un autre document, découpée par une zone de page ou un rectangle, en XObject de formulaire que DrawForm, DrawFormInRect et DrawFormMatrix placent sur une feuille. La démo PDFImposition construit des mises en page de feuilles avec ces méthodes.
Repères d’impressionDrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar et DrawSlugText.
Couleurs d’accompagnementEspaces colorimétriques Separation, Registration et DeviceN, et états graphiques de surimpression pour le remplissage et le contour.
Aperçu de surimpressionOverprintPreview sur le moteur de rendu simule la surimpression à l’écran et dans la sortie matricielle.
Intention de sortie PDF/XSetOutputIntent écrit une intention de sortie GTS_PDFX avec un profil ICC facultatif, et PDFXVersion définit la clé de version PDF/X.
Outils de visionneuseAffichage des zones de page, indications de zones de page et outil de mesure dans les visionneuses VCL et WinForms, ainsi que dans les visionneuses WPF et Avalonia.

Deux pages sur une feuille avec repères de coupe (.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 pour .NET

Un portage C# entièrement managé de la bibliothèque, un fichier C# par unité Delphi, avec les mêmes noms de classes (TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor, etc.). Il est distribué sous forme de paquets NuGet, chacun également disponible en édition Community gratuite avec le suffixe .Community.

PaquetDétails
esegece.sgcPDFLa bibliothèque : modèle de document, analyseur, générateur, éditeur, moteur de rendu, polices, images, formulaires, signatures, chiffrement, extraction de texte et d'images, prépresse, PDF/A (dont PDF/A-4) et PDF/UA-2. Pour .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 et .NET 10.
esegece.sgcPDF.WinFormsMoteur de rendu GDI et canevas, lecture EMF, export des pages en images, et les contrôles TsgcPDFViewerControl (avec annotations interactives et réponses aux commentaires), TsgcPDFThumbnailView, TsgcPDFBarcodeControl et TsgcPDFOutlineView, avec zones de page et outil de mesure. Pour .NET Framework 4.7.2 et .NET 8 sous Windows.
esegece.sgcPDF.WpfVisionneuse WPF : TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView et TsgcWpfPDFOutlineView. Pour .NET Framework 4.7.2, .NET 8, .NET 9 et .NET 10 sous Windows.
esegece.sgcPDF.AvaloniaVisionneuse Avalonia : TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView et TsgcAvaloniaPDFOutlineView. Pour .NET 8, .NET 9 et .NET 10.
esegece.sgcPDF.sgcSignPasserelle optionnelle vers sgcSign .NET : TsgcPDFPAdESSigner signe au format PAdES B-B, B-T, B-LT et B-LTA avec n'importe quel fournisseur de clés sgcSign.
Édition CommunityMêmes fonctionnalités que l'édition enregistrée. Gratuite pour les particuliers et les organisations dont le chiffre d'affaires brut annuel est inférieur à 1 million d'euros et qui comptent au maximum 5 développeurs, avec une brève notification au démarrage.

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

Développe avec sgcPDF

Télécharge l'essai et ajoute des fonctionnalités PDF à ton application Delphi ou C++ Builder.