Skip to content
DemoAPI 参考文档FAQ

PDF 生成模板编辑器

开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。

查看 GitHub

PDF 标准格式转换

ComPDF PDF SDK 支持将 PDF 文档转换为多种 PDF 标准格式,包括 PDF/A(用于长期存档)、PDF/X(用于印刷)、PDF/E(用于工程文档)、PDF/UA(用于无障碍访问)和 PDF/VT(用于可变数据印刷)。

转换为标准 PDF 格式

使用 WriteStandardPDFToFilePath 方法可以将现有的 PDF 文件转换为指定的 PDF 标准格式。该方法会分析现有 PDF 文件的内容,并进行一系列修改,以生成符合目标标准的文档。

在转换过程中,不适合目标标准的功能(如加密、过时的压缩方案、缺少字体或与设备相关的颜色)将被替换为符合标准的等效项。由于转换过程仅对源文件应用必要的更改,因此信息丢失极少。

方法签名:

c#
public bool WriteStandardPDFToFilePath(
    CPDFStandardType standardType,  // PDF 标准类型
    string iccFilePath,              // ICC 颜色配置文件路径(可选,留空使用默认)
    string saveFilePath,             // 输出文件保存路径
    CPDFUAConfig uaConfig = default  // PDF/UA 配置(仅 PDF/UA 格式需要)
)

参数说明:

参数类型说明
standardTypeCPDFStandardType目标 PDF 标准类型,包含格式、版本号和子类型
iccFilePathstringICC 颜色配置文件路径。如文件不存在,将根据标准类型自动选择默认配置文件
saveFilePathstring转换后文档的保存路径
uaConfigCPDFUAConfigPDF/UA 配置(可选),用于设置文档标题和语言

示例代码 - 转换为 PDF/A-1a:

c#
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:

c#
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);

检测 PDF 标准类型

使用 GetPDFStandardType 方法可以检测文档当前是否已符合某种 PDF 标准格式。

方法签名:

c#
public CPDFStandardType GetPDFStandardType()

返回值说明:

返回 CPDFStandardType 结构体,包含以下字段:

字段类型说明
FormatCPDFStandardFormatPDF 标准格式(StandardPDF、StandardPDFA、StandardPDFX 等)
TypeNumint版本号(如 PDF/A-1 的 TypeNum 为 1)
TypeCPDFPartType子类型(PDF_a、PDF_b、PDF_u 或 None)

示例代码:

c#
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",
        _ => ""
    };
}

PDF 标准格式详解

CPDFStandardFormat 枚举

枚举值说明
StandardPDF标准 PDF 格式(非特定标准)
StandardPDFAPDF/A 格式,用于长期存档
StandardPDFXPDF/X 格式,用于印刷交换
StandardPDFEPDF/E 格式,用于工程文档
StandardPDFUAPDF/UA 格式,用于无障碍访问
StandardPDFVTPDF/VT 格式,用于可变数据印刷

CPDFPartType 枚举

枚举值说明
None无子类型
PDF_aa 型(完全符合性,包含结构信息)
PDF_bb 型(基本符合性)
PDF_uu 型(Unicode 符合性)

CPDFUALanguage 枚举(部分)

枚举值说明
unspecified未指定
zh_CN简体中文(中国大陆)
zh_TW繁体中文(中国台湾)
en_US英语(美国)
en_GB英语(英国)
ja_JP日语(日本)
ko_KR韩语(韩国)
de_DE德语(德国)
fr_FR法语(法国)

PDF 标准介绍

PDF 标准是由国际标准化组织(ISO)定义的一系列 PDF 格式规范,每种标准针对特定的使用场景进行了优化。ComPDFKit 支持以下 PDF 标准格式的转换。

PDF/A(存档标准)

什么是 PDF/A?

PDF/A(Portable Document Format Archival)是一种专为长期保存电子文档而设计的 PDF 文件格式标准。它旨在确保文档在时间的推移中保持可读性和可访问性,以满足归档和长期保存的需求。

PDF/A 版本

名称发布时间标准基于说明
PDF/A-12005-09-28ISO 19005-1PDF 1.4基础存档格式,分为 1a(完全符合)和 1b(基本符合)
PDF/A-22011-06-20ISO 19005-2PDF 1.7支持 JPEG2000、透明度、图层,增加 2u(Unicode)子类型
PDF/A-32012-10-15ISO 19005-3PDF 1.7允许嵌入任意文件格式(如 XML、CAD)
PDF/A-42020-11ISO 19005-4PDF 2.0基于最新 PDF 2.0,简化了符合性级别

PDF/A 子类型说明

子类型CPDFPartType说明
aPDF_a完全符合性,包含标签结构信息,支持辅助技术访问
bPDF_b基本符合性,保证视觉外观可复现
uPDF_uUnicode 符合性(PDF/A-2 及以上),确保文本可搜索和提取

PDF/A 的主要特性

  • 自包含性: 文档包含所有必要资源(字体、图像等),确保独立呈现。
  • 字体嵌入: 所有字体必须嵌入,防止显示不一致。
  • 禁止加密: 不允许加密,确保长期可访问性。
  • 元数据要求: 必须包含 XMP 元数据。
  • 色彩管理: 必须使用 ICC 色彩配置文件或设备无关色彩空间。

