flutter - 在创建 pdf 时,图像未在 Flutter 中显示
问题描述
我有一个问题,在生成 pdf 时,资产中的图像未在屏幕上呈现。
我有 pdf 和打印包安装。打印包用于从我的图像文件夹加载图像。
这是我的代码
final pdf = pw.Document(deflate: zlib.encode);
writeOnPdf() async {
const imageProvider = const AssetImage('images/sig1.png');
final PdfImage sig1 = await pdfImageFromImageProvider(pdf: pdf.document, image: imageProvider);
pdf.addPage(pw.Page(
pageFormat: PdfPageFormat.a4,
build: (pw.Context context) {
return pw.Column(
children: [
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.spaceBetween,
children: [
pw.Text("Dexandra Inventory", style: pw.TextStyle(fontSize: 28.0)),
pw.Text("RECEIPT#1", style: pw.TextStyle(fontSize: 28.0))
]
),
pw.SizedBox(
height: 30.0
),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.start,
children: [
pw.Text("Luqman +60186661360", style: pw.TextStyle(fontSize: 18.0)),
]
),
pw.SizedBox(
height: 30.0
),
pw.Header(
level: 0,
child: pw.Text("1 Item (Qty:2)", style: pw.TextStyle(fontSize: 22.0))
),
pw.SizedBox(
height: 30.0
),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.spaceEvenly,
children: [
pw.Text("2x", style: pw.TextStyle(fontSize: 16.0)),
pw.Text("Air Feshener", style: pw.TextStyle(fontSize: 16.0)),
pw.Text("RM 10.00", style: pw.TextStyle(fontSize: 16.0, color: PdfColors.grey)),
pw.SizedBox(width: 40.0),
pw.Text("RM 20.00", style: pw.TextStyle(fontSize: 16.0, fontBold: pw.Font.courierBold())),
]
),
pw.SizedBox(
height: 40.0
),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.end,
children: [
pw.Column(
children: [
pw.Text("Total: RM 20.00", style: pw.TextStyle(fontSize: 20.0, fontBold: pw.Font.courierBold())),
pw.SizedBox(
height: 15.0
),
pw.Text("Cash: RM 20.00", style: pw.TextStyle(fontSize: 16.0)),
]
),
]
),
pw.Header(
level: 0,
child: pw.Text("")
),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.center,
children: [
pw.Text("March 30, 2020 4:41 PM", style: pw.TextStyle(fontSize: 16.0, color: PdfColors.grey)),
]
),
pw.Row(
mainAxisAlignment: pw.MainAxisAlignment.spaceAround,
children: [
pw.Image(sig1),
]
)
]
); // Center
}));
}
一切正常,直到最后一个小部件,即 Image。它不显示在 PDF 页面中。
pubspec.yml
assets:
- images/
当我单击按钮生成 pdf 时,这就是终端中出现的内容。不确定它是否与未渲染的图像有关。
I/flutter (13171): Helvetica has no Unicode support see https://github.com/DavBfr/dart_pdf/wiki/Fonts-Management
E/AccessibilityBridge(13171): VirtualView node must not be the root node.
E/AccessibilityBridge(13171): VirtualView node must not be the root node.
I/chatty (13171): uid=10341(com.example.dexandrainventory) identical 2 lines
E/AccessibilityBridge(13171): VirtualView node must not be the root node.
E/AccessibilityBridge(13171): VirtualView node must not be the root node.
I/chatty (13171): uid=10341(com.example.dexandrainventory) identical 5 lines
解决方案
final profileImage = pw.MemoryImage(
(await rootBundle.load('assetsimage)).buffer.asUint8List(),);
最后,使用它
pw.Image(profileImage),
推荐阅读
- scikit-learn - SVR中超参数C的定义是否与SVM中对应的C相反?
- python - 为什么 pandas 在写入 CSV 时会更改列内容?
- json - 使用ansible遍历多个字典列表
- python - 使用帧号和参数剪切一部分视频(Python)
- php - 如何在一次测试中测试多个 PHP TypeErrors?
- c - 将字符串分配给带有分段错误的C中的结构
- c++ - 在 C++ 中重载乘法运算符的正确方法(双向)
- javascript - React - 基于其他选择的选择选项更改
- python - 不断运行的工人池
- react-native - react-native-paper DataTable 文本样式