乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      在servlet中使用jfreereport直接產(chǎn)生pdf文件報(bào)表...

       ShangShujie 2007-06-01
      目前基于Web的精確打印解決方案主要有兩類(lèi):一是加強(qiáng)客戶(hù)端的邏輯;二是在服務(wù)器端產(chǎn)生 適于精確打印的文件。流行的打印工具中用Applet實(shí)現(xiàn)、用瀏覽器插件實(shí)現(xiàn)或是開(kāi)發(fā)嵌入瀏覽器的客戶(hù)端的方法屬于第一類(lèi);而在服務(wù)器端產(chǎn)生圖片文件、 pdf或ps等.精確打印文件的方法屬于第二類(lèi)。下面就給出一個(gè)servlet通過(guò)模板生成pdf文件的實(shí)現(xiàn).選擇的報(bào)表工具是jfreereport.


      轉(zhuǎn)載:轉(zhuǎn)載請(qǐng)保留本信息,本文來(lái)自http://www./resource/article/1/1261.html
      首先說(shuō)些廢話(huà)。
      基于Java開(kāi)發(fā)的Web的應(yīng)用系統(tǒng)的打印問(wèn)題一直困擾著我。原因是基于Web的應(yīng)用是瘦客戶(hù)端應(yīng)用,邏輯集中在服務(wù)器上,而打印是基于客戶(hù)端的行為。

      目前基于Web的精確打印解決方案主要有兩類(lèi):一是加強(qiáng)客戶(hù)端的邏輯;二是在服務(wù)器端產(chǎn)生適于精確打印的文件。
      流行的打印工具中用Applet實(shí)現(xiàn)、用瀏覽器插件實(shí)現(xiàn)或是開(kāi)發(fā)嵌入瀏覽器的客戶(hù)端的方法屬于第一類(lèi);而在服務(wù)器端產(chǎn)生圖片文件、pdf或ps等

      精確打印文件的方法屬于第二類(lèi)。

      以上流行的解決方案的比較:

      方案 打印效果 瀏覽器依賴(lài) 部署代價(jià) 維護(hù)代價(jià)
      Applet實(shí)現(xiàn) 頁(yè)面控制困難 需要java plug-in插件 無(wú)需客戶(hù)端部署 客戶(hù)端調(diào)整
      瀏覽器插件實(shí)現(xiàn) 同本地打印,效果好 依賴(lài)特定類(lèi)型版本的瀏覽器 客戶(hù)端動(dòng)態(tài)部署 客戶(hù)端調(diào)整
      圖片文件實(shí)現(xiàn) 頁(yè)面控制困難 無(wú) 無(wú) 無(wú)
      pdf文件實(shí)現(xiàn) 同本地打印,效果好 需要acroreader插件 無(wú)需客戶(hù)端部署 無(wú)

      pdf文件是流行的文件格式,瀏覽器和pdf閱讀器已成為客戶(hù)端必備的安裝內(nèi)容。對(duì)于通用的打印解決方案我認(rèn)為pdf文件的方式具有更大的靈活性和可用性。

      廢話(huà)到此為止,下面就給出一個(gè)servlet通過(guò)模板生成pdf文件的實(shí)現(xiàn):

      我選擇的是報(bào)表工具是jfreereport,當(dāng)然若簡(jiǎn)單的文本可以使用iText直接產(chǎn)生。

      1. jfreereport與was5.0.x的集成

      was5.0.x依據(jù)j2ee 1.3規(guī)范,jaxp/dom/sax的版本分別為1.1/2/2,與jfreereport依賴(lài)的gunjaxp.jar中的一致,其他的包也不存在沖突。因此可以將這些

      包直接加到Web項(xiàng)目的包目錄/WEB-INF/lib中。
      jfreereport的包很多,與讀取模板、生成報(bào)表和生成pdf文件相關(guān)的有:
      gnujaxp.jar
      itext-1.2.2.jar
      iTextAsian.jar
      jcommon-0.9.7.jar
      jfreereport-0.8.4_11-core.jar
      jfreereport-0.8.4_11-misc-configstore-base.jar
      jfreereport-0.8.4_11-output-pageable-base.jar
      jfreereport-0.8.4_11-output-pageable-pdf.jar
      jfreereport-0.8.4_11-output-support-itext.jar
      jfreereport-0.8.4_11-output-support-pagelayout.jar
      jfreereport-0.8.4_11-parser-base.jar
      jfreereport-0.8.4_11-parser-ext.jar
      pixie-0.8.1.jar

      jfreereport中自帶的itext-1.02b.jar版本低,可以替換為新版本,iTextAsian.jar是生成中文所必須的。


      2. 編碼和漢字問(wèn)題
      由于我的環(huán)境是英文系統(tǒng)(Win2k en version + sp4)加裝中文支持,為了在開(kāi)發(fā)環(huán)境中支持中文必須使用UTF-8編碼。因此需要對(duì)jfreereport中的一些參數(shù)進(jìn)行配置。
      需 要將org\jfree\report\modules\output\support\itext\configuration.properties 文件中的org.jfree.report.modules.output.support.itext.Encoding參數(shù)設(shè)為GBK (或GB18030,請(qǐng)量力而行,我的環(huán)境未安裝GB18030的支持)。
      需要將顯示中文的區(qū)域的字體和編碼分別設(shè)為"STSong-Light"和"UniGB-UCS2-H"。此字體和編碼是生成pdf文件時(shí)顯示中文所必須的,與jfreereport的GUI工具的顯示無(wú)關(guān)。

      3. 程序示例
      我選用了jfreereport中的Java Look and Feel Graphics Repository的例子,并將部分內(nèi)容換為中文。以下是直接生成pdf的servlet代碼和我變更的報(bào)表模板。



      //- GenPDFByJfreereportTemplateServlet.java

      package acme.web.servlets;

      import java.io.IOException;
      import java.net.URL;

      import javax.servlet.Servlet;
      import javax.servlet.ServletException;
      import javax.servlet.ServletOutputStream;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

      import org.jfree.report.Boot;
      import org.jfree.report.JFreeReport;
      import org.jfree.report.demo.SwingIconsDemoTableModel;
      import org.jfree.report.modules.output.pageable.base.PageableReportProcessor;
      import org.jfree.report.modules.output.pageable.pdf.PDFOutputTarget;
      import org.jfree.report.modules.parser.base.ReportGenerator;
      import org.jfree.report.util.Log;
      import org.jfree.report.util.ReportConfiguration;
      import org.jfree.xml.ElementDefinitionException;

      /**
      * @version    1.0
      * @author    Lee S
      */
      public class GenPDFByJfreereportTemplateServlet extends HttpServlet implements Servlet
      {
         /**
         * @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
         public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
         {
            resp.setContentType("application/pdf");

            ServletOutputStream out = resp.getOutputStream();
            
            try
            {
               // initialize JFreeReport
               Boot.start();

               ReportConfiguration.getGlobalConfig().setLogLevel("Error");
               // update the log system to use the new settings ...
               Log.getJFreeReportLog().init();

               final URL in =
                  getClass().getResource("/acme/web/resources/swing-icons.xml");

               if (in == null)
               {
                  throw new Exception("swing-icons.xml can‘t be found.");
               }

               final JFreeReport report = parseReport(in);
               report.setData(new SwingIconsDemoTableModel());

               PDFOutputTarget target =
                  new PDFOutputTarget(out, report.getDefaultPageFormat());
               target.configure(report.getReportConfiguration());
               
               target.open();
               PageableReportProcessor proc = new PageableReportProcessor(report);
               proc.setOutputTarget(target);
               proc.processReport();
               target.close();


            }
            catch (Exception ex)
            {
               System.err.println("Generate PDF failed: " + ex);
            }
            finally
            {
               try
               {
                  out.close();
               }
               catch (Exception e)
               {
                  System.err.println("Output PDF failed: " + e);
               }
            }

         }

         /**
         * @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
         public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
         {
            doGet(req, resp);
         }


         /**
          * Reads the report from the swing-icons.xml report template.
          *
          * @param templateURL The template location.
          *
          * @return A report.
          * @throws ElementDefinitionException if the report generator encountered an error.
          * @throws IOException if there was an IO error while reading from the URL.
          */
         private JFreeReport parseReport(final URL templateURL)
             throws IOException, ElementDefinitionException
         {
           final ReportGenerator generator = ReportGenerator.getInstance();
           return generator.parseReport(templateURL);
         }


      }




      //- swing-icons.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE report-definition
         PUBLIC "-//JFreeReport//DTD report definition//EN//extended"
                "http://jfreereport./extreport.dtd">

      <!-- ***************************************************************** -->
      <!-- *  Swing-Icons.XML                                              * -->
      <!-- *  A sample report definition used as an introduction to        * -->
      <!-- *  JFreeReport.                                                 * -->
      <!-- ***************************************************************** -->

      <report-definition name="First Report">

        <!-- ************************ -->
        <!-- * PARSER CONFIGURATION * -->
        <!-- ************************ -->
        <parser-config>
          <object-factory class="org.jfree.report.modules.parser.ext.factory.objects.DefaultClassFactory"/>
          <element-factory class="org.jfree.report.modules.parser.ext.factory.elements.DefaultElementFactory"/>
          <stylekey-factory class="org.jfree.report.modules.parser.ext.factory.stylekey.DefaultStyleKeyFactory"/>
          <stylekey-factory class="org.jfree.report.modules.parser.ext.factory.stylekey.PageableLayoutStyleKeyFactory"/>
          <template-factory class="org.jfree.report.modules.parser.ext.factory.templates.DefaultTemplateCollection"/>
          <datasource-factory class="org.jfree.report.modules.parser.ext.factory.datasource.DefaultDataSourceFactory"/>
        </parser-config>

        <!-- ************************ -->
        <!-- * REPORT CONFIGURATION * -->
        <!-- ************************ -->
        <report-config>
          <defaultpageformat orientation="portrait"
            pageformat="LETTER"
            topmargin="72"
            bottommargin="72"
            leftmargin="72"
            rightmargin="72"/>
        </report-config>

        <!-- ********** -->
        <!-- * STYLES * -->
        <!-- ********** -->
        <styles>
          <style name="medium-line">
            <compound-key name="min-size">
              <basic-object name="height">0.0</basic-object>
              <basic-object name="width">-100.0</basic-object>
            </compound-key>
            <basic-key name="paint">black</basic-key>
            <basic-key name="stroke" class="java.awt.BasicStroke">0.5</basic-key>
            <basic-key name="draw-shape">true</basic-key>
            <basic-key name="scale">true</basic-key>
          </style>

          <style name="background-rectangle">
            <compound-key name="absolute_pos">
              <basic-object name="x">0.0</basic-object>
              <basic-object name="y">0.0</basic-object>
            </compound-key>
            <compound-key name="min-size">
              <basic-object name="height">-100.0</basic-object>
              <basic-object name="width">-100.0</basic-object>
            </compound-key>
            <basic-key name="fill-shape">true</basic-key>
            <basic-key name="scale">true</basic-key>
          </style>
        </styles>

        <!-- ********************** -->
        <!-- * REPORT DESCRIPTION * -->
        <!-- ********************** -->
        <report-description>

          <!-- ================= -->
          <!-- = REPORT HEADER = -->
          <!-- ================= -->
          <report-header name="report-header-band">
            <style>
              <compound-key name="min-size">
                <basic-object name="height">112.0</basic-object>
                <basic-object name="width">0.0</basic-object>
              </compound-key>
            </style>

            <default-style>
              <basic-key name="font">SansSerif</basic-key>
              <basic-key name="font-size">10</basic-key>
              <basic-key name="valignment">bottom</basic-key>
            </default-style>

            <element name="title1" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">2.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">18.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
                <basic-key name="alignment">center</basic-key>
                <basic-key name="font-size">18</basic-key>
                <basic-key name="font-bold">true</basic-key>
              </style>
              <template references="label">
                <basic-object name="content">Java Look and Feel Graphics Repository</basic-object>
              </template>
            </element>

            <element name="description1" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">32.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
              </style>

              <template references="label">
                <basic-object name="content">This report lists the icons contained in the Java Look and Feel Graphics Repository.</basic-object>
              </template>
            </element>

            <element name="description2" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">44.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
              </style>
              <template references="label">
                <basic-object name="content">For more information about the repository, refer to:</basic-object>
              </template>
            </element>

            <element name="url1" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">68.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
                <basic-key name="alignment">center</basic-key>
                <basic-key name="font">Monospaced</basic-key>
                <basic-key name="font-size">9</basic-key>
              </style>
              <template references="label">
                <basic-object name="content">http://developer.java./developer/techDocs/hi/repository/</basic-object>
              </template>
            </element>

            <element name="description3" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">92.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
              </style>
              <template references="label">
                <basic-object name="content">The design of this report is described in the JFreeReport PDF documentation.</basic-object>
              </template>
            </element>

          </report-header>

          <!-- ================= -->
          <!-- = REPORT FOOTER = -->
          <!-- ================= -->
          <report-footer name="report-footer-band">

            <style>
              <compound-key name="min-size">
                <basic-object name="height">30.0</basic-object>
                <basic-object name="width">0.0</basic-object>
              </compound-key>
            </style>

            <default-style>
              <basic-key name="font">SansSerif</basic-key>
              <basic-key name="font-size">12</basic-key>
              <basic-key name="font-bold">true</basic-key>
              <basic-key name="valignment">bottom</basic-key>
            </default-style>

            <element name="rect1" type="shape/generic">
              <style>
                <extends name="background-rectangle"/>
                <basic-key name="paint">#ccffcc</basic-key>
              </style>
              <template references="rectangle"/>
            </element>

            <element type="shape/generic">
              <style>
                <extends name="medium-line"/>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">0.0</basic-object>
                </compound-key>
              </style>
              <template references="horizontal-line"/>
            </element>

            <element type="shape/generic">
              <style>
                <extends name="medium-line"/>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">30.0</basic-object>
                </compound-key>
              </style>
              <template references="horizontal-line"/>
            </element>

            <element name="reportTotalLabel" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">10.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">12.0</basic-object>
                  <basic-object name="width">-50.0</basic-object>
                </compound-key>
                <basic-key name="alignment">left</basic-key>
              </style>
              <template references="label">
                <basic-object name="content">REPORT TOTAL:</basic-object>
              </template>
            </element>

            <element name="reportCountField" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">-50.0</basic-object>
                  <basic-object name="y">10.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">9.0</basic-object>
                  <basic-object name="width">-30.0</basic-object>
                </compound-key>
                <basic-key name="alignment">center</basic-key>
                <basic-key name="font-size">9</basic-key>
              </style>
              <template references="number-field">
                <basic-object name="field">OverallCount</basic-object>
                <basic-object name="format">#0</basic-object>
                <basic-object name="nullValue">-</basic-object>
              </template>
            </element>

            <element name="reportSumField" type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">-80.0</basic-object>
                  <basic-object name="y">10.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">9.0</basic-object>
                  <basic-object name="width">-20.0</basic-object>
                </compound-key>
                <basic-key name="font-size">9</basic-key>
                <basic-key name="alignment">right</basic-key>
                <basic-key name="valignment">bottom</basic-key>
              </style>
              <template references="number-field">
                <basic-object name="field">OverallSum</basic-object>
                <basic-object name="format">#,##0</basic-object>
                <basic-object name="nullValue">-</basic-object>
              </template>
            </element>
          </report-footer>

          <!-- =============== -->
          <!-- = PAGE HEADER = -->
          <!-- =============== -->
          <page-header>

            <style>
              <compound-key name="min-size">
                <basic-object name="height">18.0</basic-object>
                <basic-object name="width">0.0</basic-object>
              </compound-key>
              <basic-key name="display-on-firstpage">false</basic-key>
              <basic-key name="display-on-lastpage">true</basic-key>
            </style>

            <default-style>
              <basic-key name="font-bold">true</basic-key>
              <basic-key name="font-size">9</basic-key>
              <basic-key name="font">SansSerif</basic-key>
              <basic-key name="font-italic">false</basic-key>
              <basic-key name="paint">black</basic-key>
              <basic-key name="valignment">bottom</basic-key>
            </default-style>

            <element type="shape/generic">
              <style>
                <extends name="background-rectangle"/>
                <basic-key name="paint">#afafaf</basic-key>
              </style>
              <template references="rectangle"/>
            </element>

            <element type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">0.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">14.0</basic-object>
                  <basic-object name="width">-50.0</basic-object>
                </compound-key>
                <basic-key name="alignment">left</basic-key>
              </style>
              <template references="label">
                <basic-object name="content">Java Look and Feel Graphics Repository</basic-object>
              </template>
            </element>

            <element type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">-80.0</basic-object>
                  <basic-object name="y">0.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">14.0</basic-object>
                  <basic-object name="width">-20.0</basic-object>
                </compound-key>
                <basic-key name="alignment">right</basic-key>
              </style>
              <template references="date-field">
                <basic-object name="nullValue">-</basic-object>
                <basic-object name="format">d-MMM-yyyy</basic-object>
                <basic-object name="field">report.date</basic-object>
              </template>
            </element>

            <element type="shape/generic">
              <style>
                <extends name="medium-line"/>
                <basic-key name="stroke" class="java.awt.BasicStroke">2.0</basic-key>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">16.0</basic-object>
                </compound-key>
                <basic-key name="paint">#cfcfcf</basic-key>
              </style>
              <template references="horizontal-line"/>
            </element>
          </page-header>

          <!-- =============== -->
          <!-- = PAGE FOOTER = -->
          <!-- =============== -->
          <page-footer>

            <style>
              <basic-key name="display-on-lastpage">true</basic-key>
              <basic-key name="display-on-firstpage">true</basic-key>
              <compound-key name="min-size">
                <basic-object name="height">14.0</basic-object>
                <basic-object name="width">0.0</basic-object>
              </compound-key>
            </style>

            <default-style>
              <basic-key name="font-bold">false</basic-key>
              <basic-key name="font-size">9</basic-key>
              <basic-key name="font">SansSerif</basic-key>
              <basic-key name="font-italic">false</basic-key>
            </default-style>

            <element type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">3.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">9.0</basic-object>
                  <basic-object name="width">-100.0</basic-object>
                </compound-key>
                <basic-key name="alignment">center</basic-key>
                <basic-key name="valignment">bottom</basic-key>
              </style>
              <template references="number-field">
                <basic-object name="nullValue">-</basic-object>
                <basic-object name="format">Page #0</basic-object>
                <basic-object name="field">PageNumber</basic-object>
              </template>
            </element>

          </page-footer>

          <!-- ========== -->
          <!-- = GROUPS = -->
          <!-- ========== -->
          <groups>

            <!-- category group -->
            <group name="Category">
              <fields>
                <field>Category</field>
              </fields>

              <group-header>
                <style>
                  <compound-key name="min-size">
                    <basic-object name="height">30.0</basic-object>
                    <basic-object name="width">0.0</basic-object>
                  </compound-key>
                </style>

                <default-style>
      <!-- use such font name & encoding for displaying chinese -->
                  <basic-key name="font">STSong-Light</basic-key>
                  <basic-key name="font-encoding">UniGB-UCS2-H</basic-key>
                  <basic-key name="font-size">12</basic-key>
                  <basic-key name="font-bold">true</basic-key>
                  <basic-key name="font-italic">false</basic-key>
                  <basic-key name="paint">black</basic-key>
                  <basic-key name="alignment">left</basic-key>
                  <basic-key name="valignment">bottom</basic-key>
                </default-style>

                <element type="shape/generic">
                  <style>
                    <extends name="background-rectangle"/>
                    <basic-key name="paint">#ccccff</basic-key>
                  </style>
                  <template references="rectangle"/>
                </element>

                <element type="shape/generic">
                  <style>
                    <extends name="medium-line"/>
                    <basic-key name="paint">black</basic-key>
                  </style>
                  <template references="horizontal-line"/>
                </element>

                <element type="shape/generic">
                  <style>
                    <extends name="medium-line"/>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">0.0</basic-object>
                      <basic-object name="y">30.0</basic-object>
                    </compound-key>
                    <basic-key name="paint">black</basic-key>
                  </style>
                  <template references="horizontal-line"/>
                </element>

                <element type="text/plain">
                  <style>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">0.0</basic-object>
                      <basic-object name="y">3.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">12.0</basic-object>
                      <basic-object name="width">92.0</basic-object>
                    </compound-key>
                  </style>
                  <template references="label">
                    <basic-object name="content">分類(lèi):</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">96.0</basic-object>
                      <basic-object name="y">3.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">12.0</basic-object>
                      <basic-object name="width">120.0</basic-object>
                    </compound-key>
                  </style>
                  <template references="string-field">
                    <basic-object name="nullValue">-</basic-object>
                    <basic-object name="field">Category</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <basic-key name="font-size">8</basic-key>
                    <basic-key name="font-bold">false</basic-key>
                    <basic-key name="font-italic">true</basic-key>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">0.0</basic-object>
                      <basic-object name="y">20.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">9.0</basic-object>
                      <basic-object name="width">-50.0</basic-object>
                    </compound-key>
                  </style>
                  <template references="label">
                    <basic-object name="content">名稱(chēng):</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <basic-key name="font-size">8</basic-key>
                    <basic-key name="font-bold">false</basic-key>
                    <basic-key name="font-italic">true</basic-key>
                    <basic-key name="paint">black</basic-key>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">-50.0</basic-object>
                      <basic-object name="y">20.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">9.0</basic-object>
                      <basic-object name="width">-30.0</basic-object>
                    </compound-key>
                  </style>
                  <template references="label">
                    <basic-object name="content">圖標(biāo):</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <basic-key name="font-size">8</basic-key>
                    <basic-key name="font-bold">false</basic-key>
                    <basic-key name="font-italic">true</basic-key>
                    <basic-key name="alignment">right</basic-key>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">-80.0</basic-object>
                      <basic-object name="y">20.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">9.0</basic-object>
                      <basic-object name="width">-20.0</basic-object>
                    </compound-key>
                  </style>
                  <template references="label">
                    <basic-object name="content">文件大小:</basic-object>
                  </template>
                </element>
              </group-header>

              <group-footer>
                <style>
                  <compound-key name="min-size">
                    <basic-object name="height">30.0</basic-object>
                    <basic-object name="width">0.0</basic-object>
                  </compound-key>
                  <basic-key name="pagebreak-before">false</basic-key>
                </style>
                <default-style>
                  <basic-key name="font">SansSerif</basic-key>
                  <basic-key name="font-size">11</basic-key>
                  <basic-key name="font-bold">true</basic-key>
                  <basic-key name="font-italic">false</basic-key>
                  <basic-key name="valignment">bottom</basic-key>
                </default-style>

                <element type="text/plain">
                  <style>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">0.0</basic-object>
                      <basic-object name="y">5.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">11.0</basic-object>
                      <basic-object name="width">100.0</basic-object>
                    </compound-key>
                    <basic-key name="alignment">left</basic-key>
                  </style>
                  <template references="label">
                    <basic-object name="content">Group Total:</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">-50.0</basic-object>
                      <basic-object name="y">5.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">9.0</basic-object>
                      <basic-object name="width">-30.0</basic-object>
                    </compound-key>
                    <basic-key name="alignment">center</basic-key>
                    <basic-key name="font-size">9</basic-key>
                  </style>
                  <template references="number-field">
                    <basic-object name="nullValue">-</basic-object>
                    <basic-object name="format">#0</basic-object>
                    <basic-object name="field">GroupCount</basic-object>
                  </template>
                </element>

                <element type="text/plain">
                  <style>
                    <compound-key name="absolute_pos">
                      <basic-object name="x">-80.0</basic-object>
                      <basic-object name="y">5.0</basic-object>
                    </compound-key>
                    <compound-key name="min-size">
                      <basic-object name="height">9.0</basic-object>
                      <basic-object name="width">-20.0</basic-object>
                    </compound-key>
                    <basic-key name="font-size">9</basic-key>
                    <basic-key name="alignment">right</basic-key>
                  </style>
                  <template references="number-field">
                    <basic-object name="nullValue">-</basic-object>
                    <basic-object name="format">#,##0</basic-object>
                    <basic-object name="field">GroupSum</basic-object>
                  </template>
                </element>
              </group-footer>
            </group>
          </groups>

          <!-- ============= -->
          <!-- = ITEM BAND = -->
          <!-- ============= -->
          <itemband>

            <style>
              <compound-key name="min-size">
                <basic-object name="height">26.0</basic-object>
                <basic-object name="width">0.0</basic-object>
              </compound-key>
            </style>

            <default-style>
              <basic-key name="font">STSong-Light</basic-key>
              <basic-key name="font-encoding">UniGB-UCS2-H</basic-key>
              <basic-key name="font-size">10</basic-key>
              <basic-key name="valignment">bottom</basic-key>
            </default-style>

            <element type="shape/generic">
              <style>
                <extends name="medium-line"/>
                <basic-key name="stroke" class="java.awt.BasicStroke">0.1</basic-key>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">25.0</basic-object>
                </compound-key>
                <basic-key name="paint">#dfdfdf</basic-key>
              </style>
              <template references="horizontal-line"/>
            </element>

            <!-- element to display the name from the TableModel -->
            <element type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">0.0</basic-object>
                  <basic-object name="y">8.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-50.0</basic-object>
                </compound-key>
                <basic-key name="alignment">left</basic-key>
              </style>
              <template references="string-field">
                <basic-object name="nullValue">-</basic-object>
                <basic-object name="field">Name</basic-object>
              </template>
            </element>

            <!-- element to display icon from the TableModel -->
            <element type="image/generic">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">-50.0</basic-object>
                  <basic-object name="y">1.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">24.0</basic-object>
                  <basic-object name="width">-30.0</basic-object>
                </compound-key>
                <basic-key name="alignment">center</basic-key>
                <basic-key name="valignment">middle</basic-key>
              </style>
              <template references="image-field">
                <basic-object name="field">Icon</basic-object>
              </template>
            </element>

            <!-- element to display the file size from the TableModel -->
            <element type="text/plain">
              <style>
                <compound-key name="absolute_pos">
                  <basic-object name="x">-80.0</basic-object>
                  <basic-object name="y">8.0</basic-object>
                </compound-key>
                <compound-key name="min-size">
                  <basic-object name="height">10.0</basic-object>
                  <basic-object name="width">-20.0</basic-object>
                </compound-key>
                <basic-key name="alignment">right</basic-key>
              </style>
              <template references="number-field">
                <basic-object name="nullValue">-</basic-object>
                <basic-object name="format">#,##0</basic-object>
                <basic-object name="field">Size</basic-object>
              </template>
            </element>
          </itemband>
        </report-description>

        <!-- ************* -->
        <!-- * FUNCTIONS * -->
        <!-- ************* -->
        <functions>
          <property-ref name="report.date"/>

          <function name="PageNumber" class="org.jfree.report.function.PageFunction"/>
          <function name="GroupCount" class="org.jfree.report.function.ItemCountFunction">
            <properties>
              <property name="field">Name</property>
              <property name="group">Category</property>
            </properties>
          </function>

          <function name="GroupSum" class="org.jfree.report.function.ItemSumFunction">
            <properties>
              <property name="field">Size</property>
              <property name="group">Category</property>
            </properties>
          </function>

          <function name="OverallCount" class="org.jfree.report.function.ItemCountFunction">
            <properties>
              <property name="field">Name</property>
            </properties>
          </function>

          <function name="OverallSum" class="org.jfree.report.function.ItemSumFunction">
            <properties>
              <property name="field">Size</property>
            </properties>
          </function>
        </functions>

      </report-definition>



      4. 總結(jié)
      這是自認(rèn)為目前最佳的Web應(yīng)用的打印解決方案,雖然僅使用jfreereport產(chǎn)生pdf文件的功 能,但是jfreereport提供的頁(yè)面自動(dòng)布置的功能使產(chǎn)生報(bào)表的工作較之使用iText直接產(chǎn)生要方便許多。以上的例子理論上可以在任何的符合 j2ee 1.3規(guī)范(或部分符合,如tomcat 4.x)的應(yīng)用服務(wù)器上運(yùn)行,我僅僅在was 5.0.x上進(jìn)行了測(cè)試。僅供大家參考。

      參考
      JFreeReport 0.8.3 Reference Guide - http://www./ jfreereport/jfreereport-0.8.3-A4.pdf
      用Java實(shí)現(xiàn)PDF報(bào)表 - http://blog.csdn.net/legendinfo/articles/176184.aspx

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多