2010-03-08 12 views
6

Sto cercando di estrarre il testo da file PDF utilizzando un iFilter.Come utilizzare uno specifico PDF IFilter

Adobe PDF iFilter distribuito con Adobe Reader è orribile, restituendo i messaggi HRESULT E_FAIL per molti documenti PDF.

Il FoxIt PDF IFilter funziona magnificamente su praticamente tutti i PDF che ho utilizzato per i test.

Il problema è che ogni volta che viene eseguito Adobe Updater, sostituisce il fantastico FoxIt IFilter con il pappagallo Adobe IFilter.

Ho utilizzato il metodo LoadIFilter per ottenere l'IFilter registrato per i file PDF. C'è un modo per forzare l'API Win32 per caricare Foxil IFilter anziché Adobe IFilter?

NOTA: Questa domanda su determining which IFilters are installed pone una domanda correlata, ma non identica.

risposta

3

L'IFilter sembra essere registrato come un oggetto COM con Windows, quindi dovresti essere in grado di crearne un'istanza usando COM.

Da http://msdn.microsoft.com/en-us/library/ms692565: La struttura del DLL è che ha un IFilter e IClassFactory

Dovreste essere in grado di creare un'istanza del IClassFactory (dato il CLSID)

check out http://msdn.microsoft.com/en-us/library/ms684007 http://msdn.microsoft.com/en-us/library/ms680760

+0

Grazie Nigel, ti darò che una prova. – dthrasher

0

Oltre alla precedente modalità, è sufficiente controllare l'IFilter DLL di sistema utilizzato per il tipo di file che ti interessa.

Se si trova la DLL Adobe anziché Foxit DLL, modificare la voce InprocServer32 per la chiave a cui fa riferimento PersistentHandler del proprio tipo di file. Questo potrebbe richiedere diritti speciali, a seconda del sistema che usi. Quindi avviare l'utilizzo di IFilter.

Date un'occhiata alla semplice spiegazione di come vengono selezionate le DLL IFilter:

http://msdn.microsoft.com/en-us/library/ms692488

Problemi correlati