Microsoft 已发布 Office 文件的二进制规范。我需要从.Doc 中提取文本。此页面似乎暗示从 Doc 中提取文本并不难,但我不遵循。
这就是我到目前为止所拥有的。
wIdent 和 wFib 的值是错误的。请指出我正确的方向。
UInt16 wIdent; // (2 bytes): An unsigned integer that specifies that this is a Word Binary File. This value MUST be 0xA5EC.
UInt16 wFib; // (2 bytes): An unsigned integer that specifies the version number of the file format used. Superseded by FibRgCswNew.nFibNew if it is present. This value SHOULD<13> be 0x00C1.
using (FileStream fs = File.OpenRead(fileName))
{
UTF8Encoding utf8 = new UTF8Encoding(true);
BinaryReader brFile = new BinaryReader(fs);
wIdent = brFile.ReadUInt16();
Debug.WriteLine(wIdent.ToString());
Debug.WriteLine(String.Format("{0:x}", wIdent)); // cfd0 wrong value
wFib = brFile.ReadUInt16();
Debug.WriteLine(wFib.ToString()); // 57361 wrong value
byte[] b = new byte[1024];
while (brFile.Read(b, 0, b.Length) > 0)
{
Debug.WriteLine(utf8.GetString(b));
}
}
上面显示了大部分文本,但也显示了许多其他内容。
我有通过 OpenXML 工作的 docx。需要的不仅仅是 iFilter,因为它需要半格式化。对文本运行算法以剔除不感兴趣的文档。也用于文档的快速文本,以便他们可以决定是否要下载文件并进行自动编码。
Office 互操作不是一种选择。这是针对服务器的,Microsoft 不建议在该环境中使用 Office 自动化。我们尝试过,但对于我们需要处理的文件量来说并不稳定。