IText

**iText** 是 Java 中用於建立和操作 PDF 檔案的開源庫。它是由 Bruno Lowagie、Paulo Soares 等人編寫的。Ohloh 報告稱 2001 年以來，26 個不同的貢獻者進行了 1 萬多次提交，超過 100 多萬行代碼。iText 具有一個由大型開發團隊維護的完善的、成熟的、活躍度同比持平的代碼庫。利用 COCOMO 模型，花了大約 250 人年的努力後，2000 年 11 月 iText 專案開始了第一次提交。

5.0.0 版（2009 年 12 月 7 日釋出）後的 iText 是在 Affero 通用公眾授權條款第 3 版下分發的。之前版本的 iText（Java 版的至 4.2.1 版，和 C# 版的至 4.1.6 版）是在 Mozilla 公眾授權條款或 LGPL 下分發的。iText 同時由 iText 軟體公司通過一個專有授權條款進行分發。iText® 是 1T3XT BVBA 的註冊商標

iText 已經以 iTextSharp 的名義移植到.NET Framework 下。iTextSharp 是用 C# 編寫的，它有一個獨立於 iText 的代碼庫，但與 iText 的版本同步。

在 2013 年中，iText（Java）和 iTextSharp（.NET）僅在 SourceForge 就有超過 500 萬次的下載量。2013 年 10 月，iText 在 SourceForge 上每周約有 3000 次下載，而 iTextSharp 每周約有 4000 次下載。

## 特性

開發者可以用 iText 來：

* 從 XML 檔案或資料庫來動態生成 PDF 文件
* 為瀏覽器生成 PDF 文件
* 利用 PDF 的許多互動功能
* 添加書籤、頁碼、浮水印、條形碼等
* 分割、拼接和處理 PDF 頁面
* 自動填寫 PDF 表單
* 給 PDF 檔案添加數位簽章

通常情況下，在具有下列情況之一的專案中會使用 iText：

* 內容不是提前準備好的：它基於使用者輸入或資料庫的即時資訊來計算、處理。
* 內容太多，PDF 檔案無法手動生成。
* 在批次處理過程中，文件需要在無人值守模式下建立。
* 需要對內容進行客製化或個性化。例如，終端使用者的名字需要被印在多個頁面上。

### 支援的 ISO 標準

* ISO 32000-1 (PDF 1.7)
* ISO 19005 (PDF/A)
* ISO 14289 (PDF/UA)

## 歷史

1998 年冬天，Bruno Lowagie 在根特大學的一個內部專案開發了一個 PDF 庫 ——rugPdf，用來建立一個 PDF 文件應用（針對學生管理用）。rugPdf 是一個非常小、很複雜庫，實現的功能很少，例如簡單的讀取和寫入 PDF 檔案。為了利用這個庫，開發者必須了解 PDF 語法、物件、運算子和運算元。

1999 年，Lowagie 拋棄了 rugPdf 的代碼，從頭開始寫了一個新的庫 ——iText。Lowagie 建立 iText，意圖使 Java 開發者在不了解 PDF 語法的情況下也可以使用這個庫建立 PDF 文件，並在 2000 年 2 月 14 日將其作為自由及開放原始碼軟體釋出。在 2000 年的夏天，Paulo Soares 加盟了這個專案，現在他已經是 iText 新功能的主要開發者之一。

2007 年，《SOA World》（SOA 世界）雜誌將 iText 作為企業應該使用的 10 種開源解決方案之一。詹姆斯・高斯林稱讚 iText 庫，並在 Huckster 的新版本使用。紐約時報還利用 iText 來建立其公共領域文章的 PDF 版本。 

iText 被嵌入在許多產品和服務中，包括 Eclipse BIRT、Jasper Reports、Red Hat JBoss Seam、Windward Reports、pdftk 等等。

2008 年末，iText 的專有授權條款可用；2009 年初，iText 軟體公司成立，成為 iText 產品的全球授權方。

2013 年，德勤提名 iText 軟體集團為比荷盧聯盟高科技、高成長 50 強。該公司在比荷盧聯盟中排名第 10 位，在比利時中排名第 3 位。

## 授權條款和復刻

