开发者社区> 问答> 正文

java下html导出pdf文件,换jar包的后如何解决出现的问题??? ?报错

项目有个问题,页面动态导出pdf,用了itext2.0.8jar core-renderer.jar iTextAsian.jar 包,正确生成pdf文件。
由于项目原来使用了iText-2.1.4.jar包,经理不许jar降级,先在是修改iText-2.1.4.jar包中package com.lowagie.text.pdf; BaseFont.java文件中的getCharBBox方法 2.08传的字符,其他的传的int ,
public int[] getCharBBox(char paramChar)
{
byte[] arrayOfByte = convertToBytes(paramInt);
if (arrayOfByte.length == 0)
return null;
return this.charBBoxes[(arrayOfByte[0] & 0xFF)];
}
修改后重新打包 ,之后汉字支持出现问题。
代码如下
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver fontResolver = renderer.getFontResolver();
try {
OutputStream os = new FileOutputStream(pdfPath);
//解决中文问题
fontResolver.addFont("C:\Windows\Fonts\simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(htmlCode);//引入html字符串
renderer.layout();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
报错如下
ExceptionConverter: java.io.UnsupportedEncodingException: Identity-H
at java.lang.StringCoding.encode(StringCoding.java:269)
at java.lang.String.getBytes(String.java:947)
at com.lowagie.text.pdf.PdfEncodings.convertToBytes(Unknown Source)
at com.lowagie.text.pdf.BaseFont.convertToBytes(Unknown Source)
at com.lowagie.text.pdf.BaseFont.getCharBBox(Unknown Source)
at org.xhtmlrenderer.pdf.ITextFontResolver$FontDescription.setMetricDefaults(ITextFontResolver.java:679)
at org.xhtmlrenderer.pdf.ITextFontResolver$FontDescription.(ITextFontResolver.java:610)
at org.xhtmlrenderer.pdf.ITextFontResolver$FontDescription.(ITextFontResolver.java:603)
at org.xhtmlrenderer.pdf.ITextFontResolver.addFont(ITextFontResolver.java:169)
at org.xhtmlrenderer.pdf.ITextFontResolver.addFont(ITextFontResolver.java:157)
at org.xhtmlrenderer.pdf.ITextFontResolver.addFont(ITextFontResolver.java:180)
at org.xhtmlrenderer.pdf.ITextFontResolver.addFont(ITextFontResolver.java:157)
at cn.com.pdf.demo.Demo.htmlCodeComeString(Demo.java:77)
at cn.com.pdf.demo.Demo.test(Demo.java:115)
at cn.com.pdf.demo.Demo.main(Demo.java:124)

不知道怎么办了,求教诸位大神

展开
收起
爱吃鱼的程序员 2020-06-12 10:55:42 1163 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    ExceptionConverter:java.io.UnsupportedEncodingException:Identity-H
    atjava.lang.StringCoding.encode(StringCoding.java:269)
    atjava.lang.String.getBytes(String.java:947)
    atcom.lowagie.text.pdf.PdfEncodings.convertToBytes(UnknownSource)
    atcom.lowagie.text.pdf.BaseFont.convertToBytes(UnknownSource)

    atcom.lowagie.text.pdf.BaseFont.getCharBBox(UnknownSource)

    第一句,版本的问题。你看看是不是jdk版本变了,还是新的 itext2.0.8jar对于jdk有要求?

    不是新的itext2.08是修改itext2.14中相关方法与itext2.08一致,并使用itext2.14jar包
    2020-06-12 10:55:58
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载