2016-12-01 4 views
0

文書管理システムを作成していますが、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の方法と成功。

答えて

0

スペースを削除してアンダースコアを追加し、pdfに変換したときに別のフォルダに戻すバッチファイルを使用していますが、誰でも上記を解決できる場合はどうぞお願いしますCOMでファイル名のスペースを受け付けないで問題を起こし、その後あなたに帽子をかける。

関連する問題