使用Javascript打印输出

教学视频

概述

通过引用报表中的一个Javascript文件,调用该文件中的相关方法,实现报表的预览、打印和导出功能。

引用Javascript文件

Javascript文件URL格式如下:

http[s]://host[:port]/[context-path]/baskreport/res/baskreport/js/report.bundle.js

在我们的HTML文件中通过上面的URL引入BaskReport中提供的名为report.bundle.js的Javascript文件后,接下来就可以在自己的Javascript代码中通过Javascript调用实现特定报表的预览、打印和导出功能。

使用Javascript调用报表

引入report.bundle.js文件后,当前的HTML文件中就可以直接使用BaskReport这个Javascript对象,这个对象中提供的方法如下表所示:

方法名 说明 语法
doPrint 直接打印报表文件 BaskReport.doPrint({id:reportFileId,[parameters:{name:value},] baseUrl:reportServerUrl});
doMultiPrint 直接打印多个报表文件,
将多个报表文件合并在一个文件中打印输出
BaskReport.doMultiPrint({files:[ { id:reportFileId[,parameters:{name:value}] }, { id:reportFileId[,parameters:{name:value}] } ], baseUrl:reportServerUrl});
doPreview 新开窗口以HTML形式预览报表文件 BaskReport.doPreview({id:reportFileId, [parameters:{name:value},] baseUrl:reportServerUrl});
doExportWord 直接将报表文件以word形式导出 BaskReport.doExportWord({ id:reportFileId, [parameters:{name:value},] baseUrl:reportServerUrl});
doExportExcel 直接将报表文件以excel形式导出 BaskReport.doExportExcel({ id:reportFileId, [parameters:{name:value},] baseUrl:reportServerUrl});
doExportPdf 直接将报表文件以pdf形式导出 BaskReport.doExportPdf({ id:reportFileId, [parameters:{name:value},] baseUrl:reportServerUrl});
doExportCsv 直接将报表文件以csv形式导出 BaskReport.doExportCsv({ id:reportFileId, [parameters:{name:value},] baseUrl:reportServerUrl});
doExportMultiPdf 直接导出多个报表文件,
s将多个报表文件合并在一个pdf文件中导出
BaskReport.doExportMultiPdf({ files:[ { id:reportFileId[,parameters:{name:value}] }, { id:reportFileId[,parameters:{name:value}] } ] baseUrl:reportServerUrl});

上面的语法中,reportFileId表示具体的报表文件ID,parameters属于可选参数,baseUrl表示报表服务器的URL,比如:http://192.168.18.106:8081/baskreport-test

在BaskReport当中如果需要匿名访问某个报表文件,我们需要对报表文件进行分享,通过分享URL中定义的KEY值就可以实现在不登录系统的情况下对报表文件的预览。

上面的方法中,都是通过具体的报表文件ID来访问报表文件,这是在登录当前系统的情况下;如果需要不登录系统访问,那么这里的id参数就需要换成key参数,key的值就是分享文件的key值(点击此处了解文件分享),这样就可以实现通过Javascript代码在其它系统中匿名访问报表文件。

举例:

BaskReport.doPrint({
            key:"QwesDe3",
            baseUrl:REPORT_BASE_URL
        });

上面的JS代码中,调用了BaskReport对象的doPrint方法来打印一个报表,这里我们通过值为"QwesDe3"的分享key值代替报表文件的ID来调用这个报表文件。

除doPrint方法外,BaskReport对象的其它方法中都可以使用key来替代id实现对报表文件的调用操作。

举例

下面的jsp中包含五个按钮,通过引用report.bundle.js文件,使用BaskReport对象提供的对应方法,实现打印单张报表、打印多张报表、预览HTML报表、导出Word以及导出多张报表到一个PDF文件的功能,JSP源码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
<script type="text/javascript" src="http://192.168.18.106:8081/baskreport-test/baskreport/res/baskreport/js/report.bundle.js"></script>
</head>
<body>
<button onClick="print()">打印单张报表</button>
<button onClick="multiprint()">打印多张报表</button>
<button onClick="preview()">预览HTML报表</button>
<button onClick="exportWord()">导出Word</button>
<button onClick="multiexport()">导出多张报表到一个PDF文件</button>
<script>
    var REPORT_BASE_URL = 'http://192.168.18.106:8081/baskreport-test';
    function print(){
        BaskReport.doPrint({
            id:2001,
            baseUrl:REPORT_BASE_URL
        });
    }
    function multiprint(){
        BaskReport.doMultiPrint({
            baseUrl:REPORT_BASE_URL,
            files:[
                {
                    id:2001
                },
                {
                    id:1501
                }
            ]
        });
    }
    function multiexport(){
        BaskReport.doExportMultiPdf({
            baseUrl:REPORT_BASE_URL,
            files:[
                {
                    id:2001
                },
                {
                    id:1501
                }
            ]
        });
    }
    function preview(){
        BaskReport.doPreview({
            baseUrl:REPORT_BASE_URL,
            id:1501
        });
    }
    function exportWord(){
        BaskReport.doExportWord({
            baseUrl:REPORT_BASE_URL,
            id:1501
        });
    }
</script>
</body>
</html>

上面的例子当中,通过REPORT_BASE_URL变量定义要操作的报表文件所在的应用地址,REPORT_BASE_URL的值为:http://192.168.18.106:8081/baskreport-test,这里的**baskreport-test**为应用的contextpath,需要注意的是,如果我们的应用没有contextpath,那么REPORT_BASE_URL的值就应该为:http://192.168.18.106:8081。

预览效果如下图:

d

results matching ""

    No results matching ""