Delphi 7 tot en met 13 & C++ Builder Geen DLL's

sgcPDF, een PDF-bibliotheek in puur Object Pascal voor Delphi & C++ Builder

Maak, bewerk, bekijk, render, extraheer, versleutel, onderteken, lak zwart en valideer PDF-bestanden met componenten die volledig in Object Pascal zijn geschreven. Er is geen DLL om te implementeren en geen externe PDF-engine: de parser, writer, lettertypen, afbeeldingsdecoders, renderers en cryptografie worden meegecompileerd in uw toepassing. De kern draait op Windows, Linux, macOS, iOS en Android, met een VCL-viewerbesturingselement, een FireMonkey-viewer en een raster-renderer voor servers. De volledige broncode is inbegrepen.

Volledige broncode
Windows, Linux, macOS, iOS & Android
Delphi 7 → 13, C++ Builder
.NET-editie op NuGet
Geen externe afhankelijkheden
20 componenten sgcPDF_*.pas PDF 1.0 tot 2.0, lezen en schrijven, in puur Object Pascal.
Maken TsgcPDFDocument
Bewerken TsgcPDFEditor
Weergeven TsgcPDFViewerControl
Extraheren TsgcPDFTextExtractor
Ondertekenen PAdES B-B to B-LTA
PDF/A & PDF/UA TsgcPDFAValidator
Zwartlakken TsgcPDFRedactor
20 Paletcomponenten Document, editor, viewers, extractors, ondertekenen
0 Te implementeren DLL's Parser, writer, lettertypen en cryptografie in Pascal
5 Besturingssystemen Windows, Linux, macOS, iOS, Android
8 PDF/A-conformiteitsniveaus PDF/A-1, 2 en 3 (niveaus a en b), PDF/A-4 en 4f, plus PDF/UA-1 en PDF/UA-2

Drie dingen die u vooraf moet weten

Niets om te installeren op de doelmachine

sgcPDF is geen wrapper om PDFium, Ghostscript, een COM-server of een andere native bibliotheek. Parsen, schrijven, het insluiten en subsetten van lettertypen, beelddecodering, rendering, versleuteling en ondertekenen zijn geïmplementeerd in de sgcPDF_*.pas-units, zodat uw uitvoerbaar bestand de volledige implementatie is.

De kernunits hebben geen VCL- of FMX-afhankelijkheid, zodat dezelfde code werkt in een consoletool, een Windows-service, een Linux-daemon of een webserver.

Platformbereik

Welke onderdelen waar draaien

Aanmaken, bewerken, tekst- en beeldextractie, formulieren, versleuteling, handtekeningen, zwartlakken, PDF/A en de raster-renderer worden gecompileerd voor Windows en Linux64, en voor macOS, iOS en Android. De GDI-renderer, de exporter en de VCL-viewerbesturingselementen zijn alleen voor Windows, en TsgcPDFViewerFMX richt zich op Windows, macOS, iOS en Android. In .NET zijn de viewerbesturingselementen beschikbaar voor WinForms, WPF en Avalonia.

Geavanceerde handtekeningen

PAdES via sgcSign, basisondertekening ingebouwd

sgcPDF ondertekent en verifieert PDF-bestanden zelfstandig met een PFX-certificaat. Voor de PAdES-baselineniveaus B-B, B-T, B-LT en B-LTA, en voor sleutels op smartcards, in het Windows-certificaatarchief of in cloud-HSM's, gebruikt de optionele TsgcPDFPAdESSigner-brug de sleutelproviders van sgcSign, dat apart wordt gelicentieerd.

Één bibliotheek voor de hele PDF-levenscyclus

Van de eerste pagina die u schrijft tot het ondertekende, gearchiveerde en zwartgelakte bestand dat u aflevert: elke stap draait op dezelfde Object Pascal-codebasis.

Maken: documenten uit code, HTML of een canvas

