2010-03-08 19 views
6

Bir iFilter kullanarak PDF dosyalarından metin ayıklamak çalışıyorum.Belirli bir PDF nasıl kullanılır IFilter

Adobe Reader ile birlikte dağıtılan Adobe PDF iFilter, çok sayıda PDF belgesine HRESULT E_FAIL iletiyi döndürerek korkunçtur.

FoxIt PDF IFilter, test için kullandığım tüm PDF'lerin hemen hemen üzerinde güzel çalışır.

Sorun, Adobe Güncelleyicinin her çalıştığı zaman, mükemmel FoxIt IFilter'ı, yepyeni bir Adobe IFilter ile değiştirmesidir.

PDF dosyaları için kayıtlı IFilter'ı almak için LoadIFilter yöntemini kullanıyorum. Win32 API, Adobe IFilter yerine FoxIt IFilter yüklemek için zorlamak için bir yolu var mı?

NOT:determining which IFilters are installed hakkında bir soru sorar - ama aynı değil - soru.

cevap

3

IFilter, Windows ile bir COM nesnesi olarak kaydedilmiş gibi görünüyor, bu yüzden COM kullanarak bir örneğini oluşturabilmeniz gerekir. http://msdn.microsoft.com/en-us/library/ms692565 itibaren

: DLL yapısı bir ıfilter'ı ve IClassFactory olmasıdır

Sen

çek dışarı http://msdn.microsoft.com/en-us/library/ms684007 http://msdn.microsoft.com/en-us/library/ms680760

(CLSID verilen) IClassFactory örneğini gerekir
+0

Teşekkür Nigel, bir denemede da vereceğiz. – dthrasher

0

Yukarıdaki yolun yanında, ilgilendiğiniz dosya türü için sistem genelinde kullanılan IFilter DLL dosyasını kontrol edebilirsiniz.

Foxit DLL yerine Adobe DLL dosyasını bulursanız, filetype'ınızın PersistentHandler anahtarının başvurduğu InprocServer32 girdisini değiştirin. Bu, kullandığınız sisteme bağlı olarak özel haklara ihtiyaç duyabilir. Sonra IFilter kullanımını başlatın.

ıfilter'ı DLL nasıl seçildiğini basitçe açıklama göz at:

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