iTextSharp 4.1.6/iText 4.2.0 之前的版本是在 MPL 和 LGPL 授權條款下分發的，允許使用者在閉源軟體專案中使用。2009 年底，iText 第 5 版釋出，其授權條款被更換為 Affero 通用公眾授權條款第 3 版。
那些不願意提供其原始碼的專案，可以購買 iText 第 5 版的商業授權，或沒有任何變化的繼續使用 iText 的以前版本（其授權條款更寬鬆）。然而，開發商 Bruno Lowagie 警告說，第 5 版之前的版本可能包含非 LGPL 授權的代碼，因而以前版本的閉源專案的使用者可能需要為侵犯著作權負責。雖然 AGPL 庫可以連結到 GPL 的程式，但 AGPL 授權條款與 GPL 授權條款不相容。

## 範例

下面的原始碼生成一個 PDF 檔案，作為一個 Hello World 的例子。

## 延展閱讀

* Lowagie, Bruno. iText in Action 2nd. Manning Publications. Summer 2010: 600. ISBN 978-1-935182-61-0.
* Review first edition on JFree.org（頁面存檔備份，存於網際網路檔案館） by David Gilbert
* Review first edition on JavaLobby by Stephen Kitt
* Lowagie, Bruno. iText in Action 1st. Manning Publications. 8 December 2006: 656. ISBN 1-932394-79-6.
* Review second edition in Freies Magazin（頁面存檔備份，存於網際網路檔案館） by Michael Niedermair
* PDF Generation Made Easy（頁面存檔備份，存於網際網路檔案館） by Benoy Jose
* Tools of the Trade, Part 1: Creating PDF documents with iText（頁面存檔備份，存於網際網路檔案館） by Jeff Friesen (Adobe Press)
* Dynamically Creating PDFs in a Web Application（頁面存檔備份，存於網際網路檔案館） by Sean C. Sullivan
* Creating PDFs with iText（頁面存檔備份，存於網際網路檔案館） by Christoph Bartneck
* Generate PDF files from Java applications dynamically（頁面存檔備份，存於網際網路檔案館） by Amit Tuli, Staff Software Engineer, IBM
* Create PDF With iText Java Tutorial（頁面存檔備份，存於網際網路檔案館）
* Itext Add / Insert Image Into PDF（頁面存檔備份，存於網際網路檔案館）
* Snyder, Thomas. Advanced Integrated RPG. MC Press. 19 January 2010: 400. ISBN 978-1583470954.  (Chapters 10, 11 and 12（頁面存檔備份，存於網際網路檔案館） are dedicated entirely to iText)
* Johnson, Rod. Expert One-on-One J2EE Design and Development. Wrox. 23 October 2002: 768. ISBN 978-0764543852.  (see section "Generating PDF with iText" starting on p705)
* Danciu, Teodor. The Definitive Guide to JasperReports. APress. 27 August 2007: 223. ISBN 978-1590599273.
* Whitington, John. PDF Explained. O'Reilly. 10 December 2011: 142. ISBN 978-1449310028.
* Steward, Sid. PDF Hacks. O'Reilly. 23 August 2004: 298. ISBN 978-0596006556.  (translated into Italian: Acrobat e PDF. Trucchi e segreti（頁面存檔備份，存於網際網路檔案館）)

## 參見

* PDF 軟體列表

## 參考文獻

## 外部連結

* iText 首頁（頁面存檔備份，存於網際網路檔案館）
* SourceForge 上的 iText（頁面存檔備份，存於網際網路檔案館）
* SourceForge 上的 iTextSharp（頁面存檔備份，存於網際網路檔案館）
* StackOverflow 上的 iText（頁面存檔備份，存於網際網路檔案館）
* StackOverflow 上的 iTextSharp（頁面存檔備份，存於網際網路檔案館）
* 用來諮詢與 IText 有關問題的支援論壇 [1]
* 用 IText 建立 PDF 檔案的第三方指南 [2]（頁面存檔備份，存於網際網路檔案館）
* 用 IText 合併 PDF 檔案的第三方指南 [3]（頁面存檔備份，存於網際網路檔案館）
* 2012 年 IText 峰會上講解 Android、PDF、HTML5 的影片片段 [4]（頁面存檔備份，存於網際網路檔案館）
* Adobe 的 PDF 架構師 Leonard Rosenthol 在 2012 年 IText 峰會上的講解：PDF 及其標準（頁面存檔備份，存於網際網路檔案館）