HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Word dokumentum tartalomjegyzék exportálása HTML-be


Példaprogram letöltése

13684 bájt

Ha egy saját dokumentumunk tartalomjegyzékét szeretnénk az interneten publikálni, akkor jól jön egy olyan komponens mely egy Word dokumentum tartalomjegyzékéből automatikusan előállítja a szükséges HTML kódot, amit csak a készítendő WEB oldalra be kell másolni a megfelelő helyre.
A mellékelt példaprogram megnyitása előtt a ContentGenerator.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A tartalomjegyzékben csupán két szintet fogunk megkülönböztetni. A felső szint az lesz, aminek a stílusa "TJ 1", a többi stílus között pedig nem teszünk különbséget. A felső szint címét a többitől eltérő stílussal adjuk meg. Maga a tartalomjegyzék egy táblázatban jelenik meg, amely középre van igazítva, és két oszlopa van. Az elsőben a címek, a másodikban pedig az oldalszámok jelennek meg. Az oszlopok szélességét és a sorok magasságát property-ken keresztül adhatjuk meg. A táblázat páros és páratlan sorszámú sorai eltérő színekkel jelennek meg.
Az elkészült HTML kódot a HTML property-ből lehet kiolvasni.

A tartalomjegyzék elkészítése az Execute eljárásban történik. Ebben első lépésben töröljük a HTML property értékét, és beírjuk a bevezető HTML kódot. Ezután ellenőrizzük, hogy létezik-e a megadott Word dokumentum, és ha létezik, akkor a Word segítségével megnyitjuk azt. Ez a művelet nem fog látszani, mivel mindent a háttérben csinálunk. A megnyitott dokumentumot a WordDoc objektumon keresztül érjük el. A megnyitás után az első teendőnk a Repaginate függvény meghívása, ami frissíti a dokumentum oldalszámait. Erre nem minden esetben van szükség, de gyakran előfordul, amikor igen, és kárt nem okozunk a meghívásával.
A WordDoc-on keresztül elérjük a TablesOfContents objektumot, amit a Contents változóban tárolunk el. Ez a dokumentum tartalomjegyzékeinek listáját tartalmazza. Ennek Count property-jéből kiolvassuk a tartalomjegyzékek számát. Ha 0, akkor a dokumentumnak nincs tartalomjegyzéke, tehát nem érdemes tovább foglalkozni vele.
A Cont változóban eltároljuk az első tartalomjegyzék Range objektumát. A Range objektum tartalmazza a tartalomjegyzék tartalmát.
Cont:=Contents.Item(1).Range;
Mi csak az első tartalomjegyzékkel foglalkozunk, a többit nem vesszük figyelembe. Ideális esetben egyébként csak egy tartalomjegyzék van dokumentumonként.

Innentől kezdve egy kicsit bonyolódik a helyzet. A cs változóban tároljuk az aktuális sor színmeghatározását. Ennek értéke vagy egy üres sztring, vagy a háttérszín HTML meghatározása. A Cont.Paragraphs objektumon keresztül elérjük a tartalomjegyzék bekezdéseit, amik tulajdonképpen a tartalomjegyzék tételei. A Count property-ből kiolvasható ezek száma. Egy ciklusban sorban beolvassuk őket egyenként. A ciklus minden lépésében a cs változó értékét megváltoztatjuk, így érjük el, hogy a páros és páratlan sorok eltérő háttérszínnel rendelkezzenek. A ContentItem változóban eltároljuk az i. sorszámú bekezdés (tétel) objektumát. Ennek Style property-jéből kiolvasható a bekezdés stílusa. Ellenőrizzük, hogy ez "TJ 1"-e, és ha igen, akkor az st változóban eltároljuk a főcímek stílusát meghatározó HTML kódot. Ellenkező esetben töröljük az st változó tartalmát.
      cs:='';     i:=1;
      while i<=Cont.Paragraphs.Count do begin
        if cs='' then cs:='bgColor=#fffff0 ' else cs:='';
        ContentItem:=Cont.Paragraphs.Item(i);
        if UpperCase(ContentItem.Style)='TJ 1' then begin
          st:=' class='+FTopLevelClassName;
        end else begin
          st:='';
        end;
Az oldal változóban eltároljuk a bekezdés szövegét, amit a Range.Text property-ből tudunk kiolvasni. Mivel ez egy sortörés karaktert is tartalmaz, ezért ezt töröljük a szöveg végéről. A címet és az oldalszámot egy tabulátor karakter (#9) választja el egymástól, ezért ezt megkeressük, és a cim változóban eltároljuk a címet, és az oldal változóból töröljük ezt a részt. Ha a szöveg valamilyen okból kifolyólag nem tartalmaz tabulátor karaktert, akkor az egész szöveget értékül adjuk a cim változónak, és az oldal változó értéke egy üres sztring lesz.
        oldal:=ContentItem.Range.Text;  oldal:=Copy(oldal, 1, length(oldal)-1);
        p:=Pos(#9, oldal);
        if p>0 then begin
          cim:=Copy(oldal, 1, p-1);
          Delete(oldal, 1, p);
        end else begin
          cim:=oldal; oldal:='';
        end;
Elképzelhető, hogy a tartalomjegyzék tartalmaz üres sorokat (bekezdéseket), ezért ellenőrizzük, hogy az aktuálisan vizsgált bekezdés nem ilyen-e. Ha nem, akkor hozzáadjuk a HTML kódot a HTML property tartalmához, és megkezdjük a következő bekezdés (tétel) feldolgozását.
        if cim<>'' then begin
          s:='  <TR '+cs+'height='+IntToStr(FRowHeight)+'>'+CRLF+'    <TD'+st+'>'+cim+'</TD>'+CRLF+'   
              <TD'+st+'>'+oldal+'</TD></TR>';
          FHTML.Append(s);
        end;
        inc(i);
      end;



Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 464. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |