将BufferedImage添加到PDFBox文档

在我当前的项目中,我尝试将一个BufferedImage添加到PDFBox文档中。 更具体地说,我使用了JFreeChart的图像。 我的代码如下所示:

 public void exportToPDF(JFreeChart chart, String filePath){ PDDocument doc = null; PDPage page = null; PDXObjectImage ximage = null; try { doc = new PDDocument(); page = new PDPage(); doc.addPage(page); PDPageContentStream content = new PDPageContentStream(doc, page); BufferedImage image = chart.createBufferedImage(300, 300); ximage = new PDJpeg(doc, image); content.drawImage(ximage, 20, 20); content.close(); } catch(IOException ie) { } doc.save(filePath); doc.close(); } 

文档被创建; 我可以添加文本,但是我收到错误,说明图像没有足够的信息显示。

我做错了什么线索?

谢谢你帮我搞垃圾桶。 今晚花了几个小时和今天几个小时混淆了PipedIn / OutStreams。 无法弄清楚。 但是,我得到了它的工作。 结果certificate这并不困难。

 public void exportToPDF(JFreeChart chart, String filePath){ PDDocument doc = null; PDPage page = null; PDXObjectImage ximage = null; try { doc = new PDDocument(); page = new PDPage(); doc.addPage(page); PDPageContentStream content = new PDPageContentStream(doc, page); //create a new outStream ByteArrayOutputStream out = new ByteArrayOutputStream(); ChartUtilities.writeChartAsJPEG(out, chart, 300, 300);//write to outstream //create a new inputstream InputStream in = new ByteArrayInputStream(out.toByteArray()); ximage = new PDJpeg(doc, in); content.drawImage(ximage, 5, 300); content.close(); } catch (IOException ie){ //handle exception } //save and close doc.save(filePath); doc.close(); } 

我相信这可以做得更好但是有效。

有一种简单的方法可以使用pdfbox将JFreeChart插入到pdf中:

 BufferedImage bufferedImage = source.getChart().createBufferedImage(source.getWidth(), source.getHeight(), BufferedImage.TYPE_INT_RGB, null); PDXObjectImage ximage = new PDJpeg(doc, bufferedImage); 

没有任何流;)

有两点突出:

  • 不要吞下例外。

  • 按照此处的建议,使用ChartUtilities以合适的格式渲染图像。