用iText生成PDF文件
这几天比较无聊,就上网到处逛逛,发现iText是个不错的生成PDF文件的JAVA开源包,就拿来学学。
发现网上有两个不错的初级教程。
iText使用指南和
Itext教程翻译。
英文网站会有不少好教程,但应该很少会有关于中文的。因为对中文操作,必须另外下载一个包:iTextAsian.zip。这个包里面并不包含任何class文件,而是这样的:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/Windy83/6976e1e81e6d46e79107096dd0057937.png)
其中两个文件关于编码和字体(
下面例子会用到)。
cjkencodings.properties
UniGB-UCS2-H=
UniGB-UCS2-H
UniGB-UCS2-V=
UniGB-UCS2-H
UniGB-UCS2-V
cjkfonts.properties
STSong-Light=
Adobe-GB1-UCS2_UniGB-UCS2-H_UniGB-UCS2-V_
STSongStd-Light=
Adobe-GB1-UCS2_UniGB-UCS2-H_UniGB-UCS2-V_
我下载的是目前最新的包——
itext-1.4.7.jar
一个简单的示例代码如下:
package
powerwind;
import
java.io.*;
import
com.lowagie.text.*;
import
com.lowagie.text.pdf.*;
//
功能
:
把文本文件的文字读出来
,
然后写到
PDF
文件
public
class
TxtToPdf {
public
static
void
main(String[] args) {
Document doc =
null
;
BufferedReader br =
null
;
final
String pdfFilename =
"PdfFile.pdf"
;
final
String txtFilename =
"TxtFile.txt"
;
//
设置纸张为
A5
try
{
doc =
new
Document();
doc.setPageSize(PageSize.
A5
);
PdfWriter.getInstance(doc,
new
FileOutputStream(pdfFilename));
//
设置字体和编码:
BaseFont baseFont = BaseFont.createFont(
"STSong-Light"
,
"UniGB-UCS2-H"
, BaseFont.
NOT_EMBEDDED
);
Font font =
new
Font(baseFont, 8, Font.
NORMAL
);
doc.open();
br =
new
BufferedReader(
new
FileReader(txtFilename));
String str =
null
;
//
从
txt
文件读出一行
,
加入到
Document
的段落
while
((str = br.readLine()) !=
null
) {
doc.add(
new
Paragraph(str, font));
}
}
catch
(DocumentException de) {
System.
out
.println(de);
}
catch
(IOException ioe) {
System.
out
.println(ioe);
}
finally
{
if
(doc !=
null
)
doc.close();
try
{
if
(br !=
null
)
br.close();
}
catch
(IOException ioe) {
System.
out
.println(ioe);
}
}
System.
out
.println(
"done"
);
}
}