文書管理システムを作成していますが、docxファイルを開いてPDFに変換する必要がありますが、厄介な問題は、ファイル名にスペースを含むdocxファイルを開きません。ファイル名にアンダースコアを付けたり、スペースを入れないとうまくいきます。PHPでCOMを使用してファイル名にスペースを含むdocxを開くことはできません
ここに私のコードです。
$destinationPath = 'C:/inetpub/wwwroot/approvals/'.$pdffilename.'';
$assembly = 'Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c';
$class = 'Microsoft.Office.Interop.Word.ApplicationClass';
$w = new DOTNET($assembly, $class);
$w->visible = false;
$fn = 'C:/inetpub/wwwroot/approvals/'.$filename.'';
$w->Documents->Open($fn);
// Save as PDF
$XlFixedFormatTypePDF = 17; $w->ActiveDocument->ExportAsFixedFormat($destinationPath, $XlFixedFormatTypePDF, false, 0, 0, 0, 0, 7, true, true, 2, true, true, true);
// close the application and release the COM object
$w->quit(false);
私が手にエラーがある: -
PHP Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Word
Description: Sorry, we couldn’t find your file. Is it possible it was moved, renamed or deleted?
私は変数$fn
を見て、私は、それがCOMへのフルパス名と内線を与えているが、COMは、スペースが好きではありません。さまざまな括弧やその他のいくつかの項目を試してみましたが、私は提案をすることはできません。解決策を見つけられないようです.COMの処理のためにMicrosoftのサイトを見てきました。 https://msdn.microsoft.com/en-us/library/hhf98b5c.aspx
は、私がPHPWordとTCPDFを試してみましたが、ほとんど精神的な内訳を持っていた、いずれかの他の人々の多くにローミングサービスをしなかった参照し、かなりの数の人々はとてもMS経由でそれをやってみました、それが正常に動作することになっ問題がありましたCOMの方法と成功。