不需要itextasian.jar轻松解决iTextpdf显示中文,本文使用itext-5.5.5,下载到是一个.zip文档,解压后把itextpdf-5.5.5.jar复制到到工程->libs中即可使用。
步骤如下:
1、在windows系统中搜索"*.ttc"(本例使用微软雅黑,使用msyhl.ttc),找一个xxx.ttc放到Android工程->res->raw文件夹中,如果没有raw文件夹新建一个。
2、创建字体:
// 使用微软雅黑字体显示中文
String yaHeiFontName = getResources().getString(R.raw.msyhl);
yaHeiFontName += ",1";
Font yaHeiFont = new Font(BaseFont.createFont(yaHeiFontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED));//中文简体
注意:一定要在yaHeiFontName后面加",1"
简单实例:
public void createPDF(String path) {
try {
Rectangle rectPageSize = new Rectangle(PageSize.A4);// A4纸张
Document document = new Document(rectPageSize, 40, 40, 40, 40);// 上、下、左、右间距
OutputStream outputStream = new FileOutputStream(new File(path));
PdfWriter.getInstance(document, outputStream);
document.open();
// 字体
Font font = new Font();
font.setFamily("STSongStd-Light");
//font.setFamily("Droid Sans");
font.setColor(BaseColor.BLUE);// 颜色
font.setSize(40);
Paragraph content = new Paragraph("PDF", font);
content.setAlignment(Paragraph.ALIGN_MIDDLE);
document.add(content);
// 使用微软雅黑字体显示中文
String yaHeiFontName = getResources().getString(R.raw.msyhl);
yaHeiFontName += ",1";
Font yaHeiFont = new Font(BaseFont.createFont(yaHeiFontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED));//中文简体
// 添加一行包含中文的信息到PDF测试
String info = "默认的iText字体设置不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往PDF文档中输出中文字体。\n iText的安装非常方便,在http://www.lowagie.com/iText/download.html - download 网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。\n 本地化测试包括繁体\n本地化測試包括繁體";
Paragraph content1=null;
if (LocalizationHelper.hasChinese(info)) {// 如果含有简体中文
content1 = new Paragraph(info, yaHeiFont);// 使用微软雅黑字体
}
else {
content1 = new Paragraph(info);
}
content1.setAlignment(Paragraph.ALIGN_MIDDLE);
document.add(content1);
for (int i=0; i<100; i++) {// 随意加一些内容
document.add(new Paragraph("Hello World, iText"));
document.add(new Paragraph(new Date().toString()));
}
document.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private String readPDF(String path)
{
//byte[] contentBytes;
//String byteToStr;
String content="";
int pageNum=0;
try {
PdfReader reader = new PdfReader(path);
pageNum = reader.getNumberOfPages();//获得页数
for (int i=1; i<pageNum; i++) {// 只能从第1页开始读
//contentBytes = reader.getPageContent(i);
//byteToStr = new String(contentBytes, "UTF-8");// 转码有问题
content += PdfTextExtractor.getTextFromPage(reader, i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}