关于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

 

 


在部署第5flashprint.jsp中可改属性:

1、  直接打印

标签frtag继承了标签html的所有属性。

增加了新属性directFlashPrint,这个属性是可选的,取值范围:true|false ,默认值为false

directFlashPrinttrue时,在点击flash打印按钮时,不会显示flash打印界面,直接调用flash打印的全部打印方法。

directFlashPrintfalse时,在点击flash打印按钮时,会显示flash打印界面,用户可以在显示界面上进行打印操作。

2、批量直接打印

frtag中增加了新属性directBatchPrint,来提供批量直接打印功能。这个属性是可选的,取值范围:true|false,默认值为false

 

directBatchPrinttrue时,frtag中只有属性namereportFileName是有效的且必须设置,其他的属性将被忽略,其中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打印界面,点击全部打印按钮后,按钮变灰不可用,打印完成后才能恢复成可点击状态

为用户开放了flash2个方法调用:使全部打印按钮不可用、使全部打印按钮恢复可用

  使用说明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-xpdfrcdisplayCIDFontTT      Adobe-GB1 ./CMap/gkai00mp.ttf后使其遇到dialog字体不报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值