PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
获取表单列表和表单对象的步骤如下:
获取文档对象(CPDFReaderWidget 的控制器或 CPDFDocument 实例)。
获取页面对象。
取得页面对象中的表单列表。
以下是对应的代码:
使用CPDFReaderWidget:
CPDFReaderWidgetController? _controller;
// 初始化 CPDFReaderWidget,并在 onCreated 回调中获取 controller
CPDFReaderWidget(
document: documentPath,
configuration: CPDFConfiguration(),
onCreated: (controller) {
setState(() {
this._controller = controller;
});
},
)
// 获取文档所有表单数据
List<CPDFWidget> widgets = [];
int pageCount = await _controller.document.getPageCount();
for (int i = 0; i < pageCount; i++) {
CPDFPage page = _controller.document.pageAtIndex(i);
var pageWidgets = await page.getWidgets();
widgets.addAll(pageWidgets);
}使用CPDFDocument:
// 创建并打开文档
CPDFDocument document = await CPDFDocument.createInstance();
var error = await document.open(pdfFilePath);
if (error == CPDFDocumentError.success) {
// 获取文档所有表单数据
List<CPDFWidget> widgets = [];
int pageCount = await document.getPageCount();
for (int i = 0; i < pageCount; i++) {
CPDFPage page = document.pageAtIndex(i);
var pageWidgets = await page.getWidgets();
widgets.addAll(pageWidgets);
}
}自 3.2.0 起,CPDFSignatureWidget.isSigned 表示该域是否已包含数字签名:
final widgets = await document.pageAtIndex(0).getWidgets();
for (final signature in widgets.whereType<CPDFSignatureWidget>()) {
print('${signature.title}: ${signature.isSigned}');
}使用前导入 package:compdfkit_flutter/annotation/form/cpdf_signature_widget.dart。isSigned 不代表签名验证通过;读取完整性和证书信任状态,参见读取与验证数字签名。