16.BDF2-SWFVIEWER

2023-07-03 17:38 更新
bdf2-swfviewer是BDF2提供的一个标准的Dorado Addon,可以在线显示flash动画,同时提供了一个flash形式的小插件,可实现报表的在线预览与打印。
要使用bdf2-swfviewer模块,我们可以到nexus.bsdn.org上下载最新的bdf2-swfviewer模块的jar,或者可以到我们提供的在线创建项目向导中选择bdf2-swfviewer模块并下载即可;同样,如果您采用的是Maven来管理项目,那么只需要将bdf2-swfviewer模块的依赖信息加到我们的pom.xml当中即可:
bdf2-swfviewer模块依赖
<dependency>
 <groupId>com.bstek.bdf2</groupId>
 <artifactId>bdf2-swfviewer</artifactId>
 <version>2.0.0</version>
</dependency>
添加完成bdf2-swfviewer模块后,启动项目工程,在线更新Dorado配置规则文件,更新完成之后,打开一个view,可以在工具栏当中看到如下图所示组件图标:
SwfViewer控件关键属性如下所示;
属性名
类型
默认值
属性描述
swfUrlString如果不指定值,采用默认的url处理dorado/bdf2/swfviewer/swfFile.do
handlerNameString配合服务端处理类,动态指定swf文件资源位置,需要定义一个类实现com.bstek.bdf2.swfviewer.handler.ISwfFileHandler接口
parameterString服务端处理类可以接受的参数值
showTypeStringcomplex显示类型,可选值simple、complex
printEnabledbooleantrue是否显示打印按钮

在线显示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",
 testParameter1:"test2"
});
swfViewer.refreshSwf();
通过服务端编写实现类转换pdf为swf文件,在view界面通过SwfViewer控件显示运行效果如下:
点击右上角的打印机图标,即可实现打印功能,如下图所示:

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号