2016-10-10 6 views
0

dompdf의 진행 상황을 어떻게 알 수 있습니까? 나는 pdf로 dompdf를 사용하여 변환되는 많은 html을 가지고있다. HTML은 많은 시간이 걸리기 때문에 진행 상황을 파악하여 사용자에게 표시 할 수 있는지 알고 싶습니다.DomPdf pdf 작성 진행

편집 :

는 제안에 따르면 나는 스피너를 사용하기로 결정했다. 하지만 파일이 사용자에게 언제 수신되는지 알아야합니다. 제가 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 : 이제 아약스로 다운로드를 처리하려고합니다. 나는 데이터를 받고 있는데 console.log()를 할 때 볼 수는 있지만 파일을 사용자 다운로드에 저장하는 방법은 무엇입니까 ?? ?? 감사합니다.

답변

0

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는 확실히 가능하고 relevant questions의 숫자가 이미가 수행하려는 경우.

+0

그게 좋은 생각입니다. 저는 스피너를 멈출 때를 알 필요가 있습니다. 파일을 받았는지 알 수있는 방법이 있습니까? – user3552551

+0

흐름을 설명해 주시겠습니까? 렌더링을 트리거하는 것은 무엇입니까? 파일을받는 사람과 방법은 무엇입니까? – BrianS

+0

Ok 질문을 수정하겠습니다. – user3552551