Pagina's, tekst in de 14 standaardlettertypen of ingesloten en gesubsette TrueType- en OpenType-lettertypen, afbeeldingen (JPEG, PNG, BMP, TIFF), lijnen, krommen, verlopen, tabellen die over pagina's doorlopen, barcodes en QR-codes, annotaties en opmerkingen met reactiedraden, bladwijzers en optionele inhoudslagen. Eindgebruikers kunnen annotaties ook met de muis toevoegen, bewerken en beantwoorden, direct in de viewers. TsgcPDFHTMLRenderer zet HTML met CSS om in gepagineerde PDF, en TsgcPDFCanvas en EMF-afspelen zetten bestaande tekencode om.

Bekijk de functies →

Bewerken: wijzig bestanden die u niet zelf hebt geschreven

Watermerken, kop- en voetteksten, paginanummers en stempels, samenvoegen en splitsen, extraheren, invoegen, verwijderen, roteren en herordenen van pagina's. Incrementeel opslaan voegt een nieuwe revisie toe aan het oorspronkelijke bestand, waardoor eerdere handtekeningen geldig blijven.

Bekijk de functies →

Weergeven & renderen: VCL-, FMX-, WinForms-, WPF- en Avalonia-viewers, plus een serverrenderer

Een VCL-viewerbesturingselement met miniaturen, overzicht, opmerkingenpaneel, tekstselectie, zoeken, formulieren invullen en afdrukken, een FireMonkey-viewer voor Windows, macOS, iOS en Android met zoomen op een kader, .NET-viewers voor WinForms, WPF en Avalonia, en een raster-renderer in puur Object Pascal die pagina's zonder GDI omzet naar PNG op Windows- en Linux-servers.

Bekijk de functies →

Extraheren: tekst, posities en afbeeldingen

Platte tekst per pagina of voor het hele document, tekstfragmenten met coördinaten, lettertype en grootte, en de afbeeldingen van een pagina gedecodeerd naar PNG, JPEG of BMP. De decoders omvatten Flate, LZW, ASCII85, RunLength, JPEG (baseline en progressief), JPEG 2000, CCITT G3/G4 en JBIG2.

Bekijk de functies →

Beveiligen & ondertekenen: versleuteling, handtekeningen, zwartlakken

RC4 40/128-, AES-128- en AES-256-wachtwoordversleuteling, certificaatversleuteling (publieke sleutel), digitale handtekeningen met zichtbare velden en tijdstempels, PAdES B-B, B-T, B-LT en B-LTA via de sgcSign-brug, handtekeningverificatie en echt zwartlakken dat inhoud verwijdert in plaats van af te dekken.

Bekijk de functies →

Voldoen: PDF/A, PDF/UA, getagde PDF, Factur-X

PDF/A-1-, PDF/A-2- en PDF/A-3-uitvoer in niveaus a en b, PDF/A-4 en PDF/A-4f, met een ingebouwde validator, getagde PDF met structuurboom en alternatieve tekst, PDF/UA-1- en PDF/UA-2-uitvoer en -controles, ingesloten bestanden met PDF/A-3- en PDF/A-4f-relaties, en Factur-X-, ZUGFeRD- en XRechnung-e-factuurinsluiting.

Bekijk de functies →

Drukvoorbereiding: paginaboxen, impositie, markeringen

Media-, crop-, bleed-, trim- en artbox, pagina's van andere documenten die als formulieren worden geplaatst voor impositie, snij-, afloop- en registermarkeringen, Separation- en DeviceN-kleuren, overprintvoorbeeld en een PDF/X-output intent, in Delphi en .NET.

Bekijk de functies →

Een paar regels Delphi

Elk voorbeeld op deze pagina komt uit een programma dat tegen de sgcPDF-bronnen is gecompileerd en uitgevoerd. Coördinaten staan in PDF-punten (1/72 inch), met de oorsprong in de linkerbenedenhoek van de pagina.

