如何在Linux/PHP堆栈上将文档转换为PDF?
我想在我的网站上显示文档。服务器托管在Debian机器上。我想我可以允许上传支持文档,然后使用Linux应用程序或PHP应用程序将文档转换为PDF并在HTML页面中显示。是否有任何API或二进制文件允许我这样做?如果它是一个office文档,一个选项是在无头模式下使用openoffice。请参见此处的python脚本,该脚本演示了如何:如何在Linux/PHP堆栈上将文档转换为PDF?,php,linux,pdf,Php,Linux,Pdf,我想在我的网站上显示文档。服务器托管在Debian机器上。我想我可以允许上传支持文档,然后使用Linux应用程序或PHP应用程序将文档转换为PDF并在HTML页面中显示。是否有任何API或二进制文件允许我这样做?如果它是一个office文档,一个选项是在无头模式下使用openoffice。请参见此处的python脚本,该脚本演示了如何: 如果它是任何其他类型的文档(例如,您自己的XML文档),那么您需要做更多的工作。我已经成功地使用XSL定义了到docbook格式的转换,然后使用docbook工
如果它是任何其他类型的文档(例如,您自己的XML文档),那么您需要做更多的工作。我已经成功地使用XSL定义了到docbook格式的转换,然后使用docbook工具生成PDF(以及各种其他格式)。如果您需要更精确地控制事物的外观,还可以使用XSL直接转到PDF Pear有一个PHP-PDF类。请参阅:
另一种方法是生成一个HTML文件,其中包含pdf中所需的内容。然后使用htmldoc将其转换为PDF
实际上,这比直接操作PDF文档中的对象要容易得多。您可以创建PDF打印到文件打印机,并通过lpr将任意数量的文档发送到打印机
function lpr($STR,$PRN,$TITLE) {
$prn=(isset($PRN) && strlen($PRN))?"$PRN":C_DEFAULTPRN ;
$title=(isset($TITLE))?"$TITLE":"stdin" . rand() ;
$CMDLINE="lpr -P $prn -T $title";
$pipe=popen("$CMDLINE" , 'w');
if (!$pipe) {print "pipe failed."; return ""; }
fwrite($pipe,$STR);
pclose($pipe);
} // lpr()
//open document...
//read into $source
lpr($source, "PDF", $title); //print to device
exit();
还可以将HTML转换为PDF。一个相对较新的项目,称为phpLiveDocx,可以将文档转换为PDF(以及许多其他格式)。它是一个基于SOAP的服务,可以完全免费使用。有关使用phpLiveDocx将文档转换为PDF的示例代码,请参阅最近的这篇博文: 当然,由于它是基于SOAP的,所以可以在所有支持PHP的操作系统上使用:-)