2011-01-10 21 views
2

openofficeを使用してdocからpdfへの変換に関するチュートリアルに従おうとしています。私はエラーを取得するDoc to PDF + Openoffice

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

http://puno.ayun.web.id/2009/08/php-ooo-in-microsoft-windows-environment/しかし、運を:

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 

アイブ氏は、このチュートリアルでは、提案するものにしようとした私は、次のコードを持っています。私は何をすることができますか?私はこれをwampの下で走らせており、それは生産のwampの下で走っているだろう。

+0

ああ、確かに.docをOpenOfficeよりPDFに変換する簡単な方法があります。 AntiWordを見てください。コマンドラインから非常に簡単にdocからPDFに変換することができます – Earlz

+0

説明するエラーは、openoffice comオブジェクトが正しくインストールされていないか、システムに登録されていない可能性があることを示しています。この問題を解決するための直接リンクは見つかりませんでしたが、コンポーネントを登録する方法を探していました。おそらく、これは、手動で選択する必要がある、OpenOfficeインストールのオプションアイテムです。 – horatio

答えて

0

OpenOfficeのセットアップでは、そのマシンでサービスとして実行する必要があります。単純にodtをpdfに変換するにはpyodconverterを使うことができます。あなたのディレクトリにオープンオフィスをインストールしてください http://codeuniversity.com/scripts/scr1

0

:私は私が書いたスクリプトでこの技術を使用してい http://www.artofsolving.com/opensource/pyodconverter

、ここのための記事を持っている:彼らはまた、どのようにセットアップローカルOpenOfficeのサービスを説明します。 OpenOfficeのセットアップは、そのマシン上でサービスとして実行されます。

0

ヘッドレスlibreofficeとPHPラッパークラスhttps://github.com/ncjoes/office-converterの方がはるかに簡単です。 もちろん、libreofficeをインストールする必要があります。ウェブサーバーを完全に制御する必要があります。