Delphi 7 a 13 e C++ Builder Sem DLLs

sgcPDF, uma biblioteca de PDF em Object Pascal puro para Delphi e C++ Builder

Crie, edite, visualize, renderize, extraia, criptografe, assine, redija e valide arquivos PDF com componentes escritos inteiramente em Object Pascal. Não há nenhuma DLL para implantar nem nenhum mecanismo de PDF externo: o parser, o gravador, as fontes, os decodificadores de imagem, os renderizadores e a criptografia são compilados dentro da sua aplicação. O núcleo roda em Windows, Linux, macOS, iOS e Android, com um controle visualizador VCL, um visualizador FireMonkey e um renderizador raster para servidores. O código-fonte completo está incluso.

Código-fonte completo
Windows, Linux, macOS, iOS & Android
Delphi 7 → 13, C++ Builder
Edição .NET no NuGet
Zero dependências externas
20 componentes sgcPDF_*.pas PDF 1.0 a 2.0, leitura e gravação, em Object Pascal puro.
Criar TsgcPDFDocument
Editar TsgcPDFEditor
Visualizar TsgcPDFViewerControl
Extrair TsgcPDFTextExtractor
Assinar PAdES B-B to B-LTA
PDF/A & PDF/UA TsgcPDFAValidator
Ocultar TsgcPDFRedactor
20 Componentes da paleta Documento, editor, visualizadores, extratores, assinatura
0 DLLs para implantar Parser, renderizador, fontes e criptografia em Pascal
5 Sistemas operacionais Windows, Linux, macOS, iOS, Android
8 Níveis de conformidade PDF/A PDF/A-1, 2 e 3 (níveis a e b), PDF/A-4 e 4f, além de PDF/UA-1 e PDF/UA-2

Três coisas que vale a pena saber primeiro

Nada para instalar na máquina de destino

O sgcPDF não encapsula o PDFium, o Ghostscript, um servidor COM ou qualquer outra biblioteca nativa. A análise, a gravação, a incorporação e o subconjunto de fontes, a decodificação de imagens, a renderização, a criptografia e a assinatura estão implementadas nas units sgcPDF_*.pas, de modo que seu executável é toda a implantação.

As units do núcleo não têm dependência de VCL ou FMX, de modo que o mesmo código roda em uma ferramenta de console, um serviço do Windows, um daemon Linux ou um servidor web.

Escopo de plataformas

Quais partes rodam onde

Criação, edição, extração de texto e imagens, formulários, criptografia, assinaturas, ocultação, PDF/A e o renderizador raster compilam para Windows e Linux64, e para macOS, iOS e Android. O renderizador GDI, o exportador e os controles visualizadores VCL são exclusivos do Windows, e o TsgcPDFViewerFMX tem como destino Windows, macOS, iOS e Android. No .NET, os controles de visualização estão disponíveis para WinForms, WPF e Avalonia.

Assinaturas avançadas

PAdES via sgcSign, assinatura básica embutida

O sgcPDF assina e verifica arquivos PDF sozinho com um certificado PFX. Para os níveis PAdES baseline B-B, B-T, B-LT e B-LTA, e para chaves mantidas em cartões inteligentes, no repositório de certificados do Windows ou em HSMs na nuvem, a ponte opcional TsgcPDFPAdESSigner usa os provedores de chave do sgcSign, licenciado separadamente.

Uma biblioteca para todo o ciclo de vida do PDF

Da primeira página que você escreve até o arquivo assinado, arquivado e com as partes sensíveis ocultadas que você entrega, cada etapa roda na mesma base de código Object Pascal.

Criar: Documentos a partir de código, HTML ou um canvas

Páginas, texto nas 14 fontes padrão ou fontes TrueType e OpenType incorporadas e em subconjunto, imagens (JPEG, PNG, BMP, TIFF), linhas, curvas, gradientes, tabelas que fluem entre páginas, códigos de barras e QR codes, anotações e comentários com respostas em thread, marcadores e camadas de conteúdo opcionais. Os usuários finais também podem adicionar, editar e responder a anotações com o mouse, direto nos visualizadores. O TsgcPDFHTMLRenderer transforma HTML com CSS em PDF paginado, e o TsgcPDFCanvas junto com a reprodução de EMF convertem código de desenho existente.

Ver os recursos →

Editar: Altere arquivos que você não escreveu

