3

在 HTML/PHP 中显示格式化的 Word Doc 的最佳方式是什么?

这是我目前拥有的代码,但它没有格式化:

$word = new COM("word.application") or die ("Could not initialise MS Word object.");
$word->Documents->Open(realpath("ACME.doc"));

// Extract content.
$content = (string) $word->ActiveDocument->Content;

echo $content;

$word->ActiveDocument->Close(false);

$word->Quit();
$word = null;
unset($word);
4

3 回答 3

4

我想通了。查看阅读 Word Doc 并将其格式化为 HTML 的解决方案:

$filename = "ACME.doc";
$word = new COM("word.application") or die ("Could not initialise MS Word object.");
$word->Documents->Open(realpath($filename));

$new_filename = substr($filename,0,-4) . ".html";

// the '2' parameter specifies saving in txt format
// the '6' parameter specifies saving in rtf format
// the '8' parameter specifies saving in html format
$word->Documents[1]->SaveAs("C:/a1/projects/---full path--- /".$new_filename,8);
$word->Documents[1]->Close(false);
$word->Quit();
//$word->Release();
$word = NULL;
unset($word);

$fh = fopen($new_filename, 'r');
$contents = fread($fh, filesize($new_filename));
echo $contents;
fclose($fh);
//unlink($new_filename);

有几件事...在我的 PHP 页面顶部添加“charset=UTF-8”会添加一堆带问号的菱形...我删除了它,它运行良好。

此外,SaveAs 必须具有完整路径,至少在本地,我添加了它以使其工作。

再次感谢您的帮助。

于 2011-03-17T04:50:46.520 回答
3

我对 COM 一无所知,但是在 MSDN 上查看 Word API 文档时,看起来你最好的选择是将其Document.SaveAs保存为wsFormatFilteredHTML临时文件,然后将该 HTML 提供给用户。一定要选择过滤后的HTML,否则你会得到有史以来最浓的标签汤。

于 2011-03-17T02:53:35.710 回答
0

我需要正确的 XHTML,Office 不会给你(我明白)。如果需要,您可以使用 JTidy 或 TagSoup 等工具来修复 HTML。参照。http://slideguitarist.blogspot.com/2011/03/exporting-word-documents-to-html.html

于 2011-03-28T12:18:52.320 回答