调用MyReport实现js直接打印

news/2024/5/19 18:01:02 标签: javascript, FLEX, MyReport, 打印, Web



生成MyReport打印控件

打开Flash Builder添加一个应用,命名为MyReportPrintApp

封装myreport打印方法让外部js能够访问,MyReportPrintApp.mxml代码如下:

 

<?xmlversion="1.0" encoding="utf-8"?>

<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"

                           xmlns:myreport="myreport.*"

                           minWidth="800"minHeight="600" backgroundColor="0xffffff"creationComplete="Init()"

                           fontFamily="Simsun"layout="horizontal" paddingBottom="0"paddingLeft="0"

                           paddingRight="0"paddingTop="0">

       <!--

      

       该文件把MyReport打印功能打包成独立的swf应用,通过jshtml页面交互调用。

      

       -->

       <mx:Stylesource="Index.css"/>

      

       <mx:Script>

              <![CDATA[

                     importmx.collections.ArrayCollection;

                    

                     importmyreport.MyReportEvent;

                     importmyreport.ReportEngine;

 

                     private function Init():void

                     {

                           //注册打印事件

                           ReportEngine.AddEventListener(myreport.MyReportEvent.PRINT,OnPrint);

                           AddExtInterface();

                           OnMyReportInitialized();

                     }

               

                     private functionOnPrint(event:MyReportEvent):void

                     {

                           //处理打印事件

                           OnMyReportPrinted();

                     }

               

                     private functionAddExtInterface():void

                     {

                           if(ExternalInterface.available)

                           {

                                  ExternalInterface.addCallback("loadAndPrint",LoadAndPrint);

                           }

                     }

                     //==============定义外部访问接口====================

                     /**

                      * 加载完成时调用,通知外部初始化加载已完成

                      * (主动调用)

                      */

                     private functionOnMyReportInitialized():Object

                     {

                           if(!ExternalInterface.available)

                                  return 0;

                           returnExternalInterface.call("onMyReportInitialized");

                     }

        

                     /**

                      * 打印时调用,通知外部执行了打印功能

                      * (主动调用)

                      */

                     private function OnMyReportPrinted():Object

                     {

                           if(!ExternalInterface.available)

                                  return 0;

                           returnExternalInterface.call("onMyReportPrinted");

                     }

                     /**

                      * 加载报表和数据并且打印

                      * (被动调用,必须在onMyReportInitialized执行后调用)

                      */

                     private functionLoadAndPrint(url:String, params:Object, table:Array):void

                     {

                           ReportEngine.LoadAndPrint(url,newArrayCollection(table), params);

                     }

              ]]>

       </mx:Script>

 

</mx:Application>

 

编译生成MyReportPrintApp.swf,拷贝出来使用。

 

调用MyReport打印控件

MyReportPrintApp.swf嵌入到html页面,编写js调用myreport,实现直接打印

html/js代码如下:

 

<!DOCTYPE htmlPUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title>jsflash交互:js直接打印</title>

    <script type="text/javascript" src="swfobject.js"></script>

    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>

    <script type="text/javascript">

        //一下脚本用于动态创建swf节点

        var swfVersionStr = "11.1.0";

        var xiSwfUrlStr = "playerProductInstall.swf";

        var flashvars = {};

        var params = {};

       params.quality = "high";

        //params.bgcolor = "#ffffff";//去掉背景色

       params.allowscriptaccess = "sameDomain";

       params.allowScriptAccess = "always";

        params.allowfullscreen= "true";

        var attributes = {};

       attributes.id = "MyReportPrintApp";

       attributes.name = "MyReportPrintApp";

       attributes.align = "middle";

       swfobject.embedSWF("MyReportPrintApp.swf","flashContent", "10px", "10px",swfVersionStr, xiSwfUrlStr, flashvars, params, attributes);

    </script>

    <script type="text/javascript">

       $(document).ready(function () {

           onPageLoad();

        });

 

        var myReportAPI; //定义MyReport接口对象

        var myReportInit = false;//定义MyReport初始化变量

 

        //页面加载完成时调用

        function onPageLoad() {

           myReportAPI = document.getElementById("MyReportPrintApp");

 

        }

 

        //自定义打印方法1

        function loadAndPrint1(){

           var url = "xml/ReportStyle1.xml";//报表模板请求地址

 

           //报表参数数据,这里为了测试方便使用了静态的数据,实际使用时应该向服务端动态请求数据。

           var params = {};

           params["单据编号"] = "KA06417033944";

           params["单据日期"] = newDate();

           params["主标题"] = "销售单";

           params["公司名称"] = "XXXX贸易公司";

           params["经手人"] = "某某某";

           params["公司地址"] = "广州市天河区天河路xx xx大厦 xx";

           params["公司电话"] = "66866888";

           params["公司"] = { "地址": "广州市天河区天河路xx xx大厦 xx", "电话": "66866888"};

 

           //报表表格数据,这里为了测试方便使用了静态的数据,实际使用时应该向服务端动态请求数据。

           var table = newArray();

           for (vari = 0; i < 25; i++) {

               table.push({ ID: i, 名称: "商品信息XXX 规格XXX 型号XXX", 数量:i + 1, 金额: (i + 1) * 10, 日期: new Date() });

           }

 

           myReportLoadAndPrint(url,params,table);

        }

 

        /**

        * 加载完成时调用,通知外部初始化加载已完成

        *(flash to js:主动调用)

        */

        function onMyReportInitialized() {

           myReportInit = true;

           //以下是自定义代码

           //alert("MyReport初始化。");

        }

 

        /**

        * 打印时调用,通知外部执行了打印功能

        *(flash to js:主动调用)

        */

        function onMyReportPrinted() {

           //以下是自定义代码

           alert("MyReport打印完成。");

        }

 

        /**

        * 加载报表和数据并且打印

        *(js to flash:被动调用,必须在onMyReportInitialized执行后调用)

        *@param url: 报表格式路径

        *@param paramList: 报表参数数据(多份数据),Array或者null

        *@param tableList: 报表表格数据(多份数据),Array或者null

        */

        function myReportLoadAndPrint(url, paramList,tableList) {

           if (!myReportAPI || !myReportInit) {

               alert("打印控件未就绪!")

               return;

           }

           myReportAPI.loadAndPrint(url, paramList, tableList);

        }

    </script>

