当前位置:  开发笔记 > 编程语言 > 正文

可以使用Javascript打开PDF文件的打印对话框吗?

如何解决《可以使用Javascript打开PDF文件的打印对话框吗?》经验,为你挑选了5个好方法。

我知道如何在新窗口中打开网页并添加javascript,以便弹出打印对话框.有没有办法用PDF文件做类似的事情?



1> Edward..:

是的你可以...

PDF有Javascript支持.当创建PHP生成的PDF并且我能够使用FPDF使其工作时,我需要具有自动打印功能:

http://www.fpdf.org/en/script/script36.php



2> brandonjp..:

我通常使用一种类似于如何使用JavaScript打印PDF(eHow.com)的方法iframe.

    一个容纳打印触发器的功能......

    function printTrigger(elementId) {
        var getMyFrame = document.getElementById(elementId);
        getMyFrame.focus();
        getMyFrame.contentWindow.print();
    }
    

    一个按钮,让用户访问...

    (在onClickabuttoninput任何你想或)

    
    

    iframe指向你的PDF ...

    
    


奖金创意#1 - 创建iframe并将其添加到您的页面中,printTrigger(); 以便在用户单击"打印"按钮之前不加载PDF,然后javascript可以攻击!iframe并触发打印对话框.


奖金创意#2 - 如果您禁用"打印"按钮并在用户点击后向用户提供一些加载微调器或其他内容,则会获得额外的功劳,这样他们就可以知道正在处理的内容而不是反复点击它!


这个答案不再适用于Firefox(目前为v25)http://stackoverflow.com/questions/15011799/firefox-19-print-pdf-from-javascript?lq=1请参阅错误报告:https://bugzilla.mozilla .ORG/show_bug.cgi?ID = 911444
在Google Chrome中加载PDF时似乎没有定义contentWindow

3> mheavers..:

刚知道如何在PDF本身内执行此操作 - 如果您有acrobat pro,请转到页面选项卡,右键单击第一页的缩略图,然后单击页面属性.单击窗口顶部的操作选项卡,然后在选择触发器下选择打开页面.在选择操作下选择"运行javascript".然后在javascript窗口中输入以下内容:

this.print({bUI: false, bSilent: true, bShrinkToFit: true});

这将打印您的文档,而无需与计算机上的默认打印机对话.如果需要打印对话框,只需将bUI更改为true,将bSilent更改为false,并可选择删除缩小以适合参数.

自动打印PDF!


这对我有所帮助,但应该注意的是,根据[文档](http://livedocs.adobe.com/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Acrobat9_HTMLHelp&file=JS_Dev_PrintProduction. 75.4.html)这也可以通过使用printParams对象来实现,这可能会派上用场,因为我在其他地方读到如果传递了printParams,print方法会忽略所有其他参数(我需要NumCopies参数)

4> some..:

我使用named action而不是javascript,因为javascript经常被禁用,如果不是,它会发出警告.

我的Web应用程序创建一个postscript文件,然后使用ghostscript转换为pdf.我希望它自动打印,因为用户已经在我的应用程序中点击了打印.通过上面有关@DSimon命名操作的信息,我研究了如何解决这个问题.这一切都归结为将字符串插入/Type /Action /S /Named /N /Printpdf中的正确位置.

我正在考虑编写一个小实用程序,但它必须解析pdf以找到根节点,插入/OpenAction带有操作的引用对象,并重新计算外部参照中的字节偏移量.

但后来我发现了pdfmark这是postscript的扩展,用于在postscript语法中表达由Adobes酒糟或ghostscript转换为pdf的习语.

由于我已经在使用ghostscript,所以我要做的就是将以下内容附加到我的postscript文件的末尾:

%AUTOPRINT
[ /_objdef {PrintAction} /type /dict /OBJ pdfmark
[ {PrintAction} << /Type /Action /S /Named /N /Print >> /PUT pdfmark
[ {Catalog} << /OpenAction {PrintAction} >> /PUT pdfmark

和ghostscript将创建动作,链接它,并计算外部参照偏移.(在postscript中%是注释,PrintAction是我对象的名称)

通过查看PDF,我发现它创建了这个:

1 0 obj
<>
endobj

9 0 obj
<>endobj

1 0对象1,修订版0,并且9 0是对象9,修订版0.在pdf-trailer中表示它是作为根节点的对象1.如您所见,对象1有一个引用,/OpenAction用于运行对象9的修订版0.

使用ghostscript可以将pdf转换为postscript(pdf2ps),附加上面的文本,然后将其转换回pdf ps2pdf.应该注意的是,关于pdf的元信息在此转换中丢失.我没有更多地搜索这个.



5> 小智..:

嵌入代码示例:




可能不得不愚弄ids /名字.使用adobe reader ......

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有