Conversione in batch di file DOCX in PDF con LibreOffice CLI

Se disponi di una cartella di file Word, LibreOffice può convertirli con un solo comando. Dalla cartella contenente i file DOCX, crea una cartella di output vuota ed esegui il comando libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx. Questo utilizza il filtro di esportazione PDF di Writer e lascia i file originali al loro posto.

Utilizzate una nuova cartella di output, verificate che LibreOffice sia installato e controllate i PDF risultanti, anziché considerare l'uscita corretta dal comando come prova che ogni pagina sia a posto. La riga di comando è uno strumento pratico per l'elaborazione in batch; non garantisce una paginazione identica a quella di Microsoft Word né la riparazione di documenti danneggiati.

Eseguire una semplice conversione batch

In Linux, apri un terminale nella directory contenente i file. Crea prima la directory di output:

mkdir -p pdf
libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx

--headlessViene eseguito senza aprire la normale finestra del desktop. --convert-toSeleziona PDF come formato di destinazione; writer_pdf_Exportspecifica il filtro di esportazione PDF di LibreOffice Writer; e --outdir pdfinvia i risultati nella pdfcartella. La shell si espande *.docxper includere i file corrispondenti prima dell'avvio di LibreOffice. LibreOffice documenta questa sintassi di conversione e il nome del filtro nel suo riferimento ai parametri della riga di comando e nell'elenco dei filtri di conversione dei file .

Il terminale Linux mostra un comando batch di LibreOffice che converte file DOCX in PDF e elenca i PDF risultanti.
Esempio di output del terminale dopo l'invio di un piccolo gruppo di file DOCX a LibreOffice tramite il filtro di esportazione PDF di Writer.

Scegli il modello di lotto corretto

Il comando jolly è più efficace quando tutti i file DOCX si trovano direttamente all'interno di una cartella di input. Non effettua la ricerca nelle sottocartelle. Su Linux, il pattern è per impostazione predefinita sensibile alle maiuscole/minuscole, quindi *.docxpotrebbe saltare i file che terminano con .DOCX. Se la shell segnala che il pattern non corrisponde, elenca i file e controlla le loro estensioni prima di modificare il comando.

Per i documenti annidati in sottocartelle, un ciclo può preservare la struttura delle directory ed evitare conflitti quando due cartelle contengono un file con lo stesso nome. Impostare inputla struttura ad albero di origine e pdfuna struttura ad albero di destinazione separata:

input="$PWD/input"
output="$PWD/pdf"
profile="file:///tmp/lo-batch-profile"

find "$input" -type f -iname '*.docx' -print0 |
while IFS= read -r -d '' file; do
  rel="${file#"$input"/}"
  dest="$output/$(dirname "$rel")"
  mkdir -p "$dest"
  libreoffice --headless \
    -env:UserInstallation="$profile" \
    --convert-to pdf:writer_pdf_Export \
    --outdir "$dest" "$file"
done

-print0e la corrispondenza read -d ''gestisce in modo sicuro gli spazi e la maggior parte dei caratteri insoliti nei nomi dei file. Il profilo separato impedisce a questo processo batch di entrare in conflitto con una sessione desktop di LibreOffice che utilizza lo stesso profilo utente; consultare i documenti di riferimento per l'avvio di LibreOffice -env:UserInstallation. Utilizzare un percorso di profilo univoco se due processi di conversione possono essere eseguiti contemporaneamente. Mantenere la struttura ad albero di output al di fuori della struttura ad albero di input in modo che la ricerca non si sposti nei risultati precedenti.

Il terminale Linux mostra un ciclo basato sulla ricerca che invia documenti da cartelle annidate alle corrispondenti cartelle di output PDF.
Esempio di un ciclo di ricerca ricorsivo che scrive i file PDF in una sottocartella "pdf" accanto a ciascuna cartella di origine, mantenendo così separati i file con lo stesso nome presenti in cartelle diverse.

Quando LibreOffice è già aperto

