我有一个表单,它接受用户输入,发布自己并将我的PHP代码存储到字符串变量中,并将该字符串数据保存到我的服务器上的.html文件中。我想取消.html文件,而是用html2pdf保存到.pdf,但我遇到了一个问题。
我的php文件中有以下代码:
require_once(dirname(__FILE__).'/html2pdf_v4.03/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','Letter','en');
$html2pdf->WriteHTML($current);
$html2pdf->Output('/var/www/Inspection/Quote/exemple.pdf');
当我评论第三行“$ html2pdf-> WriteHTML($ current);”时我收到错误“TCPDF错误:某些数据已经输出,无法发送PDF文件”。
当我注释掉第三行和第四行时,我的页面的其余部分都会毫无问题地执行。 。 。我只是没有得到我的.pdf。
我已经看过一些关于在写行之前清除某些内容的帖子,但是没有一篇文章足够明确让我完成。
另外,如果我使用简化的代码,我可以正确生成pdf。 。 。我迷失了为什么这是可能的。
这是有效的:
$content = "
<page>
<h1>Exemple d'utilisation</h1>
<br>
Ceci est un <b>exemple d'utilisation</b>
de <a href='http://html2pdf.fr/'>HTML2PDF</a>.<br>
</page>";
require_once(dirname(__FILE__).'/html2pdf_v4.03/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content);
$html2pdf->Output('exemple.pdf');
*编辑* $ current =
<br><div align="center"><H1><center>Sales Order: <font color="red" style="bold"> 1 3
</font></center></h1>
</div>
<hr width="85%">
<table width="800" align="center">
<tr>
<td valign="top" width="50%" align="center">
<table frame="border">
<th bgcolor="cccccc" colspan="2" align="center">General Order Information</th>
<tr>
<td align="center" nowrap="nowrap" width="40%">Order Num:</td>
<td width="60%">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Order Rev:</td>
<td width="20%">3</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Quote Num:</td>
<td width="20%">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Order Date:</td>
<td width="60%">1970-01-01</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Customer Name:</td>
<td width="60%">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Customer Buyer:</td>
<td width="60%">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Sold By:</td>
<td width="60%">ED </td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Sales Rep:</td>
<td width="60%">DR</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" width="40%">Prog Mgr:</td>
<td width="60%">VJ</td>
</tr>
</table>
</td>
<!-- Start of Shipping Data -->
<td valign="top" width="50%">
<table align="center" frame="Border">
<th bgcolor="cccccc" colspan="2" align="center">Shipping Information</th>
<tr>
<td align="center" nowrap="nowrap" >Terms:</td>
<td align="left">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" >FOB:</td>
<td align="left">1</td>
</tr>
<tr>
<td align="center" nowrap="nowrap" >Shipping Co:</td>
<td align="left">1</td>
</tr>
<tr>
<td nowrap="nowrap" align="center">Ship Acct Num:</td>
<td align="left">1</td>
</tr>
<tr>
<td nowrap="nowrap" align="center">Shipping Method:</td>
<td align="left">1</td>
</tr>
<tr>
<td nowrap="nowrap" align="center" valign="top">Order Comments:</td>
<td>1</td>
</tr>
<tr>
<td nowrap="nowrap" align="center" width="40%">Cust SO Upload:</td>
<td width="60%">The file 1-1-3.jpg has been uploaded, and Quote 1 has been added to the Quote directory </td>
</tr>
</table>
</td>
</tr>
</table>
<hr width="85%"> <table align="center" width="85%" cellpadding="3" cellspacing="0" frame="border" rules="all">
<tr>
<td bgcolor="cccccc" align="center"><h5>Line</h5></td>
<td bgcolor="cccccc" align="center"><h5>Cust PN / Rev</td>
<td bgcolor="cccccc" align="center"><h5>PN / Rev</td>
<td bgcolor="cccccc" align="center"><h5>Description</h5></td>
<td bgcolor="cccccc" align="center"><h5>Qty</h5></td>
<td bgcolor="cccccc" align="center"><h5>UOM</h5></td>
<td bgcolor="cccccc" align="center"><h5>Sale Price</h5></td>
<td bgcolor="cccccc" align="center"><h5>Line Total</h5></td>
<td bgcolor="cccccc" align="center"><h5>Required Date</h5></td>
<td bgcolor="cccccc" align="center"><h5>Program</h5></td>
</tr> <tr>
<td width="3px" valign="top" align="center">
1 </td> <td nowrap="nowrap" valign="top" align="center">
1 - 1
</td>
<td nowrap="nowrap" valign="top" align="center">
1 - 1
</td>
<td nowrap="nowrap" valign="top" align="center">
1
</td>
<td nowrap="nowrap" valign="top" align="center">
1
</td>
<td nowrap="nowrap" valign="top" align="center">
1
</td>
<td nowrap="nowrap" valign="top" align="center">
1.00
</td>
<td nowrap="nowrap" valign="top" align="center">
1.00
</td>
<td nowrap="nowrap" valign="top" align="center">
1970-01-01
</td>
<td nowrap="nowrap" valign="top" align="center">
1
</td>
</tr> <tr>
<td align="right" colspan="10" bgcolor="cccccc">
<b>The Order Total is 1.00</b>
</td>
</tr>
</table>
wkhtmltopdf是我想要远离的东西,因为它需要一个x-server。 。 。我希望尽可能避免的事情。
提前致谢。
答案 0 :(得分:1)
您应该查看创建PDF的所有php脚本,然后在
之前检查没有任何类型的“备用行”或白线<?php
标签。 祝你好运!
答案 1 :(得分:0)
在编写PDF之前,您必须非常小心不输出任何内容(即渲染)。
错误消息“我收到错误”TCPDF错误:某些数据已经输出,无法发送PDF文件“通常是因为您在编写PDF之前已回显了某些内容。
你注意到其他人说“冲洗东西”的事情与“输出缓冲”有关 - 这是一种绝对应该用于html2pdf / TCPDF的技术。
输出缓冲的工作原理如下:
ob_start() //starts output buffering
echo "<p>String you want to write to your PDF</p>";
$stringForPdf = ob_get_contents(); // this now contains the the above string
ob_end_clean(); // close and clean the output buffer.
html2pdf->WriteHtml($stringForPdf);
您可以参考此处的完整文档:Output Buffering Control
此外,请确保您没有关闭PHP标记:?&gt;在您的PHP文件中,因为将输出以下每个空格。
如果您提供了更多的代码,并且在剪切后,我可以进一步分析。
答案 2 :(得分:-1)
如果您想使用WKHTMLTOPDF但无需安装,则可以使用Sprint PDF。它是一种将HTML转换为PDF的在线服务,并通过RESTful API实现。