Automatic .sxw/.doc to PDF conversion on Debian
Author: Ward Vandewege. Last update: 2005-10-20
This document describes how OpenOffice can be used on a headless Debian server (Woody/Sarge) to provide automatic conversion of .sxw/.doc documents to PDF.
It's not a very elegant solution, but it works very reliably once installed.
Table of contents
Installing OpenOffice headlessFirst download the OO 1.1.5 binary. A .torrent can be found here.
Now log in as the user your webserver runs as (this is important!). In Debian, this would be www-data. Then install OO as follows:
$ cd $ cd OOo_1.1.5_LinuxIntel_install $ ./install --single $ cd ..
Disable registrationWe need to disable the 'registration' prompt that a freshly installed OO would come up with, the first time it is run. You need to edit the file "~/OpenOffice.org1.1.5/share/registry/data/org/openoffice/Office/Common.xcu". The context diff is:
--- Common.xcu-orig 2005-10-20 16:02:05.000000000 -0400 +++ Common.xcu 2005-10-20 16:02:49.000000000 -0400 @@ -356,6 +356,12 @@ <prop oor:name="URL" oor:type="xs:string"> <value>http://www.openoffice.org/welcome/registration.html</value> </prop> + <prop oor:name="ReminderDate" oor:type="xs:string"> + <value xsi:nil="true"/> + </prop> + <prop oor:name="RequestDialog" oor:type="xs:int"> + <value>0</value> + </prop> </node> </node> <node oor:name="I18N">(See also this thread)
Add a PDF printerWe need to add a 'PDF printer'. This is normally done with the 'spadmin' command, but we're on a headless box, so we can't do that. Just put this pdf-psprint.conf file where the standard psprint.conf file is:
$ cd ~/OpenOffice.org1.1.5/share/psprint $ mv psprint.conf psprint.conf.old $ cp ~/pdf-psprint.conf psprint.conf
Install some additional required softwareWe need to install Xvfb, the Virtual X framebuffer, and its dependencies as follows. Because we are going to use openoffice to print to, we also need some Cupsys support. The gs-gpl package is used for the conversion to PDF.
Woody: $ su # apt-get install gs-gpl xvfb libdps1 libxaw7 xbase-clients xfonts-base xutils # apt-get install cupsys-bsd cupsys-client libcupsys2 libtiff3g Sarge: $ su # apt-get install gs-gpl xvfb libdps1 libxaw7 xbase-clients xfonts-base xutils # apt-get install cupsys-bsd cupsys-client libcupsys2 libtiff4
Configure XVFB, the virtual framebufferTo start XVFB as a service, and keep it running across reboots, install this startup script into /etc/init.d:
$ Xvfb /etc/init.d/(downloaded from this forum post) Now make sure that XVFB will be started automatically after a reboot, and start it:
$ update-rc.d Xvfb defaults $ /etc/init.d/Xvfb start
ConclusionFinally, test the conversion with this shell script:
$ pdfconversion-xvfb test.docThe converted document will be put in the home directory of the user running the script (the HOME environment variable is defined in the pdfconversion-xvfb script, and you can change it there). Make sure that the user running the script has write access to that directory!
This work is licensed under a Creative Commons License.
All trademarks are the property of their respective owners.