Převod DOC na HTML
Milan Horkel
Převod dokumentu z programu Word do HTML nelze plně zautomatizovat protože kvalita podkladu obvykle není dostatečná. Proces převodu lze však celkem úspěšně zjednodušit a na uživatele zbydou pouze drobné opravné práce. Podstatou převodu je odstranění všech formátovacích značek a vyčištění kódu tak, aby mohlo být formátování plně zajištěno pomocí kaskádových stylů.
Stránka vzniká jak konvertuji další stránky do HTML.
Základním problémem převodu je to, že program Word umožňuje uživateli vkládat do textu spustu formátovacích povelů, které pak nejsou viditelné a v programu Word se tedy ani nedají odstranit. Bohužel nelze uživatele omezit pouze na elementy definované v šabloně dokumentu a ani nelze nadefinovat šablonu tak, aby v ní nebyly nedbytečné předdefinované styly.
Druhý problém vzniká tím, že uživatelé používají Word nejen jako editor ale i jako lámací program (protože potřebují aby se výsledek vytiskl dle jejich představ). Tak se do dokumentu dostávají různé fixní mezery, lámání stránek a podobné věci. Pokud není autor zvíře, bývá v dokumentu těchto speciálností jen pár a není problém je odstranit. Umístění obrázků we Wordu je kapitola sama pro sebe. V HTML se obvykle umísťují obrázky do samostatných odstavců. Příslušné úpravy nejsou obtížné.
Základem úspěchu je použití jednoduché šablony, příliš neformátovat dokument explicitními nastaveními a už vůbec ne tabulkami (nebo dokonce tabulkami v tabulkách).
Cílem tohoto kroku je získat hrubá HTML data stránky.
Při ukládání doplníme příponu tak, aby byla ve tvaru XXX.lang.html (lang je obvykle buď cs nebo en). Soubor uložíme do adresáře DOC/HTML příslušného projektu/modulu.
Cílem tohoto kroku je automaticky odfiltrovat co nejvíce nesmyslů ale moc to nepokazit. Objem stránky klesne asi na 1/3. Odtraní se skoro všechny formátovací značky a styl.
Program nemusíme ukončovat pokud ho budeme potřebovat vícekrát. Pozor je třeba dát na to, abychom nepustili filtraci znova na už dodělaný soubor. Pokud se to omylem stane je zde k dispozici funkce obnovy předchozí verze dokumentu (pokud jste si to v programu nevypnuli).
Při instalaci je třeba do programu přidat MLAB šablonu. Šablona obvykle bydlí v adresáři "C:\Program Files\FreeSoft\HTML Compress 5\MLAB.hce". Soubor MLAB.hce leží zde MLAB.hce.
Program mi nechtěl fungovat pod omezeným účtem obyčejného uživatele. Dá se ale pustit pod výkonějším uživatelem (funkce spustit jako... ).
Cílem toho kroku je sformátovat kód aby se s ním dobře pracovalo. Současně se automaticky vytvoří pomocné lokální styly, které pak půjdou snadno zahodit. V tomto kroku přejme na kódování UTF-8.
Na začátek souboru přikopírujeme šablonu (prázdnou stránku), tedy například soubor Template.cs.html a provedeme následující úpravy:
Po těchto úpravách by měla stránka v zásadě fungovat. Měla by mít hlavičku, patičku, menu, ikonu a případný odkaz na PDF verzi stránky (pokud jsme jej nesmazali) by měl taky fungovat.
Jednotlivé blokové značky ohraničíme prázdnou řádkou před a za. Lépe se čte zdroják. Někdy je vhodné přesunout některé bloky na jiné místo (například pokud byly schémata z důvodu rozvržení tisku umístěny na jiném místě než text, který se k nim vztahuje).
Z nadpisů odstraníme čísla kapitol a sformátujeme je tak, že jsou samostatně na řádce.
<h1> Nadpis </h1>Občas se stane, že obrázek je uvnitře nadpisu. Ten je třeba dát do samostatného odstavce p.
Občas se stane, že se nějaký text ocitne mimo značku p. Pak pro něj vytvoříme vlastní odstavec. Je třeba odstarnit formátování pokud ještě nějaké zůstalo. Zvýraznění děláme pomocí značek i, em, b. Značka u není dovolená.
<p> Běžný text odstavce se <i>zvýrazněným textem</i> uvnitř. </p>Z tabulek je třeba odstranit nadbytečné značky p a významné buňky tabulky (například záhlaví) převést na buňky typu th místo buněk typu td. Významné buňky obvykle mají buď atributy ve své značce p nebo jsou ohraničené některou zvýrazňující značkou, typicky b. Toto dodatečné formátování by se mělo odstarnit.
Tabulka by měla mít strukturu
Popisek 1 | Popisek 2 |
---|---|
Buňka 1 | Buňka 2 |
Spojená buňka 3 a 4 |
Uvnitř buňek se dá použít br ale v obyčejných tabulkách není potřeba značka p.
Pro změnu chování se dají použít příslušné atributy class, například class="Center". Viz návod k použití kaskádového stylu.
U seznamu součástí provedeme úpravy jako u normální tabulky, doplníme class="Soupiska" a pokd je tabulka v tabulce tak vnější tabulku odstraníme.
Podnadpisy v seznamu součástek (typicky texty jako odpory a podobně) označíme také značkou th. Tyto texty by měly být v buňce vzniklé spojením 2 buněk colspan="2".
Pokud není první řádka seznamu součástek opatřena popisy Reference a Hodnota doplníme celou řádku s těmito popisy.
<table class="Soupiska"> <tr> <th> Reference </th> <th> Hodnota </th> </tr> <tr> <th colspan="2"> Odpory </th> </tr> <tr> <td> R1 </td> <td> 10k </td> </tr> </table>Reference | Hodnota |
---|---|
Odpory | |
R1 | 10k |
Nejprve přejemenujeme adresář s obrázky na jméno Pictures. Původní název je totožný se jménem stránky a bývá velmi dlouhý.
Obrázek musí mít tyto atributy:
Například:
<img width=228 height=160 src="Pictures/image002.jpg" alt="Alternativní popis">
Obrázky s popiskami vnikají tak, že se v editoru (Word) vloží obrázek a ten se opatří textovými poli s ukazateli. Výsledný HTML kód pak obsahuje obrázek a přes něj tabulku s přesně danými rozměry a v této tabulce jsou umístěny (jen v některých buňkách) dílčí obrázky.
Princip položení vektorové grafiky přes JPG obrázek není v zásadě chybný ale nežádoucí je to, že jsou dílčí obrázky umístěny v tabulce. Řešení spočívá v tom, že se odstraní tabulka a ponechají se jen obrázky a do dokumentu (těsně před značku /head) se doplní styl pro individuální umístění jednotlivých dílčích vetorových obrázků. Souřadnice se sice dají spočítat ale je snazší doladit je dle zobrazeného výsledku.
Takhle bude vypadat příslušný kousek lokálního stylu. Zvýrazněné jsou posunutí dílčích obrázků proti hlavnímu obrázku:
<style type="text/css"> img.Pic1 {position:absolute;margin-left:230px;margin-top:10px; } img.Pic2 {position:absolute;margin-left:322px;margin-top:160px; } </style>A takhle pak bude v textu umístěn obrázek se dvěma vektorovými obrázky umístěnými nad ním:
<p> <!-- Vektorová grafika --> <img class="Pic1" width="331" height="123" src="Pictures/image001.gif" alt="Vektorový popisek 1"> <img class="Pic2" width="243" height="101" src="Pictures/image002.gif" alt="Vektorový popisek 2"> <!-- Podkladový obrázek --> <img width="605" height="454" src="Pictures/MainPicture.jpg" alt="Obrázek s popiskami"> </p>