PHPからの利用
PHPからの利用
はじめまして。
今、PHPにて、アップロードされたMS-OfficeデータをPDFに変換するという処理を作りたいと思って調べています。
色々調べていると、PUNOを使うというのも出てきたのですが、Windowsであればそこまでしなくても、COMでコントロールできるらしいというところまで理解しました。
今までLinux系でしか開発をしていなかったので(とはいえ、WindowsでXAMPPでやってますがw)、COMを使ったことはないのですが、もしこれでできるのであれば、本気で取り組んでみようかなと思っています。
もしご存知の方がおられたら…という前提ですが、質問の主旨としては、「Windows環境下の場合に、UNO/PUNO等を使わずに、phpからCOMで直接OpenOffice.orgをコントロールして、Officeドキュメントを開いて、PDFで保存する」ということの可否です。
MoIshiharaさんの投稿「OpenOfficeをPDFコンバータにする方法」を拝見して、恐らくドキュメントを開いてPDF化は問題ないんだろうなと思うのですが、問題は前者で、なかなかググり方が悪いのか、読み方が悪いのか、よく理解できませんでした。
別の話ですが、
http://www.php.net/manual/ja/ref.com.php#63109
こちらで、COMでExcelを操作するという話が挙がっているのを見て、同じようにOpenOffice.orgを操作できるのなら、実装可能かな…と淡い期待を抱いているのですが。
一応トピックス検索を行いましたが、もし既出がありましたらご教示頂けると幸いです。
よろしくお願い致します。
今、PHPにて、アップロードされたMS-OfficeデータをPDFに変換するという処理を作りたいと思って調べています。
色々調べていると、PUNOを使うというのも出てきたのですが、Windowsであればそこまでしなくても、COMでコントロールできるらしいというところまで理解しました。
今までLinux系でしか開発をしていなかったので(とはいえ、WindowsでXAMPPでやってますがw)、COMを使ったことはないのですが、もしこれでできるのであれば、本気で取り組んでみようかなと思っています。
もしご存知の方がおられたら…という前提ですが、質問の主旨としては、「Windows環境下の場合に、UNO/PUNO等を使わずに、phpからCOMで直接OpenOffice.orgをコントロールして、Officeドキュメントを開いて、PDFで保存する」ということの可否です。
MoIshiharaさんの投稿「OpenOfficeをPDFコンバータにする方法」を拝見して、恐らくドキュメントを開いてPDF化は問題ないんだろうなと思うのですが、問題は前者で、なかなかググり方が悪いのか、読み方が悪いのか、よく理解できませんでした。
別の話ですが、
http://www.php.net/manual/ja/ref.com.php#63109
こちらで、COMでExcelを操作するという話が挙がっているのを見て、同じようにOpenOffice.orgを操作できるのなら、実装可能かな…と淡い期待を抱いているのですが。
一応トピックス検索を行いましたが、もし既出がありましたらご教示頂けると幸いです。
よろしくお願い致します。
OpenOffice 3.3.0 on Windows 7(64bit)
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
macchaka さん こんにちは
・PHPの仕様をよく解っていないのですが...
・たぶん、オートメーションでもPUNOでも利用出来るだろうと思いますが、実際の所は試してみないと判りません。
・PUNO のサンプルです。
http://blog.good-day.net/~tani/diary/?date=20081212
・オートメーションと PUNO の違いは、(クライアント側のプログラム記述的な意味では)基本オブジェクトの収得関数ぐらいです。
・PHPの仕様をよく解っていないのですが...
・たぶん、オートメーションでもPUNOでも利用出来るだろうと思いますが、実際の所は試してみないと判りません。
・PUNO のサンプルです。
http://blog.good-day.net/~tani/diary/?date=20081212
・オートメーションと PUNO の違いは、(クライアント側のプログラム記述的な意味では)基本オブジェクトの収得関数ぐらいです。
Re: PHPからの利用
可能だと思いますよ。(COMだろうが、PUNOだろうが、結局UNOのAPIで制御するので、文意を正確に捉えられていませんが。)もしご存知の方がおられたら…という前提ですが、質問の主旨としては、「Windows環境下の場合に、UNO/PUNO等を使わずに、phpからCOMで直接OpenOffice.orgをコントロールして、Officeドキュメントを開いて、PDFで保存する」ということの可否です。
http://www.oooforum.org/forum/viewtopic.phtml?t=9815
にのってるサンプルです。(WriterをひらいてHello Worldを挿入するコード)
コード: 全て選択
$oArgs = array();
$objServiceManager = new COM( "com.sun.star.ServiceManager" );
$Stardesktop = $objServiceManager->createInstance( "com.sun.star.frame.Desktop" );
$doc = $Stardesktop->loadComponentFromURL("private:factory/swriter", "_blank", 0, $oArgs );
$text = $doc->getText();
$text->setString("Hello World");
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
macchaka さん tani さん こんにちは
・せっかくなので、WebMatrix をインストールして、(WebMatrix からの呼び出しで)Pdf にコンバート出来る様にはしておきました。
(つまり IIS 7.5 + PHP for WebMatrix(PHP 5.2)での動作です)
(エラー制御演算子が期待どうりに動作しなかったので、(プログラムの中に)おかしな所も残っていますが、とりあえずコンバートは出来る様です)
・せっかくなので、WebMatrix をインストールして、(WebMatrix からの呼び出しで)Pdf にコンバート出来る様にはしておきました。
(つまり IIS 7.5 + PHP for WebMatrix(PHP 5.2)での動作です)
(エラー制御演算子が期待どうりに動作しなかったので、(プログラムの中に)おかしな所も残っていますが、とりあえずコンバートは出来る様です)
コード: 全て選択
<?php
print "Converter start\n";
if (convertPDF("F:\Hoge.odt", "F:\Hoge.pdf")):
print "Complete\n";
else:
print "error\n";
endif;
function convertPDF($odf, $pdf){
$Result = false;
if (file_exists($odf) == false):
print "not file_exists\n";
return $Result;
endif;
$oServiceManager = new COM("com.sun.star.ServiceManager");
$oDesktop = $oServiceManager->createInstance("com.sun.star.frame.Desktop");
// 設定値を指定します
$aLoadProperty = array();
$aLoadProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[0]->Name = "Hidden";
$aLoadProperty[0]->Value = True;
$aLoadProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[1]->Name = "ReadOnly";
$aLoadProperty[1]->Value = True;
$aStoreProperty = array();
$aStoreProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[0]->Name = "FilterName";
$aStoreProperty[0]->Value = "";
$aStoreProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[1]->Name = "Overwrite";
$aStoreProperty[1]->Value = true;
$aStoreProperty[2] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[2]->Name = "FilterData";
$aStoreProperty[2]->Value = createPdfFilterData;
// ファイルを開きます
$sLoadName = $odf;
$sLoadURL = ConvertToUrl($sLoadName);
$sStoreName = $pdf;
$sStoreURL = ConvertToUrl($sStoreName);
$oDoc = NULL;
$oDoc = $oDesktop->loadComponentFromURL($sLoadURL, "_blank", 0, $aLoadProperty);
if (oDoc <> NULL):
// フィルタは指定しなくてもPDFに出力しますが、念の為設定
$aStoreProperty[0]->Value = getPdfFilter($oDoc);
if ($aStoreProperty[0]->Value <> ""):
// ファイルをPDFに出力します
$oDoc->storeToURL($sStoreURL, $aStoreProperty);
$Result = true;
endif;
// ドキュメントを閉じて終了します
if ($oDesktop->Frames->Count > 1):
$oDoc->close(true);
else:
$oDesktop->terminate;
endif;
endif;
return $Result;
}
function createPdfFilterData(){
$DIRECT_VALUE = 0;
$aFilterData = array(
array("UseLosslessCompression",0,true,$DIRECT_VALUE),
array("Quality",0,90,$DIRECT_VALUE),
array("ReduceImageResolution",0,false,$DIRECT_VALUE),
array("MaxImageResolution",0,300,$DIRECT_VALUE),
array("UseTaggedPDF",0,true,$DIRECT_VALUE),
array("SelectPdfVersion",0,0,$DIRECT_VALUE),
array("ExportNotes",0,false,$DIRECT_VALUE),
array("ExportBookmarks",0,true,$DIRECT_VALUE),
array("OpenBookmarkLevels",0,-1,$DIRECT_VALUE),
array("UseTransitionEffects",0,true,$DIRECT_VALUE),
array("IsSkipEmptyPages",0,true,$DIRECT_VALUE),
array("IsAddStream",0,false,$DIRECT_VALUE),
array("EmbedStandardFonts",0,false,$DIRECT_VALUE),
array("FormsType",0,0,$DIRECT_VALUE),
array("ExportFormFields",0,true,$DIRECT_VALUE),
array("AllowDuplicateFieldNames",0,false,$DIRECT_VALUE),
array("HideViewerToolbar",0,false,$DIRECT_VALUE),
array("HideViewerMenubar",0,false,$DIRECT_VALUE),
array("HideViewerWindowControls",0,false,$DIRECT_VALUE),
array("ResizeWindowToInitialPage",0,false,$DIRECT_VALUE),
array("CenterWindow",0,false,$DIRECT_VALUE),
array("OpenInFullScreenMode",0,false,$DIRECT_VALUE),
array("DisplayPDFDocumentTitle",0,true,$DIRECT_VALUE),
array("InitialView",0,0,$DIRECT_VALUE),
array("Magnification",0,0,$DIRECT_VALUE),
array("Zoom",0,100,$DIRECT_VALUE),
array("PageLayout",0,0,$DIRECT_VALUE),
array("FirstPageOnLeft",0,false,$DIRECT_VALUE),
array("InitialPage",0,1,$DIRECT_VALUE),
array("Printing",0,2,$DIRECT_VALUE),
array("Changes",0,4,$DIRECT_VALUE),
array("EnableCopyingOfContent",0,true,$DIRECT_VALUE),
array("EnableTextAccessForAccessibilityTools",0,true,$DIRECT_VALUE),
array("ExportLinksRelativeFsys",0,false,$DIRECT_VALUE),
array("PDFViewSelection",0,0,$DIRECT_VALUE),
array("ConvertOOoTargetToPDFTarget",0,true,$DIRECT_VALUE),
array("ExportBookmarksToPDFDestination",0,false,$DIRECT_VALUE),
array("_OkButtonString",0,"",$DIRECT_VALUE),
array("EncryptFile",0,false,$DIRECT_VALUE),
array("DocumentOpenPassword",0,"",$DIRECT_VALUE),
array("RestrictPermissions",0,false,$DIRECT_VALUE),
array("PermissionPassword",0,"",$DIRECT_VALUE),
array("",0,NULL,$DIRECT_VALUE));
return $aFilterData;
}
function getPdfFilter($oDoc){
$aFilterName = "";
if ($oDoc->supportsService("com.sun.star.text.TextDocument") == true):
$aFilterName = "writer_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.WebDocument") == true):
$aFilterName = "writer_web_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.GlobalDocument") == true):
$aFilterName = "writer_globaldocument_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.sheet.SpreadsheetDocument") == true):
$aFilterName = "calc_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.drawing.DrawingDocument") == true):
$aFilterName = "draw_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.presentation.PresentationDocument") == true):
$aFilterName = "impress_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.formula.FormulaProperties") == true):
$aFilterName = "math_pdf_Export";
endif;
return $aFilterName;
}
function ConvertToUrl($sFileName){
$sFileName = str_replace("\\", "/", $sFileName);
$sFileName = str_replace("%", "%25", $sFileName);
$sFileName = str_replace(" ", "%20", $sFileName);
$sFileName = str_replace("#", "%23", $sFileName);
$sFileName = str_replace("&", "%26", $sFileName);
$sFileName = str_replace("+", "%2B", $sFileName);
$sFileName = str_replace("<", "%3C", $sFileName);
$sFileName = str_replace("=", "%3D", $sFileName);
$sFileName = str_replace(">", "%3E", $sFileName);
$sFileName = str_replace("@", "%40", $sFileName);
$sFileName = "file:///" . $sFileName;
return $sFileName;
}
?>
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
tani さん こんにちは
・公式のリファレンスに記載されていますので、どの環境でも使えると思います。
http://www.php.net/manual/ja/control-st ... syntax.php
macchaka さん こんにちは
・PHP のリファレンスに無かったので使えないと思っていた try 構文が、PHP 5 以降では使えるらしいので、修正しました。
・公式のリファレンスに記載されていますので、どの環境でも使えると思います。
http://www.php.net/manual/ja/control-st ... syntax.php
macchaka さん こんにちは
・PHP のリファレンスに無かったので使えないと思っていた try 構文が、PHP 5 以降では使えるらしいので、修正しました。
コード: 全て選択
<?php
print "Converter start\n";
if (convertPDF("F:\Hoge.odt", "F:\Hoge.pdf")):
print "Complete\n";
else:
print "Error\n";
endif;
function convertPDF($odf, $pdf){
$Result = false;
$oServiceManager = new COM("com.sun.star.ServiceManager");
$oDesktop = $oServiceManager->createInstance("com.sun.star.frame.Desktop");
// 設定値を指定します
$aLoadProperty = array();
$aLoadProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[0]->Name = "Hidden";
$aLoadProperty[0]->Value = True;
$aLoadProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[1]->Name = "ReadOnly";
$aLoadProperty[1]->Value = True;
$aStoreProperty = array();
$aStoreProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[0]->Name = "FilterName";
$aStoreProperty[0]->Value = "";
$aStoreProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[1]->Name = "Overwrite";
$aStoreProperty[1]->Value = true;
$aStoreProperty[2] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[2]->Name = "FilterData";
$aStoreProperty[2]->Value = createPdfFilterData;
// ファイルを開きます
$oDoc = NULL;
try{
$oDoc = $oDesktop->loadComponentFromURL(ConvertToUrl($odf), "_blank", 0, $aLoadProperty);
} catch(Exception $error) {
print "loadComponentFromURL error message: " . $error->getMessage() . "\n";
}
if ($oDoc <> NULL):
// フィルタは指定しなくてもPDFに出力しますが、念の為設定
$aStoreProperty[0]->Value = getPdfFilter($oDoc);
if ($aStoreProperty[0]->Value <> ""):
// ファイルをPDFに出力します
try{
$oDoc->storeToURL(ConvertToUrl($pdf), $aStoreProperty);
$Result = true;
} catch(Exception $error) {
print "storeToURL error message: " . $error->getMessage() . "\n";
}
endif;
// ドキュメントを閉じて終了します
if ($oDesktop->Frames->Count > 1):
$oDoc->close(true);
else:
$oDesktop->terminate;
endif;
endif;
return $Result;
}
function createPdfFilterData(){
$DIRECT_VALUE = 0;
$aFilterData = array(
array("UseLosslessCompression",0,true,$DIRECT_VALUE),
array("Quality",0,90,$DIRECT_VALUE),
array("ReduceImageResolution",0,false,$DIRECT_VALUE),
array("MaxImageResolution",0,300,$DIRECT_VALUE),
array("UseTaggedPDF",0,true,$DIRECT_VALUE),
array("SelectPdfVersion",0,0,$DIRECT_VALUE),
array("ExportNotes",0,false,$DIRECT_VALUE),
array("ExportBookmarks",0,true,$DIRECT_VALUE),
array("OpenBookmarkLevels",0,-1,$DIRECT_VALUE),
array("UseTransitionEffects",0,true,$DIRECT_VALUE),
array("IsSkipEmptyPages",0,true,$DIRECT_VALUE),
array("IsAddStream",0,false,$DIRECT_VALUE),
array("EmbedStandardFonts",0,false,$DIRECT_VALUE),
array("FormsType",0,0,$DIRECT_VALUE),
array("ExportFormFields",0,true,$DIRECT_VALUE),
array("AllowDuplicateFieldNames",0,false,$DIRECT_VALUE),
array("HideViewerToolbar",0,false,$DIRECT_VALUE),
array("HideViewerMenubar",0,false,$DIRECT_VALUE),
array("HideViewerWindowControls",0,false,$DIRECT_VALUE),
array("ResizeWindowToInitialPage",0,false,$DIRECT_VALUE),
array("CenterWindow",0,false,$DIRECT_VALUE),
array("OpenInFullScreenMode",0,false,$DIRECT_VALUE),
array("DisplayPDFDocumentTitle",0,true,$DIRECT_VALUE),
array("InitialView",0,0,$DIRECT_VALUE),
array("Magnification",0,0,$DIRECT_VALUE),
array("Zoom",0,100,$DIRECT_VALUE),
array("PageLayout",0,0,$DIRECT_VALUE),
array("FirstPageOnLeft",0,false,$DIRECT_VALUE),
array("InitialPage",0,1,$DIRECT_VALUE),
array("Printing",0,2,$DIRECT_VALUE),
array("Changes",0,4,$DIRECT_VALUE),
array("EnableCopyingOfContent",0,true,$DIRECT_VALUE),
array("EnableTextAccessForAccessibilityTools",0,true,$DIRECT_VALUE),
array("ExportLinksRelativeFsys",0,false,$DIRECT_VALUE),
array("PDFViewSelection",0,0,$DIRECT_VALUE),
array("ConvertOOoTargetToPDFTarget",0,true,$DIRECT_VALUE),
array("ExportBookmarksToPDFDestination",0,false,$DIRECT_VALUE),
array("_OkButtonString",0,"",$DIRECT_VALUE),
array("EncryptFile",0,false,$DIRECT_VALUE),
array("DocumentOpenPassword",0,"",$DIRECT_VALUE),
array("RestrictPermissions",0,false,$DIRECT_VALUE),
array("PermissionPassword",0,"",$DIRECT_VALUE),
array("",0,NULL,$DIRECT_VALUE));
return $aFilterData;
}
function getPdfFilter($oDoc){
$aFilterName = "";
if ($oDoc->supportsService("com.sun.star.text.TextDocument") == true):
$aFilterName = "writer_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.WebDocument") == true):
$aFilterName = "writer_web_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.GlobalDocument") == true):
$aFilterName = "writer_globaldocument_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.sheet.SpreadsheetDocument") == true):
$aFilterName = "calc_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.drawing.DrawingDocument") == true):
$aFilterName = "draw_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.presentation.PresentationDocument") == true):
$aFilterName = "impress_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.formula.FormulaProperties") == true):
$aFilterName = "math_pdf_Export";
endif;
return $aFilterName;
}
function ConvertToUrl($sFileName){
$sFileName = str_replace("\\", "/", $sFileName);
$sFileName = str_replace("%", "%25", $sFileName);
$sFileName = str_replace(" ", "%20", $sFileName);
$sFileName = str_replace("#", "%23", $sFileName);
$sFileName = str_replace("&", "%26", $sFileName);
$sFileName = str_replace("+", "%2B", $sFileName);
$sFileName = str_replace("<", "%3C", $sFileName);
$sFileName = str_replace("=", "%3D", $sFileName);
$sFileName = str_replace(">", "%3E", $sFileName);
$sFileName = str_replace("@", "%40", $sFileName);
$sFileName = "file:///" . $sFileName;
return $sFileName;
}
?>
Re: PHPからの利用
みなさん、いろいろありがとうございます。
読んではいるんですが、そもそもXAMPPでCOMを使うこと自体に失敗していて、別サイトにあったExcelを使うサンプルとかすら動かなくて、なんか設定の問題かなぁと難儀しているところです。
これ以上だんまりというのも失礼なので、中間報告です(汗
やっぱり、あんまりやってる人少ないんですねぇ、なかなかphpでのCOM周りは検索しても出てこないです。。。
読んではいるんですが、そもそもXAMPPでCOMを使うこと自体に失敗していて、別サイトにあったExcelを使うサンプルとかすら動かなくて、なんか設定の問題かなぁと難儀しているところです。
これ以上だんまりというのも失礼なので、中間報告です(汗
やっぱり、あんまりやってる人少ないんですねぇ、なかなかphpでのCOM周りは検索しても出てこないです。。。
OpenOffice 3.3.0 on Windows 7(64bit)
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
macchaka さん こんにちは
・サンプルは、日本語に限定しなければ、かなり有ると思います。
http://www.google.co.jp/search?as_q=PHP ... 00&as_dt=e
・ヒントになるか判りませんが...
http://d.hatena.ne.jp/mabtech/20090920/1253426256
http://d.hatena.ne.jp/mabtech/20100621/1277107136
・サンプルは、日本語に限定しなければ、かなり有ると思います。
http://www.google.co.jp/search?as_q=PHP ... 00&as_dt=e
・ヒントになるか判りませんが...
http://d.hatena.ne.jp/mabtech/20090920/1253426256
http://d.hatena.ne.jp/mabtech/20100621/1277107136
Re: PHPからの利用
ご無沙汰してしまいました。
合間を見て、色々と格闘しているのですが、どうも不可解な状態で、これまたググっても出てこないというか。
厳密に言えば出てくるのですが(英語で)、解決に至ったものが見あたらないという状態です。
まず、
のように書くと、
のように書くと、これは何もエラーは起きずに処理が通ります。
ここで海外のサイトだと「きちんとインストールできてるのか?」「Javaランタイムはどうなんだ」みたいな話になるのですが、こちらのコミュニティで掲載されている
OpenOfficeをPDFコンバータにする方法
http://user.services.openoffice.org/ja/ ... f=69&t=870
は動作します。
こちらは同じく "com.sun.star.ServiceManager" という記述なので、OpenOffice.org側の問題というような気がしません。
とはいえ、Wordは動作するので、PHPからCOMが使えていないというわけでもなさそうなのですが。
もしやXAMPPなのがいけないのでしょうか。
このレベルで止まっているので、大変苦悩しています。はぁ。。
OpenOffice3.3.0
Apache 2.2.17/PHP 5.3.5 (part of XAMPP 1.7.4)
Windows7 Pro 32/64bit
合間を見て、色々と格闘しているのですが、どうも不可解な状態で、これまたググっても出てこないというか。
厳密に言えば出てくるのですが(英語で)、解決に至ったものが見あたらないという状態です。
まず、
コード: 全て選択
$testManager = new COM("com.sun.star.ServiceManager");
というエラーになります。しかし、Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `com.sun.star.ServiceManager'
コード: 全て選択
$testManager = new COM("word.application");
ここで海外のサイトだと「きちんとインストールできてるのか?」「Javaランタイムはどうなんだ」みたいな話になるのですが、こちらのコミュニティで掲載されている
OpenOfficeをPDFコンバータにする方法
http://user.services.openoffice.org/ja/ ... f=69&t=870
は動作します。
こちらは同じく "com.sun.star.ServiceManager" という記述なので、OpenOffice.org側の問題というような気がしません。
とはいえ、Wordは動作するので、PHPからCOMが使えていないというわけでもなさそうなのですが。
もしやXAMPPなのがいけないのでしょうか。
このレベルで止まっているので、大変苦悩しています。はぁ。。
OpenOffice3.3.0
Apache 2.2.17/PHP 5.3.5 (part of XAMPP 1.7.4)
Windows7 Pro 32/64bit
OpenOffice 3.3.0 on Windows 7(64bit)
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
macchaka さん こんにちは
・OpenOffice を起動させてから PHP を動作させたらどうなりますか?
・インストールを行った順序が、XAMPP の後にOpenOfficeの順序でしょうか? もしそうなら参照設定?
・XAMPP は32 ビットバイナリですよね?
・OpenOffice を起動させてから PHP を動作させたらどうなりますか?
・インストールを行った順序が、XAMPP の後にOpenOfficeの順序でしょうか? もしそうなら参照設定?
・XAMPP は32 ビットバイナリですよね?
Re: PHPからの利用
さっそくのご連絡ありがとうございます。
結論からいうと、先にOpenOfficeを立ち上げて試したところ動きました。
その後、終了して試してみましたが、動きました。
一度、再起動して直後に試してみたところ、動きました。
実は、昨日書いた後、下記のような記事を見つけ、色々設定を変えたので、その影響があるかもしれません。
(サービス登録で気後れしてしまい、中断しましたが、コンポーネントの設定まではやっていました)
http://puno.ayun.web.id/2009/08/php-ooo ... vironment/
嘘のように動いているので、後ほど、設定を順番に戻してみて、試してみます。
ちなみに、インストール順序はXAMPP→OpenOfficeの順です。
参照設定とは何でしょう。…すみません。いつもCentOSなもので。。。
バイナリは32bitです。いくつかの環境で試してみているので、そこは大丈夫だと思います。
結論からいうと、先にOpenOfficeを立ち上げて試したところ動きました。
その後、終了して試してみましたが、動きました。
一度、再起動して直後に試してみたところ、動きました。
実は、昨日書いた後、下記のような記事を見つけ、色々設定を変えたので、その影響があるかもしれません。
(サービス登録で気後れしてしまい、中断しましたが、コンポーネントの設定まではやっていました)
http://puno.ayun.web.id/2009/08/php-ooo ... vironment/
嘘のように動いているので、後ほど、設定を順番に戻してみて、試してみます。
ちなみに、インストール順序はXAMPP→OpenOfficeの順です。
参照設定とは何でしょう。…すみません。いつもCentOSなもので。。。
バイナリは32bitです。いくつかの環境で試してみているので、そこは大丈夫だと思います。
OpenOffice 3.3.0 on Windows 7(64bit)
-
- 記事: 337
- 登録日時: 6月 21, 2010, 6:52 am
Re: PHPからの利用
macchaka さん こんにちは
・動作出来る様になって良かったですね。
・うまく動作する設定方法が解りましたら、投稿していただけると、Win7(64) + XAMPP + PHP + OpenOffice を使いたい方の参考になると思います。
・動作出来る様になって良かったですね。
・うまく動作する設定方法が解りましたら、投稿していただけると、Win7(64) + XAMPP + PHP + OpenOffice を使いたい方の参考になると思います。
Re: PHPからの利用
調べてみると簡単なことでしたorz
以前挙げた
http://puno.ayun.web.id/2009/08/php-ooo ... ent/#way02
こちらでも挙げられているApacheサービスにおいて「デスクトップとの対話をサービスに許可」にチェックが入っていなかったことによるものでした。
結論からすれば、基本的なことなんだろうな、と思うのですが、私が見る限り、ここにチェックを入れよと書いてあるドキュメントには巡り合わなかったので、盲点でした。
なお、これはWin7 64bitだけに依存する問題ではありませんでしたので、念のため書き添えます。
お騒がせしました。
末筆になりましたが、「このコード、神!」です(笑)
私もOpenOffice.orgとこのコミュニティに、貢献できればと思います。
ありがとうございました。
以前挙げた
http://puno.ayun.web.id/2009/08/php-ooo ... ent/#way02
こちらでも挙げられているApacheサービスにおいて「デスクトップとの対話をサービスに許可」にチェックが入っていなかったことによるものでした。
結論からすれば、基本的なことなんだろうな、と思うのですが、私が見る限り、ここにチェックを入れよと書いてあるドキュメントには巡り合わなかったので、盲点でした。
なお、これはWin7 64bitだけに依存する問題ではありませんでしたので、念のため書き添えます。
お騒がせしました。
末筆になりましたが、「このコード、神!」です(笑)
私もOpenOffice.orgとこのコミュニティに、貢献できればと思います。
ありがとうございました。
OpenOffice 3.3.0 on Windows 7(64bit)
Re: PHPからの利用
追伸
僕のような素人で困った方のために書き添えます(笑)
OpenOffice.orgをインストールした後、必ず一度起動しなければなりません。
なぜなら「ユーザ登録」画面が出てくるからですw
これで「応答無し」になってしまいます。
サーバ側でダイアログが出るので気付くといえば気付くのですが、これで「オレの時間を返せ-」という人が減ってくれれば幸いです。
僕のような素人で困った方のために書き添えます(笑)
OpenOffice.orgをインストールした後、必ず一度起動しなければなりません。
なぜなら「ユーザ登録」画面が出てくるからですw
これで「応答無し」になってしまいます。
サーバ側でダイアログが出るので気付くといえば気付くのですが、これで「オレの時間を返せ-」という人が減ってくれれば幸いです。
OpenOffice 3.3.0 on Windows 7(64bit)