[PHP-users 17261]COMオブジェクトへのマルチバイト文字列の引渡しについて

Tuffy Rhodes tuffyrhodes2000 @ yahoo.co.jp
2003年 8月 9日 (土) 12:09:56 JST


はじめまして、高松と申します。

PHPからWordドキュメントのテンプレートを開いてドキュメン
トを
編集し保存する、というのを実現しようとテストしています。

Wordのフォームフィールドに文字列の引渡しをすることはでき
たのですが、
日本語を渡したときに、渡した文字列の後ろに変な文字が付加
されてしまって、
困っています。

同じことを VisualBasicでやってみたところ、問題が無かった
ので、
phpスクリプトの問題かと思い、メールしました。

環境は
Windows2000
apache1.3.26
php4.3.1(CGI)
Office2000

以下、ソースです。(実際はEUCで記述)
 -----------------------------------
<?php

$text = "2バイト文字の入力";

// COMオブジェクトの作成
$word = new COM("word.application");
print "Loaded Word, version {$word->Version}<br>\n";

// テンプレートを開く
$doc = $word->Documents->Open("c:\\temp\\formtest.dot");
$doc->Activate;

// ドキュメントを編集する
$doc->FormFields["Text1"]->Result = 
    mb_convert_encoding( $text, "SJIS", "EUC-JP");

// 作成したドキュメントを保存する
$doc->SaveAs("c:\\temp\\formtest2.doc");

// ドキュメントを閉じる
$doc->Close();
// Wordを閉じる
$word->Quit();
$word->Release();
unset($word);
?>
ok.
 --------------------------------

ソース中の、formtext.dot がWordテンプレートで、
Text1というフォームドキュメントがあります。

これを実行すると、Text1は

2バイト文字の入力・?3・・・・・・・

などとなります。
引き渡した後にphpで取り出しvar_dumpしてみると、27バイ
トでした。

COMの問題かと思いましたが、同じようなことをVB6だと正
常にできました。

何か手がかりでもご存知の方がおりましたら、ご教授願います
。

--
Takamatsu <tuffyrhodes2000 @ yahoo.co.jp>


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/



PHP-users メーリングリストの案内