Un comando potrebbe sembrare terminare senza produrre file oppure potrebbe connettersi a un processo LibreOffice già in esecuzione. Un'istanza desktop in esecuzione può contenere il profilo utente predefinito. Chiudi LibreOffice e riprova; per i processi non presidiati, l' -env:UserInstallationopzione isolata nell'esempio ricorsivo è una misura di sicurezza utile. Assegna a ogni processo simultaneo una propria directory di profilo e attendi che un processo termini prima di riutilizzare quella directory.

Se il comando indica libreoffice: command not found, installa LibreOffice tramite la sorgente di pacchetti supportata dal tuo sistema operativo oppure usa il percorso completo dell'eseguibile. Su Windows PowerShell, un semplice batch non ricorsivo può essere scritto come:

$src = (Resolve-Path .).Path
$out = Join-Path $src 'pdf'
New-Item -ItemType Directory -Force -Path $out | Out-Null
$soffice = "$env:ProgramFiles\LibreOffice\program\soffice.exe"
Get-ChildItem -File -Filter *.docx | ForEach-Object {
  & $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $out $_.FullName
}

Modificare $sofficeil comando se LibreOffice è installato in un'altra posizione. Eseguire il comando dalla cartella di origine e utilizzare una nuova cartella di output. PowerShell Get-ChildItem -Filecerca solo in quella cartella a meno che non venga richiesta la ricorsione; i processi ricorsivi necessitano di un ciclo che crei una cartella di destinazione corrispondente per ogni percorso di origine.

Quali fattori possono influenzare il risultato?

La conversione in PDF preserva il layout che LibreOffice è in grado di interpretare, ma Word e LibreOffice non sempre impaginano i documenti in modo identico. Font mancanti, oggetti incorporati non supportati, modifiche rilevate, campi o tabelle complesse possono alterare le interruzioni di riga e il conteggio delle pagine. Per una tipografia coerente, installare i font necessari ai documenti prima della conversione. I file protetti o crittografati con password potrebbero dover essere aperti con credenziali o gestiti manualmente, e un file DOCX danneggiato potrebbe non essere convertito correttamente anche se altri file vengono convertiti.

Non eseguire ripetutamente il processo batch in una cartella contenente file PDF importanti con nomi identici. Utilizza una destinazione pulita o esegui prima un backup dei file esistenti. Se un file è particolarmente importante, aprilo in LibreOffice Writer e controllalo prima di fare affidamento sul PDF. Se la paginazione esatta di Microsoft Word è un requisito contrattuale, LibreOffice potrebbe non essere il motore di rendering adatto; confronta un esempio rappresentativo nell'applicazione che definisce il layout richiesto.

Il terminale Linux mostra LibreOffice in esecuzione senza interfaccia grafica con un profilo UserInstallation separato prima dell'esportazione in PDF.
Esempio di comando che utilizza un profilo utente LibreOffice separato per un'esecuzione di conversione non presidiata.

Verifica il risultato prima di condividerlo.

Innanzitutto, confronta il numero di file sorgente con il numero di file PDF. Su Linux, questi comandi contano i file in una cartella piatta:

find . -maxdepth 1 -type f -iname '*.docx' | wc -l
find pdf -maxdepth 1 -type f -iname '*.pdf' | wc -l

Per la conversione ricorsiva, confronta invece i conteggi sull'intero albero di input e output. Un conteggio corrispondente è un utile filtro, ma non una garanzia di qualità: un documento danneggiato o un duplicato sovrascritto potrebbero comunque richiedere una revisione. Controlla il log del terminale per eventuali errori e verifica che ogni nome file previsto sia presente nella destinazione.

Esaminate i PDF rappresentativi con un visualizzatore di PDF. Controllate la prima e l'ultima pagina, il numero di pagine, i margini, le tabelle, le intestazioni e i piè di pagina, le immagini e le eventuali interruzioni di pagina rilevanti. Se pdfinfoinstallato, pdfinfo pdf/Report.pdfil visualizzatore fornisce metadati come il numero di pagine e le dimensioni della pagina; non valuta la fedeltà visiva. Riconvertite i PDF solo dopo aver corretto un problema specifico, ad esempio installando un font mancante o modificando la directory di output, quindi rivedete i PDF interessati.

