Skip to content

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() 的保存路径替换为应用的持久化目录或用户选择的位置。