在PHP中将html转换为pdf?

时间:2010-12-27 22:19:36

标签: php html pdf pdf-generation html2pdf

我知道有很多关于这个问题的帖子。但是有人可以帮我设置这个http://www.rustyparts.com/pdf.php脚本来处理我的本地主机。我只花了一周时间来处理这个问题。我已经下载了imagemagic, ghostscript,activeperl,...,一切,但仍然无法使简单的例子工作。

4 个答案:

答案 0 :(得分:10)

通过系统调用使用wkhtmltopdf。有关安装帮助,请参阅How to install wkhtmltopdf on a linux based (shared hosting) web server

  

wkhtmltopdf是一个命令行程序   这允许从一个创建一个pdf   url,本地html文件或stdin。它   生成一个类似于rendred的pdf   WebKit引擎。

请参阅此页面中的示例here

在Ubuntu上测试的PHP代码(您需要将/tmp/更改为Windows上的临时目录):

$url = 'http://www.google.com';
$pdffile = tempnam('/tmp/', 'wkhtmltopdf_');
$handle = popen("wkhtmltopdf $url $pdffile 2>&1", "r");
while (!feof($handle)) 
  fread($handle, 4096);
pclose($handle);
header('Content-type: application/pdf');
$file = fopen($pdffile, "r");
while(!feof($file))
  print fread($file, 4096);
unlink($pdffile);

还有php bindings不需要自己使用系统调用,这是一个更简单(更安全!)的选项。

try {
    $wkhtmltopdf = new Core_Wkhtmltopdf(array('path' => APPLICATION_PATH . '/../public/uploads/'));
    $wkhtmltopdf->setTitle("Title");
    $wkhtmltopdf->setHtml("Content");
    $wkhtmltopdf->output(Wkhtmltopdf::MODE_DOWNLOAD, "file.pdf");
} catch (Exception $e) {
    echo $e->getMessage();
}

答案 1 :(得分:3)

简单但功能强大:http://html2pdf.fr/en/default

$html = file_get_contents("valid.html");
require_once("html2pdf.class.php");
$html2pdf = new HTML2PDF("P", "A4", "en", array(10, 10, 10, 10));
$html2pdf->setEncoding("ISO-8859-1");
$html2pdf->WriteHTML($html);
$html2pdf->Output("pdf/PDF.pdf", "F"); //output to file
$html2pdf->Output(); //output to browser

答案 2 :(得分:1)

DocRaptor.com是一个不错的选择 - 它使用Prince XML,因此质量优于其他工具,它是一个Web应用程序,所以无需下载。它也适用于任何语言。

答案 3 :(得分:0)

此外,还有另一个生成PDF文件的库:TCPDF。很好,很简单。你可以找到很多例子。