Il terminale Linux mostra l'output di pdfinfo con il numero di pagine, la dimensione della pagina e la dimensione del file per un PDF convertito.
Esempio di visualizzazione di verifica che mostra i metadati di un PDF, come il numero di pagine e il formato della carta.

Il batch è pronto quando tutti i file PDF previsti sono presenti, si aprono senza errori e le pagine importanti mantengono il layout previsto. Per archivi di grandi dimensioni, conservare i file DOCX originali e i log di conversione in modo da poter individuare un singolo errore e rieseguire il processo senza sovrascrivere output non correlati.

Lascia un commento

Creare PDF con LibreOffice mantenendo i caratteri utilizzati

Creare PDF con LibreOffice mantenendo i caratteri utilizzati

Correggi i font mancanti o sostituiti nei PDF di LibreOffice Writer, scegli il profilo di esportazione corretto e verifica quali font sono incorporati prima della condivisione.

Conversione in batch di file DOCX in PDF con LibreOffice CLI

Conversione in batch di file DOCX in PDF con LibreOffice CLI

Converti una cartella di documenti Word in PDF con i comandi di LibreOffice, gestisci in modo sicuro le cartelle annidate e verifica il risultato prima di condividerlo.

Fai in modo che ogni nuovo documento di scrittura utilizzi il tuo modello

Fai in modo che ogni nuovo documento di scrittura utilizzi il tuo modello

Imposta un modello personalizzato di LibreOffice Writer come predefinito, in modo che i nuovi documenti si aprano con gli stili e il layout di pagina che preferisci.

Fai in modo che LibreOffice riconosca il tuo runtime Java

Fai in modo che LibreOffice riconosca il tuo runtime Java

Installa un runtime Java compatibile, abilitalo in LibreOffice e risolvi i problemi relativi a un elenco JRE vuoto senza modificare impostazioni non correlate.

Eseguire LibreOffice in modalità headless in Docker per la conversione in PDF.

Eseguire LibreOffice in modalità headless in Docker per la conversione in PDF.

Crea un piccolo container LibreOffice, converti documenti Office senza interfaccia grafica e verifica l'output PDF limitando l'accesso ai file host.

Riduci le dimensioni dei file di LibreOffice Impress senza sfocare le immagini

Riduci le dimensioni dei file di LibreOffice Impress senza sfocare le immagini

Riduci le dimensioni eccessive dei file di presentazione di LibreOffice comprimendo le foto incorporate, scegliendo impostazioni di immagine appropriate e verificando la qualità delle diapositive prima della condivisione.

Impedire il ritaglio delle stampe di dimensioni personalizzate in LibreOffice

Impedire il ritaglio delle stampe di dimensioni personalizzate in LibreOffice

Prima di stampare un documento di dimensioni personalizzate, assicurati che le dimensioni della pagina di LibreOffice corrispondano a quelle della tua stampante, verifica i margini di stampa e correggi il ridimensionamento.

Velocizza le macro di Calc leggendo e scrivendo i dati in batch

Velocizza le macro di Calc leggendo e scrivendo i dati in batch

Sostituisci gli accessi ripetuti alle celle con letture e scritture di intervallo in blocco, quindi confronta i risultati e proteggi le formule in cartelle di lavoro Calc di grandi dimensioni.

Organizzare un libro di LibreOffice con documenti master collegati.

Organizzare un libro di LibreOffice con documenti master collegati.

Dividi un lungo manoscritto in capitoli, assemblali in Writer e mantieni coerenti stili, contenuti e controlli di esportazione.

Collega LibreOffice Base a PostgreSQL con la procedura guidata integrata

Collega LibreOffice Base a PostgreSQL con la procedura guidata integrata

Utilizza l'opzione PostgreSQL diretta di Base per inserire i dettagli del tuo server, accedere, salvare un file di connessione ODB e risolvere i problemi di accesso più comuni.