本节是对《基于Ifilter接口的文档解析》的补充,根据loadfilter的原理重写该函数,重写后不需要安装office软件,只需取出相应的ifilter组件,通过自行进行注册表注册就可以了。
LoadFilter的流程如下(以.pdf为例,打开注册表):
1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 找到.pdf, .pdf中子键PersistentHandler 值为{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}
2. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID中查找{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}, 找到含有PersistentAddinsRegistered的结点,PersistentAddinsRegistered含有结点{89BCB740-6119-101A-BCB7-00DD010655AF}。
{89BCB740-6119-101A-BCB7-00DD010655AF} 为Ifilter接口的GUID, 取出该结点的值{E8978DA6-047F-4E3D-9C78-CDBE46041603}。
3. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID查找{E8978DA6-047F-4E3D-9C78-CDBE46041603}结点, 该结点中子节点InprocServer32的默认值即为PDF ifilter DLL的地址。
4. 后续任务就是对该DLL进行注册和 load,详见http://www.codeproject.com/Articles/13391/Using-IFilter-in-C# 。
1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 找到.pdf, .pdf中子键PersistentHandler 值为{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}
2. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID中查找{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}, 找到含有PersistentAddinsRegistered的结点,PersistentAddinsRegistered含有结点{89BCB740-6119-101A-BCB7-00DD010655AF}。
{89BCB740-6119-101A-BCB7-00DD010655AF} 为Ifilter接口的GUID, 取出该结点的值{E8978DA6-047F-4E3D-9C78-CDBE46041603}。
3. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID查找{E8978DA6-047F-4E3D-9C78-CDBE46041603}结点, 该结点中子节点InprocServer32的默认值即为PDF ifilter DLL的地址。
4. 后续任务就是对该DLL进行注册和 load,详见http://www.codeproject.com/Articles/13391/Using-IFilter-in-C# 。

本文档介绍了如何不依赖Office软件,通过Ifilter接口解析PDF文档。详细讲解了从注册表获取PDF IFilter组件的过程,并提供了FindDLLPath和ReadRegKey函数的实现,以及如何加载和使用该组件进行文档解析。

2651

被折叠的 条评论
为什么被折叠?



