ADDITION: 我发现计数行最接近的方法是通过使用Linux命令“antiword”的DOC文件,antiword将返回文本版本的DOC;而对于DOCX则使用将从DOCX中检索内容并通过与反义词相同的文本功能推送数据的调用。计数DOC和DOCX中的字符与LINUX
现在的问题是,当你在文件中有表格时,antiword会添加很多空格。
===
我有一个脚本,docx文件内工作了字符数:
$zip = new ZipArchive;
$striped_content = '';
$content = '';
if(!$filename || !file_exists($filename)) return false;
$zip = zip_open($filename);
if (!$zip || is_numeric($zip)) return false;
while ($zip_entry = zip_read($zip)) {
if (zip_entry_open($zip, $zip_entry) == FALSE) continue;
if (zip_entry_name($zip_entry) != "word/document.xml") continue;
$content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
zip_entry_close($zip_entry);
}// end while
zip_close($zip_entry);
$content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content);
$content = str_replace('</w:r></w:p>', "\r\n", $content);
$striped_content = trim(strip_tags($content));
如果我有doc文件我基本上转换文件中使用LibreOffice的命令行DOCX,比我跑上面的脚本。
问题是,我无法找出在“HEADER”和“FOOTER”区域内有多少个单词文件。这如何实现?
我的服务器上运行: PHP 5.3 的LibreOffice 的CentOS 6.5
我不知道我上需要提供什么其他信息, 谢谢你的手在你的答案。
p.s.
我曾尝试转换DOC和DOCX到TXT,但结果是“头”和“页脚”区域没有被保存下来的txt文档
而且内,我已经找到了最接近的解决方案是: https://github.com/nagilum/DOCx
图书馆拆分整个docx文件,你有纯文本标题,内容和页脚,我可以尝试从他们的锻炼字数。但是,libreoffice有时会将文件严重转换为docx,并且在转换之后,具有1页的doc文件可能在docx中有2个页面。
哎,感谢您的回复。在我的情况下,其他人可能会有所不同,“Characters”或“CharactersWithSpaces”标记仅包含文件的“内容”区域,并且包含“标题”和“页脚”。用“标题”我应该有700个字符,但没有它,这是我在“CharactersWithSpaces”中看到的是500。 – user3402600 2015-02-10 21:41:31