1

COM を使用して、動的に作成された単語 docx を PDF に変換しています。すべてが完全に機能していますが、c:\windows\temp\ ディレクトリが非常に大きくなっています (C ドライブのディスク容量が限られています)。以下は、PDFを生成するために使用しているコードです。ファイルが閉じられた後にシステムの一時ディレクトリに追加される一時ファイルを削除する方法はありますか? さらに、単語 doc が pdf に変換された後は、もう必要ありません (したがって、tmp ファイルを削除しても単語 doc が壊れても問題ありません)。

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

try{
    $word = new com('word.application');
}
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; //don't open word gui on server
$word->DisplayAlerts = 0; //don't allow any alerts to open 
//open doc
try{
    $doc = $word->Documents->Open(DOC_LOCATION . "temp_doc/" .  $filename . ".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;
}
try{
    $doc->ExportAsFixedFormat(DOC_LOCATION . "temp_pdf/" . $filename . ".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;
}
$word->Quit();
$word = null;
4

1 に答える 1

0

バージョンは言いませんが、XP の場合、単純なバッチ ファイルを使用して\Documents and Settings\USER\Local Settings\temp\のファイルを削除できます。例:

C:
cd \Documents and Settings\USER\Local Settings\Temp
attrib -R -S -H *.* /S /D
DEL /S /F /Q *.*

それに応じて変更します。

于 2012-11-15T17:59:15.377 に答える