我正在尝试使用Apache Imaging和PDFBox将TIFF转换为PDF。我尝试的所有内容都会产生一个空白(但非零字节)的pdf。
我尝试过的其他SO问题中有一些例子,例如Add BufferedImage to PDFBox document和PDFBox draw black image from BufferedImage。
我知道我从TIFF读取的缓冲图像是有效的,因为我可以显示它并在JFrame中看到它。
我还尝试过PDFJpeg而不是PDFPixelMap,而contentStream.drawImage()而不是.drawXObject(),结果总是一样的。
我还尝试在内容流之前创建PDXObjectImage并按Can't add an image to a pdf using PDFBox中的建议编写多个图像,结果仍然相同。我多次写图像时输出文件较大,所以它正在做“某事”,但我不知道它是什么。
如何使用PDFBox将BufferedImage写入PDF上的页面?
try(PDDocument document = new PDDocument();ByteArrayOutputStream outputStream = new ByteArrayOutputStream())
{
PDPage blankPage = new PDPage();
document.addPage( blankPage );
// PDXObjectImage pdImage = new PDJpeg(document, image);
PDXObjectImage pdImage = new PDPixelMap(document, image);
// contentStream.drawImage(pdImage, 5, 300);
PDPageContentStream contentStream = new PDPageContentStream(document, blankPage);
contentStream.drawXObject(pdImage, 5, 5, 100, 100);
document.save("test.pdf");
contentStream.close();
}
catch(COSVisitorException ex) {
throw new IOException(ex);
}