Thanks, that is a useful caveat about headless conversion only working when no other LOis open, by default. Sure explains why I had trouble before; now I am using the -env
trick.
Headless is now implied for --convert-to, and it’s completely not necessary to use it explicitly here.
Having another instance open in a minimized window on another desktop had me baffled for an hour
It really ought to issue a warning to stderr about this.
Probably --convert-to should imply --headless, but if you want this, please open a bugreport.
Regarding the filters available, you can poke around at http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/config/fragments/filters (sure, a more user-friendly wiki page would be better), for example if you want to convert to odt, try ‘–convert-to odt:writer8’.
This syntax worked for LO 3.4.6
soffice --headless --convert-to txt:text file_to_convert.doc
But only if no other instances of LO are open.
On win7, using LO 4.1 I had to do the following (from command line, you probably need to change %f to %%f if running in a cmd script):
set path=%path%;C:\Program Files (x86)\LibreOffice 4\program
for %f in (*.odg) do (
soffice.exe --headless --convert-to pdf --outdir "C:\tmp" %f
)
Notes:
- it will NOT work if any instance of LO is open!
- outdir IS required
- wildcards for input files are NOT supported (hence the for loop)
Thank you very much.
Just a few notes for WIN7 x64 LO 4.1.1.2 build ID 7e4286b58adc75a14f6d83f53a03b6c11fa2903
- outdir IS NOT reqired (strange?)
- NOT AT ALL instances of LO are opend, even LO Quick Start
Bear in mind to disable loading LO quick start on operating system startup. Otherwise it will be loaded on first convert and nothing will be coverted after it.
Couple of noob questions incoming.
- that is two separate commands?
- the first command, that looks like it is telling windows where to look for soffice.exe, or is it also looking for the files you want to convert?
- Do I need to have command prompt open to the directory the files are in for this to work, I am guessing so.
- If this is all entered in at the same time, do I need to separate the commands in any way?
FWIW:
- Yes.
- IMO, setting the path concerns executable files only (but I am not an guru for MS-DOS/Windows shell)
- Yes (as an implication of 2.)
- Very probably yes but I can’t tell you how - MS-DOS shell manual should say more. But executing at first the
set
command and afterwards thefor
command solves the situation in any case (the path you set is definitely valid at least until the command prompt session terminates). Or you can create a .bat file and separate commands by newline.
P.S. In a .bat file (script) you need to change %f to %%f.
For windows machines, I have found that on some files the conversion needs a start /wait. Example
start /wait soffice --headless --convert-to txt file_to_convert.doc
It seems the shell collapses before soffice can complete the conversion is some cases.
Thank you for this - on Windows 7 I was getting unhelpful crash dialogs until I added the “start /wait” to the command. As a note the first quoted parameter for ‘start’ is the window name, so if you try to call the above from a script with a space in the path you may need to do it like: start /wait “” “C:\program files\libreoffice 4\program\soffice”
One more addendum:
It is possible to read - for example here: http://www.computerhope.com/starthlp.htm, www.microsoft.com is silent about that - that “When executing an application that is a 32-bit GUI application, CMD.EXE does not wait for the application to terminate before returning to the command prompt. This new behavior does NOT occur if executing within a command script.”; so it should imply that when executing soffice.exe from a batch script,
[continued] it is not necessary to call it via start /wait
command. Unfortunately, it is NOT true. At least on Windows Vista (I know, horrible OS - but it was not on my computer) it is necessary to use start /wait
even in a batch, otherwise the conversion collapses. Update: Primary source for the incorrect information about the start
command (Microsoft’s site). LO version: 4.3.6.
Been testing with 5.0 64bit and found the --outdir cannot be quotes. Example
good: --outdir c:\temp
bad: --outdir “c:\temp”
Combining all the info given in this page, the following code allowed me to batch convert ppt files using LO in Windows 7:
for %f in (*.ppt) do (
start /wait "" "C:\Program Files\LibreOffice 4\program\soffice.exe" --headless --convert-to pdf --outdir C:\tmp %f
)
(Got a lot of errors before I found that an empty quote was required if the path contain spaces)
For anyone trying to do this in powerscript, you can use link:this
workaround to get powershell to wait for the conversion process to finish:
My code looked like this:
soffice --headless --invisible --convert-to html:HTML $filename --outdir $outputDir | Out-Null
@w_whalley’s answser was close, but didn’t work for my version: LibreOffice 4.2.8.2
This worked:
soffice --headless --convert-to txt:"Text" file_to_convert.odt
(I happened to do it with an odt. haven’t tried .doc yet).
(thanks to: @quibit here: How do I install filters for the `soffice` command?)
I’m using LibreOffice Version: 4.3.7.2, running on Ubuntu 14.10. Using the above and other questions and answers I’ve gotten the following command to work. The headless option is discussed above. The env parameter allows the command to run even if libreoffice is already running.
soffice -env:UserInstallation=file:///tmp/tempprofile --headless --convert-to csv FileName
I do have an additional problem. The spreadsheets I’m converting to csv have a libreoffice basic function. When I use the GUI to convert to csv, the values as displayed go into the csv file. When I use the command line, all I get is #VALUE!.
Is there a way to get the correct, calculated value, into the csv file?
Thanks for any answers!!