Skip to content
DemoFAQ

PDF 生成模板编辑器

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

查看 GitHub
Guides

创建文档 ​

ComPDF SDK for Flutter 支持直接创建新的 PDF 文档,无需预先打开本地 PDF 文件。该功能适用于生成报告、票据、表单或其他由应用动态创建的 PDF 文件。

创建文档后,你可以插入页面、添加注释或表单域,并将文档保存到指定位置。

请先完成 SDK 初始化。有关初始化方式,请参阅应用许可证密钥。

创建并保存 PDF 文档 ​

调用 CPDFDocument.createDocument() 创建文档实例。新创建的文档不包含页面,因此请先插入页面,再保存为 PDF 文件。

dart
import 'dart:io';

import 'package:compdfkit_flutter/compdfkit.dart';
import 'package:compdfkit_flutter/configuration/cpdf_configuration.dart';
import 'package:compdfkit_flutter/document/cpdf_document.dart';
import 'package:compdfkit_flutter/page/cpdf_page.dart';

Future<String> createPdfDocument() async {
  CPDFDocument? document;

  try {
    document = await CPDFDocument.createDocument();

    final inserted = await document.insertBlankPage(
      pageIndex: 0,
      pageSize: CPDFPageSize.a4,
    );

    if (!inserted) {
      throw StateError('Failed to insert a blank page.');
    }

    final directory = await ComPDFKit.getTemporaryDirectory();
    final savePath =
        '${directory.path}${Platform.pathSeparator}new_document.pdf';

    final saved = await document.saveAs(savePath);
    if (!saved) {
      throw StateError('Failed to save the PDF document.');
    }

    return savePath;
  } finally {
    await document?.close();
  }
}

createPdfDocument() 返回生成的 PDF 文件路径。保存成功后,你可以使用该路径在阅读器中打开文档:

dart
final documentPath = await createPdfDocument();

ComPDFKit.openDocument(
  documentPath,
  configuration: CPDFConfiguration(),
);

编辑新建文档 ​

CPDFDocument.createDocument() 返回的文档实例可以使用 CPDFDocument 提供的其他接口。例如,你可以:

  • 使用 insertBlankPage() 或 insertPageWithImagePath() 添加页面。
  • 使用 addAnnotations() 添加注释。
  • 使用 addWidgets() 添加表单域。
  • 使用 saveAs() 保存生成的 PDF 文件。

上述示例将文件保存到应用临时目录,临时文件可能会被系统清理。如需长期保留文件,请将 saveAs() 的保存路径替换为应用的持久化目录或用户选择的位置。