版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、itext生成pdf的例子以及jar包以及api等os-javapdf-itextsample_jar雙擊可以打開可以解壓縮看看這里面有詳細(xì)的例子os-javapdf-itextsample_jaritext-550.zip這里面有所有 api和源碼例子中代碼如下import java.i o.I OExcepti on;import java .n et.MalformedURLExcepti on;* param args* throws Docume ntExcepti on* throws IOExceptio n* throws MalformedURLException*/publ
2、ic static void main(String args) throws DocumentException, MalformedURLExceptio n, lOException / TODO Auto-ge nerated method stub/ Listing 1. Instantiation of document objectDocume nt docume nt = new Docume nt(PageSize.A4, 50, 50, 50, 50);/ List ing 2. Creation of PdfWriter object PdfWriter writer =
3、 PdfWriter.get In sta nce(docume nt, new FileOutputStream("C:ITextTest.pdf');docume nt.ope n();/ Listi ng 3. Creatio n of paragraph objectAn chor an chorTarget = new An chor("First page of the docume nt."); an chorTarget.setName("BackToTop");Paragraph paragraph1 = new Pa
4、ragraph();paragraphl.setSpaci ngBefore(50);paragraph1.add(a nchorTarget); docume nt.add(paragraph1);docume nt.add( new Paragraph("Some more text on the first page with different color and fonttype.",Fon tFactory.getFo nt(Fo ntFactory.COURIER, 14, Fon t.BOLD, new CMYKColor(0, 255, 0, 0);/ L
5、ist ing 4. Creatio n of chapter objectParagraph title1 = new Paragraph("Chapter 1", Fon tFactory.getF ont(Fon tFactory.HELVETICA, 18, Fon t.BOLDITALIC, new CMYKColor(0, 255, 255, 17);Chapter chapter1 = new Chapter(title1, 1);chapterl.setNumberDepth(O);/ List ing 5. Creatio n of sect ion ob
6、jectParagraph title11 = new Paragraph("This is Section 1 in Chapter 1",Fon tFactory.getFo nt(Fo ntFactory.HELVETICA, 16, Fon t.BOLD,new CMYKColor(0, 255, 255, 17);Section sect ion1 = chapter1.addSecti on (title11);Paragraph someSect ion Text = new Paragraph("This text comes as part of
7、 sect ion 1 of chapter 1.");secti on 1.add(someSect ion Text);someSect ion Text = new Paragraph("Follow ing is a 3 X 2 table."); secti on 1.add(someSect ion Text);/ Listi ng 6. Creatio n of table objectPdfPTable t = new PdfPTable(3);t.setSpaci ngBefore(25);t.setSpaci ngAfter(25);PdfPC
8、ell c1 = new PdfPCell( new Phrase("Header1");t.addCell(c1);PdfPCell c2 = new PdfPCell( new Phrase("Header2");t.addCell(c2);PdfPCell c3 = new PdfPCell( new Phrase("Header3");t.addCell(c3);t.addCell("1.1");t.addCell("1.2");t.addCell("1.3");se
9、cti on 1.add(t);/ Listi ng 7. Creatio n of list objectList l = new List(true, false, 10);l.add(new ListItem("First item of list");l.add(new ListItem("Second item of list");secti on 1.add(l);/ Listi ng 8. Addi ng image to the main docume ntImage image2 = Image.getI nsta nce("
10、IBMLogo.bmp"); image2.scaleAbsolute(120f, 120f);secti on 1.add(image2);/ Listi ng 9. Addi ng An chor to the main docume nt.Paragraph title2 = new Paragraph("Us ing An chor", Fon tFactory.getF ont(Fon tFactory.HELVETICA, 16, Fon t.BOLD, new CMYKColor(0, 255, 0,0);sectio n1.add(title2);
11、title2.setSpaci ngBefore(5000);An chor an chor2 = new An chor("Back To Top"); an chor2.setRefere nce("#BackToTop");secti on 1.add(a nchor2);/ List ing 10. Additi on of a chapter to the main docume nt docume nt.add(chapter1);docume nt.close();一個(gè)簡化了 PDF創(chuàng)建過程的開源庫iText的分步指南如果您的應(yīng)用程序需要動
12、態(tài)生成PDF文檔,那么您需要iText庫。開源的iText庫使得PDF的創(chuàng)建變得輕松易行。本文介紹了iText并提供了一個(gè)使用它從Java技術(shù)應(yīng)用程序生成PDF文檔的分步指南。我們將創(chuàng)建一個(gè)樣例應(yīng)用程序來更好地理解iText。內(nèi)容? 熟悉 版?iText API :詳細(xì)了解? 在Eclipse中下載和配置iText?樣例應(yīng)用程序?運(yùn)行樣例應(yīng)用程序? 結(jié)束語? 下載?參考資料? 評論許多應(yīng)用程序都要求動態(tài)生成PDF文檔。這些應(yīng)用程序涵蓋從生成客戶對帳單并通過電子郵件交付的銀行到購買特定的圖書章節(jié)并以PDF格式接收這些圖書章節(jié)的讀者。這個(gè)列表不勝枚舉。在本文中,我們將使用iText Java庫生成
13、PDF文檔。我們將向您演示一個(gè)樣例應(yīng)用程序,以便您可自行完成它并能更好地理解它。熟悉 版iText是一個(gè)可從 免費(fèi)獲取的 Java庫(請參見 參考資料)。iText庫非常強(qiáng)大,且支持生成HTML、RTF和XML文檔,還支持生成 PDF文檔。您可以選擇各種各樣的字體來用于文檔中。另外,iText的結(jié)構(gòu)允許您使用相同代碼生成上面提及的任何類型的文檔。iText庫包含使用各種字體生成PDF文本、在PDF文檔中生成表格、向頁面中添加水印等的類。iText還提供了其他許多特性。在一篇文章中無法演示所有這些特性。我們將介紹 生成PDF所需的基本知識。有關(guān)更多詳細(xì)信息,請參閱供應(yīng)商提供的文檔(參見參考資料)
14、。我們將使用Eclipse開發(fā)我們的樣例應(yīng)用程序。作為一個(gè)開源IDE,Eclipse可免費(fèi)獲取且非常強(qiáng)大。您可立即下載Eclipse (參見 參考資料)。iText API :詳細(xì)了解是用于生成 PDF文檔的主要類。這是第一個(gè)需要實(shí)例化的類。創(chuàng)建文檔之后,您需要一個(gè)編寫器來向其中寫入信息。是一個(gè)PDF編寫器。下面提供了其他一些常用的類:? :此類表示一個(gè)縮進(jìn)的段落。? :此類表示 PDF 文檔中的一章。使用Paragraph 作為標(biāo)題、int作為章節(jié)編號來創(chuàng)建該類。? :此類包含一種字體的所有規(guī)范,比如字體集、字號、樣式和顏色。各種字體都在此類中聲明為靜態(tài)常量。? :此類表示一個(gè)列表,反過來,
15、該列表又包含許多Listitems 。? :這是一個(gè)表格,可放在一個(gè)絕對位置上,也可作為類Table添加到文檔中。? :個(gè) Anchor可能是一個(gè)引用,或是一個(gè)引用的目標(biāo)。在Eclipse中下載和配置 iText作為一個(gè)純Java庫,iText以JAR文件的形式提供(參見參考資料)。下載該庫之后(假 設(shè)下載到路徑 C:temp),使用以下步驟在Eclipse環(huán)境中配置iText庫:在Eclipse 中創(chuàng)建一個(gè)名為 iText的新 Java 項(xiàng)目。右鍵單擊 Package Explorer 視圖中的iText項(xiàng)目,選擇 Properties 。單擊 Java Build Path。在 Libra
16、ries 選項(xiàng)卡上,單擊 Add External JARs 。找到 C:temp 目錄并選擇此目錄中的。單擊0K。iText現(xiàn)在已配置,Eclipse已準(zhǔn)備好創(chuàng)建 Java應(yīng)用程序來生成動態(tài)的PDF文檔。回頁首樣例應(yīng)用程序還有什么能比您親自創(chuàng)建的一個(gè)有效樣例能更好地演示任何技術(shù)呢?現(xiàn)在您已擁有所需的工具(Eclipse IDE)和庫(iText library),我們已準(zhǔn)備好設(shè)計(jì)和開發(fā)一個(gè)有效的樣例程序。首先創(chuàng)建一個(gè)簡單的PDF文檔,該文檔包含一些基本元素,比如純文本、具有非默認(rèn)字體的彩色文本、表格、列表、章、節(jié)等。此應(yīng)用程序的用途是讓您熟悉使用iText庫的方式。有許多類為您執(zhí)行了與PDF
17、文檔生成相關(guān)的大量工作。本文不可能介紹所有這些類。iText的javadocs是有關(guān)如何使用這些類的一個(gè)不錯的信息來源。接下來我們開始編碼。第一步是創(chuàng)建一個(gè)文檔。文檔是一個(gè)PDF文檔的所有元素的容器。清單1.實(shí)例化文檔對象Docume nt docume nt = new Docume nt(PageSize.A4, 50, 50, 50, 50);第一個(gè)參數(shù)是頁面大小。 接下來的幾個(gè)參數(shù)分別是左邊距、右邊距、上邊距和下邊距。此文檔的類型還未定義。它依賴于您創(chuàng)建的編寫器類型。對于我們的樣例,我們選擇。其他編寫器包括HtmlWriter、RtfWriter、XmlWriter 等。它們的名稱說明
18、了它們的實(shí)際用途。清單2.創(chuàng)建PdfWriter對象PdfWriterwriter=PdfWriter.getI nsta nce(docume nt,newFileOutputStream("C:ITextTest.pdf");docume nt.ope n();第一個(gè)參數(shù)是文檔對象的引用,第二個(gè)參數(shù)是輸出將寫入的文件的絕對名稱。接下來,我們打開文檔開始編寫。現(xiàn)在,我們將在文檔的第一頁上添加一些文本。任何文本都借助來進(jìn)行添加。您可使用您的文本以及字體、顏色、字號等默認(rèn)設(shè)置創(chuàng)建一個(gè)默認(rèn)段落。否則,您可提供自己的字體。在本文中,我們還將討論 PDF文檔的定位符(鏈接)。在此P
19、DF中,我們使用backToTop 作為鏈接。當(dāng)單擊 backToTop鏈接時(shí),它會將您帶到文檔的第一頁。您需要將該文本設(shè)置為第一頁的定位目標(biāo)。讓我們看看如何將定位目標(biāo)和字體設(shè)置到所添加的段落中。圖1.清單3中的代碼的樣例輸出爭pr丿曲-*弋諂丨清單3.創(chuàng)建段落對象An choran chorTarget= newAn chor("Firstpage of thedocume nt.");an chorTarget.setName("BackToTop");Paragraph paragraph1 = new Paragraph。;paragraph1.
20、setSpaci ngBefore(50);paragraph1.add(a nchorTarget);document.add(paragraph1);document.add(new Paragraph("Somemore text on the firstpage with differe nt color and font type.", Fon tFactory.getFo nt(Fo ntFactory.COURIER, 14,Font.BOLD,new CMYKColor(0, 255, 0, 0);圖1顯示了 清單3中的代碼的樣例輸出。要關(guān)閉文檔,將docu
21、ment.close();添加到清單3中的代碼末尾。First page of lhe ctocumentt«>Lt on th« £with difc©Lor and工 typ* *的元素。首先創(chuàng)建一個(gè)新章。章是一種特殊的節(jié),它從一個(gè)新頁開始且默認(rèn)會顯示一個(gè)編號。清單4.創(chuàng)建章對象Paragraphtitlel=newParagraph("Chapter1",Fon tFactory.getFo nt(Fo ntFactory.HELVETICA,18,Fon t.BOLDITALIC,newCMYKColor(0, 255,
22、255,17); Chapter chapter1 = new Chapter(title1, 1);chapter1.setNumberDepth(0);在 清單4中的代碼中,我們創(chuàng)建了一個(gè)新的章對象chapter1 ,它的標(biāo)題為“This isChapter 1 ”。將編號深度設(shè)置為0,這樣就不會在頁面上顯示章編號。節(jié)是章的子元素。在 清單5中的代碼中,我們創(chuàng)建一個(gè)標(biāo)題為“This is Section 1 inChapter 1 ” 的節(jié)。要在此節(jié)下添加一些文本,我們創(chuàng)建了另一個(gè)段落對象 someSectio nText ,并將它添加到節(jié)對象中。清單5.創(chuàng)建節(jié)對象Paragraph ti
23、tle11 = new Paragraph("This isSecti on1 in Chapter 1",Fon tFactory.getFo nt(Fo ntFactory.HELVETICA, 16, Fon t.BOLD, new CMYKColor(0, 255,255,17); Section sect ion1 = chapter1.addSecti on (title11);Paragraph someSect ion Text =new Paragraph("This text comes as part of sect ion 1 of cha
24、pter1.");secti on 1.add(someSect ion Text);someSect ion Text = new Paragraph("Follow ing is a 3X 2 table.");sectio n1.add(someSectio nText);在添加表格之前,讓我們看看該文檔的外觀。添加以下兩行代碼以關(guān)閉圖2中的文檔。然后編譯和執(zhí)行程序,以生成PDF 文檔:document.add(chapter1);document.close();。圖2.章的樣例輸出Chapter 11. This is Section 1 in Chap
25、ter 1This text comes as part of section 1 of chapter Following is a 3 X 2 table接下來,我們創(chuàng)建一個(gè)表格對象。一個(gè)表格包含一個(gè)行和列的矩陣。一行中的一個(gè)單元格可 占據(jù)多于一列。類似地,一列中的一個(gè)單元格可占據(jù)多于一行。清單6.創(chuàng)建表格對象PdfPTable t = new PdfPTable(3); t.setSpaci ngBefore(25); t.setSpaci ngAfter(25); PdfPCellcl = new PdfPCell( new Phrase("Header1"); t
26、.addCell(c1); PdfPCell c2 = new PdfPCell( newPhrase("Header2"); t.addCell(c2); PdfPCell c3 = new PdfPCell( newPhrase("Header3"); t.addCell(c3); t.addCell("1.1");t.addCell("1.2");t.addCell("1.3");sect ion 1.add(t);在清單6中的代碼中,我們創(chuàng)建了一個(gè)PDFPTable 對象t,它包含3列且
27、在不斷地添加行。接下來,我們創(chuàng)建 3個(gè)PDFPcell對象,每個(gè)對象包含不同的文本。我們不斷地將它們添加到表格中。它們會添加到第一行中,從第一列開始,移動到同一行中的下一列。該行完成后,將下一個(gè)單元格添加到下一行的第一列中。也可通過提供單元格的文本來將它添加到表格中,比如 t.addCell("1.1");。最后,將表格對象添加到節(jié)對象中。最后,讓我們看看如何將一個(gè)列表添加到PDF文檔中。列表包含多個(gè)ListItem。一個(gè)列表可帶有編號,也可不帶編號。將第一個(gè)參數(shù)作為true傳送,表明您希望創(chuàng)建帶編號的列表。清單7.創(chuàng)建列表對象List l = new List(true,
28、 false,10);l.add(newListltem("First item of list");l.add(newListltem("Second item of list");section1.add(l);Java對象我們已將所有內(nèi)容都添加到chapterl對象中?,F(xiàn)在我們將一個(gè)圖像添加到該中。我們可使用以下一個(gè)Image方法縮放圖像:scaleAbsolute() scaleAbsoluteWidth() scaleAbsoluteHeight() scalePerce ntage() scaleToFit()在 清單8中,我們使用了 sca
29、leAbsolute。然后將圖像對象添加到Section中。清單 8.將Image 添加到主 Document 中Image image2 = Image.getI nsta nce("IBMLogo.bmp"); image2.scaleAbsolute(120f, 120f);sect ion 1.add(image2);iText中的類表示一個(gè)外部網(wǎng)站或文檔內(nèi)部的一個(gè)鏈接。定位符(鏈接)可像網(wǎng)頁中的一個(gè)鏈接一樣單擊。要添加定位符,我們需要創(chuàng)建一個(gè)新定位符并將引用設(shè)置為 清單3中創(chuàng)建的Anchor目標(biāo)。然后將定位符添加到節(jié)中,并將該節(jié)添加到 文檔中。清單9.將定位符添加到主文檔中Paragraphtitle2=newParagraph("Us ingAn chor",Fon tFactory.getFo nt(Fo ntFactory.HELVETICA, 16, Fon t.BOLD, new CMYKColor(0, 255,0,0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代商務(wù)場合下的著裝與舉止規(guī)范
- 居然之家國慶節(jié)活動方案
- 現(xiàn)代農(nóng)業(yè)旅游產(chǎn)業(yè)鏈構(gòu)建與農(nóng)業(yè)可持續(xù)發(fā)展
- 未來生態(tài)社區(qū)的規(guī)劃與水環(huán)境關(guān)系探討
- 災(zāi)害預(yù)防教育在學(xué)校的推廣與應(yīng)用
- 匯報(bào)邏輯清晰度職場的制勝法寶
- 6 飛向藍(lán)天的恐龍說課稿-2023-2024學(xué)年四年級下冊語文統(tǒng)編版
- 2023九年級物理上冊 第四章 探究電流4.3 導(dǎo)體對電流阻礙作用說課稿 (新版)教科版
- 2 送元二使安西(說課稿)- 2024-2025學(xué)年部編版語文六年級上冊
- 2024-2025學(xué)年高中數(shù)學(xué) 第一章 集合與常用邏輯用語 1.4.2 充要條件說課稿 新人教A版必修第一冊001
- 2024年公安機(jī)關(guān)理論考試題庫附答案【考試直接用】
- 課題申報(bào)參考:共同富裕進(jìn)程中基本生活保障的內(nèi)涵及標(biāo)準(zhǔn)研究
- 2025年浙江嘉興桐鄉(xiāng)市水務(wù)集團(tuán)限公司招聘10人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 食品企業(yè)如何做好蟲鼠害防控集
- 2025中國聯(lián)通北京市分公司春季校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 康復(fù)醫(yī)學(xué)科患者隱私保護(hù)制度
- 環(huán)保工程信息化施工方案
- 狂犬病暴露后預(yù)防處置
- 紅色中國風(fēng)2025蛇年介紹
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 高中學(xué)校開學(xué)典禮方案
評論
0/150
提交評論