Delphi 7-13 e C++ Builder Nessuna DLL

sgcPDF, una libreria PDF in puro Object Pascal per Delphi e C++ Builder

Crea, modifica, visualizza, esegui il rendering, estrai, cifra, firma, redigi e valida file PDF con componenti scritti interamente in Object Pascal. Non c’è nessuna DLL da distribuire né alcun motore PDF esterno: il parser, lo scrittore, i font, i decoder immagine, i renderer e la crittografia sono compilati nella tua applicazione. Il nucleo funziona su Windows, Linux, macOS, iOS e Android, con un controllo visualizzatore VCL, un visualizzatore FireMonkey e un renderer raster per i server. Il codice sorgente completo è incluso.

Codice sorgente completo
Windows, Linux, macOS, iOS & Android
Delphi 7 → 13, C++ Builder
Edizione .NET su NuGet
Zero dipendenze esterne
20 componenti sgcPDF_*.pas PDF 1.0-2.0, lettura e scrittura, in puro Object Pascal.
Crea TsgcPDFDocument
Modifica TsgcPDFEditor
Visualizza TsgcPDFViewerControl
Estrai TsgcPDFTextExtractor
Firma PAdES B-B to B-LTA
PDF/A & PDF/UA TsgcPDFAValidator
Redigi TsgcPDFRedactor
20 Componenti della palette Documento, editor, visualizzatori, estrattori, firma
0 DLL da distribuire Parser, renderer, font e crittografia in Pascal
5 Sistemi operativi Windows, Linux, macOS, iOS, Android
8 Livelli di conformità PDF/A PDF/A-1, 2 e 3 (livelli a e b), PDF/A-4 e 4f, più PDF/UA-1 e PDF/UA-2

Tre cose da sapere prima di iniziare

Niente da installare sulla macchina di destinazione

sgcPDF non racchiude PDFium, Ghostscript, un server COM o un’altra libreria nativa. L’analisi, la scrittura, l’incorporamento e il subsetting dei font, la decodifica delle immagini, il rendering, la cifratura e la firma sono implementati nelle unità sgcPDF_*.pas, quindi il tuo eseguibile è l’intero deployment.

Le unità del nucleo non hanno alcuna dipendenza da VCL o FMX, quindi lo stesso codice viene eseguito in uno strumento a riga di comando, un servizio Windows, un demone Linux o un server web.

Ambito piattaforme

Quali parti girano dove

Creazione, modifica, estrazione di testo e immagini, moduli, cifratura, firme, oscuramento, PDF/A e il renderer raster vengono compilati per Windows e Linux64, oltre che per macOS, iOS e Android. Il renderer GDI, l’esportatore e i controlli visualizzatore VCL sono disponibili solo su Windows, mentre TsgcPDFViewerFMX è destinato a Windows, macOS, iOS e Android. In .NET, i controlli visualizzatore sono disponibili per WinForms, WPF e Avalonia.

Firme avanzate

PAdES tramite sgcSign, firma di base integrata

sgcPDF firma e verifica autonomamente i file PDF con un certificato PFX. Per i livelli PAdES baseline B-B, B-T, B-LT e B-LTA, e per le chiavi conservate su smart card, nell’archivio certificati di Windows o su HSM cloud, il ponte opzionale TsgcPDFPAdESSigner utilizza i provider di chiavi di sgcSign, concesso in licenza separatamente.

Un’unica libreria per l’intero ciclo di vita del PDF

Dalla prima pagina che scrivi al file firmato, archiviato e oscurato che consegni, ogni passaggio viene eseguito nella stessa base di codice Object Pascal.

Crea: documenti da codice, HTML o un canvas

Pagine, testo nei 14 font standard oppure font TrueType e OpenType incorporati e in subset, immagini (JPEG, PNG, BMP, TIFF), linee, curve, sfumature, tabelle che scorrono tra le pagine, codici a barre e QR code, annotazioni e commenti con risposte a thread, segnalibri e livelli di contenuto opzionali. Gli utenti finali possono anche aggiungere, modificare e rispondere alle annotazioni con il mouse, direttamente nei visualizzatori. TsgcPDFHTMLRenderer trasforma HTML con CSS in PDF impaginato, mentre TsgcPDFCanvas e il replay EMF convertono codice di disegno esistente.

Vedi le funzionalità →

Modifica: cambia file che non hai scritto tu

