我正在尝试通过将HTML代码中的收据转换为PDF来创建Web应用程序的收据,以便在完成应用程序后下载。我试图通过将目标div的内容分配给表单中的隐藏输入字段来将代码发送到PHP文件。按下结尾处的按钮,执行下面的js功能,以及PHP文件:
function print() {
var elem = document.getElementById("receipt").innerHTML;
document.getElementById("hiddenhtml").value = elem;
}
以下是表格的大致轮廓:
<form method="post" action="htmlpdf.php" target="_blank">
<div id="receipt">
------- CONTENT THAT I WANT IN THE PDF ----------
</div>
<input type="submit" onclick="print()" value="Print"/>
<input id="hiddenhtml" type="hidden" value=""/>
</form>
其中hiddenhtml是隐藏的输入字段。在按下打印按钮时,收据div的内容被添加到隐藏输入字段的值。然后我尝试按如下方式传递此值:
$html = $_POST['hiddenhtml'];
$pdf->writeHTML($html, true, false, true, false, '');
在writeHTML函数中使用它。但是,将返回空白PDF文件。我想知道我是否可以将目标div的内容作为writeHTML方法中的参数传递。 div没有外部样式,并且每个文档都包含所有兼容标记。
答案 0 :(得分:2)
您需要在文档中添加一个页面以呈现您的html,然后您需要实际输出您的页面。请参阅example pdf page。您的代码应如下所示: -
$pdf = new TCPDF();
$pdf->AddPage('P');
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output();
我做了一些进一步的测试并创建了这段代码: -
if(isset($_POST['hidden'])){
$pdf = new TCPDF();
$pdf->AddPage('P');
$html = $_POST['hidden'];
$pdf->writeHTML($html);
$pdf->Output();
}
?>
<form method="POST">
<input name="hidden" type="hidden" value="
<div>
<h1>Receipt</h1>
<p>Some stuff</p>
<p>More stuff</p>
</div>"/>
<input type="submit" value="Submit"/>
</form>
在submition上,给了我这个输出: -
正如你所看到的,一个很好的pdf页面,我的html被渲染到其中。
我建议你将代码缩减到像这样简单的东西,以帮助解决问题。一旦你有了工作,那么你可以增加复杂性。