PDF/X(印刷交换标准)

什么是 PDF/X?

PDF/X(Portable Document Format Exchange)是为印刷行业设计的 PDF 标准,旨在确保文档在不同印刷工作流程中能够可靠地交换和输出。它消除了印刷过程中常见的技术问题,如字体缺失、色彩偏差等。

PDF/X 版本

名称标准主要用途
PDF/X-1aISO 15930-1CMYK 和专色印刷,适用于传统印刷工作流程
PDF/X-3ISO 15930-3支持色彩管理的印刷,允许 RGB 和 Lab 色彩空间
PDF/X-4ISO 15930-7支持透明度和图层,适用于现代印刷工作流程
PDF/X-5ISO 15930-8支持外部引用内容(OPI),适用于部分交换场景

PDF/X 的主要特性

  • 色彩精确性: 必须使用 CMYK、专色或带 ICC 配置文件的色彩空间。
  • 字体嵌入: 所有字体必须嵌入。
  • 出血和裁切: 支持定义出血区域(BleedBox)和裁切区域(TrimBox)。
  • 禁止透明度(X-1a/X-3): 早期版本要求扁平化透明度。
  • 输出意图: 必须包含 OutputIntent 信息,指定目标输出设备或条件。

使用场景: 商业印刷、杂志出版、包装印刷。


PDF/E(工程文档标准)

什么是 PDF/E?

PDF/E(Portable Document Format Engineering)是为工程领域设计的 PDF 标准,用于交换工程文档、技术图纸和 3D 模型。

PDF/E 版本

名称标准主要特性
PDF/E-1ISO 24517-1基于 PDF 1.6,支持 3D 内容、图层和注释
PDF/E-2ISO 24517-2(开发中)计划支持更多工程特性

PDF/E 的主要特性

  • 3D 支持: 可嵌入 U3D 和 PRC 格式的 3D 模型。
  • 图层支持: 支持可选内容组(OCG),便于查看不同图层。
  • 精确测量: 支持地理空间坐标和测量单位。
  • 大幅面支持: 适用于工程图纸的大尺寸页面。
  • 注释和标记: 支持工程审阅中的标记和批注。

使用场景: CAD 图纸交换、建筑设计、制造业技术文档。


PDF/UA(无障碍访问标准)

什么是 PDF/UA?

PDF/UA(Portable Document Format Universal Accessibility)是为无障碍访问设计的 PDF 标准,确保残障人士(特别是视障用户)能够通过辅助技术(如屏幕阅读器)访问 PDF 内容。

PDF/UA 版本

名称标准主要特性
PDF/UA-1ISO 14289-1基于 PDF 1.7,定义无障碍访问的技术要求
PDF/UA-2ISO 14289-2(2024)基于 PDF 2.0,增强对数学公式和注释的支持

PDF/UA 的主要特性

  • 标签结构: 必须包含完整的标签树(Tagged PDF),定义内容的逻辑结构。
  • 阅读顺序: 内容必须有正确的阅读顺序。
  • 替代文本: 图像和非文本内容必须提供替代文本描述。
  • 语言标识: 必须指定文档语言,支持屏幕阅读器正确发音。
  • 标题层次: 标题必须有正确的层次结构。
  • 表格标记: 表格必须有正确的行/列标记。
  • 导航支持: 支持书签和链接导航。

使用场景: 政府文档、教育材料、公共服务文档、符合无障碍法规要求的文档。

PDF/VT(可变数据印刷标准)

什么是 PDF/VT?

PDF/VT(Portable Document Format Variable and Transactional)是为可变数据印刷(VDP)设计的 PDF 标准,用于高效处理包含个性化内容的大批量印刷作业,如账单、直邮信件、个性化营销材料等。

PDF/VT 版本

名称标准主要特性
PDF/VT-1ISO 16612-2单文件交换,包含所有资源
PDF/VT-2ISO 16612-2多文件交换,支持外部引用资源

PDF/VT 的主要特性

  • 文档部件元数据(DPM): 定义文档的逻辑结构(如收件人、页面组)。
  • 资源重用: 支持 XObject 资源的高效重用,减少文件大小。
  • 增量处理: 支持流式处理,适用于大批量作业。
  • 基于 PDF/X-4: 继承 PDF/X-4 的印刷特性。
  • 可变内容标记: 标识静态内容和可变内容区域。

使用场景: 账单印刷、个性化直邮、批量证书生成、可变数据营销材料。


PDF 标准对比总结

标准主要用途关键特性典型应用
PDF/A长期存档自包含、禁止加密、字体嵌入法律文档、政府档案、历史记录
PDF/X印刷交换色彩精确、输出意图、出血定义商业印刷、杂志、包装
PDF/E工程文档3D 支持、图层、精确测量CAD 图纸、建筑设计
PDF/UA无障碍访问标签结构、替代文本、阅读顺序政府公文、教育材料
PDF/VT可变印刷资源重用、批量处理、个性化账单、直邮、个性化营销