页面调用Adobe Reader自带的控件实现pdf打印

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打印


<html>
	<head>
		<meta charset="UTF-8">
		<title>pdf打印</title>
	</head>
	<body>
		<div align="center">
			<object id="pdfObj" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="950" height="562" border="0">
				<param name="src" value="print/myfile.pdf" />
			</object>
		</div>
	</body>
</html>


      其中<param name="src" value="print/myfile.pdf" />  中的value是pdf文件的相对路径。

      需要注意的一点是,360浏览器打开页面时,必须用兼容模式,不然预期功能无法实现。


      下面是博主的案例

       Adobe Reader ActiveX控件 打印pdf文件案例1


      当我们移动鼠标时,页面上会浮现出一个工具栏:


       预览界面浮动工具栏


      这个浮动工具栏有5个按钮,他们的作用从左到右分别是:保存,打印,缩小,放大,显示工具栏。


      这里我们点击打印按钮,就可以弹出操作系统自带的打印配置页面了:


      打印配置页

      配置好相关属性后,点击打印即可成功打印pdf文件。


4、关闭控件的下载功能,且保证用户只能打印1次pdf文件


      当有预览界面的时候,用户总能进行下载,所以我们可以去掉预览界面:将object控件中的width和height两个属性均设置为0

      去掉预览界面后,我们可以用js代码调用控件提供的相关接口进行打印,代码如下:

<html>
	<head>
		<meta charset="UTF-8">
		<title>pdf打印</title>
	</head>
	<body>
		<div align="center">
			<button id="prtBtn" onclick="printPage()">打印(P)</button>
			<object id="pdfObj" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="0" height="0" border="0">
				<param name="src" value="print/myfile.pdf" />
			</object>
		</div>
		<script type="text/javascript">
		function printPage(){
			try {
				 pdfObj.PrintAll();
				 document.getElementById("prtBtn").setAttribute("disabled", true);
			} catch (e) {
				alert("未安装adobe reader插件,请联系管理员安装!");
			}
		}
		</script>
	</body>
</html>


      该页面只会显示一个打印按钮:


      Adobe Reader ActiveX控件 打印pdf文件案例2


      如此,点击打印之后,打印按钮变灰,且跳过打印配置页,直接打印pdf文件(这个时候打印会根据系统配置的默认打印机来打印)。

附:Adobe Reader ActiveX控件对外发布的功能说明


      (参考:控件接口实现源码-英文版

      Adobe Reader ActiveX控件提供的Methods


      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:根据指定的值设置放大率,并根据指定的数量水平和垂直滚动页面视图。

                                                                                                                                               


首次发博文,希望各位朋友积极评论,不吝赐教!

如果你想要联系博主,可以加博主的私人QQ:987031490

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章