gpt4 book ai didi

java - 将 BufferedImage 添加到 PDFBox 文档

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:18 24 4
gpt4 key购买 nike

在我当前的项目中,我尝试将 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();
}

我相信这可以做得更好,但它确实有效。

关于java - 将 BufferedImage 添加到 PDFBox 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com