Általános információk a bináris formátumot szó ms-doc
A javasolt módja, hogy a legtöbb programozási Microsoft Word problémákat az, hogy egy alap Szó kölcsönhatás szerelvények. Ez az .NET osztályok, amely teljes objektum modell dolgozó Microsoft Word. Ebben a sorozatban, úgy véljük, csak az előrehaladott forgatókönyvek, mint például azok, amelyekben a termék a Microsoft Word nincs telepítve.
Az alapvető komponensei MS-DOC File Format
A következők a legfontosabb struktúrák amit tudnia kell, ha dolgozik, DOC fájlokat.
Patak Word dokumentum - ez a fő stream a DOC fájl, amely tartalmazza az összes adatot a fájlt, kivéve a táblákat, amelyek tárolják 1Table patak vagy 0Table patak.
információs fájl blokk kezdődik offset 0x00 áramlási Word dokumentumot. Rámutat a helyét az összes többi adat a fájlban. Ezek a helyek által meghatározott egy számpár, amelyek közül az első helyét jelöli, és a második - felbontás. Ezek a számok vannak megadva a fájl információs blokkban vázak, mint FibRgFcLcb97. A nevét a helyszínen azonosított előtag fc, és a mérete a név - prefix LCB.
CLX szerkezet egy tömb 0 vagy több Prc struktúrák. amelyek információkat tartalmaznak az ingatlan, majd megy Pcdt szerkezetét. szerkezet tartalmaz PlcPcd.
Symbol lehet szöveges vagy nem szöveges, például bekezdésben jel vagy a hivatkozási objektumot. A mérete változhat attól függően, hogy tartozik ANSII Unicode vagy ellenőrző karaktert. Szomszédos karakterek a dokumentum nem feltétlenül szomszédos egy bináris fájlt.
A karakter pozíció (CP) - egy 32-bites előjel nélküli egész szám, amely megadja az index a karakter helye a szövegben.
Pcd szerkezet határozza meg a szöveg pozícióját egy Word dokumentumban áramlás, valamint bizonyos tulajdonságait a szöveg.
Structure PlcPcd PLC szerkezet. amely összehasonlítja a helyzetét egy sor karakterek szerkezetek PCD-ben. Más szóval, összehasonlítja a pozíciókat a szimbólumok a szimbólumok a szövegben.
Szöveg kinyerése Word fájlok
Formai algoritmus kivonat szövegét tartalmazza dokumentumok nyílt specifikációk MSDN alpontban 2.4.1 visszakeresése szöveg. Ezen túlmenően, a 3.1 fejezetben Példa a CLX Példák részében egy részét egy példa ezt az eljárást. Itt le van írva egy egyszerűsített változata a folyamatot.
Az eljárás kivonására szöveget egy Word-dokumentum
Vegyünk egy DOC fájlt az adatfolyam.
Kezdje fájl információ olvasási egység offset 0 Word dokumentum áramlását. További információért lásd. Szakasz 2.5.15 Hogyan kell olvasni a FIB.
Bent a fájl információs blokk szerkezet keresse FibRgFcLcb97. Ez a szerkezet kezdődik 54 bájtos adat blokk és egy fájlt sorozatából áll a 4-bájtos mezőket.
Tekintsük FibRgFcLcb97.fcClx mező byte és 268 byte-FibRgFcLcb97.lcbClx mező 272. Ezek jelzik a helyét az ofszet és a méret CLX szerkezetét.
Kezdje olvasható a vízfolyás szerkezettel CLX offset tábla meghatározott FibRgFcLcb97.fcClx területen.
Bent a szerkezet CLX találni Pcdt szerkezet, amely közvetlenül mögötte, a tömb .RgPrc. változtatható mérettel rendelkező és áll a struktúrák Prc.
Minden elem a tömb, tegye a következőket:
Tekintsük attribútum .clxt. amely a 0 bájt Prc szerkezetét. Ha .clxt = 0x02, akkor megtalálta Pcdt.
Ha .clxt = 0x01, a következő két bájt számít előjeles egész, aztán megy tovább a bájtok számát a következő tömb elem.
Bent a szerkezet Pcdt találják PlcPcd struktúra kezdődik az ötödik bájt Pcdt szerkezetét.
Töltsük be a tömb és a tömb PlcPcd.aPcd PlcPcd.aCp. Az elemek ezen tömbök megfelelnek egymásnak az index értéke.
Minden Osztókör szerkezet PlcPcd.aPcd tegye a következőket:
Pcd.Fc.fCompressed Count mező értéke a bit 46 a jelenlegi Osztókör szerkezetét. Ha a kapott érték 0 pcD szerkezet utal, hogy a 16-bites Unicode karakter. Ha a kapott érték 1 utal, hogy a szerkezet a 8-bites karakter ANSI.
Olvassa le az értéket Pcd.Fc. amely megfelel byte 2-5 Osztókör aktuális szerkezetét, és a megfelelő érték a szimbólum helyzetét.
Abban az esetben, Unicode szöveget karakter helyzetben a jelenlegi helyzet értékéből indul egy eltolási értéket, amely egyenlő Pcd.Fc Word dokumentum patak, és elfoglalja a két bájtot karaktert.
Abban az esetben, ANSI szöveget az aktuális karakter pozíción kezdődik egy eltolt, ami fele az érték Pcd.Fc és elfoglalja egy byte-ot karaktert.
Mindenesetre, a karakterek számát, az aktuális karaktert pozíció egyenlő a különbség értéke a következő karakter helyre a tömb és a jelenlegi karakter pozícióját.