procedure CreateHelloPDF(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.Info.Title := 'Hello sgcPDF';
    // A4 portrait: 595 x 842 points, origin at the bottom left corner
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawTextColor('Hello sgcPDF', 50, 780, sfHelveticaBold, 24, 0, 0.2, 0.6);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    oPage.DrawText('A PDF written in pure Pascal.', 50, 740, sfHelvetica, 12);
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;
procedure StampExistingPDF(const AInput, AOutput: string);
var
  oEditor: TsgcPDFEditor;
  oWatermark: TsgcPDFWatermarkOptions;
begin
  oEditor := TsgcPDFEditor.Create;
  try
    oEditor.LoadFromFile(AInput);
    oWatermark.Text := 'CONFIDENTIAL';
    oWatermark.Font := sfHelveticaBold;
    oWatermark.FontSize := 48;
    oWatermark.Rotation := 45;
    oWatermark.Opacity := 0.3;
    oWatermark.R := 0.5;
    oWatermark.G := 0.5;
    oWatermark.B := 0.5;
    oEditor.AddWatermarkAllPages(oWatermark);
    oEditor.AddPageNumbers(sfHelvetica, 10, 'Page %d of %d');
    oEditor.SaveToFile(AOutput);
  finally
    oEditor.Free;
  end;
end;
procedure PrintAllText(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  i: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(AFileName);
    for i := 0 to oPDF.PageCount - 1 do
      WriteLn(string(oPDF.ExtractTextW(i)));
  finally
    oPDF.Free;
  end;
end;
procedure RenderPageToPNG(const APDFFile, APNGFile: string; ADPI: Integer);
var
  oPDF: TsgcPDFDocument;
  oRenderer: TsgcPDFRendererRaster;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(APDFFile);
    oPage := oPDF.Pages[0];
    // pure Pascal rasterizer: no GDI, runs on Windows and Linux servers
    oRenderer := TsgcPDFRendererRaster.Create;
    try
      oRenderer.RenderPageToPNG(oPDF.Parser, oPage.PageDict,
        Round(oPage.Width * ADPI / 72), Round(oPage.Height * ADPI / 72),
        APNGFile);
    finally
      oRenderer.Free;
    end;
  finally
    oPDF.Free;
  end;
end;
procedure CreateTicketPDF(const aFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
  oSymbol: TsgcPDFBarcodeSymbol;
begin
  oPDF := TsgcPDFDocument.Create(nil);
  oSymbol := TsgcPDFBarcodeSymbol.Create;
  try
    oPDF.Info.Title := 'Ticket';
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawText('Ticket 2026-001', 50, 780, sfHelveticaBold, 24);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol.Symbology := bcCode128;
    oSymbol.Text := 'TKT-2026-001';
    oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, $000000, $FFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol.Symbology := bcQRCode;
    oSymbol.QRErrorLevel := qrecQ;
    oSymbol.Text := 'https://www.esegece.com';
    oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, $000000, $FFFFFF);
    oPDF.SaveToFile(aFileName);
  finally
    oSymbol.Free;
    oPDF.Free;
  end;
end;

Tekent de barcode als vectorafbeelding rechtstreeks op de pagina. Units: sgcPDF_Document, sgcPDF_Barcodes, sgcPDF_Barcode_Symbol. Zie TsgcPDFBarcodeSymbol en de barcodehandleiding.

#include <System.hpp>
#include "sgcPDF_Document.hpp"
#include "sgcPDF_Barcodes.hpp"
#include "sgcPDF_Barcode_Symbol.hpp"

void __fastcall CreateTicketPDF(const String aFileName)
{
  TsgcPDFDocument *oPDF = new TsgcPDFDocument(NULL);
  TsgcPDFBarcodeSymbol *oSymbol = new TsgcPDFBarcodeSymbol();
  try
  {
    oPDF->Info->Title = "Ticket";
    TsgcPDFPage *oPage = oPDF->AddPage(595, 842);
    oPage->DrawText("Ticket 2026-001", 50, 780, sfHelveticaBold, 24);
    oPage->DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol->Symbology = bcCode128;
    oSymbol->Text = "TKT-2026-001";
    oSymbol->DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol->Symbology = bcQRCode;
    oSymbol->QRErrorLevel = qrecQ;
    oSymbol->Text = "https://www.esegece.com";
    oSymbol->DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);
    oPDF->SaveToFile(aFileName);
  }
  __finally
  {
    delete oSymbol;
    delete oPDF;
  }
}

Gecompileerd met de C++ Builder-headers die uit de sgcPDF-bronnen zijn gegenereerd. Zie het onderwerp TsgcPDFBarcodeSymbol en de C++ Builder-notities.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.Info.Title = "Ticket";
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Ticket 2026-001", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.5);

            // Code 128 barcode in a 250 x 60 point box, black on white
            TsgcPDFBarcodeSymbol oSymbol = new TsgcPDFBarcodeSymbol();
            oSymbol.Symbology = TsgcPDFBarcodeType.bcCode128;
            oSymbol.Text = "TKT-2026-001";
            oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);

            // QR Code in a 120 x 120 point box
            oSymbol.Symbology = TsgcPDFBarcodeType.bcQRCode;
            oSymbol.QRErrorLevel = TsgcPDFQRErrorLevel.qrecQ;
            oSymbol.Text = "https://www.esegece.com";
            oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);

            oDoc.SaveToFile("ticket.pdf");
        }
    }
}

