Pdfbox-Android 显示空白页
Pdfbox-Android shows empty page
我最近使用了 pdfbox android 库,因为 iText 在 AGPL 下。我尝试了 运行 以下代码。
PDDocument document = new PDDocument();
PDPage page= new PDPage();
document.addPage(page);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
Bitmap bitmap=BitmapFactory.decodeFile(imagesObject.get(0).image); //imagesobject is string path
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
PDImageXObject pdImage = PDImageXObject.createFromFile(imagesObject.get(0).image,document);
PDPageContentStream contentStream = new PDPageContentStream(document, page,true,true);
contentStream.drawImage(pdImage,70,70,pdImage.getWidth(), pdImage.getHeight());
contentStream.close();
document.save(file);
document.close();
PDF 保存为空白页面,未显示图像。我注意到pdf的大小是6mb,这意味着图像已经绘制但看不到。任何修复?
我也在使用 TomRoush 的移植库。
这是 link 生成的 pdf here
正如评论中所讨论的,该图像的名称中有一个 .jpg 扩展名,但它是一个 PNG 图像文件。 PDImageXObject createFromFile(String imagePath, PDDocument doc)
方法通过其扩展名假定文件类型,因此它将文件 1:1 嵌入到 PDF 中并分配了一个 DCT 过滤器。这两个对于 jpeg 文件都是正确的,但对于 png 则不然。
所以解决方案是重命名文件,或者使用 createFromFileByContent
方法。
我最近使用了 pdfbox android 库,因为 iText 在 AGPL 下。我尝试了 运行 以下代码。
PDDocument document = new PDDocument();
PDPage page= new PDPage();
document.addPage(page);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
Bitmap bitmap=BitmapFactory.decodeFile(imagesObject.get(0).image); //imagesobject is string path
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
PDImageXObject pdImage = PDImageXObject.createFromFile(imagesObject.get(0).image,document);
PDPageContentStream contentStream = new PDPageContentStream(document, page,true,true);
contentStream.drawImage(pdImage,70,70,pdImage.getWidth(), pdImage.getHeight());
contentStream.close();
document.save(file);
document.close();
PDF 保存为空白页面,未显示图像。我注意到pdf的大小是6mb,这意味着图像已经绘制但看不到。任何修复?
我也在使用 TomRoush 的移植库。
这是 link 生成的 pdf here
正如评论中所讨论的,该图像的名称中有一个 .jpg 扩展名,但它是一个 PNG 图像文件。 PDImageXObject createFromFile(String imagePath, PDDocument doc)
方法通过其扩展名假定文件类型,因此它将文件 1:1 嵌入到 PDF 中并分配了一个 DCT 过滤器。这两个对于 jpeg 文件都是正确的,但对于 png 则不然。
所以解决方案是重命名文件,或者使用 createFromFileByContent
方法。