itext生成PDF文件报错“Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.”
来源:互联网 发布:淘宝商品质检报告 编辑:程序博客网 时间:2024/06/01 09:27
最近需要写一个抽取表结构的工具,类似于powerdesigner中的表图,其中有一步用到了itext这个第三方jar包来生成pdf文件,碰到了一个问题,记录于此。
问题描述:
工程使用maven构建,pom.xml中对于jar包的定义如下:
<dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
执行BaseFont bfChinesebfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);时报错:
"Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized."
解决
1. 首先尝试替换itext的包版本,他在maven中央库的位置是/maven2/com/lowagie/itext/,最高版本是4.2.2,但尝试后发现问题依旧。
2. 注意到itext-asian的包路径是com.itextpdf,于是继续找,发现/maven2/com/itextpdf/itextpdf中有itextpdf的各个版本,从5.0.6到5.5.6。
3. 搜索一些帖子,发现itext从5.x版本开始,改名为itextpdf,符合上面(1)和(2)对应的版本号。
4. 问题可以确定了,就是上面itext-asian和itext的版本不对应,改为:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version></dependency>
再次运行,ok了。
有些文章提到了itextasian包名未更新也会导致这个问题,但我用的5.2.0这个包,解压后看到包名是正确的,也许新版本已经改了,这点不深究了。
摘要:
找到CJKFont类, 从中看到 InputStream is = getResourceStream(RESOURCE_PATH + "cjkfonts.properties"); cjkFonts.load(is); is.close(); is = getResourceStream(RESOURCE_PATH + "cjkencodings.properties"); cjkEncodings.load(is); is.close();
他的font和encoding文件都是从String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/"; 这里加载的,而老itextasian.jar的包名是com.lowagie.text.pdf.fonts, 应该是包名重新命名了, 而没有及时更新itextasian.jar, 改了一下itextasian.jar包路径, 重新运行程序, OK,搞定. ×××××××××××××××××××××××××××××××××××××××××××更改iTextAsian.jar包名的方法如下1)使用winrar解压缩程序将原来的iTextAsian.jar解压,目录结构如下 iTextAsian --com --lowagie --text --pdf --fonts --...(字体属性文件)2)将加压后com目录下的包名lowagie更改为itextpdf3)在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件 命令如下: jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/* 执行后,将新的iTextAsian.jar加入到classpath路径
参考:
http://endual.iteye.com/blog/1623327
http://blog.csdn.net/wang12/article/details/5661106
http://bbs.csdn.net/topics/390283201
- itext生成PDF文件报错“Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.”
- 解决iText 5.0.6生成pdf,出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.的异常
- itext生成pdf加了iTextAsian.jar还是报“Font 'STSong-Light' with 'UniGB-UCS2-H' is not re“
- 打印PDF报错:STSong-Light' with 'UniGB-UCS2-H' is not recognized
- itext 处理中文问题 Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized 版本问题
- 解决iText 5.0.1生成pdf,加入iTextAsian.jar 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.的
- iText 5.0.1生成pdf,加入iTextAsian.jar 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.的问题
- Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized(iTextAsian.jar 异常)
- 用itextpdf导出pdf时报错: Font 'STSong-Light' with 'UniCNS-UCS2-H' is not recognized.
- Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.
- 解决"STSong-Light' with 'UniGB-UCS2-H' is not recognized"问题
- 针对Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.的问题的解决
- 【问题】Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized
- 解决iText 5.0.1,加入iTextAsian.jar 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H'
- 解决iText 5.X以上,加入iTextAsian.jar 出现异常 Font 'STSong-Light' with 'UniGB-UCS2-H找不到的'的异常
- iText5.1生成pdf出现异常 Font \'STSong-Light\' with \'UniGB-UCS
- createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
- bug宝典JAVA篇 Font 'STSong-Light' is not available to the JVM
- Syntax error, type annotations are available only when source level is at least 1.8
- rust raw pointer使用方法(3)
- LeetCode OJ 06 ZigZag Conversions
- spring 中的 factory-method 属性
- swift解析XML(NSXMLParser)
- itext生成PDF文件报错“Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.”
- 用好Python帮助函数help(),dir(),type()
- html细节
- 【spoj104】highways
- 展望(开篇)
- 中小站长网站建设发展需注意的的六点ccxtqj
- Ubuntu下Qt4.8.6生成的界面中文无法显示的问题
- TCP通信的三次握手和四次撒手的详细流程
- 第一份软件测试实习(2)--需求评审会议20150826