亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用iText包實現Java報表打印

        2012-08-15 02:02:34丁振凡王小明吳小元鄧建明
        網絡安全與數據管理 2012年18期
        關鍵詞:單元格報表表格

        丁振凡 ,王小明 ,吳小元 ,鄧建明 ,周 斌

        (1.華東交通大學,江西 南昌330013;2.南昌鐵路局,江西 南昌330001)

        在信息系統(tǒng)應用中,報表處理一直起著比較重要的作用。Java報表制作中最常使用的是iText組件,它是一種生成PDF報表的Java組件。本文討論兩種形式的PDF報表處理,一種是通過程序對象生成整個PDF報表文檔,另一種是利用制作好的含報表的PDF文檔模板,通過在模板填寫數據實現數據報表。

        1 通過編程繪制實現報表的生成

        對于內容動態(tài)變化的表格,適合使用程序繪制辦法進行生成處理。這類表格中數據項和數據均是動態(tài)存在的。

        1.1 使用iText編程生成含報表的PDF文檔的步驟[1]

        (1)建立Document對象。Document是 PDF文件所有元素的容器。

        (2)建立一個與Document對象關聯的書寫器(Writer)。通過書寫器(Writer)對象可以將具體文檔存盤成需要的格式,PDFWriter可以將文檔保存為PDF文件。

        (3)打開文檔。如:document.open();

        (4)向文檔中添加內容。所有向文檔添加的內容都是以對象為單位的,iText中用文本塊(Chunk)、短語(Phrase)和段落(Paragraph)處理文本。

        //添加一個段落

        值得注意的是文本中漢字的顯示,默認的iText字體設置不支持中文字體,需要下載遠東字體包iTextAsian.jar,否則不能往PDF文檔中輸出中文字體[2]。

        (5)關閉文檔。如:document.close();

        1.2 表格繪制

        要在PDF文件中創(chuàng)建表格,iText提供了兩個類——Table和PdfPTable。Table類用來實現簡單表格,PdfPTable類則用來實現比較復雜的表格。本文主要討論PdfPTable類的應用。

        (1)創(chuàng)建 PdfPTable對象

        創(chuàng)建PdfPTable對象只需要指定列數,不用指定行數。通常生成的表格默認以80%的比例顯示在頁面上。例如定義3列的表格,每列的寬度分別為15%、25%和60%,語句如下:

        用 setWidthPercentage(float widthPercentage)方法可設置表格的按百分比的寬度。而用setTotalWidth則可設置表格按像素計算的寬度。如果表格的內容超過了300 px,表格的寬度會自動加長。用setLockedWidth(true)方法可鎖定表格寬度。通過表格對象的系列方法可設置表格的邊界以及對齊、填充方式。

        (2)添加單元格

        表格創(chuàng)建完成以后,可通過 addCell(Object object)方法插入單元格元素(PdfPCell)。其中,Object對象可以是PdfPCell、String、Phrase、Image,也可以是 PdfPTable 對象本身,即在表格中嵌套一個表格。通過單元格的方法可設定單元格的列跨度、邊框粗細、對齊方式、填充間隙等。

        (3)合并單元格

        為了實現某些特殊的表格形式,需要合并單元格。PdfPCell類提供了 setColspan(int colspan)方法用于合并橫向單元格,參數colspan為合并的單元格數。但要合并縱向單元格需要使用嵌套表格的方法。將某個子表加入單元格,且安排單元格所占列數為子表中列數,則其行跨度也就是子表中的行數。

        由于實際編程時,經常出現各類結構的嵌套情形,可以將產生某種結構的表格模塊進行封裝,編制成方法,通過傳遞方法參數完成表格特定模塊的繪制。

        例如,可以將生成一個整齊行列表格的代碼編寫成方法。方法返回表格,填充的數據通過二維對象數組傳遞。代碼如下:

        2 基于PDF報表模板的報表生成

        有些表格具有固定的格式,實際工作中只是給表格填寫數據。這類表格可轉換為PDF文件格式的報表模板,通過特殊工具在文件中定義若干數據域,通過給數據域寫入數據實現對報表數據的填充處理。它具有格式靈活的特點。基于報表模板的報表處理步驟如下:

        (1)利用Word制作打印報表;

        (2)利用 Adobe Acrobat 7.0 Professional將 Word文檔轉換為PDF格式;

        (3)利用 Adobe Designer 7.0對 PDF進行設計,定義數據域;

        (4)利用iText組件實現對報表數據字段的寫入。

        可利用Adobe Designer 7.0導入某個PDF文件進行設計,在任意位置添加文本域。每個文本域有一個綁定的名稱和值,在Java程序中正是通過文本域的名稱訪問文本域對象。

        圖2給出了利用Adobe Acrobat 7.0 Professional打開一個制作好的帶數據域定義的PDF文檔模板文件的瀏覽界面,出于清晰考慮,圖中特別將數據域采用高亮度顯示。

        圖2 帶數據域定義的PDF文檔

        以下給出了打開報表模板實現數據寫入的關鍵代碼:

        【說明】

        ①利用PdfReader讀取PDF文檔;通過實例化Pdf-Reader對象來獲取pdf模板,傳入的字符串就是pdf文件所放置的路徑,可以用絕對路徑表示。

        ②取得對象后,需要用PdfStamper來編輯PdfReader對象,同時獲取一個OutputStream輸出流作為輸出對象。

        ③利用PdfStamper獲取文件中定義的AcroFields對象。

        ④用AcroFields對象的setField填寫各個字段的數據到表格中。

        3 Java打印PDF報表文件

        在Web應用中要在客戶端打印PDF文檔只需要將文件送客戶瀏覽器顯示,利用瀏覽器客戶端的文件打印功能可實現打印。以下討論在Java應用程序中如何打印報表文件。

        Java實現報表打印首先要獲取打印服務對象,然后利用服務對象開始一個作業(yè)的打印。以下給出了新的JDK1.4以上版本中實現打印的具體步驟和關鍵代碼。

        本文介紹了利用iText實現PDF報表打印的編程處理方法。分別介紹了報表處理中的兩種典型應用。一種是由程序對象動態(tài)產生整個報表,重點介紹了利用Pdf-PTable等對象實現報表生成處理的技巧。另一種是在已存在的PDF報表文檔中填寫數據域完成報表,重點介紹了通過AcroFields對象實現數據域的填寫處理。最后給出了Java實現報表打印的控制方法。

        [1]侯金波,王德群.iText API在計量信息管理系統(tǒng)中的應用[J].計量與測試技術,2007,34(1):57-60.

        [2]王麗萍,秦永平.基于iText的PDF報表設計[J].電腦知識與技術,2007(8):493-494.

        猜你喜歡
        單元格報表表格
        《現代臨床醫(yī)學》來稿表格要求
        玩轉方格
        玩轉方格
        統(tǒng)計表格的要求
        統(tǒng)計表格的要求
        統(tǒng)計表格的要求
        LabWindows/CVI中Excel報表技術研究
        測控技術(2018年8期)2018-11-25 07:42:28
        淺談Excel中常見統(tǒng)計個數函數的用法
        西部皮革(2018年6期)2018-05-07 06:41:07
        從三大報表讀懂養(yǎng)豬人的成績單
        月度報表
        中國紡織(2009年7期)2009-08-07 06:56:16
        国产2021精品视频免费播放| 精品香蕉99久久久久网站| 色一情一乱一伦| 久久久久99精品国产片| 成年视频网站在线观看777 | 国产精品美女久久久久久大全| 日韩av免费在线不卡一区 | 亚洲学生妹高清av| 一本一道AⅤ无码中文字幕| 国产又黄又湿又爽的免费视频| 久久午夜福利无码1000合集 | 日韩一区二区,亚洲一区二区视频| 在线观看日本一区二区三区四区| 亚洲无亚洲人成网站77777| 色丁香久久| 亚洲天堂免费成人av| 国产精品女直播一区二区| 777午夜精品免费观看| 亚洲黄色尤物视频| 国产又湿又爽又猛的视频| 92午夜少妇极品福利无码电影| 在线亚洲人成电影网站色www| 97av在线播放| 在线中文字幕一区二区| 精品无码国产自产拍在线观看蜜| 国产91成人精品亚洲精品| 国产一区二区三区涩涩涩| 男人天堂网2017| 国产亚洲日韩在线三区| 美女黄频视频免费国产大全| 人妻少妇中文字幕,久久精品| 亚洲热妇无码av在线播放| 免费一级毛片麻豆精品| 日韩男女av中文字幕| 18国产精品白浆在线观看免费| 亚洲精品无码不卡av| 国产粉嫩嫩00在线正在播放| 国产一品二品精品在线| 日本无码人妻波多野结衣| 久久中国国产Av秘 入口| 久久99精品久久只有精品|