1、业务场景
一般的业务场景里,只需要将pdf文件下载到本地,然后打开直接打印就可以了。
但是,有的场景会考虑到pdf文件的敏感性,需要pdf文件不能被下载,只能打印且只能打印一次,这就需要考虑使用控件了。
2、Adobe Reader
Adobe Reader是一款优秀的PDF文档阅读软件。你可以使用Adobe Reader查看、打印和管理PDF文件,还可以使用 Adobe Reader的多媒体工具可以播放PDF中的视频和音乐。
这里我们会用到Adobe Reader里面自带的页面控件来实现pdf文件的打印功能。
点击下载Adobe Reader XI 11
3、页面调用Adobe Reader自带的控件实现pdf打印
pdf打印
其中 中的value是pdf文件的相对路径。
需要注意的一点是,360浏览器打开页面时,必须用兼容模式,不然预期功能无法实现。
下面是博主的案例:
当我们移动鼠标时,页面上会浮现出一个工具栏:
这个浮动工具栏有5个按钮,他们的作用从左到右分别是:保存,打印,缩小,放大,显示工具栏。
这里我们点击打印按钮,就可以弹出操作系统自带的打印配置页面了:
配置好相关属性后,点击打印即可成功打印pdf文件。
4、关闭控件的下载功能,且保证用户只能打印1次pdf文件
当有预览界面的时候,用户总能进行下载,所以我们可以去掉预览界面:将object控件中的width和height两个属性均设置为0
去掉预览界面后,我们可以用js代码调用控件提供的相关接口进行打印,代码如下:
pdf打印
该页面只会显示一个打印按钮:
如此,点击打印之后,打印按钮变灰,且跳过打印配置页,直接打印pdf文件(这个时候打印会根据系统配置的默认打印机来打印)。
附:Adobe Reader ActiveX控件对外发布的功能说明
(参考:控件接口实现源码-英文版)
1、GetAcroPdfVersion:获取一个显示Acrobat ActiveX控件版本的值
2、GoBackwardStack:如果前面的视图存在,则转到视图堆栈上的先前视图。前面的视图可能在不同的文档中
3、GoForwardStack:如果下一个视图存在,则转到视图堆栈的下一个视图。下一个视图可能在另一个文档中
4、GotoFirstPage:转到文档的第一页,保持页面内的当前位置和缩放级别
5、GotoLastPage:进入文档的最后一页,保持页面内的当前位置和缩放级别
6、GotoNextPage:如果存在,则进入文档的下一页。保持页面内的当前位置和缩放级别
7、GotoPreviousPage:如果存在,则进入文档的前一页。保持页面内的当前位置和缩放级别
8、LoadFile:打开并在浏览器中显示指定的文档
9、PostMessage:(这个函数没有被Adobe记录下来)
10、Print:根据用户对话框中选择的选项打印文档。这些选项包括嵌入式打印(在给定页面上的一个边界矩形内打印),以及对指定的打印机进行交互式打印。
11、PrintAll:在不显示用户对话框的情况下打印整个文档。使用默认的打印机、页面设置和作业设置。
12、PrintAllFit:在不显示用户对话框的情况下打印整个文档,如果需要,页面会缩小,以适应打印机中页面的可想象区域。使用默认的打印机、页面设置和作业设置。
*注:其有1个参数,在打印文档时确定是否要缩放可映像区域。值为0表示不应该使用扩展,而正值值表明,如果需要,页面会缩小,以适应打印机中页面的可想象区域。
13、PrintPages:打印指定的页面,而不显示用户对话框。使用默认的打印机、页面设置和作业设置。
*注:其有2个参数,指定打印第几页到第几页
14、PrintPagesFit:打印指定的页面,而不显示用户对话框。使用默认的打印机、页面设置和作业设置
*注:其中第3个参数表示在打印文档时确定是否要缩放可映像区域。值为0表示不应该使用扩展,而正值值表明,如果需要,页面会缩小,以适应打印机中页面的可想象区域。
15、PrintWithDialog:根据用户对话框中选择的选项打印文档。这些选项包括嵌入式打印(在给定页面上的一个边界矩形内打印),以及对指定的打印机进行交互式打印。
16、SetCurrentHighlight:突出显示当前页面中指定的边界矩形中的文本选择。
17、SetCurrentPage:转到文档中指定的页面。保持页面内的当前位置和缩放级别
18、SetLayoutMode:根据指定的值设置页面视图的布局模式
19、SetNamedDest:将页面视图更改为指定字符串中的指定目标
20、SetPageMode:根据指定的值设置页面模式
21、ShowScrollbars:确定滚动条是否会出现在文档视图中
22、ShowToolbar:确定工具栏是否会出现在查看器中
23、SetView:根据指定的字符串设置页面的视图
24、SetViewRect:根据指定的坐标设置视图矩形(X偏移,Y偏移,宽度,高度)
25、SetViewScroll:根据指定的字符串设置页面的视图。根据视图模式,页面要么滚动到右边,要么按偏移量指定的数量进行滚动。
26、Zoom:根据指定的值设置放大率
27、SetZoomScroll:根据指定的值设置放大率,并根据指定的数量水平和垂直滚动页面视图。
首次发博文,希望各位朋友积极评论,不吝赐教!