[英]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.