首页 > 解决方案 > 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] lib\main.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");

标签: imageflutterpdf

解决方案


使用 rootBundle 从资产中加载图像

pw.MemoryImage(
(await rootBundle.load('assets/img/your_image.jpg')).buffer.asUint8List(),
);

推荐阅读