用C++/Qt编写的程序中的RTF/doc/docx文本提取

Nig*_*ker 3 c++ windows qt

我正在用Qt/C++ 编写一些程序,我需要从Microsoft Word/RTF/docx文件中读取文本.

我正在寻找一些可以进行提取的命令行程序.它可能是几个程序.

我发现最接近的是DocToText,但它有几个bug,所以我不能使用它.我还在PC上安装了Microsoft Word.也许有一些方法可以使用它来阅读文本(不知道如何使用COM)?

小智 9

现在,这是非常丑陋和非常hacky,但它似乎适合我的基本文本提取.显然在Qt程序中使用它你必须为它生成一个进程等,但我一起攻击的命令行是:

unzip -p file.docx | grep '<w:t' | sed 's/<[^<]*>//g' | grep -v '^[[:space:]]*$'
Run Code Online (Sandbox Code Playgroud)

所以那是:

unzip -p file.docx:-p =="解压缩为stdout"

grep'<w:t':抓住包含'<w:t'的行(<w:t>是"text"的Word 2007 XML元素,据我所知)

sed's/<[^ <] > // g'*:删除标签内的所有内容

grep -v'^ [[:space:]] $'*:删除空行

有一种更有效的方法可以做到这一点,但它似乎对我使用的几个文档起作用.

据我所知,unzip,grep和sed都有适用于Windows和任何Unix的端口,所以它应该是合理的跨平台.Despit是一个丑陋的黑客;)