De .NET-klasse heeft geen afhankelijkheid van WinForms of GDI en draait dus ook op servers en in consoletools. Zie de verschillen in de .NET-API.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        // Create a one page A4 document and save it
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Hello from sgcPDF", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.0);
            oPage.DrawText("Created with sgcPDF .NET.", 50, 740, TsgcPDFStandardFont.sfHelvetica, 12);
            oDoc.SaveToFile("hello.pdf");
        }

        // Load it again and extract the text of every page
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.LoadFromFile("hello.pdf");
            for (int i = 0; i < oDoc.PageCount(); i++)
                Console.WriteLine(oDoc.ExtractTextW(i));
        }
    }
}
TsgcPDFBarcodeControl met de symbolen Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, QR Code, DataMatrix, PDF417 en GS1-128
Eén barcodebesturingselement, elf symbologieën waaronder QR Code, DataMatrix en PDF417

20 componenten op het sgcPDF-palet

Zet ze op een formulier of een datamodule, of maak ze aan in code. Elk component is ook bruikbaar zonder formulier, vanuit consoletoepassingen en services.

Alle componenten

Proefversie en licenties

sgcPDF wordt afzonderlijk gelicentieerd, vanaf €249 voor een enkele ontwikkelaar. Elke licentie omvat volledige broncode, 1 jaar updates en 50% tot 70% verlengingskorting. Wilt u sgcPDF eerst uitproberen, download dan de gratis proefversie. sgcPDF zit ook in sgcUI Enterprise en in de All-Access-bundel.

sgcPDF

€249

Single-, Team- en Site-licenties beschikbaar.

  • Alle 20 componenten en de sgcPDF_*.pas-units
  • Delphi 7 tot en met 13 en C++ Builder
  • Windows, Linux, macOS, iOS en Android
  • Volledige broncode
  • 1 jaar updates

sgcPDF .NET

€249

Single-, Team- en Site-licenties beschikbaar.

  • NuGet: esegece.sgcPDF
  • .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10
  • Volledige broncode
  • 1 jaar updates

sgcPDF voor .NET

sgcPDF is ook beschikbaar voor .NET als volledig managed C#-port, met dezelfde klassenamen als de Delphi-bibliotheek. Het wordt geleverd als NuGet-pakketten voor .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 en .NET 10, zonder native DLL.

esegece.sgcPDF

