本帖最后由 zqaq_520 于 2009-07-28 17:09:39 编辑

解决方案 »

  1.   

    我这几天也在用这个,不过没有向pdf输出,我看api中所有向外输出图片和流的类都在org.jfree.chart.ChartUtilities 这个类和org.jfree.chart.servlet.ServletUtilities(和servlet有关)
    类中,你看看里面的每个方法,有没有你合适的.如果不行的话我们一起研究下呵呵!~
      

  2.   

    先生成图片,再写入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" /> 就显示了.