jasperprint java_jasperreport和JPS(java print service)的联合应用

一。JPS

1。黑夜:打印一直是JAVA的软肋,就连比较新的1.5,1.6里面出现的JPS服务也不例外,看DEMO上的几个例子,都是蛮好的,也都能运行,但是实际打印的时候一直存在一个问题,就是lookup不到指定的PrintService,我试了一下,我们办公室的打印机只支持text/plain,text/html,image/gif,image/jpg等几种格式,还有几种

x-java-jvm-local-objectref不明白是什么东东。 而自己要想打印的rtf,doc,xls格式都没有。

2。曙光:东西并不一定是新的好啊。

jdk1.2开始提供了一个打印接口Printable,利用Graphics图形环境画出打印内容,虽然很麻烦,但是灵活性也是最大,如果能获取到rtf,doc,xls这些文件的位置信息和内容信息就应该行的。

二。jasperreport

3。黎明前的黑暗:我们的应用原来的做法是用jasperreport导出为rtf文件,然后利用jacob调用word的打印功能。所以先要研究一下rtf文件里面的位置和内容信息。看看jasperreport是怎样把位置和内容导出为RTF的,只要在导出的地方换成用Graphics画出来就行。

但是看了代码以后,就觉得太麻烦了,里面70%的代码都是在生成rtf的控制字符,实际输出地方的代码又被包装过了,看不出什么东西来,很郁闷

4。天亮:看jasperreport的源代码时无意中注意到有一个JRPrintServiceExporter,到里面一看,正好,正是自己想要的。真是“山穷水复疑无路,柳暗花明又一村”。

5。白天(好上班):简单写一个过程,以免忘记:

a)。用IREPORT编辑 .jrxml文件,编译后生成 .jasper 文件。

b)。用数据填充 jasper ,生成 JasperPrint

JasperPrint jasperPrint =

JasperFillManager.fillReport(jasperReport,

reportParamMap,

jrDs);

c)。导出到打印机

JRPrintServiceExporter pse=new JRPrintServiceExporter();

pse.setParameter(JRExporterParameter.JASPER_PRINT,

jasperPrint);

PrintServiceAttributeSetprintServiceAttributeSet= new

HashPrintServiceAttributeSet();

printServiceAttributeSet.add(new

PrinterName("printer name", null)); //设定哪台打印机打印

pse.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,

Boolean.FALSE);

pse.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,

Boolean.FALSE);

pse.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,

printServiceAttributeSet); pse.exportReport();

6。黄昏:打印是打印出来了,但是还是有一个瑕疵:JPS(不如说是java),本身不支持TrueType字体,所以打印出来的没有用word打印出来的rtf的字体好看。看来还是要看看源代码后再做修改。

7。有灯光的办公室:

看来还是对jasperreport和ireport了解的不够啊,如果要打印出的字体是TrueType字体,只要在ireport中的Font选项卡中

Font Name 选中文字体(如“宋体”),PDF Encoding选中“UniGB-UCS2-H (Chinese

Simplified)”(可能不用这个),就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值