84

I have a folder containing a bunch of ppts, each of which I'd like to convert to an individual pdf.

muru
  • 197,895
  • 55
  • 485
  • 740
James
  • 1,775

4 Answers4

109

You can also use the command line of libreoffice for your purpose. This example converts all ppt-files in the current directory to pdf's:

libreoffice --headless --invisible --convert-to pdf *.ppt  

--headless
Starts in "headless mode", which allows using the application without a user interface.
This special mode can be used when the application is controlled by external clients via the API...
It implies --invisible and strictly ignores any GUI environment.

and

--invisible
Starts in invisible mode.
Neither the start-up logo nor the initial program window will be visible. LO can be controlled and documents and dialogs can be opened via the API.
When started with this parameter, it can only be quit using the taskmanager (Windows) or the kill command (UNIX based systems).

Get more information on command line options with:

man libreoffice

(Note: You have to close all running instances of LibreOffice before the command line works.)

Melebius
  • 11,431
  • 9
  • 52
  • 78
Tapper
  • 2,730
  • 2
    This solved my problem. – Luis Alvarado Feb 27 '12 at 23:10
  • 11
    It's awesome that libreoffice has the --convert-to option, but it sucks that it doesn't say anywhere that you also have to pass --headless and --invisible for it to work. +1 for the answer. – scribu Jun 09 '12 at 00:01
  • 7
    --headless implies --invisible (at least on LO 3.4). Add -env:UserInstallation="file://$HOME/.libreoffice-alt" to work even with GUI instances running (credit here). – Beni Cherniavsky-Paskin Dec 13 '12 at 20:04
  • (: - Amazing! - :) – desgua Feb 23 '13 at 19:27
  • If someone reading this and not using ubuntu, and libreoffice still asks you for X server, you might need libreoffice-headless package installed – YudhiWidyatama Oct 13 '16 at 02:09
  • Better to use this if you have libreoffice installed. no need to install anything extra. thanks a lot! – Saurabh Apr 21 '17 at 07:44
  • @Tapper the explanation of the arguments used in the command makes the answer more useful and clear. – alhelal Sep 06 '17 at 05:01
  • 1
    @Melebius instead of "without a user interface" there is "without user a interface" in man page that made me confused. Is there any way to inform this to authority? – alhelal Sep 06 '17 at 06:35
  • 1
    @BandaMuhammadAlHelal According to http://www.libreoffice.org/get-help/feedback/, you could create a bug report. – Melebius Sep 06 '17 at 06:43
  • 3
    FWIW, on MacOS, libreoffice binary is called soffice and is located in /Applications/LibreOffice.app/Contents/MacOS – ijoseph Sep 12 '17 at 18:41
  • @ijoseph's tip for MacOS users works for me on 10.13.4 – Rico Picone Apr 21 '18 at 19:32
  • Works on Ubuntu 18.04 too. – Anshuman Kumar Nov 18 '19 at 05:37
  • I have tried this solution on my VPS server running Cent OS 7 but getting this error : Error: source file could not be loaded. but the same command is working great if I execute this for .doc file at the same location. any help / idea – rahim.nagori Jul 30 '20 at 10:29
  • I have executed this command 'yum install unoconv ' after this executed the same script and it worked like a charm. – rahim.nagori Jul 30 '20 at 10:39
  • This seems like a more stable solution as unoconv often does not work right out of the box, and you have to fiddle with config files. – Esben Eickhardt Jul 02 '21 at 08:56
  • worked on ubuntu 21.10; props to libreoffice for the command line tools. This was extremely helpful – Matt Jan 07 '22 at 23:51
55

You can use unoconv. It's available in the repositories, so you can just apt-get it: unoconv (direct install link)

Note that the info in the web page is outdated. Use man or type unoconv -h to get actual command line options. It works like this:

unoconv -f pdf presentation.odt

This command will create a presentation.pdf file.

I have only used it to batch convert ods to pdf and it works perfectly. I haven't tried it with presentations (but for a quick test now), but I expect that it will work nicely.

Note that it will not work on Lucid (10.04), because of a bug in the python-openoffice biddings. If you need to use it on Lucid, you can add this ppa to your software sources to upgrade your Openoffice version.

user.dz
  • 48,105
Javier Rivera
  • 35,153
  • 1
    Your example uses the wrong command (uniconv instead of unoconv) – Marcel Stimberg Nov 03 '10 at 12:36
  • 1
    That gives this error: Leaking python objects bridged to UNO for reason pyuno runtime is not initialized, (the pyuno.bootstrap needs to be called before using any uno classes) Segmentation fault – James Nov 04 '10 at 01:01
  • 1
    @James: Yes, I checked it on 10.04 and it gives that error. A little googling shows that there is a bug in the Openoffice version shipped with Lucid. It works on Maverick (10.10) and Hardy (8.04), the versions that I use. – Javier Rivera Nov 04 '10 at 09:35
  • 1
    For anyone wondering how to convert a folder containing any type of documents (.txt, .docx, .pptx and even .pdf etc) to PDFs : unoconv -f pdf <input-folder-path>/* --output <output-folder-path>/* – Rahul Bharadwaj Dec 10 '18 at 15:04
  • Thanks a lot, this is a great solution! – Paul Oct 16 '21 at 16:19
3

The easiest way to convert .ppt files to PDF is to install unoconv through the command line:

sudo apt-get install unoconv

Then open the terminal from the drive where the ppt files are available. Now type:

unoconv -f [format] pdf  filename.ppt

That's all. Done.

Eliah Kagan
  • 117,780
jazeb007
  • 191
-1

There is an easy cheat.

Use unoconv with midnight commander to convert odt to pdf:

  • launch mc
  • navigate where the odt files are
  • tag odt files using Ctrl-T then F2,@,
  • paste in unoconv -f pdf

It will spew a bunch of dire error messages, but it works!

landroni
  • 5,941
  • 7
  • 36
  • 58