itext生成pdf的例子以及jar包以及api等_第1頁(yè)
itext生成pdf的例子以及jar包以及api等_第2頁(yè)
itext生成pdf的例子以及jar包以及api等_第3頁(yè)
itext生成pdf的例子以及jar包以及api等_第4頁(yè)
itext生成pdf的例子以及jar包以及api等_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、itext生成pdf的例子以及jar包以及api等os-javapdf-itextsample_jar 雙擊可以打開(kāi) 可以解壓縮看看這里面有詳細(xì)的例子itext-5.5.0.zip 這里面有所有api 和源碼 例子中代碼如下package com.itext.test;import java.io.FileOutputStream;import java.io.IOException;import .MalformedURLException;import com.itextpdf.text.Anchor;import com.itextpdf.text.Chapter;import com.

2、itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Font;import com.itextpdf.text.FontFactory;import com.itextpdf.text.Image;import com.itextpdf.text.List;import com.itextpdf.text.ListItem;import com.itextpdf.text.PageSize;import com.itextpdf.text.Paragraph;imp

3、ort com.itextpdf.text.Phrase;import com.itextpdf.text.Section;import com.itextpdf.text.pdf.CMYKColor;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;public class ITextTest /* * param args * throws DocumentException * throws IOExcept

4、ion * throws MalformedURLException */public static void main(String args) throws DocumentException,MalformedURLException, IOException / TODO Auto-generated method stub/ Listing 1. Instantiation of document objectDocument document = new Document(PageSize.A4, 50, 50, 50, 50);/ Listing 2. Creation of P

5、dfWriter objectPdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("C:ITextTest.pdf");document.open();/ Listing 3. Creation of paragraph objectAnchor anchorTarget = new Anchor("First page of the document.");anchorTarget.setName("BackToTop");Paragraph

