You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何通过按钮打印项目内已存在的PDF文件

Flutter 实现点击按钮打印项目内置PDF文件

1. 基础配置

  • 在项目pubspec.yaml中添加打印依赖:
dependencies:
  flutter:
    sdk: flutter
  printing: ^5.12.0 # 跨平台打印能力封装库
  • 同文件下声明你存放在项目中的text.pdf资源,路径要和实际存放位置完全匹配,比如你把PDF放在项目assets目录下,配置如下:
flutter:
  assets:
    - assets/text.pdf

配置完成后执行flutter pub get拉取依赖。

2. 功能实现

  • 引入所需头文件:
import 'package:flutter/services.dart';
import 'package:printing/printing.dart';
  • 编写打印触发方法,直接读取asset内PDF的字节数据,调用打印接口唤起系统打印面板:
Future<void> _triggerPrintPdf() async {
  try {
    // 读取项目内置PDF的二进制数据
    final pdfByteData = await rootBundle.load('assets/text.pdf');
    final pdfBytes = pdfByteData.buffer.asUint8List(
      pdfByteData.offsetInBytes,
      pdfByteData.lengthInBytes
    );
    // 唤起系统打印界面
    await Printing.printPdf(
      bytes: pdfBytes,
      name: '待打印文档',
    );
  } catch (e) {
    // 按需处理异常场景:资源读取失败、用户取消打印、设备无可用打印服务等
    print('打印流程异常: $e');
  }
}
  • 在页面布局中添加按钮,点击时调用上述打印方法即可:
ElevatedButton(
  onPressed: _triggerPrintPdf,
  child: const Text('点击打印PDF'),
)

3. 适配说明

  • 安卓端:Android 4.4(API 19)及以上版本原生支持系统打印框架,无需额外申请权限;低于该版本的系统无内置打印能力,需自行做兼容提示。
  • iOS端:无需额外配置权限,依赖库会自动适配系统打印面板逻辑。
  • 若你的text.pdf存放路径和示例不一致,需要同步修改pubspec.yaml中的资源声明路径、rootBundle.load()方法内的资源路径,否则会抛出资源找不到的异常。

内容的提问来源于stack exchange,提问作者KarimHachicha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:15:10