2016-10-10 16 views
0

dompdfの進捗状況を取得する方法を教えてください。私はpdfにdompdfを使って変換されている多くのhtmlを持っています。 HTMLはかなり時間がかかるので、進捗状況を取得してユーザーに表示できるかどうかを知りたい。DomPdf pdf作成の進捗

編集:

私はスピナーを使用することにしました。しかし、私はいつファイルがユーザーによって受信されたかを知る必要があります。 IはhereからコピーされたPDFを生成するには、このコードを使用しています:

$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 

// (Optional) Setup the paper size and orientation 
$dompdf->setPaper('A4', 'landscape'); 

// Render the HTML as PDF 
$dompdf->render(); 

// Output the generated PDF to Browser 
$dompdf->stream(); 

ユーザーがこのコードを実行するリンクを押したときに、PDFが生成されます。 pdfはダウンロードセクションにダウンロードして表示します。

編集2:今、私はダウンロードをajaxで処理しようとしています。私はデータを受け取りました。私はconsole.log()を実行したときにそれを見ることができますが、ユーザーがダウンロードしたファイルを保存するにはどうすればいいですか? ありがとう

答えて

0

Dompdfは、現在進行状況を報告する方法をサポートしていません。その間の最善の策は、スピナーを使用してPDF生成が進行中であることをユーザーに知らせることです。

PDFを添付ファイルとして送信している場合は、イベントが発生していないため、ユーザーがいつ受信したか分かりません。一方で、純粋なAJAXを使用することは、HTML5の特定の機能が必要なため、依然として難しく、ブラウザに依存します。

AJAXを使用してPDFレンダリングをトリガーし、dompdfで生成されたPDFをサーバーのファイルシステムに保存し、ファイル名をクライアントに返し、最後にAJAXコールバックのファイルにリダイレクトすることで、 。

jQuery + blockUI(lazyデベロッパー向け)とすると、ここでは簡単な例を示します。

まず、クライアントコード:

<script> 
$('.pdf').click(function {evt} (
    $.blockUI(); 
    $.get('generate_pdf.php', function (data) { 
    $.unblockUI(); 
    location.href = data; 
    }); 
)); 
</script> 

<button class="pdf">Generate PDF</button> 

とサーバー:

<?php 
// require dompdf autoloader, then... 
$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 
$dompdf->render(); 
$filename = sprintf('pdf_%s.pdf', date('ymd')); 
file_put_contents($filename, $dompdf->output()); 
echo $filename; 
?> 

あなたはあなたのニーズを満たすために、コードを作る必要があります。もちろん、より多くのエラー処理を組み込むことで、より堅牢なものにすることができます。さらに、古いファイルを削除するためのクリーンアップが必要です。もちろん


、あなたは本当にこのすべて使用してAJAXをしたい場合は、それは確かに可能だとrelevant questionsの数は既に存在しています。

+0

これは素晴らしいアイデアです。私はスピナーをいつ止めるべきかを知る必要があることを始めました。ファイルが受信されたかどうかを知る方法はありますか? – user3552551

+0

フローを記述できますか?レンダリングをトリガするのは何ですか?誰がファイルを受信して​​いますか? – BrianS

+0

質問を編集します – user3552551

関連する問題