29

I need to batch convert a set of .doc or .docx files to .pdf in terminal, not using a GUI.

It would be helpful if I could batch-process multiple files.

I would also like to maintain as much meta-data as possible.

8
  • duplicate - superuser.com/questions/156189/…
    – Panther
    Mar 17, 2012 at 15:49
  • The best answer there is to install another application and use a "pdf printer". What is wrong using a CLI method or will I loose the meta-data
    – Ringtail
    Mar 17, 2012 at 15:55
  • I didn't say there was anything wrong with oowriter, gscan2pdf or any other GUI method. I was looking for the CLI then I intend to incorporate it into the .bashrc so I could pdf ~/some_.docx, thats all. Thanks for the suggestion.
    – Ringtail
    Mar 17, 2012 at 16:12
  • 1
    See also this answer.
    – Takkat
    Mar 17, 2012 at 18:47
  • @Takkat - That answer gets it into duplicate zone for me. Mar 17, 2012 at 19:53

5 Answers 5

41

lowriter can be used as a command line tool (lowriter is a part of LibreOffice)

lowriter --convert-to pdf *.doc
convert /home/bodhi/Documents/testdoc2.doc -> /home/bodhi/Documents/testdoc2.pdf using writer_pdf_Export
convert /home/bodhi/Documents/testdoc.doc -> /home/bodhi/Documents/testdoc.pdf using writer_pdf_Export

evince testdoc.pdf

I do not have windows, so testdoc download from here

www.mltweb.com/prof/testdoc.doc

9
  • libreofice throws errors using this method, complains of not finding /home/user/documents/test.docx blah
    – Ringtail
    Mar 20, 2012 at 1:00
  • what command did you use ? Do you have a test.docx ?
    – Panther
    Mar 20, 2012 at 4:06
  • 1
    Works perfect for me! Beware of using "space" character from command line... When you get to the space character simply press "tab" ;)
    – Pitto
    Nov 16, 2012 at 13:11
  • 2
    lowriter does not convert docx files correctly. At least not always. Dec 26, 2013 at 19:56
  • 1
    When I first tried your suggested lowriter command on Ubuntu 12.04, it opened a splash window and froze. I killed it with C-c and tried again without a DISPLAY variable. This time it first printed an error about missing display, but convert the document without any problems. Is it expected behavior, that the command can only work without a DISPLAY environment variable?
    – kasperd
    May 30, 2014 at 10:35
9

I use unoconv, which converts all formats supported by LibreOffice.

1
  • 2
    Just for the record: $ unoconv myfile.docx (it creates myfile.pdf)
    – tokland
    May 9, 2017 at 10:09
5

I use the following script:

for f in *.doc
do
lowriter --headless --convert-to pdf "$f"
done

--headless will prevent Libreoffice from opening 100s of files and eventually crashing if you try this with directories containing a lot of .doc files

1
  • this is the best, works for multiple files Oct 29, 2020 at 17:55
1

You can also open that folder where you have all the .doc or .docx files and right click.Then select open terminal here. then type lowriter --convert-to pdf *.doc

0

In my opinion, the best way is with unoconv.

First install the package:

sudo apt install unoconv

and then convert to pdf using this command:

unoconv -f pdf XXYY.docx

(Replace XXYY.docx with the name of your file.)

2

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .