Itext 使用入门 之 创建pdf 文档 附中文解决方案
2016-04-21 20:22
776 查看
转载自:http://blog.csdn.net/id19870510/article/details/6105574
Itext.jar 的版本是 5.0.5
往 c:/test.pdf 文件写入中文
[java] view
plain copy
Document doc = new Document();
FileOutputStream out = new FileOutputStream(new File("C:/test.pdf"));
PdfWriter.getInstance(doc, out);
//文字com/lowagie/text/pdf/fonts/
// BaseFont chinese = BaseFont.createFont("STSong-Light",
// "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font fontChinese = new Font(chinese, 12, Font.NORMAL);
Paragraph text = new Paragraph("你好。。。。",fontChinese);
doc.open(); // 打开文档
doc.add(text);
doc.add(text);
doc.close();
BaseFont chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
若 BaseFont 如此定义 则会报一个
com.itextpdf.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
原因: 以及解决方案: (摘自网上未测试.....)
http://cst.is-programmer.com/posts/18844.html
Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized
还是不行,继续研究,在网上前辈们说如下原因:
具体解决方法就是修改包的路径了,详细方法如下:
运行结果,OK,解决问题。
===========================
可以使用系统自带的字体
[java] view
plain copy
BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
或者 将simsun.ttc复制到 src 目录下面;
[java] view
plain copy
BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
至此问题解决
说明:我是按照方法二解决的这个问题。
Itext.jar 的版本是 5.0.5
往 c:/test.pdf 文件写入中文
[java] view
plain copy
Document doc = new Document();
FileOutputStream out = new FileOutputStream(new File("C:/test.pdf"));
PdfWriter.getInstance(doc, out);
//文字com/lowagie/text/pdf/fonts/
// BaseFont chinese = BaseFont.createFont("STSong-Light",
// "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
// BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font fontChinese = new Font(chinese, 12, Font.NORMAL);
Paragraph text = new Paragraph("你好。。。。",fontChinese);
doc.open(); // 打开文档
doc.add(text);
doc.add(text);
doc.close();
BaseFont chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
若 BaseFont 如此定义 则会报一个
com.itextpdf.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
原因: 以及解决方案: (摘自网上未测试.....)
http://cst.is-programmer.com/posts/18844.html
Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized
还是不行,继续研究,在网上前辈们说如下原因:
iText5.x版本以上中的font和encoding文件都是从String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/"加载的,而老itextasian.jar的包名是com.lowagie.text.pdf.fonts, 包名不一致导致路径错误,。 |
1.解压iTextAsian.jar 得到如下目录: iTextAsian --com --lowagie --text --fonts --...(字体属性文件) 2.将解压后的com目录下的包名lowagie更改为itextpdf 3.在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件 4.打包命令如下: jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/* 5.执行后,将新的iTextAsian.jar加入classpath路径 |
===========================
可以使用系统自带的字体
[java] view
plain copy
BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
或者 将simsun.ttc复制到 src 目录下面;
[java] view
plain copy
BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
至此问题解决
说明:我是按照方法二解决的这个问题。
相关文章推荐
- 校验和算法分析【转】
- lampp中修改mysql密码
- Python3.x与2.x的区别(记录下,以备自己忘了)
- BPR: Bayesian Personalized Ranking from Implicit Feedback-CoRR 2012——20160421
- [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值
- leetcode 009 Palindrome Number
- Android屏幕分辨率
- 线程同步
- POJ 2594 二分图最小路径覆盖
- Tomcat下使用Druid配置JNDI数据源
- 线段树
- jquery file change 一次问题的解决
- Win10使用微软语音TTS正确姿势
- asyncore用法
- 在浙大ACM网站上做题出现Segmentation Fault错误
- PostgreSQL数据库pg_dump命令行不输入密码的方法
- PHP中使用GD库方式画时钟
- poj1159——Palindrome(组成回文串的最少字符数,dp)
- 136.LeetCode Single Number(medium)[数组 单数]
- 获取jquery打分插件rateit 的分值