Filigrane, intestazioni, piè di pagina, numeri di pagina e timbri, unione e divisione, estrazione, inserimento, eliminazione, rotazione e riordino delle pagine. Il salvataggio incrementale aggiunge una nuova revisione al file originale, mantenendo valide le firme precedenti.

Vedi le funzionalità →

Visualizza e rendering: visualizzatori VCL, FMX, WinForms, WPF e Avalonia, più un renderer per server

Un controllo visualizzatore VCL con miniature, struttura, pannello commenti, selezione del testo, ricerca, compilazione moduli e stampa, un visualizzatore FireMonkey per Windows, macOS, iOS e Android con zoom a rettangolo, visualizzatori .NET per WinForms, WPF e Avalonia, e un renderer raster in puro Object Pascal che trasforma le pagine in PNG su server Windows e Linux senza GDI.

Vedi le funzionalità →

Estrai: testo, posizioni e immagini

Testo semplice per pagina o per l’intero documento, frammenti di testo con coordinate, font e dimensione, e le immagini di una pagina decodificate in PNG, JPEG o BMP. I decoder coprono Flate, LZW, ASCII85, RunLength, JPEG (baseline e progressivo), JPEG 2000, CCITT G3/G4 e JBIG2.

Vedi le funzionalità →

Proteggi e firma: cifratura, firme, oscuramento

Cifratura con password RC4 40/128, AES-128 e AES-256, cifratura tramite certificato (chiave pubblica), firme digitali con campi visibili e marche temporali, PAdES B-B, B-T, B-LT e B-LTA tramite il ponte sgcSign, verifica delle firme e un vero oscuramento che rimuove il contenuto invece di coprirlo.

Vedi le funzionalità →

Conformità: PDF/A, PDF/UA, PDF taggato, Factur-X

Output PDF/A-1, PDF/A-2 e PDF/A-3 nei livelli a e b, PDF/A-4 e PDF/A-4f, con un validatore integrato, PDF taggato con albero di struttura e testo alternativo, output e controlli PDF/UA-1 e PDF/UA-2, file incorporati con relazioni PDF/A-3 e PDF/A-4f, e incorporamento di fatture elettroniche Factur-X, ZUGFeRD e XRechnung.

Vedi le funzionalità →

Stampa: riquadri di pagina, imposizione, segni

Riquadri media, di ritaglio, di abbondanza, di rifilo e artistico, pagine di altri documenti inserite come form per l’imposizione, segni di taglio, di abbondanza e di registro, colori Separation e DeviceN, anteprima di sovrastampa e output intent PDF/X, in Delphi e .NET.

Scopri le funzionalità →

Poche righe di Delphi

Ogni esempio in questa pagina proviene da un programma compilato con i sorgenti sgcPDF ed eseguito. Le coordinate sono in punti PDF (1/72 di pollice), con l’origine nell’angolo inferiore sinistro della 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;

Disegna il codice a barre come grafica vettoriale direttamente sulla pagina. Unit: sgcPDF_Document, sgcPDF_Barcodes, sgcPDF_Barcode_Symbol. Consulta TsgcPDFBarcodeSymbol e la guida ai codici a barre.

#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;
  }
}

Compilato con le intestazioni C++ Builder generate dai sorgenti di sgcPDF. Consulta l'argomento TsgcPDFBarcodeSymbol e le note su C++ Builder.

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");
        }
    }
}

La classe .NET non ha dipendenze da WinForms o GDI, quindi gira anche sui server e negli strumenti da console. Consulta le differenze delle API .NET.

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 con i simboli Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, QR Code, DataMatrix, PDF417 e GS1-128
Un solo controllo per codici a barre, undici simbologie tra cui QR Code, DataMatrix e PDF417

20 componenti nella palette sgcPDF

Trascinali su una form o un modulo dati, oppure creali via codice. Ogni componente è utilizzabile anche senza una form, da applicazioni console e servizi.

Tutti i componenti

Prova e licenze

sgcPDF è concesso in licenza separatamente, a partire da €249 per un singolo sviluppatore. Ogni licenza include il codice sorgente completo, 1 anno di aggiornamenti e uno sconto di rinnovo del 50% al 70%. Per valutarlo prima, scarica la prova gratuita. sgcPDF fa parte anche di sgcUI Enterprise e del bundle All-Access.

sgcPDF

€249

Licenze Single, Team e Site disponibili.

  • Tutti i 20 componenti e le unità sgcPDF_*.pas
  • Delphi 7-13 e C++ Builder
  • Windows, Linux, macOS, iOS e Android
  • Codice sorgente completo
  • 1 anno di aggiornamenti

sgcPDF .NET

€249

Licenze Single, Team e Site disponibili.

  • NuGet: esegece.sgcPDF
  • .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10
  • Codice sorgente completo
  • 1 anno di aggiornamenti

sgcPDF per .NET

sgcPDF è disponibile anche per .NET come port in C# completamente gestito, con gli stessi nomi di classe della libreria Delphi. Viene distribuito come pacchetti NuGet per .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 e .NET 10, senza DLL native.

esegece.sgcPDF

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

esegece.sgcPDF.WinForms

Componente aggiuntivo Windows Forms: renderer GDI e canvas, riproduzione EMF, esportazione delle pagine in immagini, e i controlli TsgcPDFViewerControl (con annotazioni interattive e risposte ai commenti), TsgcPDFThumbnailView e TsgcPDFOutlineView, con riquadri di pagina e strumento di misura.

esegece.sgcPDF.Wpf

Visualizzatore WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView e TsgcWpfPDFOutlineView, con modalità di zoom, zoom a rettangolo, selezione del testo, ricerca, collegamenti, riquadri di pagina e strumento di misura. Annotazioni e campi modulo vengono visualizzati.

esegece.sgcPDF.Avalonia

Visualizzatore Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView e TsgcAvaloniaPDFOutlineView, con le stesse funzioni di visualizzazione del visualizzatore WPF più lo zoom a pizzico.

esegece.sgcPDF.sgcSign

Ponte opzionale verso sgcSign .NET: TsgcPDFPAdESSigner firma in PAdES B-B, B-T, B-LT e B-LTA con qualsiasi provider di chiavi sgcSign.

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

Ogni pacchetto viene distribuito anche come edizione Community gratuita con il suffisso .Community, ad esempio dotnet add package esegece.sgcPDF.Community. Entrambe le edizioni offrono le stesse funzionalità. L'edizione Community è gratuita per privati e organizzazioni con un fatturato lordo annuo inferiore a 1 milione di euro e non più di 5 sviluppatori, e mostra un breve avviso all'avvio. L'edizione registrata rimuove l'avviso e include la licenza commerciale.

Vedi su NuGet Download .NET

sgcPDF fa parte di sgcUI Enterprise

sgcPDF appartiene alla suite sgcUI di componenti per Delphi e C++ Builder ed è incluso nell'edizione sgcUI Enterprise, insieme a tutti gli altri prodotti sgcUI. È disponibile anche come pacchetto singolo. I prezzi sono nella pagina dei prezzi di sgcUI e nella pagina dei prezzi di sgcPDF.

sgcReports

Designer e motore di report che esporta i report finiti in PDF tramite sgcPDF.

Scopri sgcReports →

sgcGrid

Griglia dati ad alte prestazioni per Delphi e C++ Builder.

Scopri sgcGrid →

sgcCharts

Grafici per dashboard e report.

Scopri sgcCharts →

sgcDashboard

Tile, KPI e layout per le dashboard.

Scopri sgcDashboard →

Guida online: introduzione, guida rapida, installazione e installazione .NET.

Altri prodotti eSeGeCe

Abbina sgcPDF alle nostre altre librerie di componenti per Delphi e C++ Builder.

sgcSign

Firme digitali aziendali. XAdES, PAdES, CAdES e ASiC con 10 provider di chiavi e 21 profili per paese UE.

Scopri di più →

sgcWebSockets

Componenti aziendali WebSocket, HTTP/2, MQTT, AMQP e WebRTC per Delphi, C++ Builder e .NET.

Scopri di più →

sgcHTML

Componenti HTML e UI lato server per Delphi e C++ Builder, basati su Bootstrap e htmx.

Scopri di più →

sgcCrypto

Crittografia moderna in puro Object Pascal: AES-GCM, SHA-3, Ed25519, X.509 e post-quantum ML-KEM e ML-DSA.

Scopri di più →
3,000+Sviluppatori
20+Anni
761+Componenti
30+Integrazioni API
5Piattaforme
Garanzia soddisfatti o rimborsati di 30 giorniNon sei soddisfatto? Richiedi un rimborso completo entro 30 giorni dall'acquisto. Vedi la politica di rimborso

PDF senza la DLL

Crea, visualizza, firma e archivia file PDF con il codice Delphi o C++ Builder che hai già.