Tranziția la conversia în batch openoffice a documentelor existente

Este cunoscut faptul că, folosind OpenOffice 2.0 Noi facem, alternativa deschisă la Microsoft Office, puteți deschide fișiere create în Microsoft Office, și apoi să le salvați în formatul nativ OpenOffice - zip-arhivă ce conține documentul ca fișier XML corespunzător standardului OpenDocument din OASIS . În acest fel, puteți converti documentele Word existente, foile de calcul Excel și prezentările PowerPoint într-un format nou. (Articolul de deschidere formate deschise cu XSLT pe XML.com este un exemplu de aplicație simplă, care utilizează aceste caracteristici: XSL -shablon care extrage titlurile de diapozitive și note dintr-un fișier de prezentare și le stochează într-un fișier separat, pe care le-ar putea folosi ca un plan al său discursuri). În plus, OpenOffice vă permite să exportați toate aceste tipuri de fișiere în format PDF.

Dacă intenționați să vă convertiți fișierele într-un format nou unul câte unul, atunci va trebui să deschideți și să populați mai multe casete de dialog pentru fiecare fișier. Dacă aveți nevoie să convertiți câteva sute de fișiere, atunci această abordare va fi dificilă. Ce se întâmplă dacă aveți o grămadă mare de documente Word, foi de calcul Excel și prezentări PowerPoint și trebuie să descărcați versiunile XML ale tuturor fișierelor într-o singură bază de date care acceptă interogări la conținutul acestor documente XML? De exemplu, dacă sunteți Massachusetts sau IBM?

Ca și în produsul Microsoft, OpenOffice are o limbă macro. Când porniți OpenOffice din linia de comandă Linux sau Windows, puteți specifica că este executată o anumită macrocomandă. Puteți trece chiar și acest nume de fișier ca parametru pentru această macrocomandă. Mai mult, dacă folosiți opțiunea "invizibilă" atunci când porniți OpenOffice din linia de comandă, GUI-ul (GUI) nu va fi afișat. Și dacă utilizați ambele caracteristici împreună, obțineți o linie de comandă care convertește fișierul Microsoft Office într-un fișier OpenOffice (sau într-un fișier Acrobat) fără nici o interfață grafică. Acum, pentru a converti o sută de fișiere, doar un script simplu (de exemplu, în Perl) este suficient pentru a crea un fișier batch sau script de shell de la sute de comenzi, fiecare dintre care convertește un fișier.

(Notă: macrocomenzile, care mi-a inspirat pentru a crea acest articol a fost scris în mod clar pentru OpenOffice 1. x - dar macro pe care l-am adunat, a fost testat de mine în OpenOffice 2.0 pe Windows și Linux ..)

Crearea de macrocomenzi pentru conversie

Toate procedurile de care aveți nevoie în macro-urile dvs. sunt enumerate mai jos. Pentru a crea macro-uri în modul OpenOffice și salvați-l în aceste proceduri, selectați Instrumente → Macrocomenzi, apoi Organizarea Macrocomenzi, OpenOffice.org Basic, Organizator, nou. Se va crea un nou modul macro. Denumiți-o MyConversions și închideți caseta de dialog.

Noul modul va fi afișat în arborele macro sub numele / My Macros / Standard / MyConversions. după cum urmează:

Selectați modulul MyConversions și faceți clic pe butonul Editare. În scriptul care apare, liniile principale Sub și Finale servesc drept șablon pentru viitoarea macro. Înlocuiți-le cu următorul cod și apoi salvați modulul:

Limba de bază OpenOffice este similară cu limba VBA, limba macro în Microsoft Office; VBA este similar cu Visual Basic, și, la rândul său, - la aceeași bază, care pentru cei dintre noi care sunt mai în vârstă, a fost primul limbaj de programare învățat. Nu am intrat în nici una dintre aceste limbi, dar dacă ceva nu este clar cu privire la sintaxa lor, atunci răspunsurile sunt destul de ușor de găsit de câteva întrebări către Google. De exemplu, nu aveam idee cum să scriu instrucțiunea select în procedura SaveAsOOO. dar a găsit toate informațiile necesare folosind Google și ajutorul OpenOffice.

Toate codurile constau în trei proceduri și o funcție. Procedura SaveAsPDF și MakePropertyValue se ia din mesajul din forumul OpenOffice. Procedura SaveAsDoc diferă de SaveAsPDF numai de parametrul transmis către MakePropertyValue. - numele filtrului de export. Dacă doriți să adăugați procedura pentru a salva foi de calcul OpenOffice în Excel sau OpenOffice Impress prezentări în fișiere PowerPoint, tot ce trebuie - să ia o copie a uneia dintre aceste proceduri și să își schimbe numele în filtrul de export și extinderea noului fișier.

