999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用iText包實(shí)現(xiàn)Java報(bào)表打印

2012-08-15 02:02:34丁振凡王小明吳小元鄧建明
關(guān)鍵詞:利用方法

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

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

在信息系統(tǒng)應(yīng)用中,報(bào)表處理一直起著比較重要的作用。Java報(bào)表制作中最常使用的是iText組件,它是一種生成PDF報(bào)表的Java組件。本文討論兩種形式的PDF報(bào)表處理,一種是通過程序?qū)ο笊烧麄€(gè)PDF報(bào)表文檔,另一種是利用制作好的含報(bào)表的PDF文檔模板,通過在模板填寫數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)報(bào)表。

1 通過編程繪制實(shí)現(xiàn)報(bào)表的生成

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

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

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

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

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

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

//添加一個(gè)段落

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

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

1.2 表格繪制

要在PDF文件中創(chuàng)建表格,iText提供了兩個(gè)類——Table和PdfPTable。Table類用來實(shí)現(xiàn)簡(jiǎn)單表格,PdfPTable類則用來實(shí)現(xiàn)比較復(fù)雜的表格。本文主要討論P(yáng)dfPTable類的應(yīng)用。

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

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

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

(2)添加單元格

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

(3)合并單元格

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

由于實(shí)際編程時(shí),經(jīng)常出現(xiàn)各類結(jié)構(gòu)的嵌套情形,可以將產(chǎn)生某種結(jié)構(gòu)的表格模塊進(jìn)行封裝,編制成方法,通過傳遞方法參數(shù)完成表格特定模塊的繪制。

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

2 基于PDF報(bào)表模板的報(bào)表生成

有些表格具有固定的格式,實(shí)際工作中只是給表格填寫數(shù)據(jù)。這類表格可轉(zhuǎn)換為PDF文件格式的報(bào)表模板,通過特殊工具在文件中定義若干數(shù)據(jù)域,通過給數(shù)據(jù)域?qū)懭霐?shù)據(jù)實(shí)現(xiàn)對(duì)報(bào)表數(shù)據(jù)的填充處理。它具有格式靈活的特點(diǎn)?;趫?bào)表模板的報(bào)表處理步驟如下:

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

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

(3)利用 Adobe Designer 7.0對(duì) PDF進(jìn)行設(shè)計(jì),定義數(shù)據(jù)域;

(4)利用iText組件實(shí)現(xiàn)對(duì)報(bào)表數(shù)據(jù)字段的寫入。

可利用Adobe Designer 7.0導(dǎo)入某個(gè)PDF文件進(jìn)行設(shè)計(jì),在任意位置添加文本域。每個(gè)文本域有一個(gè)綁定的名稱和值,在Java程序中正是通過文本域的名稱訪問文本域?qū)ο蟆?/p>

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

圖2 帶數(shù)據(jù)域定義的PDF文檔

以下給出了打開報(bào)表模板實(shí)現(xiàn)數(shù)據(jù)寫入的關(guān)鍵代碼:

【說明】

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

②取得對(duì)象后,需要用PdfStamper來編輯PdfReader對(duì)象,同時(shí)獲取一個(gè)OutputStream輸出流作為輸出對(duì)象。

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

④用AcroFields對(duì)象的setField填寫各個(gè)字段的數(shù)據(jù)到表格中。

3 Java打印PDF報(bào)表文件

在Web應(yīng)用中要在客戶端打印PDF文檔只需要將文件送客戶瀏覽器顯示,利用瀏覽器客戶端的文件打印功能可實(shí)現(xiàn)打印。以下討論在Java應(yīng)用程序中如何打印報(bào)表文件。

Java實(shí)現(xiàn)報(bào)表打印首先要獲取打印服務(wù)對(duì)象,然后利用服務(wù)對(duì)象開始一個(gè)作業(yè)的打印。以下給出了新的JDK1.4以上版本中實(shí)現(xiàn)打印的具體步驟和關(guān)鍵代碼。

本文介紹了利用iText實(shí)現(xiàn)PDF報(bào)表打印的編程處理方法。分別介紹了報(bào)表處理中的兩種典型應(yīng)用。一種是由程序?qū)ο髣?dòng)態(tài)產(chǎn)生整個(gè)報(bào)表,重點(diǎn)介紹了利用Pdf-PTable等對(duì)象實(shí)現(xiàn)報(bào)表生成處理的技巧。另一種是在已存在的PDF報(bào)表文檔中填寫數(shù)據(jù)域完成報(bào)表,重點(diǎn)介紹了通過AcroFields對(duì)象實(shí)現(xiàn)數(shù)據(jù)域的填寫處理。最后給出了Java實(shí)現(xiàn)報(bào)表打印的控制方法。

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

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

猜你喜歡
利用方法
利用min{a,b}的積分表示解決一類絕對(duì)值不等式
利用倒推破難點(diǎn)
利用一半進(jìn)行移多補(bǔ)少
學(xué)習(xí)方法
利用數(shù)的分解來思考
Roommate is necessary when far away from home
利用
用對(duì)方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
主站蜘蛛池模板: 2020国产精品视频| 欧美日韩在线亚洲国产人| 欧美日韩成人| 四虎成人免费毛片| 国产人成在线观看| 天天做天天爱夜夜爽毛片毛片| 久久综合婷婷| 久久精品中文无码资源站| 国产特一级毛片| 色偷偷综合网| 99999久久久久久亚洲| 在线色综合| 伊人久久大线影院首页| 亚洲欧美一区在线| 久久午夜夜伦鲁鲁片无码免费| 热99精品视频| 久草性视频| 伊人久久大线影院首页| 国产精品短篇二区| 亚洲swag精品自拍一区| 婷婷六月激情综合一区| 免费av一区二区三区在线| 亚洲狠狠婷婷综合久久久久| 2021亚洲精品不卡a| 无码免费的亚洲视频| 她的性爱视频| 国产亚洲高清在线精品99| 无码丝袜人妻| 欧美精品xx| 在线日韩日本国产亚洲| 亚洲国产成人综合精品2020| 国产网站在线看| 91免费精品国偷自产在线在线| 欧美有码在线| 一本无码在线观看| 99久久国产综合精品2023| 九九视频免费在线观看| 91热爆在线| 色窝窝免费一区二区三区 | 中文字幕av无码不卡免费| AV在线天堂进入| 91香蕉国产亚洲一二三区| 久久综合九九亚洲一区| www欧美在线观看| 成人一级黄色毛片| 亚洲国产精品一区二区高清无码久久| 香蕉久久永久视频| a毛片在线| 日韩精品免费一线在线观看| 老司国产精品视频91| 国产精品入口麻豆| 亚洲国产综合自在线另类| 国产欧美在线观看一区| 性色在线视频精品| 无码网站免费观看| 国产免费怡红院视频| 国产迷奸在线看| 免费人欧美成又黄又爽的视频| 在线观看的黄网| 97se亚洲| 免费无码在线观看| 亚洲成AV人手机在线观看网站| 91精品国产综合久久香蕉922 | 手机看片1024久久精品你懂的| 国产最爽的乱婬视频国语对白| 毛片视频网| 亚洲国产成熟视频在线多多| 国产成人精品18| 在线精品亚洲国产| 久久国产V一级毛多内射| 免费激情网站| 亚洲大学生视频在线播放| 找国产毛片看| 亚州AV秘 一区二区三区| 国产对白刺激真实精品91| 极品国产一区二区三区| 人妻丝袜无码视频| 亚洲区第一页| 久久久久久尹人网香蕉| 国产激爽大片在线播放| 亚洲品质国产精品无码| 日韩亚洲综合在线|