ho un documento (esempio.odt che allego) che contiene un campo di testo condizionale che cambia in base al testo contenuto dalla variabile nel precedente campo di digitazione.
La cosa funziona se la modifica del campo digitazione è fatta a mano. Invece la funzione di LibreOffice non funziona se la stringa-condizione viene modificata da uno script che decomprime->modifica->ricomprime l'odt: a quel punto è come se per LO la stringa non corrispondesse mai.
Per provare, salvate un copia del file nella cartella /tmp poi eseguite il seguente blocco di comandi (io ho provato con python 2.7 e 3.2)
Codice: Seleziona tutto
from zipfile import ZipFile, ZIP_DEFLATED
document = '/tmp/esempio.odt'
s2b, p2b = 'STRINGA'.encode(), 'PATTERN'.encode()
with ZipFile(document,'a', ZIP_DEFLATED) as z:
xmlString = z.read('content.xml')
xmlString = xmlString.replace(s2b, p2b)
z.writestr('content.xml', xmlString)
Sbaglio qualcosa o è un bug? (nel modulo zipfile o in zlib ?)
grazie per le risposte

