Una via semplice per unire molti file DocX.
Ci sono diversi servizi online che ci permettono di fare questo lavoro senza costi economici direttiu.
Ma se abbiaamo centinaia o miglia di file DocX e li vogliamo unire in un solo file DocX?
Facilmente superiamo i limiti dei servizi senza costi economici. Se abbiamo stringenti vindoli di riservatezza è una via da scartare subito.
Fare una macro per Office o LibreoOffice non è per nulla facile.
Programmini stand alone c'è qualcosina, ma quelli per Linux vanno compilati e chideono librerie ad hoc.
Una via facile e cross platform è fare uno script Python invocando la libreria ``python-docx`` .
Fase uno
Prima di fare lo script va installata la libreria ``python-docx``. Per il mondo Debian e derivate basta dare la seguente istruzione:
sudo apt install python3-python-docx
Fase due
Creiamo lo script seguendo lo snip qui di seguito. A titolo di esempio il file sarà ``merge-docx.py`` :
# Inclusione della libreria python-docx
from docx import Document
# Creazione degli oggetti
docs = []
docsTitles = []
# Creazione dell'lenco dei file DocX da unire
docsTitles.append('Files/file001.docx')
docsTitles.append('Files/file002.docx')
docsTitles.append('Files/file003.docx')
docsTitles.append('Files/file004.docx')
# Inizio del loop
i = 0
for item in docsTitles:
docs.append(Document(item))
# Inserimento del salto pagina
if i > 0:
# Adding a page break
docs[i].add_page_break()
# Appende il file
for element in docs[i].element.body:
docs[0].element.body.append(element)
# Incremento dell'indice di 1
i = i + 1
# Salavataggio del file che unisce tutto
docs[0].save('./NomeFileMerge.docx')
Fase tre
Eseguiamo lo script.
Nel mondo Linux possiamo eseguirlo come segue:
python merge-docx.py
Nota
Lo script funziona SOLO con file .docx .
I vecchi file .doc di Word sono binari e sono tutto un altro formato. Pertanto se vogliano unire file .doc con questa tecnica dobbiamo prima convertirli in .docx .
Pssiamo usare, ad esempio, unoconv
, con la seguente sintassi:
unoconv -d document --format=docx Files/*.doc