问题描述
在安卓开发时使用iText库生成PDF文档,发现不能生成的PDF无法显示中文,如图
解决方案
查阅 itextpdf文档 后,发现com.itextpdf.text.fonts
只带6种西文字体,谷歌后发现官方提供itext-asian.jar
(下载链接)。
下载后导入itext-assian.jar
放到Android项目的libs
目录下,配置properties,然后build project,报错了,报错如下:
“ Error generating final archive: Found duplicate file for APK: com/itextpdf/text/pdf/fonts/cmap_info.txt
Origin 1: X:\XXX\XXX\libs\itext-asian-5.2.0.jar
Origin 2: X:\XXX\XXX\libs\itextpdf-5.2.0.jar ”
在Libraries下有两个JAR都包含com.itextpdf.text.pdf.fonts.cmaps
这个包,编译时候,里面都包含cmap_info.txt
文件,导致编译冲突。
只需要在用RAR打开itext-asian-5.2.0.jar
,然后在根目录删除cmap_info.txt
,即可解决冲突。
中文PDF导出-DEMO
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfAction;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.BaseFont;
//此处省略代码
BaseFont chinese = null;
try {
chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
} catch (DocumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Font chinsefont = new Font(chinese, 10, Font.NORMAL);
Paragraph p = new Paragraph("此处输入中文", chinsefont);