Legg til vannmerker til alle dine ODF-filer automatisk

Kontordokumenter som tekster, presentasjoner og regneark kan ha vannmerker, det vil si bilder eller (mye oftere) halvgjennomsiktig tekst som bakgrunn på alle sidene deres.

Normalt er formålet med et vannmerke å erklære, på en måte det er umulig å gå glipp av, dokumentets nåværende status eller hvem som publiserte det. "Utkast", "Venter på godkjenning", "Strengt fortrolig" eller logoen til et selskap er alle vanlige vannmerker.

Hvordan legger du til et vannmerke til teksten du redigerer? Med LibreOffice eller OpenOffice må du legge til som bakgrunn bildet av den tilsvarende teksten til gjeldende sidestil. Denne prosedyren, forklart i den offisielle online dokumentasjonen, er alt du trenger å vite for å legge vannmerker til maler eller enkeltfiler .

Ting endrer seg imidlertid mye, hvis du trenger å legge til vannmerker til mange, allerede eksisterende filer . Dette kan for eksempel være tilfelle for en offentlig administrasjon som bestemmer seg for å legge ut alle utskrifter fra tidligere møter, men med et stort vannmerke som sier "uoffisiell."

Bør de gjøre det manuelt, en fil om gangen? Selvfølgelig ikke, i hvert fall hvis de bruker åpne formater og programvare! OpenDocument Format (ODF) filformat, som brukes som standard i Libre Office / Open Office, er veldig enkelt å hacke. En .odt-fil er ganske enkelt et ZIP-arkiv med figurer og XML-filer i ren tekst.

Figur A

Figur B

De eneste forskjellene mellom ZIP-arkivene som tilsvarer filene i figur A og B, er at den andre har:
  • en undermappe for bilder, som inneholder bakgrunnsbildet i PNG-format
  • en ekstra linje i manifest.xml, som forklarer hva bildet er
  • en ekstra uttalelse i stilene.xml-filen, som angir bildet som bakgrunn i sidestilerklæringen

Slik ser uttalelsen ut:

Den praktiske konsekvensen av denne ODF-arkitekturen er at et skript som kan legge til et bilde, og strenger som det, på de rette stedene inne i en .odt-fil, vil transformere det til ett med det nye vannmerket. Slik kan et slikt manus se ut:

 1 #! / Bin / bash 
 2 
 3 TMPDIR = / tmp / vannmerke 
 4 DOKUMENT = $ 1 
 5 IMAGE = `basename $ 2` 
 6 
 7 XML = '' 
 8 MANIFEST = '' 
 9 
 10 FULLNAME = $ {DOCUMENT%. *} 
 11 EXT = $ {DOCUMENT ## *.} 
 12 DIR = `dirname $ DOCUMENT` 
 13 BASE = `basename $ DOCUMENT` 
 14 
 15 hvis -e "$ FULLNAME.watermark. $ EXT" 
 16 da 
 17 ekko "Advarsel: $ FULLNAME.watermark. $ EXT eksisterer allerede" 
 18 avkjørsel 
 19 fi 
 20 
 21 hvis -d "$ TMPDIR" 
 22 da 
 23 sant 
 24 ellers 
 25 mkdir $ TMPDIR 
 26 fi 
 27 
 28 cp $ DOCUMENT $ TMPDIR 
 29 cd $ TMPDIR 
 30 
 31 pakke ut $ BASE> / dev / null 
 32 rm $ BASE 
 33 
 34 XML = `ekko $ XML | sed -es / pic.png / $ IMAGE / | sed -e 's | \ / | \\\ / | g'` 
 35 SEDCOMMAND = "sed -i -e 's // $ XML /' styles.xml" 
 36 eval $ SEDCOMMAND 
 37 
 38 MANIFEST = `ekko $ MANIFEST | sed -es / pic.png / $ IMAGE / | sed -e 's | \ / | \\\ / |' ` 
 39 SEDCOMMAND = "sed -i -e 's // $ MANIFEST /' META-INF / manifest.xml" 
 40 eval $ SEDCOMMAND 
 41 
 42 hvis -d "Bilder" 
 43 da 
 44 sant 
 45 annet mkdir Bilder 
 46 fi 
 47 
 48 cp $ 2 Bilder 
 49 
 50 zip -0 -X $ FULLNAME.watermark. $ EXT mimetype >> / dev / null 
 51 zip -r $ FULLNAME.watermark. $ EXT `finn. -type f | grep -v mimetype` >> / dev / null 
 52 avkjørsel 

Skriptene tar som argumenter for de fullstendige banene til både ODF-filen ($ 1) og den til vannmerkebildet ($ 2). Linje 7 og 8 er de to XML-kodebitene som vi trenger å sette inn (med riktig navn på vannmerkebildet, selvfølgelig) i stilene.xml og manifest.xml-filene. Fra linje 10 til linje 33, manuset:

  • finner basenavnene og utvidelsene til de involverte filene
  • sjekker om en vannmerket versjon allerede eksisterer
  • oppretter en midlertidig arbeidskatalog
  • kopierer den originale filen inni den
  • pakker ut kopien og fjerner den

Moroa starter på linje 34. Først erstatter vi "pic.png" i $ XML-variabelen med det faktiske basenavnet på vannmerkebildet vårt. I de to neste linjene bygger vi en sed-kommando som vil sette inn $ XML på akkurat den rette posisjonen i stilfilen, det vil si på slutten av seksjonen om sideoppsettegenskaper . Så evaluerer vi, det er utført, den kommandoen. Linjene 30 til 40 utfører det samme trikset for å legge til vannmerkefilerklæringen i XML-manifestet.

På dette tidspunktet er alt vi trenger å gjøre å kopiere vannmerkebildet i undermappen Bilder, og lage det om nødvendig (linje 42-48). De to zip-kommandoene på slutten la alt inn i en ODF-fil. Vi må bruke to kommandoer for å sikre at mimetypen er i begynnelsen av ZIP-arkivet, slik det kreves av ODF-spesifikasjonen, forklart her.

Hvordan bruke og utvide dette skriptet

Selvfølgelig er dette skriptet fornuftig når det brukes i en sløyfe, eller med "finn" -kommandoen, for automatisk å finne og vannmerke alle filene i et hierarki av mapper. Du bør også ta i betraktning at skriptet legger som det samme vannmerket til alle sidestilene som er definert i et dokument (takket være "g" -modifiseringen av sed i linje 34). Skulle du trenge et annet vannmerke for hver stil, bør du utvide linjene 34-36 tilsvarende.

© Copyright 2021 | pepebotifarra.com