Skip to content
DemoFAQ

PDF 生成模板编辑器

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

查看 GitHub
Flutter Guides Pdf standard conversion

PDF 标准识别与转换 ​

ComPDF Flutter SDK 自 3.2.0 起支持读取文档声明的 PDF 标准类型,并转换为指定标准的副本。

以下示例中的 document 为已打开的 CPDFDocument。

dart
import 'package:compdfkit_flutter/compdfkit.dart';

读取标准类型 ​

dart
final type = await document.getPdfStandardType();
print(type.value);

此接口读取文档声明的标准类型,不等同于对文档进行完整的标准合规验证。

转换为指定标准 ​

dart
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-1pdfA1a、pdfA1b
PDF/A-2pdfA2a、pdfA2u、pdfA2b
PDF/A-3pdfA3a、pdfA3u、pdfA3b
PDF/XpdfX1a、pdfX3、pdfX4
PDF/EpdfE1
PDF/UApdfUA1
PDF/VTpdfVT1、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_FAILEDAndroid 已写出副本,但当前文档恢复失败;关闭并重新打开源文档,不要保存当前内存文档