posts - 78, comments - 34, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2010年2月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28123456
          78910111213

          搜索

          •  

          積分與排名

          • 積分 - 108712
          • 排名 - 540

          最新評論

                   今日教育辦公系統結束。新內容有:導出數據到PDF文檔、生成圖表(餅圖、柱圖...),整體上操作比較簡單。

           

          一、創建PDF文檔

                   我們使用iText創建PDF文檔,需要到http://itextpdf.com/ 下載jar包,同時需要具有iTextAsian.jar包,它為我們提供中亞洲語言的支持。

           

                   PDF文檔與昨天的Excel表格相比,它有什么特征?PDF是一種國際化標準文檔,可以向文檔中添加文字、表格、圖片、動畫、3D、腳本語言...,在實際應用中我們一般只用到文字、表格和圖片。創建PDF文檔只需兩個操作對象:DocumentPDFWriter

                  

                   下面我直接通過Java工程來說明創建PDF的過程。

          package cn.itcast.cc.pdf;

           

          import java.io.File;

          import java.io.FileInputStream;

          import java.io.FileOutputStream;

          import org.junit.Test;

          import com.lowagie.text.Document;

          import com.lowagie.text.Element;

          import com.lowagie.text.Font;

          import com.lowagie.text.Jpeg;

          import com.lowagie.text.Paragraph;

          import com.lowagie.text.Phrase;

          import com.lowagie.text.pdf.BaseFont;

          import com.lowagie.text.pdf.ByteBuffer;

          import com.lowagie.text.pdf.PdfPCell;

          import com.lowagie.text.pdf.PdfPTable;

          import com.lowagie.text.pdf.PdfWriter;

           

          public class TestPdf {

           

                 @Test

                 public void testpdf() throws Exception {

                        // 創建Document實例

                        Document doc = new Document();

                        // 創建書寫器Writerdoc對象關聯

                        PdfWriter.getInstance(doc, new FileOutputStream("C:/mypdf.pdf")); // ③打開文檔。

                        // 打開文檔

                        doc.open();

                        // 添加英語

                        doc.add(new Paragraph("Hello PDF!"));

                        // 添加中文

                        BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

                        Font font = new Font(bf,18,Font.UNDEFINED);

                        doc.add(new Paragraph("你好PDF", font));

                        // 添加表格

                        PdfPTable table = new PdfPTable(2);

                        PdfPCell cell = new PdfPCell(new Phrase("性別", font));

                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);

                        cell.setColspan(2);

                        table.addCell(cell);

                        table.addCell(new Phrase("", font));

                        table.addCell(new Phrase("", font));

                        doc.add(table);

                        // 添加圖片

                        byte[] buf = new byte[1024];

                        FileInputStream fis = new FileInputStream(new File("C:/tiger.jpeg"));

                        ByteBuffer bytebuf = new ByteBuffer();

                        int len = 0;

                        while((len = fis.read(buf)) != -1){

                               bytebuf.append(buf, 0, len);

                        }            

                        doc.add(new Jpeg(bytebuf.getBuffer(), 100, 100));

                        // 關閉文檔,自動保存到文件。

                        doc.close();

                 }

          }

           

           

          二、創建圖表

                   我們使用JFreeChartCewolf創建圖表,可以創建柱狀圖、餅圖、曲線圖、甘特圖等。可以用于桌面程序(Swing)和WEB應用。Cewolf是基于JFreeChart的,它使用JFreeChart的繪圖引擎。Cewolf用于WEB應用,在服務器端生成圖表數據發送給JSP頁面,在JSP頁面中使用cewolf標簽即可將數據轉換為圖片。

           

                   在此我只編寫使用JFreeChart創建餅形圖和使用Cewolf創建柱形圖兩個示例,其他圖形的創建可以參看文檔。

           

                   1.JFreeChart創建餅形圖

          package cn.itcast.cc.jfreechart;

           

          import java.awt.Font;

          import java.io.FileOutputStream;

          import org.jfree.chart.ChartFactory;

          import org.jfree.chart.ChartUtilities;

          import org.jfree.chart.JFreeChart;

          import org.jfree.chart.plot.PiePlot;

          import org.jfree.data.general.DefaultPieDataset;

          import org.junit.Test;

           

          public class TestJFreeChart {

                 @Test

                 public void test() throws Exception {

                        // 生成PieDataset數據

                        DefaultPieDataset dataset = new DefaultPieDataset();

                        dataset.setValue("日本", 10);

                        dataset.setValue("美國", 20);

                        dataset.setValue("中國", 70);

                        // 創建圖表

                        JFreeChart chart = ChartFactory.createPieChart3D("人口比例", dataset,

                                      false, false, false);

                        // 需要設置中文字體,否則亂碼。

                        Font font = new Font("微軟雅黑", Font.PLAIN, 18);

                        chart.getTitle().setFont(font);

                        PiePlot plot = (PiePlot) chart.getPlot();

                        plot.setLabelFont(font);

                        plot.setForegroundAlpha( 0.8f);

                        plot.setCircular(true);

                        // 保存圖表數據到PNG圖片

                        ChartUtilities.writeChartAsPNG(new FileOutputStream("C:/people.png"),

                                      chart, 400, 300);

                 }

          }

           

                   2.Cewolf創建柱形圖

                   1).servlet的內容:

          package cn.itcast.cc.servlet.cewolf;

           

          import java.io.IOException;

          import java.util.Date;

          import java.util.Map;

          import javax.servlet.ServletException;

          import javax.servlet.http.HttpServlet;

          import javax.servlet.http.HttpServletRequest;

          import javax.servlet.http.HttpServletResponse;

          import org.jfree.data.category.DefaultIntervalCategoryDataset;

          import de.laures.cewolf.DatasetProducer;

           

          public class CewolfServlet extends HttpServlet {

           

                 private static final long serialVersionUID = 1L;

           

                 protected void doGet(HttpServletRequest request,

                               HttpServletResponse response) throws ServletException, IOException {

                        // 生成數據

                        DatasetProducer categoryData = new DatasetProducer() {

                               public Object produceDataset(Map params) {

           

                                      final String[] categories = { "一季度", "二季度", "三季度", "四季度" };

                                      final String[] seriesNames = { "研發部", "銷售部", "教育部", "項目部" };

                                      final Integer[][] startValues = new Integer[seriesNames.length][categories.length];

                                      final Integer[][] endValues = new Integer[seriesNames.length][categories.length];

                                     

                                      for (int series = 0; series < seriesNames.length; series++) {

                                             for (int i = 0; i < categories.length; i++) {

                                                    int y = (int) (Math.random() * 10 + 1);

                                                    startValues[series][i] = new Integer(y);

                                                    endValues[series][i] = new Integer(y

                                                                  + (int) (Math.random() * 10));

                                             }

                                      }

           

                                      DefaultIntervalCategoryDataset ds = new DefaultIntervalCategoryDataset(

                                                    seriesNames, categories, startValues, endValues);

                                      return ds;

           

                               }

           

                               public String getProducerId() {

                                      return "CategoryDataProducer";

                               }

           

                               public boolean hasExpired(Map params, Date since) {

                                      return false;

                               }

           

                        };

                        // 添加到Request

                        request.setAttribute("categoryData", categoryData);

                        // 轉發到test.jsp頁面

                        request.getRequestDispatcher("testcewolf.jsp").forward(request, response);

           

                 }

           

          }

           

                  

                   2).JSP頁面的內容:

          <%@ page language="java" contentType="text/html; charset=UTF-8"

                 pageEncoding="UTF-8"%>

          <%@ taglib prefix="cewolf"

                 uri="http://cewolf.sourceforge.net/taglib/cewolf.tld"%>

           

          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

          <html>

          <head>

          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          <title>Insert title here</title>

          </head>

          <body>

                 <cewolf:chart id="horizontalBarChart3D" title="年度部門薪水比率"

                        type="horizontalBar3D" xaxislabel="季度" yaxislabel="比率">

                        <cewolf:data>

                               <cewolf:producer id="categoryData" />

                        </cewolf:data>

                 </cewolf:chart>

                 <cewolf:img chartid="horizontalBarChart3D" renderer="/cewolf"

                        width="300" height="300" />

          </body>

          </html>

           

                   3).WEB.xml的內容:

          <?xml version="1.0" encoding="UTF-8"?>

          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

                 id="WebApp_ID" version="2.5">

                 <display-name>cewolf</display-name>

                 <welcome-file-list>

                        <welcome-file>index.html</welcome-file>

                        <welcome-file>index.htm</welcome-file>

                        <welcome-file>index.jsp</welcome-file>

                 </welcome-file-list>

                 <!-- 我們的Servlet -->

                 <servlet> 

                        <description></description>

                        <display-name>testcewolf</display-name>

                        <servlet-name>testcewolf</servlet-name>

                        <servlet-class>org.simpleit.cewolf.CewolfServlet</servlet-class>

                 </servlet>

                 <servlet-mapping>

                        <servlet-name>testcewolf</servlet-name>

                        <url-pattern>/testcewolf</url-pattern>

                 </servlet-mapping>

           

                 <!-- cewolfServlet -->

                 <servlet>

                        <servlet-name>CewolfServlet</servlet-name>

                        <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class>

                        <!-- sets storage implementation -->

                        <init-param>

                               <param-name>storage</param-name>

                               <param-value>de.laures.cewolf.storage.TransientSessionStorage</param-value>

                        </init-param>

                        <!-- sets overlib.js location relative to webapp -->

                        <init-param>

                               <param-name>overliburl</param-name>

                               <param-value>/etc/overlib.js</param-value>

                        </init-param>

                        <!-- turn on or off debugging logging -->

                        <init-param>

                               <param-name>debug</param-name>

                               <param-value>true</param-value>

                        </init-param>

                        <load-on-startup>1</load-on-startup>

                 </servlet>

           

                 <servlet-mapping>

                        <servlet-name>CewolfServlet</servlet-name>

                        <url-pattern>/cewolf/*</url-pattern>

                 </servlet-mapping>

           

          </web-app>

           

                   明日起就開始休年假了,為期11天。一定要安排好學習計劃!

           


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 芜湖市| 贵阳市| 揭阳市| 南宫市| 房产| 罗江县| 平果县| 静海县| 长汀县| 确山县| 洪雅县| 伊宁县| 札达县| 同德县| 阿坝| 民乐县| 甘德县| 始兴县| 蕉岭县| 原阳县| 内江市| 遂昌县| 万全县| 云安县| 泉州市| 南部县| 靖宇县| 丹凤县| 确山县| 临夏县| 台安县| 西充县| 石泉县| 郎溪县| 宜良县| 石屏县| 尚义县| 松原市| 伊金霍洛旗| 游戏| 遵化市|