2012-03-12 8 views
6

静的なHTMLページをtest.htmlとし、印刷可能なページのバージョンはtest.pdfに格納されているとします。訪問者がのブラウザに印刷すると、test.htmlの代わりにtest.pdfの代わりにブラウザをロードして印刷する方法を教えてください。ウェブページのPDF版をブラウザで印刷するにはどうすればよいですか?

HTMLページ内で印刷ボタン(JavaScriptを使用)を導入する方法はありませんか?

+0

これはPHP経由で行うことができます。 JSではありません。 http://webdesign.about.com/od/php/ht/force_download.htm JSでは、既にファイルヘッダーを送信しているので、このようなエキゾチックなものはできません。 – Manishearth

+1

1.これは、印刷ではなくファイルをダウンロードします。 2. pdfを読み込んでも、印刷しないで開きます。 – Googlebot

+0

おっと私は質問を誤解しました。 (dunno)うまく動作するかもしれない1つはiframeにpdfをロードし、iframeのプリントを呼び出すことです。しかし、どのくらいのDOMが保存されているか分かりません。 – Manishearth

答えて

8

ユーザーが要求/表示しているファイルとは異なるファイルをブラウザで印刷するよう強制することはできません。それはセキュリティの悪夢だろう!私は(新しいウィンドウでPDFを開くPDFファイルにユーザーを指示しますあなたのサイトにprintable versionリンクを作成することが好ましいであろう示唆

オプション1(JS(要求された通り)& HTML)

)。

<!-- 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> 
+3

@David、ユーザーがJSを要求し、私がJSボックスにいたので:)私はあなたのポイントが有効なので、純粋なhtmlの例を提供します! –

+0

別の文書をプリンタに送ることが「セキュリティ上の悪夢」であることを説明してください。 – Supuhstar

3

(私はそれをお勧めしませんが)ので、あなたは、ブラウザの印刷コマンドをハイジャックすることはできませんが、キーボードショートカットをハイジャックすることができますユーザーがctrl/cmd + pを使用して印刷すると、PDFにリダイレクトされます(または何か他のことをします)。これは使い勝手の良い地雷ですが、 "印刷可能なバージョン"という大きなリンクを作成してPDF(または印刷用のCSSを使用するページのバージョン)にリンクするだけです。

CSSファイルのprintメディアタイプにいくつかのルールを定義するだけで、ユーザーが印刷したときにブラウザが適用されます。ハックやジャバスクリプトは一切ありません。

しかし、私は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)); 
} 
​ 

が、それを使用しないでください:)

2

をここW3Cは、あなたがしなければならないと言う方法です。

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

マインドあなたは、私の知る限り、何のブラウザは、現在、このサポートしていません。ごめんなさい。

関連する問題