6、paragraph1 = new Paragraph();paragraph1.setSpacingBefore(50);paragraph1.add(anchorTarget);document.add(paragraph1);document.add(new Paragraph("Some more text on the first page with different color and font type.",FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD,new CMYKColor(0, 255,

7、0, 0);/ Listing 4. Creation of chapter objectParagraph title1 = new Paragraph("Chapter 1", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new CMYKColor(0,255, 255, 17);Chapter chapter1 = new Chapter(title1, 1);chapter1.setNumberDepth(0);/ Listing 5. Creation of section obj

8、ectParagraph title11 = new Paragraph("This is Section 1 in Chapter 1",FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD,new CMYKColor(0, 255, 255, 17);Section section1 = chapter1.addSection(title11);Paragraph someSectionText = new Paragraph("This text comes as part of section 1

9、 of chapter 1.");section1.add(someSectionText);someSectionText = new Paragraph("Following is a 3 X 2 table.");section1.add(someSectionText);/ Listing 6. Creation of table objectPdfPTable t = new PdfPTable(3);t.setSpacingBefore(25);t.setSpacingAfter(25);PdfPCell c1 = new PdfPCell(new P

10、hrase("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");section1.add(t);/ Listing 7. Cre

11、ation 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");section1.add(l);/ Listing 8. Adding image to the main documentImage image2 = Image.getInstance("IBMLogo.bmp");image2.scaleAbsolute(1

12、20f, 120f);section1.add(image2);/ Listing 9. Adding Anchor to the main document.Paragraph title2 = new Paragraph("Using Anchor", FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD, new CMYKColor(0, 255, 0,0);section1.add(title2);title2.setSpacingBefore(5000);Anchor anchor2 = new Anch

13、or("Back To Top");anchor2.setReference("#BackToTop");section1.add(anchor2);/ Listing 10. Addition of a chapter to the main documentdocument.add(chapter1);document.close();一個(gè)簡(jiǎn)化了 PDF 創(chuàng)建過(guò)程的開(kāi)源庫(kù) iText 的分步指南如果您的應(yīng)用程序需要?jiǎng)討B(tài)生成 PDF 文檔,那么您需要 iText 庫(kù)。開(kāi)源的 iText 庫(kù)使得 PDF 的創(chuàng)建變得輕松易行。本文介紹了 iText 并提供

14、了一個(gè)使用它從 Java 技術(shù)應(yīng)用程序生成 PDF 文檔的分步指南。我們將創(chuàng)建一個(gè)樣例應(yīng)用程序來(lái)更好地理解 iText。內(nèi)容· 熟悉 iText V5.3.0 版· iText API:詳細(xì)了解· 在 Eclipse 中下載和配置 iText· 樣例應(yīng)用程序· 運(yùn)行樣例應(yīng)用程序· 結(jié)束語(yǔ)· 下載· 參考資料· 評(píng)論許多應(yīng)用程序都要求動(dòng)態(tài)生成 PDF 文檔。這些應(yīng)用程序涵蓋從生成客戶對(duì)帳單并通過(guò)電子郵件交付的銀行到購(gòu)買(mǎi)特定的圖書(shū)章節(jié)并以 PDF 格式接收這些圖書(shū)章節(jié)的讀者。這個(gè)列表不勝枚舉。在本文中,我們將

15、使用 iText Java 庫(kù)生成 PDF 文檔。我們將向您演示一個(gè)樣例應(yīng)用程序,以便您可自行完成它并能更好地理解它。熟悉 iText V5.3.0 版iText 是一個(gè)可從 免費(fèi)獲取的 Java 庫(kù)(請(qǐng)參見(jiàn) 參考資料)。iText 庫(kù)非常強(qiáng)大,且支持生成 HTML、RTF 和 XML 文檔,還支持生成 PDF 文檔。您可以選擇各種各樣的字體來(lái)用于文檔中。另外,iText 的結(jié)構(gòu)允許您使用相同代碼生成上面提及的任何類型的文檔。iText 庫(kù)包含使用各種字體生成 PDF 文本、在 PDF 文檔中生成表格、向頁(yè)面中添加水印等的類。iText 還提供了其他許多特性。在一篇文章中無(wú)法演示所有這些特性。

16、我們將介紹生成 PDF 所需的基本知識(shí)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱供應(yīng)商提供的文檔(參見(jiàn) 參考資料)。我們將使用 Eclipse 開(kāi)發(fā)我們的樣例應(yīng)用程序。作為一個(gè)開(kāi)源 IDE,Eclipse 可免費(fèi)獲取且非常強(qiáng)大。您可立即下載 Eclipse(參見(jiàn) 參考資料)。iText API:詳細(xì)了解com.itextpdf.text.Document 是用于生成 PDF 文檔的主要類。這是第一個(gè)需要實(shí)例化的類。創(chuàng)建文檔之后,您需要一個(gè)編寫(xiě)器來(lái)向其中寫(xiě)入信息。com.itextpdf.text.pdf.PdfWriter 是一個(gè) PDF 編寫(xiě)器。下面提供了其他一些常用的類:· com.itextp

17、df.text.Paragraph:此類表示一個(gè)縮進(jìn)的段落。· com.itextpdf.text.Chapter:此類表示 PDF 文檔中的一章。使用 Paragraph 作為標(biāo)題、int 作為章節(jié)編號(hào)來(lái)創(chuàng)建該類。· com.itextpdf.text.Font:此類包含一種字體的所有規(guī)范,比如字體集、字號(hào)、樣式和顏色。各種字體都在此類中聲明為靜態(tài)常量。· com.itextpdf.text.List:此類表示一個(gè)列表,反過(guò)來(lái),該列表又包含許多 ListItems。· com.itextpdf.text.pdf.PDFPTable:這是一個(gè)表格,可放在

18、一個(gè)絕對(duì)位置上,也可作為類 Table 添加到文檔中。· com.itextpdf.text.Anchor:一個(gè) Anchor 可能是一個(gè)引用,或是一個(gè)引用的目標(biāo)。在 Eclipse 中下載和配置 iText作為一個(gè)純 Java 庫(kù),iText 以 JAR 文件的形式提供(參見(jiàn) 參考資料)。下載該庫(kù)之后(假設(shè)下載到路徑 C:temp),使用以下步驟在 Eclipse 環(huán)境中配置 iText 庫(kù):1 在 Eclipse 中創(chuàng)建一個(gè)名為 iText 的新 Java 項(xiàng)目。2 右鍵單擊 Package Explorer 視圖中的 iText 項(xiàng)目,選擇 Properties。3 單擊 Ja

19、va Build Path。在 Libraries 選項(xiàng)卡上,單擊 Add External JARs。4 找到 C:temp 目錄并選擇此目錄中的 itext-5.3.0.jar。5 單擊 OK。iText 現(xiàn)在已配置,Eclipse 已準(zhǔn)備好創(chuàng)建 Java 應(yīng)用程序來(lái)生成動(dòng)態(tài)的 PDF 文檔?;仨?yè)首樣例應(yīng)用程序還有什么能比您親自創(chuàng)建的一個(gè)有效樣例能更好地演示任何技術(shù)呢?現(xiàn)在您已擁有所需的工具 (Eclipse IDE) 和庫(kù) (iText library),我們已準(zhǔn)備好設(shè)計(jì)和開(kāi)發(fā)一個(gè)有效的樣例程序。首先創(chuàng)建一個(gè)簡(jiǎn)單的 PDF 文檔,該文檔包含一些基本元素,比如純文本、具有非默認(rèn)字體的彩色文

20、本、表格、列表、章、節(jié)等。此應(yīng)用程序的用途是讓您熟悉使用 iText 庫(kù)的方式。有許多類為您執(zhí)行了與 PDF 文檔生成相關(guān)的大量工作。本文不可能介紹所有這些類。iText 的 javadocs 是有關(guān)如何使用這些類的一個(gè)不錯(cuò)的信息來(lái)源。接下來(lái)我們開(kāi)始編碼。第一步是創(chuàng)建一個(gè)文檔。文檔是一個(gè) PDF 文檔的所有元素的容器。清單 1. 實(shí)例化文檔對(duì)象Document document = new Document(PageSize.A4, 50, 50, 50, 50);第一個(gè)參數(shù)是頁(yè)面大小。接下來(lái)的幾個(gè)參數(shù)分別是左邊距、右邊距、上邊距和下邊距。此文檔的類型還未定義。它依賴于您創(chuàng)建的編寫(xiě)器類型。對(duì)于

21、我們的樣例,我們選擇 com.itextpdf.text.pdf.PdfWriter。其他編寫(xiě)器包括 HtmlWriter、RtfWriter、XmlWriter 等。它們的名稱說(shuō)明了它們的實(shí)際用途。清單 2. 創(chuàng)建 PdfWriter 對(duì)象PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:ITextTest.pdf");document.open();第一個(gè)參數(shù)是文檔對(duì)象的引用,第二個(gè)參數(shù)是輸出將寫(xiě)入的文件的絕對(duì)名稱。接下來(lái),我們打開(kāi)文檔開(kāi)始編寫(xiě)。現(xiàn)在,我們將在文檔的第一頁(yè)

22、上添加一些文本。任何文本都借助 com.itextpdf.text.Paragraph 來(lái)進(jìn)行添加。您可使用您的文本以及字體、顏色、字號(hào)等默認(rèn)設(shè)置創(chuàng)建一個(gè)默認(rèn)段落。否則,您可提供自己的字體。 在本文中,我們還將討論 PDF 文檔的定位符(鏈接)。在此 PDF 中,我們使用 backToTop 作為鏈接。當(dāng)單擊 backToTop 鏈接時(shí),它會(huì)將您帶到文檔的第一頁(yè)。您需要將該文本設(shè)置為第一頁(yè)的定位目標(biāo)。讓我們看看如何將定位目標(biāo)和字體設(shè)置到所添加的段落中。清單 3. 創(chuàng)建段落對(duì)象Anchor anchorTarget = new Anchor("First page of the doc

23、ument."); anchorTarget.setName("BackToTop"); Paragraph paragraph1 = new Paragraph(); paragraph1.setSpacingBefore(50); paragraph1.add(anchorTarget); document.add(paragraph1);document.add(new Paragraph("Some more text on the first page with different color and font type.", Fon

24、tFactory.getFont(FontFactory.COURIER, 14, Font.BOLD,new CMYKColor(0, 255, 0, 0);圖 1 顯示了 清單 3 中的代碼的樣例輸出。要關(guān)閉文檔,將 document.close(); 添加到清單 3 中的代碼末尾。圖 1. 清單 3 中的代碼的樣例輸出您剛才看到了如何將純文本添加到 PDF 文檔中。接下來(lái),我們需要向文檔中添加一些復(fù)雜的元素。首先創(chuàng)建一個(gè)新章。章是一種特殊的節(jié),它從一個(gè)新頁(yè)開(kāi)始且默認(rèn)會(huì)顯示一個(gè)編號(hào)。清單 4. 創(chuàng)建章對(duì)象Paragraph title1 = new Paragraph("Chap

25、ter 1", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new CMYKColor(0, 255, 255,17); Chapter chapter1 = new Chapter(title1, 1); chapter1.setNumberDepth(0);在 清單 4 中的代碼中,我們創(chuàng)建了一個(gè)新的章對(duì)象 chapter1,它的標(biāo)題為 “This is Chapter 1”。將編號(hào)深度設(shè)置為 0,這樣就不會(huì)在頁(yè)面上顯示章編號(hào)。節(jié)是章的子元素。在 清單 5 中的代碼中,我們創(chuàng)建一個(gè)標(biāo)題為 “Thi

26、s is Section 1 in Chapter 1” 的節(jié)。要在此節(jié)下添加一些文本,我們創(chuàng)建了另一個(gè)段落對(duì)象 someSectionText,并將它添加到節(jié)對(duì)象中。清單 5. 創(chuàng)建節(jié)對(duì)象Paragraph title11 = new Paragraph("This is Section 1 in Chapter 1", FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD, new CMYKColor(0, 255, 255,17); Section section1 = chapter1.addSection

27、(title11);Paragraph someSectionText = new Paragraph("This text comes as part of section 1 of chapter 1.");section1.add(someSectionText);someSectionText = new Paragraph("Following is a 3 X 2 table.");section1.add(someSectionText);在添加表格之前,讓我們看看該文檔的外觀。添加以下兩行代碼以關(guān)閉 圖 2 中的文檔。然后編譯和執(zhí)行程序,

28、以生成 PDF 文檔:document.add(chapter1);document.close();。圖 2. 章的樣例輸出接下來(lái),我們創(chuàng)建一個(gè)表格對(duì)象。一個(gè)表格包含一個(gè)行和列的矩陣。一行中的一個(gè)單元格可占據(jù)多于一列。類似地,一列中的一個(gè)單元格可占據(jù)多于一行。清單 6. 創(chuàng)建表格對(duì)象PdfPTable t = new PdfPTable(3); t.setSpacingBefore(25); t.setSpacingAfter(25); PdfPCell c1 = new PdfPCell(new Phrase("Header1"); t.addCell(c1); Pdf

29、PCell 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"); section1.add(t);在 清單 6 中的代碼中,我們創(chuàng)建了一個(gè) PDFPTable 對(duì)象 t,它包含 3 列且在不斷地添加行。接

30、下來(lái),我們創(chuàng)建 3 個(gè) PDFPcell 對(duì)象,每個(gè)對(duì)象包含不同的文本。我們不斷地將它們添加到表格中。它們會(huì)添加到第一行中,從第一列開(kāi)始,移動(dòng)到同一行中的下一列。該行完成后,將下一個(gè)單元格添加到下一行的第一列中。也可通過(guò)提供單元格的文本來(lái)將它添加到表格中,比如 t.addCell("1.1");。最后,將表格對(duì)象添加到節(jié)對(duì)象中。最后,讓我們看看如何將一個(gè)列表添加到 PDF 文檔中。列表包含多個(gè) ListItem。一個(gè)列表可帶有編號(hào),也可不帶編號(hào)。將第一個(gè)參數(shù)作為 true 傳送,表明您希望創(chuàng)建帶編號(hào)的列表。清單 7. 創(chuàng)建列表對(duì)象List l = new List(true

31、, false, 10);l.add(new ListItem("First item of list");l.add(new ListItem("Second item of list");section1.add(l);我們已將所有內(nèi)容都添加到 chapter1 對(duì)象中?,F(xiàn)在我們將一個(gè)圖像添加到該 Java 對(duì)象中。我們可使用以下一個(gè) Image 方法縮放圖像:· scaleAbsolute()· scaleAbsoluteWidth()· scaleAbsoluteHeight()· scalePercent

32、age()· scaleToFit()在 清單 8 中,我們使用了 scaleAbsolute。然后將圖像對(duì)象添加到 Section 中。清單 8. 將 Image 添加到主 Document 中Image image2 = Image.getInstance("IBMLogo.bmp"); image2.scaleAbsolute(120f, 120f); section1.add(image2);iText 中的 com.itextpdf.text.Anchor 類表示一個(gè)外部網(wǎng)站或文檔內(nèi)部的一個(gè)鏈接。定位符(鏈接)可像網(wǎng)頁(yè)中的一個(gè)鏈接一樣單擊。要添加定位符,我們需要?jiǎng)?chuàng)建一個(gè)新定位符并將引用設(shè)置為 清單 3 中創(chuàng)建的 Anchor 目標(biāo)。然后將定位符添加到節(jié)中,并將該節(jié)添加到文檔中。清單 9. 將定位符添加到主文檔中Paragraph title2 = new Paragraph("Using Anchor", FontFactory.getFont(FontFactory.HELVETICA, 16, Fo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論