Faq/General/150/it

From The Document Foundation Wiki
< Faq‎ | General
Jump to navigation Jump to search
This page is a translated version of the page Faq/General/150 and the translation is 100% complete.
Other languages:
English • ‎Nederlands • ‎dansk • ‎español • ‎français • ‎italiano • ‎čeština • ‎한국어

Nota

Verrà presa in considerazione la conversione da .docx a .odt, ma la sintassi ed i passaggi sono gli stessi per tutti gli altri formati supportati da LibreOffice.


Contesto

In Windows 10 potete usare un comando come soffice.exe --convert-to odt my_document.docx al fine di convertire my_document.docx dal formato MS docx al formato open document (odt). La funzione --convert-to, mediante l'uso dei caratteri jolly comunemente usati per i file, permette di specificare un insieme di documenti da convertire. Per esempio: è possibile usare *.docx nel caso in cui, nella cartella corrente, abbiate numerosi file .docx da convertire.


Problema

Quando questo comando viene usato nel terminale della Command shell di Windows, non funziona. Sembra che tutte le conversioni siano avviate contemporaneamente e, poiché dalla riga di comando non è possibile eseguire contemporaneamente due istanze di LibreOffice (soffice.exe), l'esecuzione non termina. Nel migliore dei casi, otterrete la conversione di uno o due file, in ogni caso dovrete comunque interrompere manualmente l'esecuzione di molti processi di LibreOffice bloccati nel sistema (a quanto sembra, il doppio del numero dei file trovati).


Soluzione

Un modo semplice per superare questo problema è quello di usare il nuovo Subsystem per l'ambiente Linux (WSL) fornito da Microsoft per le versioni di Windows 10. Probabilmente dovrete prima installarlo, cosa che potete fare abbastanza semplicemente se seguite la documentazione di WSL.


Una volta fatto, avrete accesso ad un terminale della Bash, che viene eseguito sul sistema base di Windows e la funzione --convert-to funzionerà correttamente in modo sincrono.


In breve

  1. Identificate il percorso in cui si trova l'eseguibile soffice.exe.
  2. dopo aver creato una cartella di destinazione, con il comando cd spostatevi nella cartella che contiene i file da convertire.
  3. Eseguite questo comando : <percorso di soffice.exe> --convert-to odt --outdir <cartella_di_destinazione> *.docx


Esempio

il comando "/mnt/c/Program Files/LibreOffice 5/program/soffice.exe" --convert-to odt --outdir ./Convertiti_in_odt *.docx converte i file docx presenti nella cartella corrente nel rispettivo equivalente nella sottocartella ./Convertiti_in_odt.


Perché questa sintassi?

WSL (Windows Subsystem for Linux) monta un proprio file system completo. Perciò, la sintassi per indicare il percorso di un file all'interno dell'albero delle cartelle è diversa da quella di Windows. La prima differenza è il punto che funge da radice: in Windows di solito è C:\, mentre l'equivalente nel terminale della bash è /mnt/c/. Inoltre, il carattere usato come separatore in Windows è \, mentre nella bash è / come nei sistemi Unix. Per il resto, le regole sono le stesse, il terminale della bash supporta lo stesso insieme di caratteri del terminale di Windows, così come i nomi di file lunghi ed i nomi di file contenenti degli spazi, purché questi siano racchiusi tra virgolette doppie (").


Come scrivere il comando?

Il modo più semplice è quello di esaminare il collegamento che usate ogni volta che avviate LibreOffice. Fate un clic su di esso con il pulsante destro del mouse, quindi selezionate "Proprietà", infine copiare il contenuto del campo "Destinazione". Nel esempio visto prima, sarà "C:\Program Files\LibreOffice 5\program\soffice.exe". A questo punto modificate la sintassi adeguandola a quanto richiesto dalla bash, come sopra illustrato, in modo da ottenere questo: "/mnt/c/Program Files/LibreOffice 5/program/soffice.exe" Fate attenzione: Unix tratta diversamente le lettere maiuscole e minuscole, Windows no.


Il resto lo avete già visto sopra.


Conclusione

L'uso del terminale della Bash in Windows è un modo semplice per convertire molti file da un formato ad un altro usando da riga di comando una funzione integrata in LibreOffice. Funziona tranquillamente.


L'alternativa più semplice: interattivamente

È ancora più semplice usare il Convertitore di documenti di LibreOffice.


Potete avviarlo selezionando nel menu File ▸ Procedure guidate ▸ Convertitore di documenti...


Fate attenzione in quanto, in precedenza, un utente ha riferito di aver dovuto suddividere i file in gruppi da 200, in quanto la procedura alle volte si bloccava.

Descrizione estesa del problema

Il problema è che non "tutte le conversioni si avviano in simultanea". Semplicemente la funzione --convert-to di LibreOffice in effetti non supporta di per se l'uso di caratteri jolly e funziona solo sui sistemi diversi da Windows in quanto questi elaborano i caratteri jolly nelle loro shell (naturalmente, queste shell funzionano anche su Windows, come Cygwin o WSL).

Questo cosa significa? Significa che nella Bash, quando inviata un comando come soffice --convert-to odt percorso/per/*.doc, il comando è prima analizzato dalla Bash, che trova il codice percorso/per/*.doc, conteggia tutti i file che rispettano la maschera, inserire il loro nome una stringa e sostituisce percorso/per/*.doc con qualcosa del tipo percorso/per/1.doc percorso/per/2.doc percorso/per/345.doc. Questo è ciò che vede LibreOffice.

In Windows cmd.exe non fa questo ed invia percorso/per/*.doc a LibreOffice senza modifiche. LibreOffice semplicemente prova ad aprire un file con nome *.doc e non lo trova. Questo è tutto.

In Windows usando cmd.exe la pre-elaborazione dev'essere eseguita esplicitamente in questo modo:

  for %f in ("percorso\per\*.doc") do "C:\Program Files\LibreOffice\program\soffice" --convert-to odt "%f"

La richiesta di implementazione di un processore interno dei caratteri jolly è la numero tdf#48413.