sgcPDF Matriz de recursos

Tudo o que o sgcPDF faz, agrupado por tarefa. Cada recurso é implementado em Object Pascal nas units sgcPDF_*.pas e vem com o código-fonte completo. Os exemplos de código desta página foram compilados com as fontes do sgcPDF e executados.

Criação

14 recursos

Edição

7 recursos

Extração

5 recursos

Formulários

3 recursos

Pré-impressão

7 recursos

.NET

5 pacotes NuGet

Criação

RecursoDetalhes
PáginasQualquer tamanho e orientação de página, A4, Letter ou personalizado, e rotação de página.
TextoAs 14 fontes PDF padrão e texto colorido, com quebra de parágrafo por meio do canvas e dos renderizadores HTML.
Fontes incorporadasTrueType, OpenType (contornos TrueType e CFF) e coleções TrueType, incorporadas e em subconjunto automaticamente, com mapas Unicode ToUnicode para que o texto possa ser copiado e pesquisado.
Escritas complexasKerning e ligaduras, formas de junção do árabe via GSUB, e o algoritmo bidirecional Unicode para texto da direita para a esquerda.
Texto CJKTexto em chinês, japonês e coreano por meio de fontes TrueType e coleções TrueType incorporadas.
ImagensJPEG, PNG com alfa, BMP e TIFF (incluindo imagens de fax CCITT), com máscaras suaves.
Gráficos vetoriaisLinhas, retângulos, círculos, elipses, curvas de Bézier, polígonos, padrões de traço, terminações e junções de linha, transparência e gradientes.
TabelasTabelas com cabeçalhos, bordas, preenchimento de células e cores que continuam entre páginas.
Códigos de barrasCode 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, GS1-128, QR Code, DataMatrix (ECC200) e PDF417, desenhados como vetores. Os controles TsgcPDFBarcodeControl (VCL) e TsgcPDFBarcodeFMX (FireMonkey) os exibem em formulários, os salvam em PNG ou SVG e os desenham em uma página PDF por meio de Symbol.DrawToPDF.
Anotações e linksNotas adesivas, texto livre, destaque, sublinhado e tachado, linhas e setas, quadrados e círculos, tinta à mão livre e carimbos, além de links para URLs e para páginas. Os streams de aparência são gerados, de modo que as anotações são exibidas no Adobe Acrobat, em navegadores e em outros visualizadores.
Respostas a comentáriosAs respostas anexadas a qualquer anotação formam uma discussão em thread, cada resposta com seu próprio autor, data e conteúdo.
Marcadores e camadasMarcadores aninhados (esquema) e grupos de conteúdo opcional (camadas) que os leitores podem mostrar ou ocultar.
HTML para PDFTsgcPDFHTMLRenderer: títulos, parágrafos, estilos CSS em linha, listas, tabelas, imagens, links, quebras de página, cabeçalhos, rodapés e numeração de páginas.
Canvas e EMF para PDFO TsgcPDFCanvas registra chamadas de desenho como conteúdo PDF, e metarquivos EMF são reproduzidos como vetores PDF, de modo que o código de relatórios e gráficos existente produz saída PDF.

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

Edição

RecursoDetalhes
Marcas d’água e carimbosMarcas d’água de texto com fonte, tamanho, rotação, cor e opacidade, em uma página ou em todas.
Cabeçalhos, rodapés, numeraçãoTexto de cabeçalho e rodapé e numeração de páginas com um formato como Page %d of %d.
Operações de páginaMesclar documentos, dividir, extrair intervalos de páginas, inserir, excluir, girar e reordenar páginas.
Salvamento incrementalAs alterações são anexadas ao arquivo original como uma nova revisão, o que mantém válidas as assinaturas digitais anteriores.
Anotações existentesAs anotações de um PDF existente são carregadas como objetos tipados, com autor, data, respostas e geometria. Edite-as no código ou no visualizador e salve, ou chame SaveIncremental para anexar as alterações sem tocar nos bytes originais, de modo que as assinaturas existentes permaneçam intactas.
Saída compactaStreams de objetos e streams de referência cruzada para arquivos menores, além do TsgcPDFOptimizer para remover duplicados e objetos não utilizados e reduzir a resolução de imagens.
Arquivos grandesOs deslocamentos são de 64 bits de ponta a ponta e os objetos são carregados sob demanda a partir de um stream, portanto arquivos com mais de 2 GB podem ser abertos e salvos.

