How to use LibreOffice and unoserver to convert docx to pdf in Ubuntu/Debian

  1. Install LibreOffice and unoserver with the following commands:
  2. Make sure the environment is ok:
  3. Start unoserver and take a conversion in diffrerent command line prompt:

  4. If you encounter the font problem, you should add windows fonts to Linux with the following steps.
    1. Copy all fonts files under C:\Windows\Fonts
    2. Remove the .fon files
    3. Copy the font files to Linux and paste the files in /usr/share/fonts/win/. and you should create win directory by yourself.
    4. Update the font cache with the following commands in /usr/share/fonts/win/ :

      If you cannot find the commands, run
    5. You can also check the font status via fc-list
  5. Create a system service for unoserver in /etc/systemd/system/unoserver.service:

    You should also use systemctl daemon-reload to take effect. And if you want to make the service on startup, run systemctl enable daemon-reload

Comments

  1. Hii,
    After unoserver installation I have start unoserver, and it’s done but after convert file that raised error. I have given details below that how I have performed commands and which error raised :

    This is using in docker because my project has docker configuration.

    #python3 -m unoserver.converter –convert-to pdf my.docx my.pdf
    Traceback (most recent call last):
    File “/usr/lib/python3.8/site-packages/unoserver/converter.py”, line 2, in
    import uno
    ModuleNotFoundError: No module named ‘uno’

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “/usr/bin/unoconvert”, line 5, in
    from unoserver.converter import main
    File “/usr/lib/python3.8/site-packages/unoserver/converter.py”, line 4, in
    raise ImportError(
    ImportError: Could not find the ‘uno’ library. This package must be installed with a Python installation that has a ‘uno’ library. This typically means you should install it with the same Python executable as your Libreoffice installation uses.

    Please help me and solve this out, if solved it is big thing for me.
    Thank you

  2. It’s clear that the environment where you have installed unoserver it is not the python used by libreoffice (yes, libreoffice uses the system env) so what you see is a consequence of that. I know because I had the same issue.

    You can see a working dockerfile here: https://github.com/jgdelrio/unoserver-fastapi

    Pay special attention to the lines:
    RUN mkdir /environments
    RUN virtualenv –python=/usr/bin/python3 –system-site-packages /environments/virtenv
    RUN /environments/virtenv/bin/pip install unoserver

    which are basically making sure the python used by libreoffice has the unoserver installed.

Leave a Reply

Your email address will not be published / Required fields are marked *