Ogl*_*lop 9 java bufferedimage jfreechart 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();
}
Run Code Online (Sandbox Code Playgroud)
文档被创建; 我可以添加文本,但是我收到错误,指出图像没有足够的信息显示.
我有什么不对的任何线索?
谢谢你帮我搞垃圾桶.昨天晚上花了几个小时,今天花了很多关于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();
}
Run Code Online (Sandbox Code Playgroud)
我相信这可以做得更好但是有效.
有一种简单的方法可以使用pdfbox将JFreeChart插入到pdf中:
BufferedImage bufferedImage = source.getChart().createBufferedImage(source.getWidth(),
source.getHeight(), BufferedImage.TYPE_INT_RGB, null);
PDXObjectImage ximage = new PDJpeg(doc, bufferedImage);
Run Code Online (Sandbox Code Playgroud)
没有任何流;)
| 归档时间: |
|
| 查看次数: |
17115 次 |
| 最近记录: |