簡體   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