c # - Er der et svar til IFilter på Mono/Linux?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg konverterer en app fra .NET/Windows til mono/linux, men jeg kan ikke finde nogen oplysninger om IFilters. Jeg er opmærksom på Microsoft IFilters for Office, Adobe og FoxIt IFilters til PDF, men ved ikke, om de arbejder på Linux og/eller Mono, eller hvis der er noget funktionelt ækvivalent (bruges til uddragning af almindelig tekst fra proprietære former) .

Bedste reference


IFilter er et indbygget Windows API, ikke en .NET API.


På Linux kan du bruge filtre fra en søgeindeksør som f.eks. Beagle.

Andre referencer 1


Så vidt jeg kan fortælle, er IFiler-teknologien stadig brugt i nyere applikationer. I det oprindelige design (omkring 1996 eller før) er disse COM-objekter skrevet i C eller C ++. De fleste IFilters tilgængelige fra tidligere år vil ikke fungere på 64bit. Hvis du opbygger en app uden for Windows, skal du muligvis oprette den kode, der indlæses og kalder IFilterne.


Enhver implementering, der ønsker at bruge en IFilter, skal have en grænseflade til at indlæse og ringe til IFilter i hukommelsen, pege på den til en fil og sparke den for at læse indholdet, og spar derefter et par gange mere for at trække tekstresultatet fra en hukommelsesbuffer . Moderne implementeringer ved hjælp af IFilters bruger mere avanceret hukommelsesbeskyttelse til at skylle hukommelsen, når der opstår lækager, ikke ualmindeligt ved C-kodning. Et par prøver (fra omkring 2003 eller 2005) er tilgængelige på internettet, de skal arbejde, så længe du respekterer den gamle stil grænseflade.


Håber dette er til hjælp.

Andre referencer 2


Ikke sikker på, om dette er det du bruger, men ifølge MSDN IFilter (som relateret til indekseringstjenesten) er forældet. Som sådan vil jeg blive overrasket, hvis den blev genimplementeret i Mono.


Når det er sagt, mange .NET-samlinger kan droppes i et Mono-program uden genkompilering. Selv om det forekommer mere sandsynligt, at dette ville være tilfældet med en tredjeparts DLL end en fra Microsoft, kan det være værd at se, om det vil fungere i dit tilfælde.


http://msdn.microsoft.com/en-us/library/ms691105(v=vs.85).aspx[2]