前台JS控制打印PDF文件

//创建一个空的iframe,因为如果每次请求都生成PDF,那么是不必要的。
<iframe style="display:none" id="printIframe"></iframe>

$(document).ready(function(){
    ....
    $("#printIframe").load(function(){//等待iframe加载完成后再执行doPrint.每次iframe设置src之后都会重新执行这部分代码。
        doPrint();
    });
    ....
});
//点击打印按钮,触发事件
function printPDF(){
    var src = $("#printIframe").attr("src");
    if(!src){//当src为空,即第一次加载时才赋值,如果是需要动态生成的话,那么条件要稍稍变化一下
                $("#printIframe").attr("src","./attachment/Images.pdf");//暂时静态PDF文件
    }else
        $("#printIframe")[0].contentWindow.print();//不知为什么在IE中一直无法打印文件

}
转载:https://blog.csdn.net/awallman/article/details/54959109

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
驰骋工作流引擎源码 产品名称: 驰骋.net工作流程引擎. 运行环境: BS结构. windows xp, windows server. win7 IIS6.0以上. .net4.0. Office2007 (如果需要单据打印.) 开发语言: VS2010, .net4.0 c#.net. 客户端: FireFox 3.0以上. IE7+,或者使用IE内核的浏览器. 组成部分: 流程图形设计器(有:cs版本与bs版本)/流程前台运行程序(BS结构)/流程服务(CS)/web的方式的表单设计器/BRP工具 基本功能: 图形化流程设计/智能表单web定义免程序开发/级联下拉框/流程轨迹/单据自定义打印/邮件短信工作到达通知/自动任务分配/支持sdk模式开发/简洁集成/消息侦听/丰富事件接口/报表定义/工作量分析/绩效考核/手机访问/支持sqlserve,oracle,mysql,access数据库 CCFlow功能: 懂管理就会开发基本流程,为单位流程管理系统,会SQL就能达到中级开发水平解决复杂的逻辑问题与其它系统耦合,有程基础就可以使用sdk做高级的开发. 程序运行组件清单. ***************************************************************** 1. .net 4.0 2, owc11.exe 用于生成数据图形分析。 3, SaveAsPDFandXPS.exe 生成pdf文件的组件.【选装】 4, iewebcontrols.msi 控件. 5, vs2010 开发环境(不进行二次开发不必要安装) ***************************************************************** ccflow 开源程序文件清单: ***************************************************************** 组件目录 D:\ccflow\Components 组件目录. D:\ccflow\Components\BP.En30 -- 底层基类. D:\ccflow\Components\BP.Web.Controls30 --bs控件层. D:\ccflow\Components\BP.WFV4 --工作流程引擎层 D:\ccflow\Components\BP.Win32.Controls --cs控件层. D:\ccflow\DLL -- 第三方组件中需要调用dll. D:\ccflow\Documents - 文档 D:\ccflow\VisualFlow --bs工作流程引擎前台. D:\ccflow\VisualWorkFlowServices - 流程服务程序. D:\ccflow\VisualFlowWebDesigner - silverlight流程设计器. D:\ccflow\CCFlowWord2007 - VSTO公文流程. D:\ccflow\ExpandingApplication 行业应用通用代码。 D:\ccflow\Tools 工具 关于: ccflow前台目录结构. D:\ccflow\VisualFlow\Comm --通用功能层. D:\ccflow\VisualFlow\Data -- 应用程序数据目录. 包含一些xml,等等。 D:\ccflow\VisualFlow\Data\Install 与安装有关系的文件 D:\ccflow\VisualFlow\Data\JSLib 系统javascript 函数库。 D:\ccflow\VisualFlow\Data\Language 语言包(完善中) D:\ccflow\VisualFlow\Data\Node cs流程设计器节点类型(cs流程设计器不在发展) D:\ccflow\VisualFlow\Data\XML xml配置文件不仅仅ccflow使用,bp框架也使用它。 用户数据目录。 D:\ccflow\VisualFlow\DataUser -- 用户数据目录。 D:\ccflow\VisualFlow\DataUser\Bill 单据打印生成数据. D:\ccflow\VisualFlow\DataUser\CyclostyleFile 单据模板数据 D:\ccflow\VisualFlow\DataUser\DtlTemplete 导入明细表模板文件. D:\ccflow\VisualFlow\DataUser\EmailTemplete 自定义邮件发送格式文件. D:\ccflow\VisualFlow\DataUser\JSLib 用户自定义函数库 D:\ccflow\VisualFlow\DataUser\JSLibData 用户自定义函数生成文件。 D:\ccflow\VisualFlow\DataUser\Log 系统日志文件 D:\ccflow\VisualFlow\DataUser\ReturnLog 退回日志文件. D:\ccflow\VisualFlow\DataUser\Siganture 签名文件. D:\ccflow\VisualFlow\DataUser\Style 用户自定义风格文件。 D:\ccflow\VisualFlow\DataUser\UploadFile 表单附件上传文件,单附件,与多附件。 D:\ccflow\VisualFlow\DataUser\XML 用户系统配置文件。 D:\ccflow\VisualFlow\WF\DocFlow -- 公文流程(目前还不是很完善) D:\ccflow\VisualFlow\OA -- 通用oa 组件(目前还不是很完善) D:\ccflow\VisualFlow\SDKFlowDemo -- sdk开发模式的案例. D:\ccflow\VisualFlow\WF\WAP -- 手机访问前台代码目录. (说明:对C级用户有效) D:\ccflow\VisualFlow\WF -- ccflow前台应用程序层(主要的功能都是在这个目录里面) D:\ccflow\VisualFlow\WF\Admin - 对ccflow的管理比如设计方向条件.报表定义... D:\ccflow\VisualFlow\WF\MapDef - 表单定义. D:\ccflow\VisualFlow\ClientBin - silverlight 程序.。 CCFlowDesigner.xap流程设计器,CCForm.xap表单设计器。 注意: 源码有详细使用文档,可以下载查看。 用户名是:51aspx 密码是 51aspx 管理员用户名是:admin 密码是 pub 默认添加的用户的密码均是pub 特此声明,网站版权归开发公司所有,此源码仅供学习交流之用,如有违者后果自负
要实现前台调用打印打印PDF文件,可以通过以下步骤: 1. 将PDF文件转换成可打印格式,如图片或HTML。 2. 在前台页面中添加打印按钮,并绑定打印事件。 3. 在打印事件中,使用JavaScript代码调用打印机API,将转换后的文件发送给打印机进行打印。 以下是一个基本的示例代码: ```html <!DOCTYPE html> <html> <head> <title>打印PDF文件</title> </head> <body> <button onclick="printPDF()">打印PDF</button> <script> function printPDF() { // 1.将PDF文件转换成可打印格式 // 可以使用第三方库或者在线转换工具,如pdf2htmlEX、PDF.js等 // 这里以PDF.js为例,将PDF文件转换成HTML格式 var pdfFile = 'example.pdf'; var pdfjsLib = window['pdfjs-dist/build/pdf']; pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.js'; var loadingTask = pdfjsLib.getDocument(pdfFile); loadingTask.promise.then(function(pdf) { pdf.getPage(1).then(function(page) { var canvas = document.createElement('canvas'); var viewport = page.getViewport({scale: 1.0}); canvas.height = viewport.height; canvas.width = viewport.width; var ctx = canvas.getContext('2d'); var renderTask = page.render({canvasContext: ctx, viewport: viewport}); renderTask.promise.then(function() { var imgData = canvas.toDataURL('image/png'); var printWindow = window.open('', '', 'width=800,height=600'); printWindow.document.write('<img src="' + imgData + '" onload="window.print()">'); }); }); }); // 2.绑定打印事件 // 这里以按钮点击事件为例,点击按钮后触发打印事件 // 可以使用其他方式触发打印事件,如定时器、页面加载事件等 var printBtn = document.querySelector('button'); printBtn.addEventListener('click', function() { printPDF(); }); // 3.调用打印机API,将转换后的文件发送给打印机进行打印 // 这里使用JavaScript内置的window.print()方法进行打印 // 也可以使用其他打印机API进行打印,如Web Print API、Google Cloud Print等 window.print(); } </script> </body> </html> ``` 需要注意的是,该示例代码中使用了PDF.js库将PDF文件转换成HTML格式,因此需要引入相关的库文件。同时,由于涉及到文件转换和打印机API调用,可能存在一些兼容性问题,需要进行充分的测试和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值