這章包含:
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 的代碼如下所示

Document document = new Document();

try ... ... {
PdfWriter.getInstance(document,
new FileOutputStream("HelloWorld.pdf"));
document.open();
document.add(
new Paragraph("Hello World"));

} catch (Exception e) ... ... {
// handle exception
}
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 這個類來定義頁面的尺寸,

Rectangle pageSize = new Rectangle(216f, 720f);
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.
大部分時間, 你可以使用标準尺寸, 譬如你寫信, 你可以使用标準信紙得尺寸。你可以這樣調用這寫标準

Document document = new Document(PageSize.LETTER);
這樣得話, 你建立出來得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改變成橫排的方式

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

Document document = new Document(PageSize.LETTER.rotate());
盡管這兩個方法在你打開PDF檔案的時候, 看起來是一樣的, 但是他們是有細微差別的:
■第一個檔案, 第一個檔案的寬是小于高的, 但是旋轉了90度
■ 第二個檔案是沒有旋轉的。
當你處理這些檔案的時候, 你會發現這些不同點會給你帶來一絲的麻煩。
頁面顔色 如果你使用一個Rectangle作為PageSize的參數,你也可以改變這個頁面的背景顔色 在接下來的例子裡面,你可以調用Rectangle的setBackgroundColor()方法來将背景改成淺藍色:

Rectangle pagesize = new Rectangle( 612 , 792 );
pagesize.setBackgroundColor( new Color( 0x64 , 0x95 , 0xed ));
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使用預設的頁邊距,半英寸,讓我們來改變這個數字:

Document document = new Document(PageSize.A5, 36 , 72 , 108 , 180 );
樣PDF文檔的左邊距是36PT,右邊距是72PT,上邊距是108PT,下邊距是180PT
你也可以這樣設定奇偶頁面邊距的對稱性:

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