Marcas d’água, cabeçalhos, rodapés, numeração de páginas e carimbos, mesclagem e divisão, extração, inserção, exclusão, rotação e reordenação de páginas. O salvamento incremental anexa uma nova revisão ao arquivo original, o que mantém válidas as assinaturas anteriores.

Ver os recursos →

Visualizar e renderizar: visualizadores VCL, FMX, WinForms, WPF e Avalonia, além de um renderizador de servidor

Um controle visualizador VCL com miniaturas, esquema, painel de comentários, seleção de texto, busca, preenchimento de formulários e impressão, um visualizador FireMonkey para Windows, macOS, iOS e Android com zoom por retângulo, visualizadores .NET para WinForms, WPF e Avalonia, e um renderizador raster em Object Pascal puro que converte páginas em PNG em servidores Windows e Linux sem GDI.

Ver os recursos →

Extrair: Texto, posições e imagens

Texto simples por página ou para o documento inteiro, fragmentos de texto com coordenadas, fonte e tamanho, e as imagens de uma página decodificadas para PNG, JPEG ou BMP. Os decodificadores cobrem Flate, LZW, ASCII85, RunLength, JPEG (baseline e progressivo), JPEG 2000, CCITT G3/G4 e JBIG2.

Ver os recursos →

Proteger e assinar: Criptografia, assinaturas, ocultação

Criptografia por senha RC4 40/128, AES-128 e AES-256, criptografia por certificado (chave pública), assinaturas digitais com campos visíveis e carimbos de data/hora, PAdES B-B, B-T, B-LT e B-LTA por meio da ponte sgcSign, verificação de assinaturas e uma ocultação real que remove o conteúdo em vez de apenas cobri-lo.

Ver os recursos →

Conformidade: PDF/A, PDF/UA, PDF marcado, Factur-X

Saída PDF/A-1, PDF/A-2 e PDF/A-3 nos níveis a e b, PDF/A-4 e PDF/A-4f, com um validador embutido, PDF marcado com árvore de estrutura e texto alternativo, saída e verificações PDF/UA-1 e PDF/UA-2, arquivos incorporados com relações PDF/A-3 e PDF/A-4f, e incorporação de notas fiscais eletrônicas Factur-X, ZUGFeRD e XRechnung.

Ver os recursos →

Pré-impressão: caixas de página, imposição, marcas

Caixas de página (Media, Crop, Bleed, Trim e Art), páginas de outros documentos posicionadas como formulários para imposição, marcas de corte, de sangria e de registro, cores Separation e DeviceN, visualização de sobreimpressão e output intent PDF/X, no Delphi e no .NET.

Ver os recursos →

Poucas linhas de Delphi

Cada amostra nesta página vem de um programa que foi compilado com as fontes do sgcPDF e executado. As coordenadas estão em pontos PDF (1/72 de polegada), com a origem no canto inferior esquerdo da página.

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;

Desenha o código de barras como gráficos vetoriais diretamente na página. Units: sgcPDF_Document, sgcPDF_Barcodes, sgcPDF_Barcode_Symbol. Veja TsgcPDFBarcodeSymbol e o guia de códigos de barras.

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

Compilado com os cabeçalhos do C++ Builder gerados a partir dos fontes do sgcPDF. Veja o tópico TsgcPDFBarcodeSymbol e as observações sobre o 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");
        }
    }
}

A classe .NET não tem dependência de WinForms nem de GDI, portanto também roda em servidores e em ferramentas de console. Veja as diferenças da 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 exibindo os símbolos Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, QR Code, DataMatrix, PDF417 e GS1-128
Um controle de código de barras, onze simbologias, incluindo QR Code, DataMatrix e PDF417

20 componentes na paleta do sgcPDF

Solte-os em um formulário ou em um módulo de dados, ou crie-os em código. Cada componente também pode ser usado sem formulário, a partir de aplicações de console e serviços.

Todos os componentes

Teste e Licenciamento

O sgcPDF é licenciado por conta própria, a partir de €249 para um único desenvolvedor. Todas as licenças incluem código-fonte completo, 1 ano de atualizações e 50% a 70% de desconto na renovação. Para avaliá-lo primeiro, baixe o teste gratuito. O sgcPDF também faz parte do sgcUI Enterprise e do pacote All-Access.

sgcPDF

€249