Renderização & visualizadores

RecursoDetalhes
Visualizador VCLTsgcPDFViewerControl com rolagem, modos de zoom, navegação de páginas, seleção e cópia de texto, busca com destaque, preenchimento de campos de formulário, navegação por links e impressão, além do TsgcPDFThumbnailView e do TsgcPDFOutlineView.
Visualizador FireMonkeyO TsgcPDFViewerFMX desenha por meio do canvas FMX no Windows, macOS, iOS e Android. O zoom por retângulo (SelectionMode psmZoom, OnMarqueeZoom) amplia um retângulo desenhado com o mouse ou com um toque longo e arrastar.
Visualizadores .NETTsgcPDFViewerControl para WinForms, TsgcWpfPDFViewer para WPF e TsgcAvaloniaPDFViewer para Avalonia, cada um com visualizações de miniaturas e de esquema. Os visualizadores WPF e Avalonia têm modos de zoom, Ctrl+roda do mouse e zoom por retângulo (pinça no Avalonia), seleção e cópia de texto, busca com destaque, links e navegação pelo esquema, caixas de página e a ferramenta de medição. Eles exibem anotações e campos de formulário, mas não os editam.
Anotações interativasNo Delphi VCL e FMX, no C++Builder e no .NET WinForms, os usuários finais criam anotações com o mouse: notas adesivas, texto livre, destaque, sublinhado e tachado sobre o texto, linhas e setas, retângulos e elipses, tinta à mão livre e carimbos. Eles as selecionam, movem, redimensionam, editam e excluem. Ao clicar em uma nota, abre-se um popup com o autor, a data, o conteúdo e as respostas, onde é possível editar e responder. Os visualizadores disparam OnAnnotationClick, OnAnnotationAdd, OnAnnotationChange, OnAnnotationDelete e OnAnnotationSelect.
Painel de comentáriosTsgcPDFCommentsView (VCL) e TsgcPDFCommentsViewFMX listam todas as anotações por página com autor, data, conteúdo e respostas em thread, sincronizados com o visualizador.
Renderizador raster para servidoresO TsgcPDFRendererRaster é um rasterizador em Object Pascal puro que renderiza páginas em pixels ou PNG sem GDI, no Windows e no Linux.
Renderizador GDI e exportaçãoRenderização para um bitmap ou contexto de dispositivo no Windows, e exportação de páginas e miniaturas para BMP, PNG ou JPEG com o TsgcPDFExporter.
Modelo gráficoEspaços de cor DeviceGray, DeviceRGB, DeviceCMYK, indexado, ICCBased e Lab, gradientes axiais e radiais, padrões ladrilhados, máscaras suaves, opacidade de mescla e XObjects de formulário.
FontesOs programas de fonte TrueType, CFF, OpenType e Type 1 incorporados são renderizados a partir de seus contornos, com as codificações padrão e fontes CID Identity-H.
Decodificadores de imagemFlate, LZW, ASCII85, ASCIIHex, RunLength, JPEG (baseline e progressivo, CMYK), JPEG 2000, CCITT grupo 3 e 4, e JBIG2.

Extração

RecursoDetalhes
TextoTexto da página ou de todo o documento, com mapeamento Unicode de fontes incorporadas e CID.
Posições de textoO TsgcPDFTextExtractor retorna cada fragmento de texto com X, Y, nome e tamanho da fonte.
BuscaEncontrar texto em uma página ou no documento.
ImagensO TsgcPDFImageExtractor enumera as imagens de uma página, incluindo imagens em linha e as de XObjects de formulário, e as decodifica para PNG, JPEG ou BMP.
Metadados e anexosInformações do documento, metadados XMP, marcadores, camadas e arquivos incorporados.

Formulários

RecursoDetalhes
Criar formuláriosCampos de texto, caixas de seleção, botões de opção, caixas de combinação, caixas de lista e botões de pressionar com streams de aparência.
Preencher e nivelarDefina os valores dos campos em código ou no visualizador e, em seguida, nivele o formulário em conteúdo de página estático.
FDF e XFDFImporte e exporte dados de formulário como FDF e XFDF.

Segurança & assinaturas

RecursoDetalhes
Criptografia por senhaRC4 de 40 e 128 bits, AES-128 e AES-256 (revisões 5 e 6), com senha de usuário e de proprietário e flags de permissão. Arquivos criptografados são descriptografados ao carregar.
Criptografia por certificadoCriptografia de chave pública para um ou mais certificados de destinatário (adbe.pkcs7.s4 e adbe.pkcs7.s5).
Assinaturas digitaisAssinatura com um certificado PFX, campos de assinatura visíveis ou invisíveis, SHA-256, SHA-384 e SHA-512, carimbos de data/hora RFC 3161 e carimbos de data/hora de documento.
PAdES via sgcSignO TsgcPDFPAdESSigner produz assinaturas ETSI.CAdES.detached nos níveis B-B, B-T, B-LT e B-LTA, com dados de validação DSS, usando qualquer provedor de chave do sgcSign (PEM, PFX, PKCS#11, repositório de certificados do Windows, HSMs na nuvem). O sgcSign é licenciado separadamente.
VerificaçãoO TsgcPDFSignatureVerifier verifica a integridade, a cobertura do intervalo de bytes, o certificado do signatário e a cadeia de certificados de cada assinatura.
OcultaçãoO TsgcPDFRedactor remove texto em nível de glifo, pixels de imagem, caminhos vetoriais e anotações sob uma região ou que correspondam a um texto, adiciona uma sobreposição e pode remover metadados. O texto removido não pode ser extraído da saída.
Texto em contornosTsgcPDFTextOutliner substitui cada glifo por um caminho vetorial com a mesma posição, cor e tamanho, no conteúdo da página, nos form XObjects, nos padrões de ladrilhamento, nas fontes Type3 e nas aparências de anotações, e depois remove as fontes que ficaram sem uso. O arquivo é impresso e tem a mesma aparência, mas não precisa mais de nenhuma fonte, o que serve a gráficas, RIPs e licenças de fonte que proíbem a incorporação. O texto em fontes não incorporadas é convertido com a fonte substituta do sistema que um visualizador usaria, e o texto invisível é removido. O texto não pode mais ser selecionado nem pesquisado.

Criptografia por senha 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;

Assinar com um certificado 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 por meio da ponte 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;

Ocultar um nome e uma área

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;

Converter todo o texto em contornos

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;

Arquivamento & acessibilidade

RecursoDetalhes
PDF/ASaída PDF/A-1, PDF/A-2 e PDF/A-3 nos níveis a e b, e PDF/A-4 e PDF/A-4f (paA4, paA4f) como arquivos PDF 2.0, com metadados XMP, output intent e fontes incorporadas. No Delphi e no .NET.
ValidadorO TsgcPDFAValidator verifica um arquivo em relação ao nível PDF/A selecionado, incluindo PDF/A-4 e PDF/UA-2, e reporta erros e avisos. A saída PDF/A-4, PDF/A-4f e PDF/UA-2 é verificada com o veraPDF.
PDF marcadoÁrvore de estrutura com Document, Part, Sect, H1 a H6, P, L, LI, Table, TR, TH, TD e Figure com texto alternativo, conteúdo marcado, mapa de funções, idioma e MarkInfo.
PDF/UA-1Saída acessível junto com PDF/A-2a ou PDF/A-3a, e verificações PDF/UA-1 no validador.
PDF/UA-2Defina PDFUAPart como puaPart2 para a saída PDF/UA-2 (ISO 14289-2), sozinho ou junto com PDF/A-4, com o namespace de estrutura do PDF 2.0 e destinos de estrutura. No Delphi e no .NET, incluindo a exportação do sgcReports e a ponte sgcUIPDF.
AnexosArquivos incorporados com tipo MIME, datas e relações de arquivo associado PDF/A-3 e PDF/A-4f.
Factur-X e ZUGFeRDIncorpora o XML da fatura com o esquema de extensão XMP Factur-X para os perfis Minimum, Basic WL, Basic, EN 16931, Extended e XRechnung, e salva o arquivo como PDF/A-3b.

Fatura Factur-X como 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;

Validar 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 e PDF/UA-2 em um único arquivo

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;

Para validar o arquivo, crie o TsgcPDFAValidator com paA4 e defina suas propriedades PDFUA e PDFUAPart. Veja os tópicos de ajuda PDF/A-4 e PDF/UA-2.

Pré-impressão

A mesma API de pré-impressão no Delphi e no .NET, com os mesmos nomes.

RecursoDetalhes
Caixas de páginaMediaBox, CropBox, BleedBox, TrimBox e ArtBox em TsgcPDFPage, com Rotate e UserUnit, mantidas ao carregar e salvar um arquivo.
ImposiçãoAddPageAsForm transforma uma página de outro documento, recortada por uma caixa de página ou um retângulo, em um form XObject que DrawForm, DrawFormInRect e DrawFormMatrix posicionam em uma folha. A demo PDFImposition monta layouts de folha com eles.
Marcas de impressãoDrawCropMarks, DrawBleedMarks, DrawRegistrationMark, DrawColorBar e DrawSlugText.
Cores spotEspaços de cor Separation, Registration e DeviceN, e estados gráficos de sobreimpressão para preenchimento e contorno.
Visualização de sobreimpressãoOverprintPreview no renderizador simula a sobreimpressão na tela e na saída raster.
Output intent PDF/XSetOutputIntent grava um output intent GTS_PDFX com um perfil ICC opcional, e PDFXVersion define a chave de versão PDF/X.
Ferramentas do visualizadorExibição de caixas de página, dicas de caixas de página e uma ferramenta de medição nos visualizadores VCL e WinForms, e nos visualizadores WPF e Avalonia.

Duas páginas em uma folha com marcas de corte (.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 para .NET

Um port em C# totalmente gerenciado da biblioteca, um arquivo C# para cada unit do Delphi, com os mesmos nomes de classe (TsgcPDFDocument, TsgcPDFPage, TsgcPDFEditor e assim por diante). É distribuído como pacotes NuGet, cada um também disponível como edição Community gratuita com o sufixo .Community.

PacoteDetalhes
esegece.sgcPDFA 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. Compatível com .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 e .NET 10.
esegece.sgcPDF.WinFormsRenderizador 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, TsgcPDFBarcodeControl e TsgcPDFOutlineView, com caixas de página e a ferramenta de medição. Compatível com .NET Framework 4.7.2 e .NET 8 no Windows.
esegece.sgcPDF.WpfVisualizador WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView e TsgcWpfPDFOutlineView. Compatível com .NET Framework 4.7.2, .NET 8, .NET 9 e .NET 10 no Windows.
esegece.sgcPDF.AvaloniaVisualizador Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView e TsgcAvaloniaPDFOutlineView. Compatível com .NET 8, .NET 9 e .NET 10.
esegece.sgcPDF.sgcSignPonte opcional com sgcSign .NET: TsgcPDFPAdESSigner assina em PAdES B-B, B-T, B-LT e B-LTA com qualquer provedor de chave do sgcSign.
Edição CommunityMesmos recursos da edição registrada. Gratuita para pessoas físicas e organizações com faturamento bruto anual abaixo de EUR 1 milhão e no máximo 5 desenvolvedores, com um breve aviso na inicialização.

Instalação

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
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Desenvolva com o sgcPDF

Baixe o teste e adicione recursos de PDF à sua aplicação Delphi ou C++ Builder.