永发信息网

java读取jasper生成的pdf文件无法识别中文

答案:2  悬赏:40  手机版
解决时间 2021-02-23 09:22
  • 提问者网友:且恨且铭记
  • 2021-02-22 13:47
我现在java读取jasper生成的pdf文件无法识别中文,用的第三方包是PDFRenderer-0.9.0.jar ,勾选了字体:比如STSong-Light,UniGB-UCS2-H (Chinese Simplified),还是报错:
java.io.IOException: Unknown CMap: UniGB-UCS2-H
at com.sun.pdfview.font.PDFCMap.getCMap(PDFCMap.java:67)
at com.sun.pdfview.font.PDFFontEncoding.(PDFFontEncoding.java:73)
at com.sun.pdfview.font.PDFFont.getFont(PDFFont.java:133)
at com.sun.pdfview.PDFParser.getFontFrom(PDFParser.java:1166)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:719)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at java.lang.Thread.run(Unknown Source)
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-02-22 13:56
用jasperreport的exportpdffile那个方法生成pdf到指定的磁盘目录下,所有的pdf文件生成是生成了,文件大小也不一.但是打开任何pdf文件都是空白的,不知道为什么,而我换exporthtmlfile的那个方法生成的html文件都能展现正常.由于这个程序是在后台生成文件给mail发送的所以不通过jsp,action的流程,只能在后台指定目录中生成一个pdf文件,然后用mail去调用的.所以不能用response流生成pdf文件.都是通过传来的数据生成的pdf,我其他什么都没有改动,就只是用exportpdffile生成的pdf文件是空白的,但用exporthtmlfile的方法生成的能展现,说明数据源是没问题的.不知道为什么,困绕很久,由于需求只要求传pdf文件,所以不能用html的文件来传送,不知道是不是这两个方法的参数设置有什么不同吗?而且pdf的那两个itext中文包我也导入了,所以不存在字符转换问题
全部回答
  • 1楼网友:西风乍起
  • 2021-02-22 14:06
jrbeancollectiondatasource datasource = new jrbeancollectiondatasource(保存数据的list对象); file reportfile = null; reportfile = new file(this.getservletcontext().getrealpath("/report.jasper")); fileinputstream fis = new fileinputstream(reportfile); outputstream os = null; map parameters = new hashmap();//报表要用的参数 try {     jasperprint jasperprint = jasperfillmanager.fillreport(fis, parameters, datasource);     byte[] bytes = jasperexportmanager.exportreporttopdf(jasperprint);     response.setheader("content-disposition", "attachment;filename=temp.pdf");     os = response.getoutputstream();     os.write(bytes);     os.flush();   } catch (jrexception e) {     e.printstacktrace(); }finally {     try {         if(os!=null)             os.close();         if(fis!=null)             fis.close();     } catch (ioexception e) {         e.printstacktrace();     } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