1

送信すると、PHPがPDFファイルを生成してクライアントに送信するフォームがあります。これまでのところ、すべて正常に動作しています。私が問題を抱えているのは、受信したpdfを含むウィンドウでwindow.print()をトリガーする必要があることです。受信したPDFファイルに印刷ウィザードを表示させる方法はありますか?

これが私が持っているコードです

//The #options is a form that once submitted is sends the requested PDF to the browser
$('#options').on('submit', function(e){

    if($(this).find('[name="action"]').val() == 'print')
    {
        var url = $(this).attr('action') || document.URL;
        e.preventDefault();
        $.post(url, $(this).serializeArray(),function(pdf){
            // Open the printing wizard for the requested document
        });
    }
    else
    {
        // The PDF is displayed normally
        return true;
    }

});

やりたいことができるかどうかさえわかりません。たとえば、PDFを新しいタブで開いて、そこで呼び出すwindow.print()ことは可能ですか?

4

2 に答える 2

3

これを行う簡単な方法の 1 つは、PDF ファイルを新しい iFrame に配置することです。次に、関数を使用して iframe 内の完全なコンテンツを印刷できますwindow.print();

<html>
<head>
<title>Print Test Page</title>
<script>
function printPDF() {
    window.frames["print_frame"].window.focus();
    window.frames["print_frame"].window.print();
}
</script>
</head>
<body>
Some content here
<iframe name=print_frame width=0 height=0 frameborder=0 src=about:blank>
  Your PDF is loaded here
</iframe>
Some more content here
</body>
</html>

window.print();PDFを印刷したいときに関数を呼び出します。

于 2013-01-18T11:01:27.397 に答える
1

新しいウィンドウで PDF を開くには、基本的に GET 要求を生成する必要があります (URL 経由でウィンドウを開くことができるようにするため)。簡単な方法の 1 つは、クエリ文字列を介して入力パラメーターを受け入れるようにサーバー側のコードをコーディングすることです。より良い方法は、(現在行っているように) POST 要求を使用してサーバー側で PDF を生成し、それを一時的な場所にキャッシュしてから、トークン/チケット (たとえば、一時ファイル名と同じくらい単純なもの) をブラウザーに返すことです。 . このトークンは、PDF ファイルを取得するために GET 要求で使用されます。GET 要求はサーバーに送られ、一時的な場所からファイルを読み取って、インライン (つまり、ヘッダーcontent-disposition: inline;) として返します。次にwindow.print()、印刷を試みることができます。ウェイは iframe (with contentWindow.print()) で使用できます。

ただし、これらのソリューションが機能しない場合があります。たとえば、PDF をインラインで表示するための PDF プラグインがない (またはユーザーが常に外部でファイルを開くことを選択した) などです。または、ブラウザ間で動作しない場合があります。したがって、さらに別の(そしてIMOより良い)方法は、PDF内にJavaスクリプトを埋め込んで、ファイルが開かれるとすぐに印刷を指示することです。
たとえば、自動印刷用に PDF 生成に java-script を埋め込むこの PHP コード例を参照してください。この例では、PDF 生成に FPDF を使用しています。

于 2013-01-18T11:34:06.233 に答える