图像不使用资源流

时间:2016-11-08 09:02:15

标签: java pdf pdfbox

我使用PDFBOX创建了一个PDF。整个PDF生成完美,甚至在我使用时加载的图像

PDImageXObject ptabelle = PDImageXObject.createFromFile("src/main/resources/pdf/ptabelle.png", pdDocument);

但是项目需要在某个时候上线,所以我必须用类加载器替换静态路径。在完成PDF生成的所有操作后,将显示文本,但不显示图像。

有趣的是,在PDF内部"框"图像应该在哪里,但不是图像。

Box where image should be

以下是流生成的代码。

ClassLoader classLoader = getClass().getClassLoader();
PDStream pdStream = new PDStream(pdDocument, classLoader.getResourceAsStream("pdf/ptabelle.png"));
PDResources pdResources = new PDResources();
PDImageXObject ptabelle = new PDImageXObject(pdStream, pdResources);

PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page4);

这里是代码中的调用,长度+宽度变量在代码中定义。

 pdPageContentStream.drawImage(ptabelle, TEXT_BEGIN, currentYCoord, 172, 107);

1 个答案:

答案 0 :(得分:0)

请使用相应的new PDImageXObject(pdStream, pdResources)方法,而不是PDFBox内部使用的LosslessFactory。所以你的代码看起来像这样:

BufferedImage bim = ImageIO.read(classLoader.getResourceAsStream("pdf/ptabelle.png"));
PDImageXObject img = LosslessFactory.createFromImage(pdDocument, bim);

另请参阅PDImageXObject.createFromFileByExtension的javadoc,它解释了可以调用哪些工厂方法。