71

When my app runs (or when I run from commandline) the wkhtmltopdf command I get the following error: (showing it from command line)

#> wkhtmltopdf wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory 

I noticed the lib is indeed in the /usr/lib folder but not the /lib folder. Does it matter which one of these it is in? Is there any way to get it to recognize it?

#> ls -l /usr/lib/libXrender.so* lrwxrwxrwx 1 root root 19 Feb 17 07:20 /usr/lib/libXrender.so -> libXrender.so.1.3.0 lrwxrwxrwx 1 root root 19 Feb 17 07:20 /usr/lib/libXrender.so.1 -> libXrender.so.1.3.0 -rwxr-xr-x 1 root root 39184 Jan 29 2010 /usr/lib/libXrender.so.1.3.0 #> ls -l /lib/libXrender.so* ls: cannot access /lib/libXrender.so*: No such file or directory 

I also checked dependencies of the lib

# ldd /usr/lib/libXrender.so.1 libX11.so.6 => /usr/lib/libX11.so.6 (0x00002b9cb5afd000) libc.so.6 => /lib/libc.so.6 (0x00002b9cb5e04000) libXau.so.6 => /usr/lib/libXau.so.6 (0x00002b9cb6143000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002b9cb6347000) libdl.so.2 => /lib/libdl.so.2 (0x00002b9cb654d000) /lib64/ld-linux-x86-64.so.2 (0x0000555555554000) 

This is running on an EngineYard gentoo server

1
  • For the googler: It's now best to install wkhtmltopdf by using the provided OS package, e.g. the deb package, which automatically installs libXrender as well as other needed dependencies too: github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5 Commented Jan 3, 2022 at 9:32

12 Answers 12

150

The Unix packages x11-libs/libXext and x11-libs/libXrender are dependencies

Gentoo:

sudo emerge libXext libXrender 

PDFkit wiki also explains in more detail how to get wkhtmltopdf working on engine yard. PDFkit wiki

Debian or Ubuntu:

sudo apt-get install libxrender1 
Sign up to request clarification or add additional context in comments.

3 Comments

That post had instructions, but I noticed it was referencing the i386 version so I changed to referencing the amd64 and it worked ... so I updated the wiki to include instructions for 64bit instance.
This worked for me! However, on Debian I also had to run sudo apt-get install libext6.
On Debian 11, I had to run sudo apt-get install libxrender1 libxext-dev
38

I had the same, issue on Debian Squeeze, amd64. Installing libxrender1 solved the issue for me.

sudo apt-get install libxrender1 

Comments

32

I need also do after:

sudo apt-get install libfontconfig1 

Comments

13

Ran into this today on a RHEL7 machine running the static version of wkhtmltopdf. Solution was to install a few dependencies:

yum install libXrender libXext fontconfig 

1 Comment

After doing this on mine it showed Black boxes instead of text. I had to install these two packages to make the text work: xorg-x11-font-utils and xorg-x11-fonts-Type1
9

With Ubuntu 16 (from a fresh Docker install):

apt install -y libxrender1 libxext6 

Comments

8

If your system is 64 bits, and your software requires 32 bits libs, you need to add the flag "i386",

for example on ubuntu:

sudo apt-get install libxrender1:i386 

Comments

4

I was having the exact same problem! The solution, to me, was to install the 64bit version of wkhtmltoimage.

Comments

2

I had this issue after rebuilding one of my containers, while before everything was working fine. All the answers I found online didn't work for me, so here's how I troubleshooted and resolved:

1. Check if all dependencies are there:

ldd path/to/your/binary/file/wkhtmltopdf-amd64

Here's what I got from that

linux-vdso.so.1 => (0x00007ffded169000) libXrender.so.1 => not found libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f117bab0000) libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f117b806000) libXext.so.6 => not found libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f117b4cc000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f117b2b2000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f117b0ae000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f117aea6000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f117ac89000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f117a907000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f117a5fe000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f117a3e8000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f117a01e000) /lib64/ld-linux-x86-64.so.2 (0x00007f117bcf3000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f1179df5000) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f1179bd0000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f11799ae000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f11797aa000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f11795a4000) 

Where I got "not found" means the dependencies were missing

2. apt update and install

Update your apt, as it's likely it won't find the libraries needed to install

apt-get update

Now I installed the missing dependencies that had the "not found" in the results above. Take note that for the libxrender and libxext I had to install libxrender-dev and libxext-dev.

apt-get install -y libxrender-dev libxext-dev

Comments

1

I had this same issue on running a Rails 5.2 application on an Ubuntu 18.04 production server, the issue was that there were missing dependencies for libXrender on the server

Here's how I solved it:

Run the command below to search for the missing dependencies:

sudo apt-cache search libXrender 

This will display the output below:

libxrender-dev - X Rendering Extension client library (development files) libxrender1 - X Rendering Extension client library libreoffice - office productivity suite (metapackage) 

If you're running on a production server, simply install libxrender1 only (for rendering PDFs):

sudo apt-get install libxrender1 

Also, if possible run upgrades for outdated libraries on your server:

sudo apt upgrade 

Once all these have been completed, simply restart your application server (If your application server is puma and if your setup systemd for the server):

sudo systemctl restart puma 

Comments

1
sudo apt-get install xvfb 

to install the dependency package.

Update the node-modules wkhtmltopdf index.js

wkhtmltopdf.command = 'wkhtmltopdf'; to 'wkhtmltopdf.command = 'xvfb-run wkhtmltopdf';' 

Comments

0

What worked for me (for future google searchs), on an Amazon Linux 2018:03

yum localinstall -y https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/libpng15-1.5.30-7.el8.x86_64.rpm yum localinstall -y https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm 

Comments

0

Note that there is an executable version of wkhtmltopdf distributed in a UPX compressed format, ldd and file will both report that this file is statically linked even though the payload requires shared libraries.

To check try

strings <executable> | fgrep UPX 

If you see any "UPX" id strings then install upx and use "upx -d" on a copy of the file (as upx works in place) and then run ldd on the uncompressed file.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.