php调用openoffice将office转pdf


系统环境为wamp+win7,安装好了openoffice,已将openoffice service manneger启动和激活权限设置为everyone 全部允许。然后使用以下代码将doc转为pdf


 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)
{
    $osm         = new COM("com.sun.star.ServiceManager")
            or die("Please be sure that OpenOffice.org 
is installed.n");
    $args        = array(MakePropertyValue("Hidden", true, $osm));
    $oDesktop    = $osm->createInstance("com.sun.star
.frame.Desktop");
    $oWriterDoc  = $oDesktop->loadComponentFromURL
            ($doc_url, "_blank", 0, $args);
    $export_args = array(MakePropertyValue
                ("FilterName", "writer_pdf_Export", $osm));
    $oWriterDoc->storeToURL($output_url, $export_args);
    $oWriterDoc->close(true);
}

$output_dir  = "D:/wamp/www/output/";
$doc_file    = "D:/wamp/www/test.doc";
$pdf_file    = "test.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 >E:\wamp\www\openoffice.php on line 12

找了很多相关的解决方案,要么是用java写的,要么资料不全。希望得到详细的解决方案,包括详细设置。

PDF php openoffice

美丽温柔欠踹脸 10 years, 4 months ago

Your Answer