如何将JFreeChart中图表结合iText输出到Pdf文件中,而不用生成图片

乌哩码嗏 2009-07-28 05:01:10
我想将jfreechart生成的图片导入到pdf中,因此需要jfreechart和itext结合起来用,目前我试了一个方法:
1、根据jfreechart生成的图片路径生成图片,部分代码如下:
Image img = Image.getInstance(new URL( "http://localhost:8181/wqdss/servlet/DisplayChart?filename=jfreechart-45744.png "));
img.setAbsolutePosition(0, 0);
document.add(img); //document为定义好的pdf文档

但生成的文件路径URL转到我用Itext生成PDF的页面时,显示没有找到该路径,
请问有没有什么方法将图片输出?
...全文
707 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
archko 2009-07-28
  • 打赏
  • 举报
回复
先生成图片,再写入PDF,是这样吧.
public static void saveCharToJPG(JFreeChart chart,String fileName) throws IOException{
OutputStream fos=null;
try{
//fos=new FileOutputStream("D:\\fruit.jpg");
fos=new BufferedOutputStream(new FileOutputStream(fileName));
ChartUtilities.writeChartAsJPEG(fos,1.0f,chart,1024,768,null);
}catch(Exception e){
}finally{
fos.close();
}
}

public static void main(String[] args) throws IOException{
//saveCharToJPG(createBarChart(createDataset()),"D:\\fruit.jpg");
saveCharToJPG(createChart2(createDataset()),"D:\\fruit2.jpg");
}
createChart2(createDataset() ///这两个不用我说了吧.就是设置数据什么的.
private static JFreeChart createChart2(CategoryDataset paramCategoryDataset)
private static CategoryDataset createDataset() 内容你自己已经会了,不说.看返回值也知道.
////////////////这是生成本地文件的.
也可以通过JAVABEAN.在JSP里调用:
来一个柱状图的:
private static CategoryDataset getDataSet2() 数据...//////////////
public static String generateBarChart(HttpSession session,PrintWriter pw,int w,int h){
String filename=null;
CategoryDataset dataset=getDataSet2();
JFreeChart chart=ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
try{
/*------得到chart的保存路径----*/
ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection());
filename=ServletUtilities.saveChartAsPNG(chart,w,h,info,session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw,filename,info,true);
pw.flush();
}catch(IOException e){
e.printStackTrace();
}
return filename;
}
JSP:<%String fileNameBar=JfreeDemo.generateBarChart(session,new PrintWriter(out),580,
250); %>
这样就得到了这个图片路径了.并且设置了图片的大小.
<img alt="" src="<%= graphURLBar%>" width="580" height="250" border="0" /> 就显示了.
vzhchv007 2009-07-28
  • 打赏
  • 举报
回复
我这几天也在用这个,不过没有向pdf输出,我看api中所有向外输出图片和流的类都在org.jfree.chart.ChartUtilities 这个类和org.jfree.chart.servlet.ServletUtilities(和servlet有关)
类中,你看看里面的每个方法,有没有你合适的.如果不行的话我们一起研究下呵呵!~

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