Doc to PDF with PHP + Openoffice

匿名 (未验证) 提交于 2019-12-03 07:50:05

问题:

I am trying to follow a tutorial on converting doc to pdf using openoffice. I have the following code:

<?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);  ?> 

I get the error:

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 

Ive tried to what this tutorial suggests: http://puno.ayun.web.id/2009/08/php-ooo-in-microsoft-windows-environment/ But no luck. Any idea what I can do? I am running this under wamp and it will be ran under wamp in production.

回答1:

You have to have OpenOffice setup to run as a service on that machine. To simply convert an odt to a pdf you can use pyodconverter. They also explain how to setup the local OpenOffice service: http://www.artofsolving.com/opensource/pyodconverter

I'm using this technique in a script I wrote and have an article for here: http://codeuniversity.com/scripts/scr1



回答2:

Please install Open Office in your Directory. OpenOffice setup to run as a service on that machine.



回答3:

it is much easier to use headless libreoffice and a php wrapper class like https://github.com/ncjoes/office-converter. of course you have to install libreoffice and you must have full control of your webserver.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!