1
我使用COM将动态创建的word docx转换为PDF。一切正常,但我们的c:\ windows \ temp \目录变得非常大(我们的C盘上的磁盘空间有限)。以下是我用来生成PDF的代码。有没有办法删除临时文件在文件关闭后被添加到系统的临时目录中?另外,doc单词转换为pdf之后,我们不再需要它(因此,删除tmp文件是否会破坏单词doc并不重要)。使用COM和Word删除系统tmp文件
/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;
感谢您的回复。 IT经理希望它在我们完成后尽快删除文件,并且我们无法清除整个临时目录(显然有些会话数据存储在那里) – Mike
但是看起来您知道临时文件的名称文件($ doc-> ExportAsFixedFormat(DOC_LOCATION。“temp_pdf /”。$ filename。“.pdf”,...),为什么不用** unlink('TempFile')**; –
删除它们? $ doc-> ExportAsFixedFormat()返回临时文件名或者其他东西?如果不是,那么所有这一行都会在我们命名为temp_pdf的目录中创建pdf(不会对tempfile执行任何操作)在你的语句中(unlink(' TempFile');你不需要定义'TempFile'吗? – Mike