如何使用iText制作中文PDF
1. 下载itextpdf.jar
基础包:http://jaist.dl.sourceforge.net/project/itext/iText/iText5.5.2/itext-5.5.2.zip
附加包:http://cznic.dl.sourceforge.net/project/itext/extrajars/extrajars-2.3.zip
我们只下载基础包就可以
2. 创建工作文件夹
daniel@daniel-mint ~/itext $ ls daniel.java fonts itextpdf-5.5.2.jar run.sh
其中fonts是一个目录,用来存放我们用到的字体文件。
daniel@daniel-mint ~/itext $ cat run.sh javac -cp .:itextpdf-5.5.2.jar $1.java java -cp .:itextpdf-5.5.2.jar $1 rm $1.class
daniel@daniel-mint ~/itext $ cat daniel.java import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Chunk; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.text.pdf.BaseFont; public class daniel { public static final String RESULT = "daniel.pdf"; public static void main(String[] args) throws DocumentException, IOException { Document document = new Document(PageSize.A4); PdfWriter.getInstance(document, new FileOutputStream(RESULT)); document.open(); BaseFont noto_hans_bold = BaseFont.createFont("./fonts/kaiti.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font noto_hans_bold_24 = new Font(noto_hans_bold, 24); Paragraph par1 = new Paragraph(20); Chunk chk1 = new Chunk("Daniel King is a software engineer", noto_hans_bold_24); par1.add(chk1); Chunk chk2 = new Chunk("\u8FD9\u4E2A\u4EBA\u662F\u4E2A\u7A0B\u5E8F\u5458\u554A", noto_hans_bold_24); par1.add(chk2); document.add(par1); document.close(); } }
3. 可以编写一个shell用来编码Unicode
首先下载 unicode工具
sudo apt-get install unicode
daniel@daniel-mint ~/itext $ cat tounicode.sh unicode -s $1 | grep 'Uppercase' | sed -re 's/^U.*: U\+/\\u/g' | awk '{printf("%s", $1);}END{print ""}'
daniel@daniel-mint ~/itext $ bash tounicode.sh 这个人是个程序员啊 \u8FD9\u4E2A\u4EBA\u662F\u4E2A\u7A0B\u5E8F\u5458\u554A
4. 执行脚本生成PDF文件
daniel@daniel-mint ~/itext $ bash run.sh daniel daniel@daniel-mint ~/itext $ ls daniel.java daniel.pdf fonts itextpdf-5.5.2.jar run.sh tounicode.sh
5. 添加源码目录
将itextpdf-5.5.2-sources.jar解压到src目录下
然后创建ctags文件,这样就可以在源码中方便来回浏览了。
daniel@daniel-mint ~/itext $ ls daniel.java daniel.pdf fonts itextpdf-5.5.2.jar run.sh src tags tounicode.sh