Instalando wkhtmltopdf em uma Amazon EC2

 

Depois de uma bela surra de gato morto, é bem fácil instalar o wkhtmltopdf em uma instância Amazon Ec2 AMI baseada em CentOS. Para quem não conhece o wkhtmltopdf, é uma app usada pra gerar PDFs  de páginas HTMLs, usando Webkit como motor de renderização. Esta app possui bindings pra php, python (e django) e ruby (via PDFKit),  facilitando um pouco a vida de quem precisa gerar PDFs. Não é uma maravilha, mas funciona.

Para começar o pesadelo, obviamente a Amazon não possui o wkhtmltopdf no repositório oficial dela. E pra dar um requinte de crueldade, o wkhtmltopdf depende de uma lib chamada libmng pra instalar, que também não esta no repositório da Amazon.

Vamos começar adicionando um repositório da Amberdms (empresa com alguns produtos opensource) que possui o wkhtmltopdf.

Como root:

cd /etc/yum.repos.d/
wget http://repos.amberdms.com/config/centos/6/amberdms-c6-public.repo

Edite o arquivo /etc/yum.repos.d/amberdms-c6-public.repo , alterando todos os enabled = 0 para enabled = 1 .

Caso não queria adicionar o reposito acima, você pode dar um wget direto no pacote:

Como root:

cd /tmp 
wget http://repos.amberdms.com/pub/amberdms/linux/centos/5/amberdms-os/i386/RPMS/wkhtmltopdf-0.9.5-1.el5.i386.rpm

Se você tentar rodar o comando yum install wkhtmltopdf-qt agora, vai ser supreendido com uma mensagem gigante, terminando com o trecho abaixo:

Error: Package: wkhtmltopdf-qt-4.6.3-git20100820.1.el5.i386 (amberdms-os)
Requires: libmng.so.1

 

Para instalar essa lib, baixe o rpm dela e instale manualmente. Eu fiz o seguinte:

Como root:

cd /tmp
wget http://mirror.centos.org/centos/6/os/i386/Packages/libmng-1.0.10-4.1.el6.i686.rpm
yum install --nogpgcheck yum-downloadonly libmng-1.0.10-4.1.el6.i686.rpm

Caso o rpm acima não exista mais, vá no http://mirror.centos.org/centos/6/os/i386/Packages/ e procure o rpm do libmng atual e use-o.

Agora instale o bendito wkhtmltopdf:

yum install wkhtmltopdf

Ou se você não adicionou o repositorio do Amber, como root faça:

yum install --nogpgcheck yum-downloadonly wkhtmltopdf-0.9.5-1.el5.i386.rpm

Para não dizer que acabou, ainda falta o seguinte: a instalação coloca o binário (e as libs)  do wkhtmltopdf em algo do tipo /opt/wkhtmltopdf e não dentro de /bin e /usr/lib direto . Eu fiz os seguintes links simbólicos:

Como root:

ln -s /opt/wkhtmltopdf/bin/wkhtmltopdf /bin/wkhtmltopdf
ln -s /opt/wkhtmltopdf/lib/libQtCore.so.4.6.3 /usr/lib/libQtCore.so.4
ln -s /opt/wkhtmltopdf/lib/libQtGui.so.4.6.3 /usr/lib/libQtGui.so.4
ln -s /opt/wkhtmltopdf/lib/libQtNetwork.so.4.6.3 /usr/lib/libQtNetwork.so.4
ln -s /opt/wkhtmltopdf/lib/libQtScript.so.4.6.3 /usr/lib/libQtScript.so.4
ln -s /opt/wkhtmltopdf/lib/libQtSql.so.4.6.3 /usr/lib/libQtSql.so.4
ln -s /opt/wkhtmltopdf/lib/libQtSvg.so.4.6.3 /usr/lib/libQtSvg.so.4
ln -s /opt/wkhtmltopdf/lib/libQtTest.so.4.6.3 /usr/lib/libQtTest.so.4
ln -s /opt/wkhtmltopdf/lib/libQtWebKit.so.4.6.3 /usr/lib/libQtWebKit.so.4
ln -s /opt/wkhtmltopdf/lib/libQtXml.so.4.6.3 /usr/lib/libQtXml.so.4

Para testar se esta funcionando, o comando abaixo deve gerar um arquivo pdf com o google:

wkhtmltopdf www.google.com google.pdf
  • GabrielFc

    Otimo artigo !

    Me ajudou bastante…pelo menos tenho uma luz, pois a documentação no site deles é péssima… estou com problemas na instalação do libmng-1.0.10-4.1.el6.i686.rpm apesar dele existir no repositório informado…e conseguir instalar ele com sucesso…o linux não exibe nenhum erro…quando tento instalar o wkhtmltopdf esta exibido a seguinte mensagem: libmng.so.1 is needed by wkhtmltopdf-qt …qual dependência está faltando…você sabe?

    Abraços