Hvordan konvertere .doc- og ODF-filer til ren og mager HTML

Mange av oss har hauger med OpenDocument- eller Microsoft Word-tekster som ligger i stasjonene våre, og gjør ingenting før vi innser at det kan være nyttig å publisere dem på nettet. Hvordan du gjør det på riktig måte er temaet for dette innlegget.

Ja, den raskeste og enkleste løsningen ville være å bare laste opp alle filene i en mappe på nettstedet ditt. Egentlig ville det være nødvendig, om ikke obligatorisk, hvis du måtte tillate folk å redigere disse filene, eller noen juridisk forpliktelse til å publisere originaldokumentene.

De fleste mennesker vil imidlertid bare trenge å lage det faktiske, statiske innholdet i disse dokumentene til lesbare online . I så fall gir det ikke så mye mening å laste opp ODF- eller .doc-filer! Det er mye bedre å laste opp HTML-versjoner av innholdet. Hvorfor? Vel, fordi HTML:

  • kan ta mye mindre plass enn originaldokumentene ...
  • ... og sparer følgelig båndbredde, både for serveren din og brukerne som får tilgang til den fra trådløse, ofte avmålte tilkoblinger: folk vil hate deg hvis du får dem til å betale en sakte, 5 MB nedlasting bare for å lese noen få avsnitt!
  • tilpasser seg alle skjermstørrelser, fra smarttelefoner til 28-tommers skjermer, mye bedre enn sidebundne formater som .doc eller ODF
  • ser mye bedre ut, noe som betyr at den vil ha samme layout, skrifter og så videre, for resten av nettstedet ditt

Så her er triksspørsmålet: hvordan kan vi automatisk generere HTML-versjoner av mange .doc- eller ODF-tekster? Svaret kan være: starte og kjøre OpenOffice (OO) eller Libre Office (LO) fra kommandolinjen, som forklart her for PDF-konverteringer, bare endre formatalternativet. Generelt er det slik du bruker disse programmene til å konvertere dokumenter fra kommandolinjen:

 kjørbar - hodeløs - konverter til filternavn filnavn 

"Utførbar" er det faktiske navnet på binæren OO eller LO. På Fedora 17-systemet mitt er det / usr / bin / soffice, som faktisk er en lenke til / usr / lib64 / libreoffice / program / soffice . På andre distribusjoner kan det være soffice eller soffice.bin. - Hodeløst får programmet til å starte uten å åpne et vindu, gjøre sitt arbeid og gå ut. Parameteren filternavn spesifiserer hvilken konvertering som skal utføres.

Dessverre er svaret over veldig enkelt og velkjent ... men det er ikke fullstendig! Ikke i vårt tilfelle, i det minste. La oss gå tilbake til tittelen på dette innlegget: hvordan kan vi konvertere .doc- og ODF-filer til rent og magert, det er anstendig, HTML?

Problemet her er at på grunn av deres WYSIWYG-natur genererer konverteringsverktøyene til de store kontor-suitene HTML-filer som prøver å se så mye ut som det originale .doc- eller ODF-dokumentet, selv om forfatteren fylte det med mye tilpasset -designede stiler. Resultatet er for komplisert, veldig oppblåst HTML som får nettdesignere til å gråte, og ser ofte så annerledes ut enn resten av sidene dine som å være bare stygge.

Løsningen er å la OpenOffice eller Libre Office konvertere filene dine til HTML og deretter rydde opp, med andre verktøy, koden som de genererte - automatisk, selvfølgelig.

La oss konvertere disse filene!

For enkelhets skyld vil jeg vise deg hvordan du gjør dette med Libre Office, men alt nedenfor gjelder nesten som OpenOffice også. Libreoffice har mange kommandolinjealternativer. Den anbefalte måten å konvertere batch av filer med LO på er denne:

 soffice - headless --convert-to output_file_extension : output_filter_name --outdir output_dir files 
I praksis fant jeg ut at du må oppgi både filtypen og navnet på utdatafilteret for at det skal fungere. Dette førte til at jeg produserte følgende manus:
 convert_doc_to_html.sh SOURCE_DIR TARGET_DIR: 
 1 #! / Bin / bash 
 2 
 3 KONFIG = / bane / til / ryddig_opsjoner.konf 
 4 rm -rf $ 2 
 5 mkdir -p $ 2 
 6 
 7 for F i `finn $ 1 -type f-navn" * .doc "-eller-navn" * .odt "` 
 8 gjør 
 9 BASE = `basename $ F .doc`; BASE = `basename $ BASE .odt` 
 10 soffice - headless --convert-to htm: HTML --outdir $ 2 $ F 
 11 ryddig -q -config $ CONFIG -f $ 2 / $ BASE.err -i $ 2 / $ BASE.htm | sed 's / class = "c 0-9 *" // g'> $ 2 / $ BASE.html 
 12 ferdig 
( Oppdatering 2012/7/14: vær oppmerksom på at linjen 4-5 med skriptet som den vil fjernes målkatalogen! Kommenter dem hvis dette ikke er det du vil! Takk til Daz for å oppdage dette problemet!) er et program som vel, rydder opp XML og HTML-kode, fjerner ødelagt, ikke standard eller overflødig markering. Skriptet over finner alle .doc- og .odt-filene i katalogen som er gått som første argument, og på linje 10, ber Libre Office om å dumpe en HTML-versjon med .htm-utvidelsen i målkatalogen. Denne filen blir deretter ryddet opp av ryddig (linje 11) ved å bruke alternativene i $ CONFIG-filen, med en ekstra sed-kommando for å fjerne klasseattributter, og lagret med et annet suffiks (.html). Her er det tidy_options.conf som jeg vanligvis bruker:
 rent: ja 
 drop-proprietary-attributter: ja 
 drop-empty-paras: ja 
 output-html: ja 
 input-koding: utf8 
 output-koding: utf8 
 bli med-klasser: ja 
 bli med-stiler: ja 
 show-body-only: ja 
 kraftutgang: ja 

Betydningen av hvert alternativ blir forklart med mange detaljer i den Tidy online dokumentasjonen. Vanligvis synes jeg at HTML-filene som er opprettet av dette skriptet, er fra 20 til 50% mindre enn de som er generert av Libre Office. Grafisk sett er forskjellen mellom de to HTML-versjonene vist i figur A. Libre Office en (til venstre) ser finere ut, men bare den andre vil bruke standardstilen på nettstedet ditt!

Figur A

Klikk for å forstørre.

Du kan konvertere mer enn .doc- og .odt-filer!

Du kan enkelt utvide skriptet over for å konvertere fra eller til alle filformatene som Libre Office (eller OpenOffice) gjenkjenner. Av en eller annen merkelig grunn er navnene på Libre Office-filtrene ikke oppført i den offisielle dokumentasjonen. Heldigvis opprettet en bruker en makro for å liste dem og la ut hele resultatet (for Libre Office 3.4) her.

© Copyright 2020 | mobilegn.com