PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
ComPDF Flutter SDK 自 3.2.0 起支持读取文档声明的 PDF 标准类型,并转换为指定标准的副本。
以下示例中的 document 为已打开的 CPDFDocument。
import 'package:compdfkit_flutter/compdfkit.dart';final type = await document.getPdfStandardType();
print(type.value);此接口读取文档声明的标准类型,不等同于对文档进行完整的标准合规验证。
try {
final success = await document.convertToPdfStandard(
'/path/to/output-pdfa2b.pdf',
CPDFPdfStandardType.pdfA2b,
fontSubset: true,
);
if (success) {
print('Converted copy saved.');
}
} on CPDFPdfStandardException catch (error) {
print('${error.code}: ${error.message}');
}以下转换目标可用于 Android 和 iOS:
| 标准 | CPDFPdfStandardType |
|---|---|
| PDF/A-1 | pdfA1a、pdfA1b |
| PDF/A-2 | pdfA2a、pdfA2u、pdfA2b |
| PDF/A-3 | pdfA3a、pdfA3u、pdfA3b |
| PDF/X | pdfX1a、pdfX3、pdfX4 |
| PDF/E | pdfE1 |
| PDF/UA | pdfUA1 |
| PDF/VT | pdfVT1、pdfVT2 |
fontSubset 控制输出文件中的字体子集,默认值为 true。
输出路径必须可写、父目录已存在,且与源文件不同。同名输出文件会被覆盖。转换成功后,需要主动打开输出副本查看结果。
输出包含当前文档中的未保存修改。Android 在转换后从源文件重新加载当前文档,iOS 转换副本;若要在当前文档中保留修改,应先保存。加密文档需先通过 saveAs() 输出无密码副本并打开该副本,再进行转换。
| 异常代码 | 处理方式 |
|---|---|
INVALID_OUTPUT_PATH | 检查目录、写权限及源文件与输出文件的路径 |
DOCUMENT_INVALID | 重新打开有效文档 |
ENCRYPTED_DOCUMENT_NOT_CONVERTIBLE | 先输出并打开无密码副本 |
PDF_STANDARD_CONVERT_FAILED | 读取异常信息,确认源文档可转换 |
PDF_STANDARD_SAVE_FAILED | 检查输出存储空间和写权限 |
PDF_STANDARD_RESTORE_FAILED | Android 已写出副本,但当前文档恢复失败;关闭并重新打开源文档,不要保存当前内存文档 |