使用 PHP + Openoffice 将文档转为 PDF

Posted

技术标签:

【中文标题】使用 PHP + Openoffice 将文档转为 PDF【英文标题】:Doc to PDF with PHP + Openoffice 【发布时间】:2011-01-10 22:03:45 【问题描述】:

我正在尝试使用 openoffice 将 doc 转换为 pdf 的教程。我有以下代码:

<?php
set_time_limit(0); 
function MakePropertyValue($name, $value,$osm) 
   $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue"); 
   $oStruct->Name = $name; 
   $oStruct->Value = $value; 
   return $oStruct; 
 
function word2pdf($doc_url, $output_url) 
   // Invoke the OpenOffice.org service manager 
   $osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n"); 
   // Set the application to remain hidden to avoid flashing the document onscreen 
   $args = array(MakePropertyValue("Hidden",true,$osm)); 
   // Launch the desktop 
   $top = $osm->createInstance("com.sun.star.frame.Desktop"); 
   // Load the .doc file, and pass in the "Hidden" property from above 
   $oWriterDoc = $top->loadComponentFromURL($doc_url,"_blank", 0, $args); 
   // Set up the arguments for the PDF output 
   $export_args = array(MakePropertyValue("FilterName","writer_pdf_Export",$osm)); 
   // Write out the PDF 
   $oWriterDoc->storeToURL($output_url,$export_args); 
   $oWriterDoc->close(true); 
 
$output_dir = './'; 
$doc_file = './test.docx'; 
$pdf_file = 'DpmR5Reqv1.20.pdf'; 
$output_file = $output_dir . $pdf_file; 
$doc_file = 'file:///' . $doc_file; 
$output_file = 'file:///' . $output_file; 
word2pdf($doc_file,$output_file); 
?>

我得到错误:

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `com.sun.star.ServiceManager' in C:\wamp\www\Projects\doc_to_pdf\index.php on line 11
( ! ) com_exception: Failed to create COM object `com.sun.star.ServiceManager': Invalid syntax in C:\wamp\www\Projects\doc_to_pdf\index.php on line 11

我尝试了本教程的建议:http://puno.ayun.web.id/2009/08/php-ooo-in-microsoft-windows-environment/ 但没有运气。知道我能做什么吗?我在 wamp 下运行它,它将在生产中在 wamp 下运行。

【问题讨论】:

天哪,肯定有比使用 OpenOffice 更简单的方法将 .doc 转换为 PDF。查找 AntiWord。您可以从命令行非常简单地从 doc 转换为 PDF 您描述的错误似乎表明 openoffice com 对象未正确安装或未在系统中注册。我找不到帮助解决此问题的直接链接,但您会寻找一种注册组件的方法。也许它是 openoffice 安装中的一个可选项目,必须手动选择。 【参考方案1】:

您必须安装 OpenOffice 才能在该机器上作为服务运行。要简单地将 odt 转换为 pdf,您可以使用 pyodconverter。他们还解释了如何设置本地 OpenOffice 服务: http://www.artofsolving.com/opensource/pyodconverter

我在我编写的脚本中使用了这种技术,并在此处有一篇文章: http://codeuniversity.com/scripts/scr1

【讨论】:

【参考方案2】:

请在您的目录中安装 Open Office。 OpenOffice 设置为在该机器上作为服务运行。

【讨论】:

【参考方案3】:

使用无头 libreoffice 和像 https://github.com/ncjoes/office-converter 这样的 php 包装器类要容易得多。 当然你必须安装 libreoffice 并且你必须完全控制你的网络服务器。

【讨论】:

以上是关于使用 PHP + Openoffice 将文档转为 PDF的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot集成jodconverter使用openoffice将word转为pdf

如何同时使用 PHP for microsoft 和 openoffice 生成文档?

在Linux上使用命令行将openoffice文档(odt)转换为PDF?

在 Windows 上使用 PHP 的服务器模式下的 OpenOffice

如何使用 OpenOffice API 将 HTML 文本放入 OpenOffice 文档

我如何使用php与openoffice进行通信