Licenças Single, Team e Site disponíveis.

  • Todos os 20 componentes e as units sgcPDF_*.pas
  • Delphi 7 a 13 e C++ Builder
  • Windows, Linux, macOS, iOS e Android
  • Código-fonte completo
  • 1 ano de atualizações

sgcPDF .NET

€249

Licenças Single, Team e Site disponíveis.

  • NuGet: esegece.sgcPDF
  • .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10
  • Código-fonte completo
  • 1 ano de atualizações

sgcPDF para .NET

O sgcPDF também está disponível para .NET como um port em C# totalmente gerenciado, com os mesmos nomes de classe da biblioteca Delphi. É distribuído como pacotes NuGet para .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 e .NET 10, sem DLL nativa.

esegece.sgcPDF

A biblioteca: modelo de documento, parser, writer, editor, núcleo de renderização, fontes, imagens, formulários, assinaturas, criptografia, extração de texto e imagens, pré-impressão, PDF/A (incluindo PDF/A-4) e PDF/UA-2.

esegece.sgcPDF.WinForms

Complemento Windows Forms: renderizador GDI e canvas, reprodução de EMF, exportação de páginas para imagens, e os controles TsgcPDFViewerControl (com anotações interativas e respostas a comentários), TsgcPDFThumbnailView e TsgcPDFOutlineView, com caixas de página e uma ferramenta de medição.

esegece.sgcPDF.Wpf

Visualizador WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView e TsgcWpfPDFOutlineView, com modos de zoom, zoom por retângulo, seleção de texto, busca, links, caixas de página e a ferramenta de medição. Anotações e campos de formulário são exibidos.

esegece.sgcPDF.Avalonia

Visualizador Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView e TsgcAvaloniaPDFOutlineView, com os mesmos recursos de visualização do visualizador WPF e ainda zoom por pinça.

esegece.sgcPDF.sgcSign

Ponte opcional com sgcSign .NET: TsgcPDFPAdESSigner assina em PAdES B-B, B-T, B-LT e B-LTA com qualquer provedor de chave do 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

Cada pacote também é distribuído como edição Community gratuita com o sufixo .Community, por exemplo dotnet add package esegece.sgcPDF.Community. Ambas as edições têm os mesmos recursos. A edição Community é gratuita para pessoas físicas e organizações com faturamento bruto anual abaixo de EUR 1 milhão e no máximo 5 desenvolvedores, e exibe um breve aviso na inicialização. A edição registrada remove o aviso e inclui a licença comercial.

Ver no NuGet Downloads .NET

O sgcPDF faz parte do sgcUI Enterprise

O sgcPDF pertence à suíte de componentes sgcUI para Delphi e C++ Builder e está incluído na edição sgcUI Enterprise, junto com todos os outros produtos sgcUI. Ele também está disponível como pacote individual. Os preços estão na página de preços do sgcUI e na página de preços do sgcPDF.

sgcReports

Designer e motor de relatórios que exporta relatórios prontos para PDF por meio do sgcPDF.

Conheça o sgcReports →

sgcGrid

Grade de dados de alto desempenho para Delphi e C++ Builder.

Conheça o sgcGrid →

sgcCharts

Gráficos para dashboards e relatórios.

Conheça o sgcCharts →

sgcDashboard

Blocos, KPIs e layouts para dashboards.

Conheça o sgcDashboard →

Ajuda online: introdução, início rápido, instalação e instalação do .NET.

Outros produtos da eSeGeCe

Combine o sgcPDF com nossas outras bibliotecas de componentes para Delphi e C++ Builder.

sgcSign

Assinaturas digitais empresariais. XAdES, PAdES, CAdES e ASiC com 10 provedores de chave e 21 perfis de país da UE.

Saiba mais →

sgcWebSockets

Componentes empresariais de WebSocket, HTTP/2, MQTT, AMQP e WebRTC para Delphi, C++ Builder e .NET.

Saiba mais →

sgcHTML

Componentes de HTML e UI do lado do servidor para Delphi e C++ Builder, construídos sobre Bootstrap e htmx.

Saiba mais →

sgcCrypto

Criptografia moderna em Object Pascal puro: AES-GCM, SHA-3, Ed25519, X.509 e pós-quântica ML-KEM e ML-DSA.

Saiba mais →
3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

PDF sem a DLL

Crie, visualize, assine e arquive arquivos PDF com o código Delphi ou C++ Builder que você já tem.