从代码、HTML 或画布生成文档
页面、使用 14 种标准字体或已嵌入并子集化的 TrueType 与 OpenType 字体的文本、图像(JPEG、PNG、BMP、TIFF)、线条、曲线、渐变、跨页流动的表格、条形码和二维码、注释、书签以及可选内容图层。TsgcPDFHTMLRenderer 可将带 CSS 的 HTML 转换为分页 PDF,而 TsgcPDFCanvas 和 EMF 回放可转换现有的绘图代码。
sgcPDF 并未封装 PDFium、Ghostscript、某个 COM 服务器或任何其他原生库。解析、写入、字体嵌入与子集化、图像解码、渲染、加密和签名均在 sgcPDF_*.pas 单元中实现,因此您的可执行文件就是完整的部署。
从您编写的第一页,到最终交付的已签名、已归档、已涂黑的文件,每一步都运行在同一套 Object Pascal 代码库中。
页面、使用 14 种标准字体或已嵌入并子集化的 TrueType 与 OpenType 字体的文本、图像(JPEG、PNG、BMP、TIFF)、线条、曲线、渐变、跨页流动的表格、条形码和二维码、注释、书签以及可选内容图层。TsgcPDFHTMLRenderer 可将带 CSS 的 HTML 转换为分页 PDF,而 TsgcPDFCanvas 和 EMF 回放可转换现有的绘图代码。
通过 TsgcPDFSignatureHandler 提供 RC4 40/128、AES-128 和 AES-256 密码加密、证书加密,以及带可见字段和时间戳的数字签名。TsgcPDFSignatureVerifier 会校验每个签名的完整性、字节范围覆盖情况和证书链,TsgcPDFRedactor 则是真正删除内容而不是遮盖它,因此被删除的文本之后无法再被提取。
使用 TsgcPDFEditor 添加水印、页眉、页脚、页码和盖章,合并与拆分,提取、插入、删除、旋转和重新排列页面。增量保存会在原文件上追加一个新的修订版本,从而保持之前签名的有效性。
TsgcPDFViewerControl 为 VCL 带来缩略图、大纲、文本选择、搜索、表单填写和打印,TsgcPDFViewerFMX 覆盖 Windows、macOS、iOS 和 Android,TsgcPDFRendererRaster 则可在不依赖 GDI 的情况下,在 Windows 和 Linux 服务器上把页面转换成 PNG。
TsgcPDFTextExtractor 可提取按页或整份文档的纯文本,以及带坐标、字体和大小的片段,TsgcPDFImageExtractor 可将页面图像解码为 PNG、JPEG 或 BMP。解码器涵盖 Flate、LZW、JPEG 2000、CCITT G3/G4 和 JBIG2。
借助内置的 TsgcPDFAValidator 输出符合 a 级和 b 级的 PDF/A-1、PDF/A-2 和 PDF/A-3,带结构树和替代文本的标记 PDF,PDF/UA-1 检查,以及 Factur-X、ZUGFeRD 和 XRechnung 电子发票嵌入。
每个领域的参考页面:
坐标以 PDF 点为单位(1/72 英寸),原点位于页面左下角。下面的每个类和方法都属于 sgcPDF_*.pas 单元。
var
oPDF: TsgcPDFDocument;
oPage: TsgcPDFPage;
begin
oPDF := TsgcPDFDocument.Create;
try
oPDF.Info.Title := 'Hello sgcPDF';
// A4 竖向:595 x 842 点
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.SetEncryption(emAES_256, 'user123', 'owner456');
oPDF.SaveToFile('hello.pdf');
finally
oPDF.Free;
end;
end;
var
oSigner: TsgcPDFSignatureHandler;
begin
oSigner := TsgcPDFSignatureHandler.Create;
try
oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
oSigner.Reason := 'Document approval';
oSigner.Location := 'Barcelona';
oSigner.HashAlgorithm := shaSHA256;
// 第 1 页上的可见签名字段:左、下、右、上
oSigner.SetField('Signature1', 0, 50, 50, 250, 100);
oSigner.SignDocument('contract.pdf', 'contract-signed.pdf');
finally
oSigner.Free;
end;
end;
var
oPDF: TsgcPDFDocument;
oRenderer: TsgcPDFRendererRaster;
oPage: TsgcPDFPage;
begin
oPDF := TsgcPDFDocument.Create;
try
oPDF.LoadFromFile('report.pdf');
oPage := oPDF.Pages[0];
// 纯 Pascal 光栅化器:不依赖 GDI,可在 Windows 和 Linux 服务器上运行
oRenderer := TsgcPDFRendererRaster.Create;
try
oRenderer.RenderPageToPNG(oPDF.Parser, oPage.PageDict,
Round(oPage.Width * 150 / 72), Round(oPage.Height * 150 / 72),
'page1.png');
finally
oRenderer.Free;
end;
finally
oPDF.Free;
end;
end;
更多示例,包括 HTML 转 PDF、PAdES 和涂黑处理。完整功能矩阵 →
您将部署什么、各部分在哪里运行,以及高级签名如何融入其中。这三个问题的答案都很简短,而且都写在这个页面上,而不是藏在小字条款里。
组件 平台
TsgcPDFDocument VCL、FMX、控制台、服务
TsgcPDFEditor VCL、FMX、控制台、服务
TsgcPDFTextExtractor 所有平台
TsgcPDFImageExtractor 所有平台
TsgcPDFHTMLRenderer 所有平台
TsgcPDFOptimizer 所有平台
TsgcPDFSignatureHandler 所有平台
TsgcPDFSignatureVerifier 所有平台
TsgcPDFRedactor 所有平台
TsgcPDFViewerFMX Windows, macOS, iOS, Android
TsgcPDFViewerControl VCL (Windows)
TsgcPDFThumbnailView VCL (Windows)
TsgcPDFOutlineView VCL (Windows)
TsgcPDFViewer Windows
TsgcPDFExporter Windows
可执行文件就是完整的部署。核心单元不依赖 VCL 或 FMX,因此同一份代码可以运行在控制台工具、Windows 服务、Linux 守护进程或 Web 服务器中。
创建、编辑、文本与图像提取、表单、加密、签名、涂黑、PDF/A 以及光栅渲染器可编译到 Windows 和 Linux64,以及 macOS、iOS 和 Android。GDI 渲染器、导出器和 VCL 查看器控件仅限 Windows,而 TsgcPDFViewerFMX 覆盖 Windows、macOS、iOS 和 Android。
sgcPDF 可以单独使用 PFX 证书对 PDF 文件进行签名和验证。若需要 PAdES baseline B-B、B-T、B-LT 和 B-LTA 级别,以及使用存放在智能卡、Windows 证书存储或云端 HSM 中的密钥,可选的 TsgcPDFPAdESSigner 桥接组件会调用 sgcSign 的密钥提供商,该产品单独授权销售。
面向 Delphi 7 到 13 的运行时和设计时安装包,以及面向 C++ Builder 2007 到 13、附带生成头文件的安装包。试用下载目前尚未开放,请申请试用,我们会为您提供对应 IDE 版本的安装程序。
sgcPDF 自行实现解析器、写入器、字体、图像解码器、渲染器和加密功能,而不是封装某个原生 PDF 引擎,因此没有任何版本需要对齐,中间的每一步也都不是黑盒。
sgcPDF 是 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的十五个组件库之一。它们共享同样的约定,并提供完整源代码。sgcPDF 单独授权销售,不包含在 All-Access 套餐中。
43 个纯 Object Pascal 单元,涵盖 AEAD 加密、哈希与 KDF、签名、X.509 和后量子密码学。从 sgcWebSockets Standard 版本起免费包含,京可单独购买。
了解更多 →面向 Delphi 和 C++ Builder 的 REST 服务器、OpenAPI 服务器和 OpenAPI 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →面向 Delphi 和 C++ Builder 的 HTTP/2 客户端、gRPC 客户端以及 Google Cloud Pub/Sub、Calendar 和 FCM 客户端。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →面向 Delphi 和 C++ Builder 的 OAuth2 客户端、JWT 客户端和 WebAuthn 支持。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →面向 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 及 30+ API 集成。它的 Enterprise 版本也包含 gRPC。
了解更多 →面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →面向 Delphi 和 C++ Builder 的 Telegram 和 WhatsApp Business 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。独立产品,随附 sgcWebSockets Core 运行时。
了解更多 →受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。
你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
sgcWebSockets 非常出色,你们的支持也是最棒的!
非常感谢你们的帮助和支持,我很喜欢你们的组件。