De bibliotheek: documentmodel, parser, writer, editor, renderingkern, lettertypen, afbeeldingen, formulieren, handtekeningen, versleuteling, tekst- en afbeeldingsextractie, drukvoorbereiding, PDF/A (inclusief PDF/A-4) en PDF/UA-2.

esegece.sgcPDF.WinForms

Windows Forms-add-on: GDI-renderer en canvas, EMF-afspelen, paginaexport naar afbeeldingen, en de besturingselementen TsgcPDFViewerControl (met interactieve annotaties en reacties op opmerkingen), TsgcPDFThumbnailView en TsgcPDFOutlineView, met paginaboxen en een meetgereedschap.

esegece.sgcPDF.Wpf

WPF-viewer: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView en TsgcWpfPDFOutlineView, met zoommodi, zoomen op een kader, tekstselectie, zoeken, koppelingen, paginaboxen en het meetgereedschap. Annotaties en formuliervelden worden weergegeven.

esegece.sgcPDF.Avalonia

Avalonia-viewer: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView en TsgcAvaloniaPDFOutlineView, met dezelfde weergavefuncties als de WPF-viewer plus zoomen met knijpen.

esegece.sgcPDF.sgcSign

Optionele brug naar sgcSign .NET: TsgcPDFPAdESSigner ondertekent naar PAdES B-B, B-T, B-LT en B-LTA met elke sgcSign-sleutelprovider.

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

Elk pakket wordt ook geleverd als gratis Community-editie met de suffix .Community, bijvoorbeeld dotnet add package esegece.sgcPDF.Community. Beide edities hebben dezelfde functies. De Community-editie is gratis voor individuen en organisaties met een jaarlijkse brutomzet onder 1 miljoen euro en niet meer dan 5 ontwikkelaars, en toont een korte melding bij het opstarten. De geregistreerde editie verwijdert de melding en bevat de commerciële licentie.

Bekijk op NuGet .NET-downloads

sgcPDF maakt deel uit van sgcUI Enterprise

sgcPDF behoort tot de sgcUI-suite met componenten voor Delphi en C++ Builder en is inbegrepen in de sgcUI Enterprise-editie, samen met alle andere sgcUI-producten. Het is ook beschikbaar als los pakket. De prijzen staan op de sgcUI-prijzenpagina en de sgcPDF-prijzenpagina.

sgcReports

Rapportontwerper en rapportengine die voltooide rapporten via sgcPDF naar PDF exporteert.

Meer over sgcReports →

sgcGrid

Krachtig datagrid voor Delphi en C++ Builder.

Meer over sgcGrid →

sgcCharts

Grafieken voor dashboards en rapporten.

Meer over sgcCharts →

sgcDashboard

Tegels, KPI's en indelingen voor dashboards.

Meer over sgcDashboard →

Online help: introductie, snelstart, installatie en .NET-installatie.

Andere producten van eSeGeCe

Combineer sgcPDF met onze andere Delphi- en C++Builder-componentbibliotheken.

sgcSign

Digitale handtekeningen voor de enterprise. XAdES, PAdES, CAdES en ASiC met 10 sleutelproviders en 21 EU-landprofielen.

Meer informatie →

sgcWebSockets

Enterprise WebSocket-, HTTP/2-, MQTT-, AMQP- en WebRTC-componenten voor Delphi, C++ Builder en .NET.

Meer informatie →

sgcHTML

Server-side HTML- en UI-componenten voor Delphi en C++ Builder, gebouwd op Bootstrap en htmx.

Meer informatie →

sgcCrypto

Moderne cryptografie in puur Object Pascal: AES-GCM, SHA-3, Ed25519, X.509 en post-quantum ML-KEM en ML-DSA.

Meer informatie →
3,000+Ontwikkelaars
20+Jaar
761+Componenten
30+API-integraties
5Platformen
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid

PDF zonder de DLL

Maak, bekijk, onderteken en archiveer PDF-bestanden met de Delphi- of C++Builder-code die u al hebt.