web-dev-qa-db-ja.com

ブラウザからPDF=を印刷する方法

Webアプリケーションでは、PDFファイルをクライアントで強制的に印刷できますか?ブラウザーがウィンドウ内でPDF 、window.print()の呼び出しは機能すると思いますが、一部のブラウザ(私のようなもの)はPDF外部で開くように設定されています。

26
Antoine Aubry

Googleドキュメントが行う方法は、JavaScriptをPDFに埋め込み、Acrobat Readerまたはその他の準拠リーダーに印刷するよう指示することです。

ランダムPDFでこれを行うには、PDFツールキットが必要です。

29
Lou Franco
<html>
<script language="javascript">
timerID = setTimeout("exPDF.print();", 1000);
</script>
<body>
<object id="exPDF" type="application/pdf" data="111.pdf" width="100%" height="500"/>
</body>
</html>
5
taeyoung

taeyoungの提案と同様に、iframeを使用してpdfをレンダリングし、contentWindow.print()を使用できます。

3
Aaron Renoir

httpヘッダーをapplication/pdfに設定してから、javascriptで新しいウィンドウを強制的に開き、その方法で印刷できます。しかし、誰が本当にそうするのでしょうか?今すぐに来ることを意味します。

2
theman_on_vista

シンプルな驚くべきライブラリprintjs " http://printjs.crabbly.com "を使用できますPDFファイルし、必要に応じて印刷ダイアログを表示せずに印刷します。以下の簡単な方法:

 <button type="button" onclick="printJS('docs/printjs.pdf')">
    Print PDF
 </button>
1
Ali

Javascriptを使用してブラウザから直接PDFドキュメントを印刷することはできません。Javascript関数window.print()はブラウザの印刷機能を使用しますが、これは必要なものではありません。 Java Web Start。PDFドキュメントをjnlpに直接入れて、Java引数として生のPDFドキュメントを受け取ります。これで、システムで実行され、ブラウザでなくなったので、Java = API。これは非常に単純に見えますが、実際にはJava印刷APIはファイルを入力として受け入れませんが、ava.awt.print.Pageableインターフェースを実装する特定のデータ構造を受け入れます。

www.pdfprint.it にWebサービスが存在し、すべての作業を実行します。公式ドキュメントから抜粋した抜粋です。

<?php

// 1. GET the jnlp file with curl

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.pdfprint.it/printPdf?auth=XXXX");        
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return the transfer as a string       
$jnlp = curl_exec($ch);
curl_close($ch); 

$pdfDoc ="example.pdf";


//2. put in the jnlp your PDF document base64 encoded

$jnlp = str_replace("####", base64_encode(file_get_contents($pdfDoc)),$jnlp);


//3. echo the jnlp file 

header('Content-type: application/x-Java-jnlp-file');

echo $jnlp;

Jnlpファイルを取得し、PDF文書に入れてjnlpをブラウザに送信するだけです。印刷を実行するJavaプログラムがダウンロードされますWebサービスから直接。コピー、サイドなどの一部の印刷オプションを設定することもできます。

0
Simone

ファイルをプリンターに強制的に送信したいということですか?意図しない結果の法則について考えていますか?ユーザーのデバイスがプリンターに接続されていませんか? BlackBerryでも、wi-fiのラップトップでもかまいません。ユーザーがデフォルトのプリンターに行きたくない場合はどうなりますか?

0
DOK