PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
ComPDFKit PDF SDK 支持将 PDF 文档转换为多种 PDF 标准格式,包括 PDF/A(用于长期存档)、PDF/X(用于印刷)、PDF/E(用于工程文档)、PDF/UA(用于无障碍访问)和 PDF/VT(用于可变数据印刷)。
使用 WriteStandardPDFToFilePath 方法可以将现有的 PDF 文件转换为指定的 PDF 标准格式。该方法会分析现有 PDF 文件的内容,并进行一系列修改,以生成符合目标标准的文档。
在转换过程中,不适合目标标准的功能(如加密、过时的压缩方案、缺少字体或与设备相关的颜色)将被替换为符合标准的等效项。由于转换过程仅对源文件应用必要的更改,因此信息丢失极少。
方法签名:
public bool WriteStandardPDFToFilePath(
PDFDocumentType standardType, // PDF 标准类型
String iccFilePath, // ICC 颜色配置文件路径
String saveFilePath, // 输出文件保存路径
CPDFUAConfig uaConfig // PDF/UA 配置(仅 PDF/UA 格式需要)
)参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| standardType | PDFDocumentType | 目标 PDF 标准类型,包含格式、版本号和子类型 |
| iccFilePath | string | ICC 颜色配置文件路径。如文件不存在,将根据标准类型自动选择默认配置文件 |
| saveFilePath | string | 转换后文档的保存路径 |
| uaConfig | CPDFUAConfig | PDF/UA 配置(可选),用于设置文档标题和语言 |
示例代码 - 转换为 PDF/A-1a:
CPDFDocument doc1 = new CPDFDocument();
doc1.open("test.pdf");
boolean ok1 = doc1.WriteStandardPDFToFilePath(
CPDFDocument.PDFDocumentType.PDFTypeA1a,
"sRGB2014.icc",
"convpdfa1a.pdf");
doc1.close();示例代码 - 转换为 PDF/UA:
String filePath = "test.pdf";
CPDFDocument document = new CPDFDocument();
document.open(filePath);
CPDFUAConfig ua = new CPDFUAConfig();
ua.title = "无障碍文档";
ua.language = CPDFUAConfig.UALanguage.cs_CZ;
String iccPath = "sRGB2014.icc";
String outPath = "convpdfUA_config.pdf";
boolean ok = document.WriteStandardPDFToFilePath(
CPDFDocument.PDFDocumentType.PDFTypeUA1, iccPath, outPath, ua);
document.close();
System.out.println("convertPDFUA with config: " + ok);使用 GetPDFStandardType 方法可以检测文档当前是否已符合某种 PDF 标准格式。
方法签名:
public PDFStandardType GetPDFStandardType()返回值说明:
返回 PDFStandardType ,包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| Format | CPDFStandardFormat | PDF 标准格式(StandardPDF、StandardPDFA、StandardPDFX 等) |
| TypeNum | int | 版本号(如 PDF/A-1 的 TypeNum 为 1) |
| Type | CPDFPartType | 子类型(PDF_a、PDF_b、PDF_u 或 None) |
示例代码:
CPDFDocument doc1 = new CPDFDocument();
doc1.open("test.pdf");
CPDFStandardType standardType = document.GetPDFStandardType();
switch (standardType.Format)
{
case CPDFStandardFormat.StandardPDF:
System.out.println("普通 PDF 文档");
break;
case CPDFStandardFormat.StandardPDFA:
System.out.println("PDF/A-"+standardType.TypeNum + GetPartTypeSuffix(standardType.Type) + "文档");
break;
case CPDFStandardFormat.StandardPDFX:
System.out.println("PDF/X-"+standardType.TypeNum + "文档");
break;
case CPDFStandardFormat.StandardPDFUA:
System.out.println("PDF/UA-" + standardType.TypeNum + "文档");
break;
default:
System.out.println("其他标准格式: " + standardType.Format);
break;
}
// 辅助方法:获取子类型后缀
String GetPartTypeSuffix(CPDFPartType partType)
{
if (partType == PDFPartType.PDF_a) {
return "a";
} else if (partType == PDFPartType.PDF_b) {
return "b";
} else if (partType == PDFPartType.PDF_u) {
return "u";
} else return "";
}| 枚举值 | 说明 |
|---|---|
| PDFType | 普通 PDF 文档 |
| PDFTypeA1a | PDF/A-1a文档 |
| PDFTypeA1b | PDF/A-1b文档 |
| PDFTypeA2a | PDF/A-2a文档 |
| PDFTypeA2u | PDF/A-2u文档 |
| PDFTypeA2b | PDF/A-2b文档 |
| PDFTypeA3a | PDF/A-3a文档 |
| PDFTypeA3u | PDF/A-3u文档 |
| PDFTypeA3b | PDF/A-3b文档 |