Obecně o Open XML
O Open XML se v posledních měsících hodně hovořilo, ale pokud nevíte, oč se jedná, pokusím se ve zkratce shrnout celou situaci. Pokud vás teorie nezajímá, s klidným srdcem můžete přeskočit o kus dále. Microsoft se rozhodl, že vyslyší volání uživatelů po otevřeném formátu a do nové verze balíku MS Office 2007 připravil také nový formát Open XML.
Ten je, podobně jako OpenDocument Formát (známý z OpenOffice.org), postaven na známé XML struktuře, která je společně s dalšími daty zabalena do jednoho komprimovaného (ZIP) archivu. Technicky tedy skutečně není problém dokument zpracovat.
Mnohým uživatelům ale vadí neuvěřitelně rozsáhlá dokumentace, která má asi 6000 stran a především mnoho nejasností a problematických míst. Formát je totiž místy velmi svázán s konkrétními aplikacemi, případně se odkazuje na jiné formáty z dílny Microsoftu.
Firma se snaží získat na Open XML vlastní ISO standard a přestože byl původně připraven zrychlený schvalovací proces, nakonec standard přijat nebyl. Ke schvalování se mohla vyjádřit i veřejnost a ačkoliv Český Normalizační Institut celkově nový otevřený standard vítal (jako obecně většina lidí), také nesouhlasil s mnoha pasážemi dokumentace. Microsoft ovšem připomínky veřejně bagatelizuje a snaží se ISO standard stále získat.
Pomóc! Přišel mi docx!
Tak či onak nový balík MS Office 2007 je už mezi uživateli a jeho dokumenty se již začínají objevovat na internetu. Možná se vám už také stalo, že některý z nich přistál ve vaší schránce a vy jste nevěděli, co s ním dělat. OpenOffice.org jej neotevřou a vy nemáte po ruce žádný rozumný nástroj, který by vám pomohl.
Už jste se v praxi setkali s .docx souborem?
Naštěstí není situace tak beznadějná, jak by se mohlo zdát a příslušné utilitky stačí stáhnout a začít používat. Předvedeme si dvě různé metody řešení a naučíme se .docx soubory zpracovat.
Metoda 0: rm *.docx
Protože už předem vím, že se to v diskusi objeví, zmíním se i v článku. Samozřejmě nejjistější je odepsat odesílateli takového souboru, že skutečně balík MS Office 2007 nevlastním a ať se laskavě obtěžuje poslat dokument v nějakém rozumném formátu.
V mém případě to zatím pokaždé zabralo, ale ne vždy je to možné. Ať už narazíte na uživatele, který prostě neví, nebo nemůžete (třeba) zákazníkovi naznačit, že je úplně mimo. Stejně tak soubory stažené z internetu (třeba zadání seminární práce) asi těžko pošlete autorovi zpět.
V takové situaci se budete muset poprat i s .docx tak, jak jste ho dostali. Tady nastupují ony dvě zmíněné metody.
Metoda 1: rozšíření do OpenOffice.org
Řešení nastolené situace nám nabízí společnost Novell, která v rámci spolupráce s Microsoftem vytvořila konvertory pro OpenOffice.org. Ty dokáží otevírat i ukládat ve formátu .docx.
Konvertor je distribuován v podobě rozšíření pro OOo a jeho použití je velmi snadné. K instalaci vám bude stačit OpenOffice.org verze 2.0.4 a vyšší. Navštivte web Novellu a konkrétně stránku pro získání OpenXML Translator. Na této stránce naleznete soubor odfconverter-1.0.0-2.oxt
a vedle něj tlačítko Download. Samozřejmě jej stáhněte, má necelé 4 MB.
Spusťte OpenOffice.org a navštivte menu Nástroje → Správce rozšíření. Klikněte na Přidat a namiřte správce na stažený soubor. Rozšíření se samo nainstaluje.
Teď stačí OOo zavřít a znovu spustit. Podpora OpenXML je vám k dispozici.
V otevíracím i ukládacím dialogu přibyla možnost pracovat s formátem Microsoft Word 2007 Document (*.docx). Samozřejmě jsem Translator vyzkoušel na několika dokumentech stažených z internetu, případně přijatých e-mailem.
Zkušenosti jsou bohužel proměnlivé. Některé dokumenty načetl bez problémů, většina se mu ale nelíbila a tvrdil, že jsou poškozené. Oprava bohužel neproběhla dobře a otevření se nezdařilo.
Pokusil jsem se soubor uložit s pomocí Translatoru a zase jej přečíst. Tady nebyl nejmenší problém a vše probíhalo dle očekávání. Soubory, které do .docx v OOo uložíte, také s pomocí konvertoru zase načtete. Je tedy zřejmé, že si rozšíření zatím neporadí se všemi záludnostmi Open XML.
Metoda 2: konverzní utilita
Velmi dobré zkušenosti mám ale s druhým řešením, které také pochází z dílen Novellu. Jedná se o řádkovou konverzní utilitku, která jednoduše provede převod z .docx do .odt.
Najdeme ji na naší známé webové stránce pod názvem odf-converter-1.0.0-5.i586.rpm
. Přípona .rpm vás nemusí děsit ani v případě, že nemáte příslušnou distribuci založenou na tomto balíčkovacím systému.
Soubor stáhněte (3 MB) a někam uložte. Teď je potřeba se dostat dovnitř. Já jsem použil Midnight Commander ( mc
) a na souboru stiskl enter. Objeví se vám několik souborů, mezi kterými je i CONTENTS.cpio
, na něm opět stiskněte enter a jste uvnitř archivu.
V podadresářích /usr/lib/ooo-2.0/program
naleznete jediný spustitelný soubor (asi 8 MB) s výmluvným názvem OdfConverter
. Ten zkopírujte mimo archiv. To je vše.
Program má na unixové systémy trochu divoké ovládání, které připomíná zadávání parametrů z prostředí DOS. V použití to ale nijak nebrání. Hlavní jsou parametry /I
se vstupním souborem /O
s výstupním souborem a /DOCX2ODT
pro konverzi správným směrem.
Program by měl sám podle přípon poznat, co má dělat, ale jistota je jistota. Pokud chcete provést převedení většího množství souborů v jednom adresáři, můžete použít parametr /BATCH-DOCX
.
Použití programu vypadá následovně:
$ ./OdfConverter /I Dokument.docx /O Dokument.odt /DOCX2ODT [INFO][Dokument.docx] Converting file: Dokument.docx into Dokument.odt [INFO][Dokument.docx] Conversion succeeded [INFO][Dokument.docx] Total conversion time: 00:00:12.7094970 Done.
Výsledkem převodu je soubor s příponou .odt, který se mi podařilo naprosto hladce přečíst v OpenOffice.org. Zkoušel jsem několik různých dokumentů a převod probíhal velmi dobře. Tady jsem žádný problém nezaznamenal a vše fungovalo dle očekávání.
Utilita umí samozřejmě i konverzi v opačném směru a zná i několik dalších parametrů. Ty zjistíte, pokud použijete příkaz
$ ./OdfConverter /HELP
Povedlo se?
Rozhodně se nejedná o bezproblémové a stoprocentní řešení. Pokud ale skutečně nutně potřebujete zpracovat soubor ve formátu Open XML, máte alespoň nějakou šanci se s tím poprat. OpenOffice.org verze 3 už podle všeho nabídnou vlastní integrovaný vstupně/výstupní filtr, který práci (nejen) s .docx zpříjemní. Zatím budeme muset použít to, co je po ruce.