Сохранение HTML-контента, сгенерированного PHP, в виде файла PDF - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь сохранить HTML содержимое, сгенерированное PHP, в виде PDF файла.

Для этого я нашел FPDF .

Мой сценарий выглядит следующим образом:

if(isset($_POST['content_to_save']) && isset($_POST['name_to_save'])){
    $file_name = $_POST['name_to_save'];
    $file_content = $_POST['content_to_save'];
    require('fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Helvetica','',12);
    $pdf->Cell(40,10,$file_content);
    $content = $pdf->Output('../my_folder/'.$file_name.'.pdf','F');
}

Мои две переменные ($file_name & $file_content) установлены так, как я хочу, без проблем, и он создает PDF в правильном месте с правильнымимя файла, однако фактическим содержимым является HTML в текстовом формате, а не фактически обработанный HTML

. Любая помощь или предложения по этому вопросу будут высоко оценены.

/ ---------- РЕДАКТИРОВАТЬ ---------- \

Я сейчас начал пытаться использовать TCPDF

Мой код теперь какследует:

if(isset($_POST['po_content_to_save']) && isset($_POST['po_name_to_save'])){
    $file_name = $_POST['po_name_to_save'];
    $file_content = $_POST['po_content_to_save'];
    require('TCPDF/tcpdf.php');
    $pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    $pdf->SetFont('helvetica', '', 12);  
    $pdf->AddPage();  
    $pdf->writeHTML($file_content);  
    $pdf->Output('../my_folder/'.$file_name.'.pdf', 'I'); 
}

Однако теперь я получаю следующую ошибку:

TCPDF ERROR: Some data has already been output, can't send PDF file

1 Ответ

0 голосов
/ 09 мая 2018

Итак, после множества проб и ошибок с несколькими различными библиотеками я наконец-то нашел Dompdf

Следующий код теперь делает то, что я пытался достичь:

require '../vendor/autoload.php';
use Dompdf\Dompdf;

if(isset($_POST['po_content_to_save']) && isset($_POST['po_name_to_save'])){
    $file_name = $_POST['po_name_to_save'];
    $file_content = $_POST['po_content_to_save'];

    $document = new Dompdf();
    $document->loadHtml($file_content);
    $document->setPaper('A4', 'portrait');
    $document->render();
    $output = $document->output();
    file_put_contents('../my_folder/'.$file_name.'.pdf', $output);
}
...