pdf Flutter,如何将资产中的图像(JPG/PNG等)附加到pdf中



使用pdf库中的图像小部件时遇到问题

当前版本:pdf:^3.3.0

代码:

final imageA = PdfImage.file(
pdf.document,
bytes: File('lib/Images/rocket14.jpg').readAsBytesSync(),
);

child: pw.Image(pw.ImageImage(pdfimageA)),

错误:

Unhandled Exception: type 'PdfImage' is not a subtype of type 'Image'

我完全不知道如何将Pdfimage解析为图像,最初我有

更新:

使用

Future<MemoryImage> convtoImage(String name) async => pw.MemoryImage((await rootBundle.load('assets/img/$name.jpg')).buffer.asUint8List(),);

导致捕获22,其中

error: A value of type 'MemoryImage' can't be returned from the function 'convtoImage' because it has a return type of 'Future<MemoryImage>'. (return_of_invalid_type at [scanrecopdfmaker] libmain.dart:490)

但是,如果我将其作为memimage的返回类型,它将提示我将其返回到未来。

也尝试过,但它从未更新值,因此它保持为空

Future<Uint8List> convtoImage(String name) async {
///1
var a = await rootBundle.load('lib/Images/$name.jpg');
Uint8List data = (await rootBundle.load('lib/Images/rocket14.jpg'))
.buffer
.asUint8List();
// print("data IS $data");
// var b = pw.MemoryImage(a.buffer.asUint8List());
return  data;
}
var done;
var tempa =  convtoImage('rocket14').whenComplete(() {
print("done");
}).then((value) => done=value);
print("AA IS $tempa");
print("BIS $done");
while(done == null){
print(done);
}
print("Finito");

使用rootBundle从资产加载图像

pw.MemoryImage(
(await rootBundle.load('assets/img/your_image.jpg')).buffer.asUint8List(),
);
final ByteData image = await rootBundle.load('assets/image/your_image.jpg');
Uint8List imageData = (image).buffer.asUint8List();

一个使用它的例子:

pw.Container(
width: 50.0,
height: 50.0,
child: pw.Image(pw.MemoryImage(logoData))
)

最新更新