Itext 使用入门 之 创建pdf 文档 附中文解决方案
来源:互联网 发布:最大子数组hdu 编辑:程序博客网 时间:2024/06/01 19:52
Itext.jar 的版本是 5.0.5
往 c:/test.pdf 文件写入中文
- 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路径
运行结果,OK,解决问题。
===========================
可以使用系统自带的字体
- BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
或者 将simsun.ttc复制到 src 目录下面;
- BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Itext.jar 的版本是 5.0.5
往 c:/test.pdf 文件写入中文
- 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路径
运行结果,OK,解决问题。
===========================
可以使用系统自带的字体
- BaseFont chinese = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
或者 将simsun.ttc复制到 src 目录下面;
- BaseFont chinese = BaseFont.createFont(PdfTest.class.getResource("/") + "/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
- Itext 使用入门 之 创建pdf 文档 附中文解决方案
- Itext 使用入门 之 创建pdf 文档 附中文解决方案
- Itext 使用入门 之 创建pdf 文档 附中文解决方案
- 使用itext生成PDF文档入门
- 使用iText创建PDF文档,代码整理自iText官网
- 使用iText生成pdf文档
- 使用iText创建PDF文件
- Java 使用 iText动态生成PDF文档
- 使用 iText动态生成PDF文档
- Java导出PDF文档使用iText操作
- java使用iText生成pdf:解决中文
- 使用itext创建PDF文档-导出大表格-每页显示标题-项目实战
- Java操作PDF之iText超入门
- Java操作PDF之itext入门
- Java操作PDF之itext入门
- Java操作PDF之iText超入门
- Java操作PDF之iText超入门
- Java操作PDF之iText超入门
- Ultimate Guide To Installing Nginx, MySQL, PHP5, PHP-FPM In CentOS 6.5
- 网页布局中的常见的兼容性问题
- Unity动态加载和内存管理(三合一)
- Qt窗口位置及注意
- Android 当前日期至前6天的日期与星期几的对应关系
- Itext 使用入门 之 创建pdf 文档 附中文解决方案
- JDK安装配置
- TCP,UDP,HTTP关系
- 指定UIView的某几个角为圆角
- How to Bypass DEP+ASLR+SEHOP
- sublime text 3 中添加浏览器预览功能
- linux下CPU使用率
- [leetcode] Gas Station
- Objective C 中的nil,Nil,NULL和NSNull理解