2017-12-21 16 views
0

DOMPDF를 사용하여 $ html 인수로 설정 한 .pdf를 생성하는 함수가 있습니다.HTML이 이미 존재하면 DOMPDF가 작동하지 않습니다.

function generate_pdf($html){ 
    //DOMPDF stuff 
} 

이 작동하지만, 내가 실행 해요 문제는 이미 HTML 내용이있는 페이지에서이 함수를 호출 할 때, 그것은 실패입니다.

<?php 
    require_once '../header.php'; //This has HTML content in it. 
    $html = '<h1>stuff</h1>'; 
    generate_pdf($html); 
?> 

이 또한 실패 ...

<?php 
    echo 'stuff'; 
    $html = '<h1>stuff</h1>'; 
    generate_pdf($html); 
?> 

작품 ...

<?php 
    $html = '<h1>stuff</h1>'; 
    generate_pdf($html); 
?> 

이 주변에 어떤 방법이 있나요 ... 실패? $dompdf = new \Dompdf\Dompdf(); 잘못 표시 될 수 있습니다 그 이유는,하지만 라인이 잘 작동되도록이 함수가 살고있는 파일, 네임 스페이스를 가지고 function generate_pdf($html)

function generate_pdf($html){ 
    //Get the necessary dompdf files 
    include_once DOMPDF_PATH . '/autoload.inc.php'; 

    // instantiate and use the dompdf class 
    $dompdf = new \Dompdf\Dompdf(); 
    $dompdf->loadHtml($html); 

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

    //Output the PDF 
    $dompdf->stream(); 
} 


내용. 전체 코드는 질문에 추가 된 후

답변

1

CHANGED 답변 :

가 나는 포함 된 파일의 전체 HTML 콘텐츠 앞이나 뒤에 별도의 HTML을 (또한 어떤 PHP 메아리)이있다.

나는 실수를 저질 렀다. 나는 dompdf 자동로드와 내용을 포함시키는 것을 혼동했다.

그것은 결국
<?php 
require_once '../../dompdf/autoload.inc.php'; 
use Dompdf\Dompdf; 
$dompdf = new Dompdf(); 
$dompdf->set_option('isPhpEnabled', true); 
ob_start(); 

//Here I am getting a few variables (from the URL via GET) which I use in the included php file 

include_once "your_content_in_one_file.php"; 
$html = ob_get_contents(); 
ob_end_clean(); 
$dompdf->loadHtml($html); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->render(); 
$dompdf->stream($pdf_name); 
?> 
+0

아마도 내 문제입니다. HTML이 앞뒤에 오는 경우 (머리말과 꼬리말 포함) 생각하면 문제가 될까요? – gtilflm

+0

나는 그렇게 생각한다. 당신은 조립/여분의 PHP 파일에 전체 HTML을 함께 넣고 그것을 포함해야합니다. – Johannes

+0

방금 ​​다른 테스트를 수행하고 내 질문을 업데이트했습니다. 내 함수에서, 나는'require_once DOMPDF_PATH '에서 변경했다. '/autoload.inc.php';'to'include_once DOMPDF_PATH. '/autoload.inc.php';'. 그러나 함수 호출 전에 HTML (또는 그 문제에 대한)은 여전히''이미 pdf : 헤더를 전송할 수 없습니다 '라는 메시지를줍니다. 그래서 문제는 HTML이라고 생각하지 않습니다. 무슨 뜻인지 알 겠어? ''또는 무엇 이건, 또한 어떤 PHP 메아리없는 것처럼 심지어 빈 태그를 - – gtilflm

0

ob_start();가 시스템에 이미 다른 곳에서 부름받은 사실과 관련되는 : 이것은 PHP 파일의 내용이며, 어떤 기능이 없습니다. 사용 중 ...

if (ob_get_level()){ 
    ob_end_clean(); 
} 

내 문제가 해결되었습니다. 다른 사람들을 돕기를 바랍니다.