IText簡介及示例
一、iText簡介
iText是著名的開放原始碼的站點sourceforge一個專案,是用於生成PDF文件的一個java類庫。通過iText不僅可以生成PDF或rtf的文件,而且可以將XML、Html檔案轉化為PDF檔案。
使用iText非常方便,引入jar包,程式中就可以使用iText類庫了。iText.jar包下載地址:http://www.itextpdf.com/download.php
如果生成的PDF檔案中需要出現中文、日文、韓文字元,則同樣的地址,下載extrajars-2.3.zip擴充套件包,裡面包括itext-asian.jar等擴充套件工具包。
二、功能介紹
在企業的資訊系統中,報表處理一直佔比較重要的作用,iText元件通過在伺服器端使用Jsp 或JavaBean生成PDF報表,客戶端採用超級連線顯示或下載得到生成的報表,這樣就很好的解決了B/S系統的報表處理問題。
適合使用IText的需求:
Typically, iText is used in projects that have one ofthe following requirements:
The content isn't available in advance: it'scalculated based on user input or real-time database information.
The PDF files can't be produced manually due to the massivevolume of content: a large number of pages or documents.
Documents need to be created in unattended mode, in abatch process.
The content needs to be customized or personalized;for instance, the name of the end user has to be stamped on a number of pages.
Often you'll encounter these requirements in webapplications, where content needs to be served dynamically to a browser.Normally, you'd serve this information in the form of HTML, but for somedocuments, PDF is preferred over HTML for better printing quality, foridentical presentation on a variety of platforms, for security reasons, or toreduce the file size.
通常,iText用於具有下列條件之一的專案:
內容不固定,它是基於使用者輸入或實時資料庫資訊計算。
由於頁數多或者檔案較大而造成的內容過多而使得PDF檔案不能手動生成,。
檔案需要在無人值守模式下建立的,使用批處理過程。
內容需要自定義或個性化;例如,終端使用者的名字需要被印在某一頁中。
通常你會在Web應用程式中遇到的這些要求,其中的內容對於瀏覽者來說必須是動態。通常,你會以HTML的形式提供這些資訊,但對於一些文件,PDF格式在印刷質量上是優於HTML的,同樣,在各種平臺上,出於安全原因,或減少檔案大小的考慮,PDF都優於HTML。
三、demo演示,一個最簡單的使用IText轉化為PDF的例子
用iText生成PDF文件需要5個步驟:
①建立com.itextpdf.text.Document物件的例項。
Document document= new Document();
②建立一個書寫器(Writer)與document物件關聯,通過書寫器(Writer)可以將文件寫入到磁碟中。
PDFWriter.getInstance(document,new FileOutputStream("ITextTest.pdf"));
③開啟文件。
document.open();
④向文件中新增內容。
document.add(newParagraph("IText Test"));
⑤關閉文件。
document.close();
通過上面的5個步驟,就能產生一個ITextTest.PDF的檔案,檔案內容為"ITextTest"。
具體程式碼如下:
package com.wh;
importjava.io.FileOutputStream;
importcom.itextpdf.text.BaseColor;
importcom.itextpdf.text.Document;
importcom.itextpdf.text.Element;
importcom.itextpdf.text.Font;
importcom.itextpdf.text.Paragraph;
importcom.itextpdf.text.Rectangle;
importcom.itextpdf.text.pdf.BaseFont;
importcom.itextpdf.text.pdf.PdfPTable;
importcom.itextpdf.text.pdf.PdfWriter;
public class ToPDF{
// 表頭
public static final String[] tableHeader= { "姓名", "性別", "年齡",
"學院", "專業", "年級"};
// 資料表欄位數
private static final int colNumber = 6;
// 表格的設定
private static final int spacing = 2;
// 表格的設定
private static final int padding = 2;
// 匯出Pdf文擋
public static void exportPdfDocument() {
// 建立文Pdf文擋50, 50, 50,50左右上下距離
Document document = newDocument(new Rectangle(1500, 2000), 50, 50, 50,
50);
try {
//使用PDFWriter進行寫檔案操作
PdfWriter.getInstance(document,new FileOutputStream(
"d:\\學生資訊.pdf"));
document.open();
// 中文字型
BaseFont bfChinese =BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
Font fontChinese = newFont(bfChinese, 12, Font.NORMAL);
// 建立有colNumber(6)列的表格
PdfPTable datatable = newPdfPTable(colNumber);
//定義表格的寬度
int[] cellsWidth = { 8, 2,2, 8, 5, 3 };
datatable.setWidths(cellsWidth);
// 表格的寬度百分比
datatable.setWidthPercentage(100);
datatable.getDefaultCell().setPadding(padding);
datatable.getDefaultCell().setBorderWidth(spacing);
//設定表格的底色
datatable.getDefaultCell().setBackgroundColor(BaseColor.GREEN);
datatable.getDefaultCell().setHorizontalAlignment(
Element.ALIGN_CENTER);
// 新增表頭元素
for (int i = 0; i <colNumber; i++) {
datatable.addCell(newParagraph(tableHeader[i], fontChinese));
}
// 新增子元素
for (int i = 0; i <colNumber; i++) {
datatable.addCell(newParagraph(tableHeader[i], fontChinese));
}
document.add(datatable);
} catch (Exception e) {
e.printStackTrace();
}
document.close();
}
public static void main(String[] args)throws Exception {
exportPdfDocument();
}
}
下載示例程式碼及jar包請點選: 下載
相關文章
- Docker(3):Dockerfile介紹及簡單示例Docker
- .net持續整合cake篇之cake介紹及簡單示例
- MySQL資料備份多種引數介紹及簡單示例MySql
- unittest系列(一)unittest簡介和示例
- netcat 命令介紹及使用示例
- arguments的應用示例簡單介紹
- Flyway簡介及使用
- openvas簡介及使用
- openfiler簡介及概述
- vnc簡介及配置VNC
- 【Struts】Struts2簡介及實現使用者登入程式碼示例
- Linux 中的靜態庫和動態庫簡介及生成過程示例Linux
- RabbitMQ簡介以及與SpringBoot整合示例MQSpring Boot
- iText操作PDF檔案的方法及程式碼
- PostgreSQL簡介及安裝SQL
- RabbitMQ簡介及安裝MQ
- Django簡介及安裝Django
- ppium簡介及工作原理
- IO流簡介及方法
- Allure簡介及安裝
- Docker簡介及安裝Docker
- vue 實現原理及簡單示例實現Vue
- Android 極簡反射教程及應用示例Android反射
- Locust 簡介及安裝使用
- 01 . MongoDB簡介及部署配置MongoDB
- WebSocket原理及技術簡介Web
- logstash簡介及基本操作
- Thanos工作原理及元件簡介元件
- Zookeeper簡介及分散式概念分散式
- android IPC及原理簡介Android
- AWK簡介及使用例項
- Activity簡介及生命週期
- maven簡介及基礎使用Maven
- 【儲存】GPFS簡介及搭建
- ECMAScript各版本簡介及特性
- UDEV簡介及配置過程dev
- svg01——svg簡介及簡單使用SVG
- Linux開發之Makefile簡明教程及示例Linux