将PHP生成的HTML内容保存为PDF文件

时间:2018-05-09 10:20:57

标签: php html pdf fpdf

我正在尝试将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

对此有任何帮助或建议将不胜感激。

/ ---------- ---------- EDIT \

我现在开始尝试使用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 :(得分:0)

所以在经过多次试验和错误后,我终于找到了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);
}