繁体   English   中英

如何强制浏览器打印PDF版本的网页?

[英]How can I force the browser to print a PDF version of a webpage?

将静态HTML页面视为test.html ,并且页面的可打印版本已存储在test.pdf 当访问者告诉他们的浏览器打印时,如何引导浏览器加载并打印test.pdf而不是test.html

如果不可能,我怎样才能在HTML页面中引入打印按钮(使用JavaScript)呢?

您无法强制浏览器打印与用户请求/查看不同的文件。 那将是一场安全噩梦!

选项1(JS(根据要求)和HTML)

我建议在您的网站上创建一个printable version链接,将用户引导至.pdf(最好在新窗口中打开PDF)。

<!-- JS -->
<script type="text/javascript">
    function LoadPrintableVersion() {
        window.open("Test.pdf");
    }
</script>

<!-- HTML -->
<span id="spanPrintableVersion" onclick="LoadPrintableVersion()">
    Printable Version
</span>

选项2(纯HTML)

<a href="test.pdf" target="_blank">Printable Version</a>

你不能在浏览器中劫持打印命令,但你可以劫持键盘快捷键(虽然我不推荐它),这样当用户使用ctrl/cmd + p打印时,它会重定向到PDF(或做其他事情) )。 这是一个可用的雷区,你应该只是创建一个大的链接,说“打印版本”并将其链接到PDF(或使用打印友好的CSS页面的版本)。

另一个不错的选择是简单地为CSS文件中的print介质类型定义一些规则,然后浏览器将在用户打印时应用这些规则,而不需要任何黑客或javascript。

但是因为你问我为print命令创建了一个小的快捷方式劫持脚本。 由于mac命令键,它有点棘手,但是类似于:

var cmd = false;

$(document).on('keydown', function(e) {

    if(detectMacCommand(e.which)) {
        cmd = true;
        return;
    }

    // now detect print (ctr/cmd + p)
    if ( e.which == 80 && ( e.ctrl || cmd ) ) {
        e.preventDefault();
        alert('redirect to PDF');
    }

}).on('keyup', function(e) {

    if(detectMacCommand(e.which)) {
        cmd = false;
        return;
    }

});

function detectMacCommand(key) {
    return ( $.browser.mozilla && key == 224 ||
             $.browser.opera   && key == 17 ||
             $.browser.webkit  && ( key == 91 || key == 93 ));
}
​

这很酷,但不要使用它:)

以下是W3C所说的方式:

<LINK REL="alternate" HREF="/path/to/PDFVersion.pdf" TYPE="application/pdf" MEDIA="print" TITLE="PDF version" />

请注意,据我所知, 目前没有浏览器支持此功能 抱歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM