【发布时间】:2018-05-09 10:20:57
【问题描述】:
我正在尝试将 PHP 生成的 HTML 内容保存为 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
【问题讨论】:
-
“实际内容是文本格式的 HTML 而不是实际呈现的 HTML”是什么意思? pdf->Cell(...) 不会将 html 内容转换为 pdf 呈现的内容。你应该使用like this
-
@JackSkeletron 感谢您的回复。我的意思是我可以在我的 PDF 文件中看到
HTML标签,而不是渲染表格和图像等。通过在http://www.fpdf.org/上简要阅读文档,我认为它应该能够渲染出实际的标签 -
说实话,我不喜欢使用库,如果可能的话,我总是喜欢自己从头开始编写代码。我更喜欢类似于
file_put_contents('../my_folder/'.$file_name.'.pdf', $file_content, FILE_APPEND);的简单解决方案 -
有几个 PHP 库具有该功能,但不是 FPDF,除非您安装页面上列出的一些可选插件。
-
@ÁlvaroGonzález 感谢您的评论。我刚刚尝试了该页面上列出的一些附加脚本,但出现了很多错误,所以不要认为它们那么值得信赖。如果您知道任何无需在共享服务器上安装任何东西就可以做到这一点的简单库,那就太好了。