PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
ComPDF PDF SDK 支持将 PDF 文档转换为多种 PDF 标准格式,包括 PDF/A(用于长期存档)、PDF/X(用于印刷)、PDF/E(用于工程文档)、PDF/UA(用于无障碍访问)和 PDF/VT(用于可变数据印刷)。
使用 WriteStandardPDFToFilePath 方法可以将现有的 PDF 文件转换为指定的 PDF 标准格式。该方法会分析现有 PDF 文件的内容,并进行一系列修改,以生成符合目标标准的文档。
在转换过程中,不适合目标标准的功能(如加密、过时的压缩方案、缺少字体或与设备相关的颜色)将被替换为符合标准的等效项。由于转换过程仅对源文件应用必要的更改,因此信息丢失极少。
方法签名:
public bool WriteStandardPDFToFilePath(
CPDFStandardType standardType, // PDF 标准类型
string iccFilePath, // ICC 颜色配置文件路径(可选,留空使用默认)
string saveFilePath, // 输出文件保存路径
CPDFUAConfig uaConfig = default // PDF/UA 配置(仅 PDF/UA 格式需要)
)参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| standardType | CPDFStandardType | 目标 PDF 标准类型,包含格式、版本号和子类型 |
| iccFilePath | string | ICC 颜色配置文件路径。如文件不存在,将根据标准类型自动选择默认配置文件 |
| saveFilePath | string | 转换后文档的保存路径 |
| uaConfig | CPDFUAConfig | PDF/UA 配置(可选),用于设置文档标题和语言 |
示例代码 - 转换为 PDF/A-1a:
CPDFDocument document = CPDFDocument.InitWithFilePath("filePath");
// 配置目标标准类型
CPDFStandardType standardType = new CPDFStandardType
{
Format = CPDFStandardFormat.StandardPDFA, // PDF/A 格式
TypeNum = 1, // 版本号 1
Type = CPDFPartType.PDF_a // 子类型 a
};
// 转换并保存(使用默认 ICC 配置文件)
bool success = document.WriteStandardPDFToFilePath(standardType, "", "savePath");示例代码 - 转换为 PDF/UA:
CPDFDocument document = CPDFDocument.InitWithFilePath("filePath");
// 配置 PDF/UA 标准类型
CPDFStandardType standardType = new CPDFStandardType
{
Format = CPDFStandardFormat.StandardPDFUA, // PDF/UA 格式
TypeNum = 1, // 版本号 1
Type = CPDFPartType.None
};
// 配置 PDF/UA 元数据
CPDFUAConfig uaConfig = new CPDFUAConfig
{
Title = "无障碍文档",
Language = CPDFUALanguage.zh_CN // 简体中文
};
// 转换并保存
bool success = document.WriteStandardPDFToFilePath(standardType, "", "savePath", uaConfig);使用 GetPDFStandardType 方法可以检测文档当前是否已符合某种 PDF 标准格式。
方法签名:
public CPDFStandardType GetPDFStandardType()返回值说明:
返回 CPDFStandardType 结构体,包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| Format | CPDFStandardFormat | PDF 标准格式(StandardPDF、StandardPDFA、StandardPDFX 等) |
| TypeNum | int | 版本号(如 PDF/A-1 的 TypeNum 为 1) |
| Type | CPDFPartType | 子类型(PDF_a、PDF_b、PDF_u 或 None) |
示例代码:
CPDFDocument document = CPDFDocument.InitWithFilePath("filePath");
CPDFStandardType standardType = document.GetPDFStandardType();
switch (standardType.Format)
{
case CPDFStandardFormat.StandardPDF:
Console.WriteLine("普通 PDF 文档");
break;
case CPDFStandardFormat.StandardPDFA:
Console.WriteLine($"PDF/A-{standardType.TypeNum}{GetPartTypeSuffix(standardType.Type)} 文档");
break;
case CPDFStandardFormat.StandardPDFX:
Console.WriteLine($"PDF/X-{standardType.TypeNum} 文档");
break;
case CPDFStandardFormat.StandardPDFUA:
Console.WriteLine($"PDF/UA-{standardType.TypeNum} 文档");
break;
default:
Console.WriteLine($"其他标准格式: {standardType.Format}");
break;
}
// 辅助方法:获取子类型后缀
string GetPartTypeSuffix(CPDFPartType partType)
{
return partType switch
{
CPDFPartType.PDF_a => "a",
CPDFPartType.PDF_b => "b",
CPDFPartType.PDF_u => "u",
_ => ""
};
}| 枚举值 | 说明 |
|---|---|
| StandardPDF | 标准 PDF 格式(非特定标准) |
| StandardPDFA | PDF/A 格式,用于长期存档 |
| StandardPDFX | PDF/X 格式,用于印刷交换 |
| StandardPDFE | PDF/E 格式,用于工程文档 |
| StandardPDFUA | PDF/UA 格式,用于无障碍访问 |
| StandardPDFVT | PDF/VT 格式,用于可变数据印刷 |
| 枚举值 | 说明 |
|---|---|
| None | 无子类型 |
| PDF_a | a 型(完全符合性,包含结构信息) |
| PDF_b | b 型(基本符合性) |
| PDF_u | u 型(Unicode 符合性) |
| 枚举值 | 说明 |
|---|---|
| unspecified | 未指定 |
| zh_CN | 简体中文(中国大陆) |
| zh_TW | 繁体中文(中国台湾) |
| en_US | 英语(美国) |
| en_GB | 英语(英国) |
| ja_JP | 日语(日本) |
| ko_KR | 韩语(韩国) |
| de_DE | 德语(德国) |
| fr_FR | 法语(法国) |
PDF 标准是由国际标准化组织(ISO)定义的一系列 PDF 格式规范,每种标准针对特定的使用场景进行了优化。ComPDFKit 支持以下 PDF 标准格式的转换。
什么是 PDF/A?
PDF/A(Portable Document Format Archival)是一种专为长期保存电子文档而设计的 PDF 文件格式标准。它旨在确保文档在时间的推移中保持可读性和可访问性,以满足归档和长期保存的需求。
PDF/A 版本
| 名称 | 发布时间 | 标准 | 基于 | 说明 |
|---|---|---|---|---|
| PDF/A-1 | 2005-09-28 | ISO 19005-1 | PDF 1.4 | 基础存档格式,分为 1a(完全符合)和 1b(基本符合) |
| PDF/A-2 | 2011-06-20 | ISO 19005-2 | PDF 1.7 | 支持 JPEG2000、透明度、图层,增加 2u(Unicode)子类型 |
| PDF/A-3 | 2012-10-15 | ISO 19005-3 | PDF 1.7 | 允许嵌入任意文件格式(如 XML、CAD) |
| PDF/A-4 | 2020-11 | ISO 19005-4 | PDF 2.0 | 基于最新 PDF 2.0,简化了符合性级别 |
PDF/A 子类型说明
| 子类型 | CPDFPartType | 说明 |
|---|---|---|
| a | PDF_a | 完全符合性,包含标签结构信息,支持辅助技术访问 |
| b | PDF_b | 基本符合性,保证视觉外观可复现 |
| u | PDF_u | Unicode 符合性(PDF/A-2 及以上),确保文本可搜索和提取 |
PDF/A 的主要特性
什么是 PDF/X?
PDF/X(Portable Document Format Exchange)是为印刷行业设计的 PDF 标准,旨在确保文档在不同印刷工作流程中能够可靠地交换和输出。它消除了印刷过程中常见的技术问题,如字体缺失、色彩偏差等。
PDF/X 版本
| 名称 | 标准 | 主要用途 |
|---|---|---|
| PDF/X-1a | ISO 15930-1 | CMYK 和专色印刷,适用于传统印刷工作流程 |
| PDF/X-3 | ISO 15930-3 | 支持色彩管理的印刷,允许 RGB 和 Lab 色彩空间 |
| PDF/X-4 | ISO 15930-7 | 支持透明度和图层,适用于现代印刷工作流程 |
| PDF/X-5 | ISO 15930-8 | 支持外部引用内容(OPI),适用于部分交换场景 |
PDF/X 的主要特性
使用场景: 商业印刷、杂志出版、包装印刷。
什么是 PDF/E?
PDF/E(Portable Document Format Engineering)是为工程领域设计的 PDF 标准,用于交换工程文档、技术图纸和 3D 模型。
PDF/E 版本
| 名称 | 标准 | 主要特性 |
|---|---|---|
| PDF/E-1 | ISO 24517-1 | 基于 PDF 1.6,支持 3D 内容、图层和注释 |
| PDF/E-2 | ISO 24517-2(开发中) | 计划支持更多工程特性 |
PDF/E 的主要特性
使用场景: CAD 图纸交换、建筑设计、制造业技术文档。
什么是 PDF/UA?
PDF/UA(Portable Document Format Universal Accessibility)是为无障碍访问设计的 PDF 标准,确保残障人士(特别是视障用户)能够通过辅助技术(如屏幕阅读器)访问 PDF 内容。
PDF/UA 版本
| 名称 | 标准 | 主要特性 |
|---|---|---|
| PDF/UA-1 | ISO 14289-1 | 基于 PDF 1.7,定义无障碍访问的技术要求 |
| PDF/UA-2 | ISO 14289-2(2024) | 基于 PDF 2.0,增强对数学公式和注释的支持 |
PDF/UA 的主要特性
使用场景: 政府文档、教育材料、公共服务文档、符合无障碍法规要求的文档。
什么是 PDF/VT?
PDF/VT(Portable Document Format Variable and Transactional)是为可变数据印刷(VDP)设计的 PDF 标准,用于高效处理包含个性化内容的大批量印刷作业,如账单、直邮信件、个性化营销材料等。
PDF/VT 版本
| 名称 | 标准 | 主要特性 |
|---|---|---|
| PDF/VT-1 | ISO 16612-2 | 单文件交换,包含所有资源 |
| PDF/VT-2 | ISO 16612-2 | 多文件交换,支持外部引用资源 |
PDF/VT 的主要特性
使用场景: 账单印刷、个性化直邮、批量证书生成、可变数据营销材料。
| 标准 | 主要用途 | 关键特性 | 典型应用 |
|---|---|---|---|
| PDF/A | 长期存档 | 自包含、禁止加密、字体嵌入 | 法律文档、政府档案、历史记录 |
| PDF/X | 印刷交换 | 色彩精确、输出意图、出血定义 | 商业印刷、杂志、包装 |
| PDF/E | 工程文档 | 3D 支持、图层、精确测量 | CAD 图纸、建筑设计 |
| PDF/UA | 无障碍访问 | 标签结构、替代文本、阅读顺序 | 政府公文、教育材料 |
| PDF/VT | 可变印刷 | 资源重用、批量处理、个性化 | 账单、直邮、个性化营销 |