欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php调用openoffice将office转pdf

程序员文章站 2024-02-19 08:57:52
...
系统环境为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写的,要么资料不全。希望得到详细的解决方案,包括详细设置。

回复内容:

系统环境为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写的,要么资料不全。希望得到详细的解决方案,包括详细设置。