2

Windows サーバーで PHP を使用して .docx ファイルを pdf に変換しようとしています。phpdocx (フォーマットを保持しない非常に貧弱な変換を行う) や php の Com オブジェクトなど、他の投稿からいくつかのソリューションを試しました。私は Office 2003 しか持っていないので、Com を使用して利用できる PDF コンバーターはありません。

OpenOffice/LibreOffice を使用することを考えましたが、Com を Windows サーバーにインストールして使用する方法に関する情報は見つかりませんでした (インストールできることはわかっていますが、Com をセットアップする方法がわかりません)。

フォーム上のデータのため、Web サービスを使用することはできません (フォームはサーバーに残す必要があります)。これは、Zend Framework を使用できないことを意味します。

提案や Open Office での Com の使用に関する情報は役に立ちます。

4

1 に答える 1

2

私はついにこれを機能させることができました。私たちの問題は、Word 2003 に PDF コンバーターが含まれていないことでした。今のところ、Office 2010 の試用版を使用することになりました (すべてが正常に機能すると仮定して、完全版を購入します)。Word 2007 も機能します。以下は、これを機能させるために使用したコードです。

                //Word Doc to PDF using Com
            ini_set("com.allow_dcom","true");

            try{
                $word = new com('word.application') or die('MS Word could not be loaded');
            }
            catch (com_exception $e)
            {
                    $nl = "<br />";
                    echo $e->getMessage() . $nl;
                    echo $e->getCode() . $nl;
                    echo $e->getTraceAsString();
                    echo $e->getFile() . " LINE: " . $e->getLine();
                    $word->Quit();
                    $word = null;
                    die;

            }

            $word->Visible = 0;
            $word->DisplayAlerts = 0;





            try{
            $doc = $word->Documents->Open(DOC_LOCATION. 'test_image.docx');
            }
            catch (com_exception $e)
            {
                $nl = "<br />";
                echo $e->getMessage() . $nl;
                echo $e->getCode() . $nl;
                echo $e->getFile() . " LINE: " . $e->getLine();
                $word->Quit();
                $word = null;
                die;
            }
            echo "doc opened";
            try{
                $doc->ExportAsFixedFormat(DOC_LOCATION . "test_image.pdf", 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);

            }
            catch (com_exception $e)
            {
                $nl = "<br />";
                echo $e->getMessage() . $nl;
                echo $e->getCode() . $nl;
                echo $e->getTraceAsString();
                echo $e->getFile() . " LINE: " . $e->getLine();
                $word->Quit();
                $word = null;
                die;
            }

            echo "created pdf";
            $word->Quit();
            $word = null; 
于 2012-10-16T16:00:28.843 に答える