您的位置:首页 > 编程语言 > PHP开发

iTextPdf最简单最彻底解决中文显示

2016-09-20 15:45 3695 查看
不需要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、创建字体:

[java] view
plain copy

// 使用微软雅黑字体显示中文  

String yaHeiFontName = getResources().getString(R.raw.msyhl);  

yaHeiFontName += ",1";  

Font yaHeiFont = new Font(BaseFont.createFont(yaHeiFontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED));//中文简体  

注意:一定要在yaHeiFontName后面加",1"

简单实例:

[java] view
plain copy

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;  

}  


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: