Unire file DocX: copertina

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