簡體   English   中英

DomPdf pdf創建進度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM