Se si hanno decine di documenti Word, aprirli uno per uno in LibreOffice ed esportarli singolarmente è un'operazione lenta e soggetta a interruzioni. Un comando come questo soffice --convert-to pdfpuò convertire un batch, ma i problemi più comuni includono l'invio dei PDF alla cartella sbagliata, la perdita dei nomi dei file contenenti spazi, l'applicazione del processo a una finestra già aperta da LibreOffice o la produzione di PDF con un layout diverso da quello di Word. Il flusso di lavoro descritto di seguito inizia con un file di prova, passa a un comando batch sicuro e termina con la verifica di eventuali file mancanti o formattati in modo errato.
Questi esempi utilizzano la sintassi della riga di comando di LibreOffice attualmente documentata nella Guida di LibreOffice 26.8, verificata il 6 ottobre 2026. Utilizzano writer_pdf_Exportil filtro di esportazione PDF per i documenti di Writer. La conversione è adatta ai normali file DOCX, ma i layout complessi necessitano comunque di una revisione poiché LibreOffice e Microsoft Word potrebbero visualizzare alcuni caratteri e layout di pagina in modo diverso.
Prima di convertire una cartella
Installa LibreOffice sul computer che eseguirà la conversione. Su un server, utilizza il gestore di pacchetti o il programma di installazione per quel sistema e verifica che sofficesia disponibile nella shell dei comandi. Su Windows, l'eseguibile si trova solitamente in C:\Program Files\LibreOffice\program\soffice.exe; il percorso di installazione può variare.
Preparate due cartelle separate: una per i file DOCX di origine e una per i PDF risultanti. Iniziate con una cartella di output nuova o vuota. Se convertite in una cartella che contiene già PDF con gli stessi nomi di base, LibreOffice potrebbe chiedere di sovrascriverli o non sostituirli affatto, a seconda del processo e dell'ambiente. Mantenere separate le cartelle di origine e di output previene inoltre la formazione di cicli di conversione accidentali quando gli script analizzano una directory.
Per i documenti con caratteri tipografici non comuni, installa gli stessi font utilizzati dall'autore originale prima della conversione. I font mancanti possono modificare le interruzioni di riga, il numero di pagine, la larghezza delle tabelle e la paginazione anche se il file DOCX si apre senza errori.
1. Prova prima un file DOCX
Converti un documento rappresentativo prima di eseguire un'elaborazione batch di grandi dimensioni. Negli esempi seguenti, sostituisci i percorsi di esempio con i tuoi:
mkdir -p "/srv/docs/converted"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
--headlessEsegue LibreOffice senza aprire la sua interfaccia grafica. --convert-toSeleziona il formato di output e il filtro opzionale, mentre --outdirspecifica il nome della destinazione. La tabella dei filtri di LibreOffice elenca le opzioni writer_pdf_Exportper l'output PDF da Writer. Rivedi il PDF di prova prima di convertire tutto: controlla le interruzioni di pagina, le intestazioni e i piè di pagina, le tabelle, le immagini, i collegamenti ipertestuali e i caratteri speciali.
Se il test non produce alcun PDF, verificare che il percorso di origine sia corretto, che il file sia leggibile e che la cartella di output sia scrivibile. Controllare inoltre che LibreOffice sia installato per lo stesso account che esegue il comando. Riferimenti ufficiali: Filtri di conversione file di LibreOffice e Parametri della riga di comando di LibreOffice .
2. Converti tutti i file DOCX con un unico comando Bash
Su Linux o macOS, apri Bash in un terminale e usa un modello di nome file. Assicurati sofficeche sia presente nel tuo PATH PATH; su macOS, potrebbe essere necessario richiamare l'eseguibile all'interno del pacchetto dell'applicazione LibreOffice. Questo esempio gestisce i file DOCX direttamente all'interno di una cartella di input:
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$src"/*.docx
Bash espande *.docxgli argomenti dei file separati prima di avviare LibreOffice. Poiché ogni percorso viene passato come argomento, gli spazi nei nomi delle directory e dei file vengono preservati. Il PDF di output mantiene la radice del nome del file sorgente, quindi Annual Report.docxdiventa Annual Report.pdf. Il comando elabora solo i file in quella cartella; non cerca nelle sottocartelle.
Utilizza una destinazione vuota per la prima esecuzione. Prima di eseguire il comando con il carattere jolly, verifica che la cartella di input contenga i file desiderati e che tu disponga di spazio su disco sufficiente per i PDF. In Bash, un carattere jolly non corrispondente può essere interpretato letteralmente a meno che non si configurino le opzioni della shell; se la cartella potrebbe essere vuota, verifica prima la presenza di almeno un file DOCX oppure utilizza il ciclo per file nella sezione successiva.
3. Utilizzare un ciclo per cartelle di grandi dimensioni o una gestione esplicita degli errori.
Una shell potrebbe rifiutare un elenco di argomenti molto lungo se una cartella contiene migliaia di documenti. Un ciclo evita di inviare ogni nome di file al sistema operativo in un unico comando e gestisce gli spazi in modo sicuro quando i percorsi sono racchiusi tra virgolette:
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
found=false
for file in "$src"/*.docx; do
[ -f "$file" ] || continue
found=true
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$file" || {
printf 'Conversion failed: %s\n' "$file" >&2
}
done
[ "$found" = true ] || { echo 'No DOCX files found.' >&2; exit 1; }
Il forciclo tra virgolette gestisce i nomi dei file con spazi e non invia l'intero elenco di file come un unico grande argomento. Esegue una conversione LibreOffice per ogni file, quindi può richiedere più tempo rispetto al singolo comando con caratteri jolly. Analizza solo i file presenti direttamente nella cartella di input. Per includere le sottocartelle, utilizzare una ricerca ricorsiva dei file e preservare ogni cartella di input nel layout di output; altrimenti due file con lo stesso nome di base potrebbero generare nomi PDF in conflitto.
4. Convertire una cartella in Windows PowerShell
In PowerShell, ogni percorso completo va passato come singolo argomento. Il seguente ciclo elenca i file per i quali LibreOffice restituisce un codice di uscita diverso da zero:
$soffice = 'C:\Program Files\LibreOffice\program\soffice.exe'
$inputDir = 'C:\Documents\incoming'
$outputDir = 'C:\Documents\converted'
New-Item -ItemType Directory -Force -Path $outputDir | Out-Null
$files = Get-ChildItem -LiteralPath $inputDir -Filter '*.docx' -File
if ($files.Count -eq 0) {
throw "No DOCX files found in $inputDir"
}
$failed = @()
foreach ($file in $files) {
& $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $outputDir $file.FullName
if ($LASTEXITCODE -ne 0) {
$failed += $file.FullName
}
}
if ($failed.Count -gt 0) {
Write-Warning "Review failed conversions: $($failed -join '; ')"
}
Modificare $sofficese LibreOffice è installato in una posizione diversa. Get-ChildItemL'esempio di PowerShell non è ricorsivo; aggiungerlo -Recursesolo se si è previsto anche come evitare nomi di output duplicati da cartelle annidate. Un codice di uscita diverso da zero è un avviso utile, ma non sostituisce la verifica che ogni PDF previsto esista e si apra correttamente.
5. Prevenire i conflitti di profilo e le sovrascritture a sorpresa
LibreOffice necessita dei permessi di scrittura sul proprio profilo utente. Se è già in esecuzione una finestra interattiva di LibreOffice, una conversione da riga di comando potrebbe riutilizzare tale istanza o attendere un profilo bloccato. Chiudere le altre finestre di LibreOffice prima di eseguire un'operazione singola. Per l'automazione o per le operazioni che devono essere eseguite separatamente, assegnare alla conversione un profilo utente dedicato con l' -env:UserInstallationopzione di bootstrap. LibreOffice documenta l'opzione per la selezione di un profilo non predefinito:
soffice -env:UserInstallation=file:///tmp/lo-bulk-profile \
--headless --convert-to pdf:writer_pdf_Export \
--outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
Utilizza una directory del profilo scrivibile dall'account che esegue la conversione. Non eseguire due processi LibreOffice simultanei sullo stesso profilo; utilizza un profilo diverso per ogni processo in esecuzione contemporaneamente. Mantieni l'automazione seriale finché non avrai testato la versione installata e la configurazione di archiviazione.
Non avviare una conversione in una cartella di produzione senza aver prima deciso come gestire i PDF esistenti. Esegui un backup o sposta i risultati precedenti, oppure scrivi i file in una nuova directory con data e ora. Un'esportazione in batch non deve sovrascrivere automaticamente un PDF firmato, approvato o precedentemente revisionato.
6. Risolvere i problemi più comuni relativi alla conversione in batch
- Nessun file di output: verifica il pattern glob di input o il filtro PowerShell, racchiudi tra virgolette i percorsi che contengono spazi e conferma che la directory di output esista e sia scrivibile. Esegui nuovamente il test con un singolo file per distinguere un problema di percorso da un problema di elaborazione batch.
- Il comando termina correttamente, ma alcuni file risultano mancanti: controlla l'output del terminale e lo stato di uscita, quindi confronta l'elenco dei file sorgente con i PDF creati. Un file DOCX danneggiato o protetto da password potrebbe dover essere riparato o aperto manualmente prima della conversione.
- Se LibreOffice si blocca o segnala che un profilo è bloccato, chiudete tutti i processi interattivi di LibreOffice o riprovate con un
-env:UserInstallationprofilo dedicato. Non eliminate la cartella del profilo mentre LibreOffice la sta utilizzando.
- I caratteri o l'impaginazione potrebbero differire da quelli di Word: installa i caratteri necessari e confronta un PDF di esempio con l'originale. Per i documenti in cui la riproduzione esatta di Word è contrattualmente importante, verifica il layout nell'applicazione di authoring o tramite un servizio di rendering approvato.
- I file PDF esistenti rimangono invariati: convertili in una cartella di output vuota e verifica che il comando punti a tale cartella. Evita di presumere che la riesecuzione di un batch sovrascriva sempre un PDF precedente.
LibreOffice accetta anche opzioni di esportazione in PDF dopo il nome del filtro, come intervalli di pagine o impostazioni relative all'accessibilità. Queste opzioni sono utili quando tutti i file devono avere lo stesso comportamento di esportazione, ma è consigliabile testarle su un campione prima di applicarle a un batch. Consultare i parametri ufficiali della riga di comando per l'esportazione in PDF .
7. Verificare il lotto finito
Non giudicare il successo solo in base al fatto che il comando sia tornato al prompt. Confronta il numero di file DOCX di origine con il numero di PDF nella cartella di output, quindi esamina alcuni PDF provenienti da diverse parti del batch. Verifica che ciascuno si apra, abbia il numero di pagine previsto e includa l'ultima pagina, le tabelle, le immagini, le intestazioni, i piè di pagina e i caratteri come lettere accentate o simboli.
Su Linux, è possibile contare i file di input e output non ricorsivi con:
find "/srv/docs/incoming" -maxdepth 1 -type f -iname '*.docx' | wc -l
find "/srv/docs/converted" -maxdepth 1 -type f -iname '*.pdf' | wc -l
Il conteggio delle corrispondenze è un utile controllo iniziale, ma non una prova che ogni file sia corretto. Se i conteggi differiscono, confrontate i nomi dei file per identificare le conversioni mancanti. Per un flusso di lavoro ad alto volume o regolamentato, registrate ogni percorso di origine, codice di ritorno, percorso di output e risultato della convalida e conservate i file di origine fino a quando i PDF non saranno stati esaminati. Il flusso di lavoro da riga di comando di LibreOffice elimina l'esportazione manuale ripetitiva, mentre una fase di convalida separata individua i problemi di layout e a livello di file che l'automazione non è in grado di valutare in modo affidabile da sola.