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
相关产品推荐
相关产品推荐

