在Flutter中,使用itying_pdf库可以方便地生成和处理PDF文件。以下是实现步骤:
1. 添加依赖
在pubspec.yaml中添加:
dependencies:
itying_pdf: ^1.0.0 # 使用最新版本
printing: ^5.9.1 # 用于PDF预览和打印
2. 生成PDF
import 'package:itying_pdf/itying_pdf.dart';
import 'package:printing/printing.dart';
Future<void> generatePDF() async {
final pdf = PDF();
// 添加页面
final page = PDFPage(pdf);
// 添加文本
page.addText(
text: 'Hello PDF!',
x: 50,
y: 50,
size: 20,
color: PDFColor(0, 0, 0),
);
// 添加图片(从assets)
page.addImage(
image: await PDFImage.fromAsset('assets/logo.png'),
x: 50,
y: 100,
width: 100,
height: 50,
);
// 保存PDF文件
final bytes = await pdf.save();
await Printing.sharePdf(bytes: bytes, filename: 'example.pdf');
}
3. 高级功能
page.addTable(
headers: ['姓名', '年龄', '城市'],
rows: [
['张三', '25', '北京'],
['李四', '30', '上海']
],
x: 50,
y: 200,
);
page.addRect(
x: 50,
y: 300,
width: 100,
height: 50,
color: PDFColor(255, 0, 0),
);
4. PDF处理
final mergedPDF = PDF();
mergedPDF.merge([pdf1, pdf2]);
final singlePage = pdf.extractPage(0); // 提取第一页
5. 注意事项
- 需要文件读写权限(Android在AndroidManifest.xml添加权限,iOS在Info.plist配置)
- 图片资源需要提前在pubspec.yaml中声明
- 建议使用try-catch处理PDF操作异常
6. 完整示例
FloatingActionButton(
onPressed: generatePDF,
child: Icon(Icons.picture_as_pdf),
)
通过以上代码即可实现基本的PDF生成、文本/图片添加、表格绘制等功能。itying_pdf库还支持更多高级特性,具体可参考其官方文档。