天天看點

第二章 PDF 馬達啟動-2.1.1

這章包含:

Hello World, Hello iText

5步建立一個PDF

操作 PDF: 基礎

如果你是一個iText的新使用者,讀這章的意義如同你獲得一個新的工作的第一天,有人會和你說這個建築, 和你不認識的人握手,你視圖記住每個人的名字.在這天結束的時候你會發現你根本沒有做任何事情, 但是你确實做了一些事情, 你和每一個人說了:hello.

在這個章節, 你将利用5個步驟來建立一個PDF,你也會學習如何擴充每一步:增加一些内容,你也會學到如何使用一些iText classes去獲得和操作PDF檔案.

盡管前一個章節我用一些PDF的截屏給你234章的的一個總覽,這個章節将呈現一些iText的真是的案例, 每個例子你都将得到一些PDF“裝置”。

2.1 5 步建立一個 PDF 檔案

按照沒有學會走不能學飛的道理,我們将由一個簡單的PDF檔案開始,圖2.1 展現了一個“hello world”的pdf檔案。

這些産生“Hello World” PDF 的代碼如下所示

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document();

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

try  ... ... {

第二章 PDF 馬達啟動-2.1.1

PdfWriter.getInstance(document,

第二章 PDF 馬達啟動-2.1.1

new FileOutputStream("HelloWorld.pdf"));

第二章 PDF 馬達啟動-2.1.1

document.open();

第二章 PDF 馬達啟動-2.1.1

document.add(

第二章 PDF 馬達啟動-2.1.1

new Paragraph("Hello World"));

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

}   catch  (Exception e) ... ... {

第二章 PDF 馬達啟動-2.1.1

// handle exception

第二章 PDF 馬達啟動-2.1.1

}

第二章 PDF 馬達啟動-2.1.1

document.close();

我們來将這個代碼劃分一些

l         Step 1 建立一個Document對象

l         Step 2 獲得一個 DocWriter 執行個體 (這個例子是一個 PdfWriter 執行個體)

l         Step 3 打開那個Docment對象

l         Step 4  增加Document的内容.

l         Step 5 關閉 Document.對象

在每一個小節, 我們将讨論重點放在一個不同的步驟上,我們針對每一步做一些改動,你将建立一些微小的改動的PDF檔案

你現在可以處理不同版本的Hello World的PDF檔案了, 你可以變換字型, 是否粗體(是否斜體), 然後去發現這些源碼的相似和不同之處,在最後一個小節, 我們将着重講解如何按照MVC模式來使用iText。

2.1.1 建立一個新的Document對象

    Document 對象是你用它來增加内容:包含文字和中繼資料的, 在document對象上, 你可以定義頁面大小,頁面的顔色, 頁邊距等等。

在上述的例子裡面, 那個Document是一個包含預設屬性的對象, 你可以使用com.lowagie.text.Rectangle 這個類來定義頁面的尺寸,

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Rectangle pageSize  =   new  Rectangle(216f, 720f);

第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document(pageSize);

在這個代碼中的那兩個實數表示了未來頁面的寬和高,這個實數的機關可以由使用者自己定義, 預設的機關是象素點, 一英寸 包含72個點, 上文中我們定義了一個寬 3 英寸 , 高 10 英寸 的頁面, 你運作這個代碼, 再打開這個PDF檔案, 點選檔案>檔案屬性>描述,你會發現這個檔案的尺寸确實是3X 10 英寸 的。

頁面尺寸

理論上, 你可以建立任何尺寸的檔案, 但是不同版本的PDF檔案對檔案大小是有約定的, 在PDF1.3裡面, 最小的檔案尺寸是72X72象素點, 最大是3,240 x 3,240象素點,最新的版本的PDF規範裡面, 這個尺寸的限制為:3 x 3到14,400 x 14,400.

我們也在第3章讨論PDF其他的一些限制

FAQ:是否Itext包含了一些方法, 可以讓英寸和象素之間, 象素和米制機關的轉換方法呢?

沒有,你會發現在iText裡面都是用象素點為機關的, 極少的情況頁會用到千象素點。如果你要做這些轉換, 你得自己寫一些程式, 記住 1 in = 2.54 cm = 72 points.

大部分時間, 你可以使用标準尺寸, 譬如你寫信, 你可以使用标準信紙得尺寸。你可以這樣調用這寫标準

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document(PageSize.LETTER);

第二章 PDF 馬達啟動-2.1.1

這樣得話, 你建立出來得PDF将是8.5 x 11 in ,而預設的第一個程式是采用A4大小作為文檔的頁面大小的(8.26 x 11.69 in or 210 x 297 mm ).

PageSize對象是為了您寫程式友善而建立的一個對象,它裡面隻有一些标準的尺寸,從A0 到

A10, B0 到 B5, 信件,, _11x17, 便條, ARCH_A 到 ARCH_E等

預設的文檔是豎排的, 當然你可以o改變成橫排的方式

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document( new  Rectangle( 792 ,  612 )); 也可以直接定義長大于高的方式來實作橫排

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document(PageSize.LETTER.rotate());

盡管這兩個方法在你打開PDF檔案的時候, 看起來是一樣的, 但是他們是有細微差別的:

■第一個檔案, 第一個檔案的寬是小于高的, 但是旋轉了90度

■ 第二個檔案是沒有旋轉的。

當你處理這些檔案的時候, 你會發現這些不同點會給你帶來一絲的麻煩。

頁面顔色 如果你使用一個Rectangle作為PageSize的參數,你也可以改變這個頁面的背景顔色 在接下來的例子裡面,你可以調用Rectangle的setBackgroundColor()方法來将背景改成淺藍色:

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Rectangle pagesize  =   new  Rectangle( 612 ,  792 );

第二章 PDF 馬達啟動-2.1.1

pagesize.setBackgroundColor( new  Color( 0x64 ,  0x95 ,  0xed ));

第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document(pagesize); 在這個例子裡面,你使用的是java.awt.Color,這個顔色是用RGB的方式來設定的,如果你習慣于使用CMYK的顔色來設定,你可以使用com.lowagie.text.pdf.ExtendedColor對象。你可以在附錄A的第8節了解iText的類結構,在11章你可以閱讀有關顔色的内容, iText的API包含了第3種的Document對象的建構函數,不僅包含了一個Rectangle, 是4個Float的參數,我們在這裡不再詳述了。 頁邊距 在例子的第4步,我們讓Document對象增加了一個段落:Paragraph,這個段落包含一段文字:hello world,但是,iText怎麼知道把這個文字放在頁面的那個地方呢?這個答案相當簡單:當我們增加段落,短語或者區塊到Document對象的時候,iText設定相同的上下左右空間,這個就是頁邊距,你之前建立的“Hello World”例子裡面,iText使用預設的頁邊距,半英寸,讓我們來改變這個數字:

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

Document document  =   new  Document(PageSize.A5,  36 ,  72 ,  108 ,  180 );

樣PDF文檔的左邊距是36PT,右邊距是72PT,上邊距是108PT,下邊距是180PT

你也可以這樣設定奇偶頁面邊距的對稱性:

第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1
第二章 PDF 馬達啟動-2.1.1

document.setMarginMirroring( true );

在這個例子裡面,所有的奇數頁面的左邊距是36PT,右邊距是72pt,而偶數頁面,剛好相反。

繼續閱讀