Ceea ce este remarcabil cu privire la procedura SaveAsOOO este versatilitatea acesteia. Nu este necesar să determinați dacă fișierul de intrare este un document Word, o foaie de calcul Excel sau o prezentare PowerPoint și nu este necesar să specificați un format pentru noul fișier. OpenOffice va determina toate acestea în sine. Și după cum puteți vedea, singura diferență semnificativă dintre această procedură și SaveAsPDF este că am adăugat codul care definește extensia corectă pentru noul fișier.

Pornirea conversiei

Puteți rula macrocomenzi din linia de comandă, indiferent dacă OpenOffice este deschis în acest moment sau dacă ați ieșit deja din acesta. Aproximativ acest lucru ar trebui să arate ca linia de comandă pentru conversia unui fișier Word în format OpenOffice pe un computer Windows, împărțit în două rânduri:

Pe calculatorul meu, fișierul soffice.exe nu se află în calea de căutare pentru fișierele executabile, așa că trebuie să specificăm calea completă pentru aceasta, inclusă în ghilimele, deoarece conține spații. Opțiunea - invizibilă indică OpenOffice că nu este necesar să afișați ecranul de întâmpinare, să creați un document implicit și, în general, să afișați orice interfață grafică. (Pentru a vedea o listă cu toate opțiunile disponibile, încercați să porniți soffice.exe din linia de comandă prin specificarea unui singur parametru -?) Macro numele specificat în formă, similar cu URL-ul: prima cale în copac macro la macro dorit, atunci parametrul în paranteze - numele fișierului pe care doriți să le convertiți. Nu este necesar să specificați un nume pentru fișierul nou - macro-ul îl va alege singur, în funcție de numele original și de conversia efectuată.

În Linux, pe linia de comandă, trebuie să specificați un nume diferit pentru fișierul executabil. OpenOffice de instalare pe Ubuntu meu ooffice2 pune fișierul în calea de căutare pentru fișiere executabile, așa că nu trebuie să specificați când executați calea completă. Am închis un apel macro în ghilimele, pentru că în caz contrar, parantezele din acesta au fost procesate incorect de shell. În toate celelalte privințe, aceleași macrocomenzi create în modul descris mai sus au funcționat perfect.

Am încercat să convertesc mai multe fișiere diferite. Fișierul sample.doc.doc a fost cu mine deja de mai mulți ani pentru testarea programelor și serviciilor care sugerează convertirea fișierelor Word în XML. Acest fișier folosește încorporat și stiluri personalizate pentru paragrafe și caractere, liste cu marcatori imbricate, imagini, tabele cu celule conectate încorporate foaie de calcul Excel, și alte câteva lucruri, care ar putea poticni un program pentru a converti. SaveAsOOO cu acest fișier perfect manipulat.

Să transformăm fișierele MS Office

Acum, că aveți un instrument multiplatform deschis pentru conversia fișierelor noi și vechi (cel puțin până la Office 97) MS Office în documente XML standard deschise, cum este mai bine să folosiți acest instrument? Orice lucru care poate fi rulat de la linia de comandă poate fi utilizat în modul lot - fără intervenția utilizatorului. Puteți crea un script Perl care să ia o listă de fișiere de intrare și creează un fișier batch sau un script de shell dintr-o secvență de comenzi ca cea de mai sus, care ar converti un fișier la un moment dat. Dacă ceea ce aveți cu adevărat nevoie este documentul XML în sine, atunci acest script poate, în același timp, să îl extragă din arhiva zip, care este fișierul OpenOffice, și să îl redenumiți în consecință. Scriptul shell care face acest lucru este după cum urmează:

Fișier lot pentru Windows:

Dacă ai de gând să converti în mod regulat un număr mare de documente, lansarea unui nou exemplu de OpenOffice pentru fiecare conversie va încetini semnificativ întregul proces. În Windows, fișierul soffice.exe poate fi lansat în modul "start rapid" (cu opțiunea -quickstart); atunci conversiile care au început după aceasta vor fi efectuate mai repede. În plus, puteți utiliza opțiunea -accept pentru a specifica linia Universal Network Objects. care ar permite utilizarea API-ului pentru a gestiona o instanță care rulează OpenOffice dintr-un program scris în C ++, OpenOffice Basic, Python. Java sau alte limbi. În acest caz, puteți trece numele de documente pentru a le converti la o instanță OpenOffice care rulează folosind apeluri API.

Oportunitatea cea mai interesantă, care oferă această abordare, mi se pare nici măcar trimite-mi un cuvânt nou convertit și fișiere Excel în format bazat pe XML OpenOffice, - și transformarea documentelor vechi existente. Câte fișiere Microsoft Office vechi aveți? Cât de multe aplicații noi, v-ar găsi informațiile pe care le conțin, în cazul în care au fost prezentate într-un dialog deschis și documentat în format XML, și ați putea folosi pentru a lucra cu aceste informații orice XML-unelte? Având în vedere că toate acestea sunt acum posibile folosind software open source care rulează atât pe Windows cât și pe Linux, trebuie să deschidem noi oportunități imense.