[英]DomPdf pdf creation progress
我如何獲得dompdf的進度。 我有很多使用dompdf轉換為pdf的html。 由於HTML占用大量時間,因此我想知道是否有可能獲取進度並將其顯示給用戶。
編輯:
根據建議,我決定使用微調器。 但是我需要知道用戶何時接收文件。 我正在使用此代碼生成從此處復制的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()時可以看到它,但是如何獲取要保存在用戶下載文件中的文件? 謝謝
Dompdf當前不支持報告其進度的方法。 同時,最好的選擇是使用微調器讓用戶知道正在進行PDF生成。
如果您將PDF作為附件發送,則因為沒有事件觸發,所以您無法真正知道用戶何時接收它。 另一方面,使用純AJAX仍然更加困難,並且依賴於瀏覽器,因為它需要某些HTML5功能。
您可以混合使用這兩種方法,方法是使用AJAX觸發PDF渲染,將dompdf生成的PDF保存到服務器的文件系統,將文件名返回給客戶端,最后重定向到AJAX回調中的文件。
假設jQuery + blockUI (對於懶惰的開發者),這是一個簡化的示例。
首先是客戶端代碼:
<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來完成所有這一切,那肯定有可能,並且已經存在許多相關問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.