bdf2-swfviewer是BDF2提供的一个标准的Dorado Addon,可以在线显示flash动画,同时提供了一个flash形式的小插件,可实现报表的在线预览与打印。
要使用 bdf2-swfviewer模块,我们可以到nexus.bsdn.org上下载最新的 bdf2-swfviewer模块的jar,或者可以到我们提供的在线创建项目向导中选择 bdf2-swfviewer模块并下载即可;同样,如果您采用的是Maven来管理项目,那么只需要将 bdf2-swfviewer模块的依赖信息加到我们的pom.xml当中即可:
<dependency> <groupId>com.bstek.bdf2</groupId> <artifactId>bdf2-swfviewer</artifactId> <version>2.0.0</version> </dependency>
添加完成 bdf2-swfviewer模块后,启动项目工程,在线更新Dorado配置规则文件,更新完成之后,打开一个view,可以在工具栏当中看到如下图所示组件图标:
SwfViewer控件关键属性如下所示;
属性名 | 类型 | 默认值 | 属性描述 |
---|---|---|---|
swfUrl | String | 空 | 如果不指定值,采用默认的url处理dorado/bdf2/swfviewer/swfFile.do |
handlerName | String | 空 | 配合服务端处理类,动态指定swf文件资源位置,需要定义一个类实现com.bstek.bdf2.swfviewer.handler.ISwfFileHandler接口 |
parameter | String | 空 | 服务端处理类可以接受的参数值 |
showType | String | complex | 显示类型,可选值simple、complex |
printEnabled | boolean | true | 是否显示打印按钮 |
在线显示flash动画
在view文件中添加一个SwfViewer控件,指定一个swf资源文件,如下配置所示:
<SwfViewer id="swfViewerTest"> <Property name="showType">simple</Property> <Property name="swfUrl">dorado/res/com/test/black_clock.swf</Property> </SwfViewer>
这样一个简单的配置就完成了,页面运行效果如下图所示:
在线预览和打印
在线预览和打印需要需要将pdf文件通过服务端动态生成swf格式的文件,因此需要安装swftools,swftools提供了一个名为pdf2swf的工具,可以将pdf文件转换成swf文件。swftools的安装配置可以参考bdf1中的相关文档: 6.1.安装与配置SWFTOOLS
安装完成swftools之后,需要在dorado-home/configure.properties文件中指定swftools的安装目录和对应的xpdfpath安装目录。
window系统用户可能的配置如下,
bdf2.swfviewer.pdfToSwf=D:/mysoft/swftools/pdf2swf.exe bdf2.swfviewer.xpdfPath=D:/mysoft/xpdf-chinese-simplified
Linux系统用户可能配置如下,
bdf2.swfviewer.pdfToSwf=/usr/bin/pdf2swf bdf2.swfviewer.xpdfPath=/usr/share/xpdf-chinese-simplified
对指定的pdf文件实现在线预览功能,服务端需要实现com.bstek.bdf2.swfviewer.handler.ISwfFileHandler接口,实现类代码如下所示:
package com.test; import java.io.File; import java.util.Map; import org.springframework.stereotype.Component; import com.bstek.bdf2.swfviewer.controller.PdfToSwfConverter; import com.bstek.bdf2.swfviewer.handler.ISwfFileHandler; @Component public class TestPdfToSwfHandler implements ISwfFileHandler { public String getHandlerName() { return "test.pdf2swfHandler"; } public String getHandlerDesc() { return "在线预览打印pdf文件"; } public File execute(Map<String, Object> varMap) throws Exception { System.out.println(varMap.get("testParameter1")); System.out.println(varMap.get("testParameter2")); File pdfFile = new File("d:/UserInfo.pdf"); String sourcePdf = pdfFile.getAbsolutePath(); PdfToSwfConverter pdfToSwfConverter = new PdfToSwfConverter(); String swf = pdfToSwfConverter.execute(sourcePdf, null); return new File(swf); } }
SwfViewer控件需要设置的代码示例如下,
swfViewer.set("handlerName","test.pdf2swfHandler"); swfViewer.set("parameter",{ testParameter1:"test1", testParameter2:"test2" }); swfViewer.refreshSwf();
通过服务端编写实现类转换pdf为swf文件,在view界面通过SwfViewer控件显示运行效果如下:
点击右上角的打印机图标,即可实现打印功能,如下图所示:
Attachments:
swf.png (image/png)
swfComplex.png (image/png)
print.png (image/png)
no_flash_player.png (image/png)