</head>

 

<body>

<p style=" text-align:center">该示例演示在页面嵌入MyReport打印控件,使用jsflash插件进行交互,实现js直接打印</p>

 

<div style=" text-align:center"><buttontype="button"onclick="loadAndPrint1()">直接打印</button> </div>

 

<div id="flashContent" style="visibility: hidden">

 

</div>

</body>

</html>

 

浏览效果

 


在线效果演示

 

如何获得myreport

MyReport产品网站


相关文章

MyReort专栏



http://www.niftyadmin.cn/n/1574477.html

相关文章

如何优雅的打包 Spring Boot 应用

为什么80%的码农都做不了架构师&#xff1f;>>> 阅读前请先思考下如果让你将 Spring Boot 应用打成一个压缩包、解压直接运行如何实现&#xff1f; 下面看老司机是如何做的。 0x 下载 Spring Boot 程序示例 下载示例解压下载的文件&#xff0c;删除无用的文件只保留…

大数据研发语言高级学习路线图!

Java是大数据最常见的研发语言。 Java是现阶段中国互联网公司中&#xff0c;覆盖度最广的研发语言&#xff0c;掌握了Java技术体系&#xff0c;不管在成熟的大公司&#xff0c;快速发展的公司&#xff0c;还是创业阶段的公司&#xff0c;都能有立足之地。 有不少朋友问&#x…

解决flash在chrome浏览器打印空白的问题

打开chrome地址栏输入&#xff1a;chrome://plugins打开插件视图&#xff0c;点详细信息&#xff0c;找到Adobe Flash Player插件停用Adobe Flash Player的PPAPI类型停用后就能够正常打印&#xff0c;不出现空白。如何获得myreportMyReport产品网站相关文章MyReport专栏

印象笔记设置背景色的变通方法

开始使用印象笔记时&#xff0c;一直盯着看眼疲劳&#xff0c;就想设置一个保护色&#xff0c;在网上找了一些方法&#xff0c;但感觉都不太好用&#xff08;个人使用不习惯&#xff09;。在之后的使用中发现了一个变通方法可以达到设置背景色的目的。 首先&#xff0c;印象笔记…

你真的知道什么是“大数据”吗?

导读&#xff1a;这些年&#xff0c;大数据作为一个时髦概念&#xff0c;出现频率很高&#xff0c;关注度也很高。 今天这篇文章&#xff0c;就让我们花5分钟的时间&#xff0c;来深入了解一下&#xff0c;到底什么是大数据。 对于很多人来说&#xff0c;当他第一次听到“大数…

Flex:生成zip文件

Flex&#xff1a;生成zip文件采用aszip代码库生成&#xff0c;以下是测试代码&#xff0c;生成多个目录多个文件<?xmlversion"1.0" encoding"utf-8"?><s:Applicationxmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:s"library:/…

VB.NET 随笔

一.数据类型  1.VB.net 数据分为值类型和引用类型&#xff08;值位于堆栈&#xff0c;引用位于托管堆&#xff09;  2.条件语句    if ...then    else (if)    end if  3.比较运算符     < < > >     And or 逻辑叠加 进行最短路径优化…

MyReport有填报功能了!!!MyReport.Form表单引擎

MyReport.Form表单引擎&#xff0c;主要提供表单模板的设计以及表单模板的预览填报等功能集合。支持文本框、选择框、数字框、日期框、图片框、组合框、弹出框等常用控件。支持表格行的添加&#xff0c;删除&#xff0c;移动等常见操作&#xff0c;输入焦点自动导航。支持表达式…