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;
}
步骤如下:
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;
}
相关文章推荐
- iTextPdf最简单最彻底解决中文显示
- ITEXT5.5.8转html为pdf文档解决linux不显示中文问题
- java 用itext-asian解决itext pdf中文不显示问题
- ssh三大框架简单整合,struts2整合JasperReport报表、图表,解决HTML显示图片不出来,PDF中文不显示的问题
- springMVC中itext生成PDF,根本上解决中文乱码以及不显示问题
- iText7 生成 PDF 文件,解决各种操作系统中文问题,控制指定位置显示图片、文字、图文混排
- 利用itext导出HTML到PDF,解决中文不显示和中文不换行的问题
- iTextPDF无法显示中文的解决办法
- itext2.0.8把html转换为pdf及解决中文不显示办法
- 彻底解决get显示提交时,参数中包含中文时出现乱码的问题
- JFreechart存储为PDF不能显示中文文字的解决办法
- 解决ubuntu下pdf中文不显示或乱码问题
- Ubnutu下中文PDF文件不显示或显示为方框问题的解决
- ubuntu 10.10 PDF不显示中文解决办法
- ubuntu pdf 中文显示不正确的解决方法
- [已解决]MSTR报表以PDF格式导出后中文汉字不能显示
- 解决iReport预览pdf或excel中文显示问题(转)
- ubuntu pdf乱码+不显示中文的终极解决办法
- iText生成PDF文件(解决了中文乱码)
- ubuntu 10.10 PDF不显示中文解决办法