Search code examples
python-3.xpdfkit

How to run pdfkit from_file in a Docker container


The following is my code for Docker:

FROM python:3.6.2-jessie

## Prepare apt-get:
RUN echo "debconf debconf/frontend select Noninteractive" | debconf-set-selections && \
    apt-get update -qy && \
     apt-get upgrade -qy && \
    apt-get clean autoclean && \
    apt-get install wkhtmltopdf -y && \
    apt-get autoremove -y && \
    apt-get install python3-setuptools -qy &&\
    apt-get install python3-dev -qy && \
    apt-get install python3-pip -qy && \
    apt-get install build-essential -qy && \
    apt-get -y install openssh-client -qy && \
    apt-get clean

RUN pip3 install --upgrade pip
RUN pip3 install pandas
RUN pip3 install psycopg2==2.7.3.2
RUN pip3 install pdfkit

When I run following code,

docker run my_image python3 pdfkit.py

I get the following error:

OSError: wkhtmltopdf exited with non-zero code -6. error: The switch --viewport-size, is not support using unpatched qt, and will be ignored.The switch --disable-smart-shrinking, is not support using unpatched qt, and will be ignored.QXcbConnection: Could not connect to display


Solution

  • Try the following:

    RUN curl -L#o wk.tar.xz https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz \
        && tar xf wk.tar.xz \
        && cp wkhtmltox/bin/wkhtmltopdf /usr/bin \
        && cp wkhtmltox/bin/wkhtmltoimage /usr/bin \
        && rm wk.tar.xz \
        && rm -r wkhtmltox
    

    Rather than installing directly using apt-get install wkhtmltopdf -y.