不需要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;
- }