关于flash打印
部署第一步,给现有工程添加jar包,(flashprint-ext.jar) ? 第二步,修改现有工程的WEB.XML文件,添加一个servlet配置: ?????? <servlet> ????????????? <servlet-name>DirectPrintServlet</servlet-name> ????????????? <servlet-class> ???????????????????? com.runqian.report4.print.DirectPrintServlet ????????????? </servlet-class> ?????? </servlet> ? ?????? <servlet-mapping> ?????? ?????? <servlet-name>DirectPrintServlet</servlet-name> ????????????? <url-pattern>/DirectPrintServlet</url-pattern> ?????? </servlet-mapping> ? 第三步,把flashPrint文件夹放到项目应用根目录下,如DEMO应用就放到/demo下,reportmis应用就放到/reportmis下 ? 第四步,替换项目应用WEB-INF文件夹下的runqianReport4.tld文件(文件相对于旧文件增加了frtag标签的配置) ? 第五步,在展现报表的页面中,将原来的html标签修改为flash打印的frtag标签(见后面的标签的介绍),并增加新的标签属性directFlashPrint,该标签为非必选标签,可选值为true|false,默认值为false。 例如将showReport.jsp另存为flashprint.jsp,然后修改flashprint.jsp中的内容: 原代码: <report:htmlname="report1" reportFileName="<%=report %>" ?????? .... ?????? .... /> ? 修改后: <report:frtagname="report1" reportFileName="<%=report %>" ?????? .... ?????? directFlashPrint="true" ?????? .... /> ? Linux下使用在linux下,主要是SWFTOOLS工具的配置,其他的部分,和前面一样。 使用swftools-0.9.0.tar.gz, 1.解压 # tar –xzvfswftools-0.9.0.tar.gz 2.进入目录,执行,生成makefile文件 #cd swftools-0.9.0 #./configure #make #make install 过程中,可能会报错,说缺少jpeglib,和freetype,根据文件夹中的文件安装jpeglib,和freetype安装方法跟swftools的一样, 如果安装完jpeglib,和freetype,如果还是说找不到,是因为jpeglib安装到了/usr/local/lib目录下,用这个命令来生成makefile rm -f config.cache
LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure
? 具体的参照http://wiki.swftools.org/index.php/FAQ关于linux下安装的FAQ ? ? 在部署第5步flashprint.jsp中可改属性: 1、??直接打印标签frtag继承了标签html的所有属性。 增加了新属性directFlashPrint,这个属性是可选的,取值范围:true|false ,默认值为false directFlashPrint为true时,在点击flash打印按钮时,不会显示flash打印界面,直接调用flash打印的全部打印方法。 directFlashPrint为false时,在点击flash打印按钮时,会显示flash打印界面,用户可以在显示界面上进行打印操作。 2、批量直接打印frtag中增加了新属性directBatchPrint,来提供批量直接打印功能。这个属性是可选的,取值范围:true|false,默认值为false。 ? directBatchPrint为true时,frtag中只有属性name、reportFileName是有效的且必须设置,其他的属性将被忽略,其中reportFileName的值为报表和参数的集合,格式为:{无参数报表名}{报表1(参数1=value1;参数2=value2;...)}{报表2(参数1=value1;参数2=value2;...)}... 例如:{a.raq}{b.raq(arg1=30;rg2=40)}{c.raq} ? 设置好后,页面将不显示报表,只显示“直接批量打印”按钮,点击批量直接打印按钮后,将直接打印报表。该功能为用户提供js接口AfterPrint,用户可以在该js中编写需要的代码,在打印完成后,该函数会被自动调用。 ? 3、按钮风格在frtag中新增属性flashPrintLable, 这个属性是可选的,取值范围:HTML元素|文字,默认值为空。它可以用HTML来定义frtag标签的flash打印按钮、批量直接打印按钮的风格,当该属性为默认值或不定义时,标签会自动生成flash打印按钮。 使用说明: <% ?? //定义打印按钮显示风格 String printImage = "<imgsrc='" + appmap + "/images/print.gif' border=no >";? %> <report:frtag name="report1"reportFileName="<%=report %>" ??? .... ??? flashPrintLable="<%=printImage %>" ??? .... /> 4、是否重新打印AfterPrint函数能够在用户确认进行全部打印后,提供需要的后续处理,如:用户希望打印后在数据库中增加此次打印事件的一条记录、提示是否再次进行打印等功能。 AfterPrint函数使用示例: 增加下面这个js函数: function AfterPrint(){ ????????????? if(confirm("你确定要重新打印吗?")){ ???????????????????? varflashFrame = getFlashMovieObject("flashFrame"); ???????????????????? flashFrame.printAll(); ?????? ??? } ?????? } 该函数将会在用户确认全部打印后调用,提示用户是否进行全部打印操作。 ? ? 5、隐藏按钮隐藏flash打印界面js函数hideFlash hideFlash使用示例js代码: function AfterPrint(){ ????????????? if(confirm("你确定要隐藏打印界面吗?")){ ???????????????????? hideFlash();? ??? } ?????? } 该函数将会在用户确认全部打印后调用,提示用户是否隐藏flash打印界面。 ? 6、全部打印按钮在flash打印界面,点击全部打印按钮后,按钮变灰不可用,打印完成后才能恢复成可点击状态 为用户开放了flash的2个方法调用:使全部打印按钮不可用、使全部打印按钮恢复可用 ? 使用说明js: functionAfterPrint(){ ????????????? varflashFrame = getFlashMovieObject("flashFrame"); ????????????? if(confirm("你确定要使全部打印按钮失效吗?")){ ???????????????????? flashFrame.setPrintLableDisabled(); ?????? ??? }else{ ?????? ??? ????? flashFrame.setPrintLableEnabled(); ?????? ??? } ?????? } ? ? 7、?? 特殊部分:关于修改JAR包中xpdf来适应字体在JAR包深处(com.runqian.report4.print),有一XPDF文件夹,其作用是为PDF2SWF提供中文支持,里面有2个配置文件(xpdfrc和/chinese-simplified/add-to-xpdfrc)。目前里面采用相对路径,进行字体配置,也可采用绝对路径,Cmap里有2个字体文件,是后来添加的。配置文件的属性项,一般来说不用修改,修改其后边的路径值即可。这里是修改了add-to-xpdfrc中displayCIDFontTT????? Adobe-GB1 ./CMap/gkai00mp.ttf后使其遇到dialog字体不报错。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |