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();
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