将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感到困惑。无法解决。但是,我得到它的工作。事实证明,这并不是很困难。
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();
}
我敢肯定,这样做可以做得更好,但是可以。