利用itext生成pdf的簡單例子


一、itext簡介

iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf的文檔,而且可以將XML、Html文件轉化為PDF文件。

iText的安裝非常方便,在http://www.lowagie.com/iText/download.html網站上下載iText.jar文件后,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用iText類庫了

聲明:本博客用到iText版本為7.0.2版本。

二 、生成簡單的pdf文件

1.先生成一個文檔的文件

//其中fileName為所要創建pdf文件的路徑。

public static OutputStream createFile(String fileName) {

File file = new File(fileName);

//創建一個文件之前判斷他的父路徑的文件夾是否存在,不存在需要創建

if (!new File(file.getParent()).exists())

new File(file.getParent()).mkdirs();

try {

//創建該文件夾
file.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

 

//獲取所要創建pdf的文件的輸出流

OutputStream os = null;
try {
os = new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return os;

}

2.創建一個document的文檔對象.

 2.1 

②建立一個書寫器(Writer)與document對象關聯,通過書寫器(Writer)可以將文檔寫入到磁盤中。  

  PdfWriter pdfWriter=new PdfWriter(createFile("你所要創建的pdf文件路徑"));

2.2創建pdfDocument的對象與Writer的對象關聯

  PdfDocument pdfDocument = new PdfDocument(pdfWriter);

2.3設定創建pdf的紙張大小

  PageSize pageSize = PageSize.A4;

2.4創建Document的對象

  Document document = new Document(pdfDocument, pageSize);

 

三、添加內容

// 設定標題居中顯示

float w = pageSize.getWidth() - document.getLeftMargin() - document.getRightMargin();
List<TabStop> tabstops = new ArrayList();
tabstops.add(new TabStop(w / 2, TabAlignment.CENTER));
tabstops.add(new TabStop(w, TabAlignment.LEFT));

// 段落
Paragraph p = new Paragraph();
p.addTabStops(tabstops);
p.add(new Tab()).add("Text in the middle").add(new Tab());
p.add(new Tab()).add("How To Create An PDF File?").add(new Tab());

document.add(p);

document.flush();

//關閉document

document.close();

三、對中文的處理

1.對於中文的處理需要我添加一個itext-asian-5.2.0.jar包,可以對中文進行處理。而你可能下載不能是這個版本,可能會引起錯誤的。

一下是對之前版本的處理:

假如你加入的iTextAsian.jar的版本為5.0.6;會 出現異常 Font 'STSong-Light' with 'UniGB-UCS2-H'

  我使用的是iText 5.0.6 加入了iTextAsian.jar就報錯.

  com.itextpdf.text.DocumentException: Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.

  參考博客:x

  找的原因和解決方法:

  原因:iText5以上就改了命名空間了.是 com/itextpdf/text/pdf/fonts/

  但是iTextAsian還沒有改.他的命名空間是 com/lowagie /text/pdf/fonts/

  所以報錯..

  解決方法.:

  1.用winrar解壓iTextAsian.jar

  2. 將com文件夾下面的lowagie 修改為itextpdf .

  3.進入cmd . 切換到iTextAsian目錄.

  4.執行命令 jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/*

  5.將生成的iTextAsian.jar文件替換原來的.

  問題解決.

 

 //解決中文的代碼:

PdfFont font = null;
try {
font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", false);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

然后在段落中設定pdf字體

// 段落
Paragraph p = new Paragraph();
p.setFont(font);
p.addTabStops(tabstops);
p.add(new Tab()).add("我們很好的快來的").add(new Tab());
p.add("您好!");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM