byte[] Renderer(String path)
{
File file = new File(path);
byte [] byteArray=null;
String ans="empty";
try
{
for(int i=0;i<count;i++)
{
//code for converting pages to images
}
return byteArray;
}
catch(Exception e)
{
byte[] h=null;
return h;
}
}
我创建了一个Renderer方法,用于将10个页面转换为PNG图片并发送给main.dart,我只收到了最后一页,但我想在我的dart文件中显示所有页面。
在你的Java for
循环,处理每一页,但除了最后一页,其他都丢弃--你做了一个新的 byteArray
的每个页面。
一种解决方案是返回所有页面的列表。在Java中首先声明一个 ArrayList
ArrayList bitmaps = new ArrayList();
在for循环内,将压缩结果添加到列表中。
bitmaps.add(outStream.toByteArray());
最后,返回 bitmaps
而不是 byteArray
.
在Dart端,你现在会得到一个。List<Uint8List>
而非单一 Uint8List
所以将方法的签名改为。
Future<List<Uint8List>> pdfAsset() async
很明显,你将不得不改变构建方法来处理一个位图列表(每页一个),而不是一个位图(最后一页)。
(你可能会发现你需要将签名改为 Future<List<dynamic>>
但你会发现,他们每个人都是一个。Uint8List
. 同时,将Java捕捉代码改为返回一个空列表)。)