Criando arquivos PDF

O PDF (Portable Document Format) é um formato de arquivo, desenvolvido pela Adobe Systems em 1993, para representar documentos com textos, gráficos e imagens de maneira independente do aplicativo, do hardware e do sistema operacional usados para criá-los. A maioria das distribuições Linux já tem leitores próprios, enquanto que no Windows o Acrobat Reader é o mais famoso, porém muito pesado - uma opção bem melhor é o Foxit Reader.

Existem diversas formas para escrever um arquivo PDF. Uma das mais populares é escrever um documento ODF (do LibreOffice) ou DOC (do Microsoft Word) e exportar nesse formato, ou então mandar imprimir uma página HTML e, em vez de usar a impressora normal, usar um programa que grave em PDF.

O documento pode ser convertido diretamente na internet, sem instalar programas, através de sites como o Convert Files - esse foi o que experimentei o melhor resultado visual com máxima compressão, sendo rápido e permitindo a exclusão do arquivo após seu download. Outro exemplo é o Online PDF Converter, que permite mudar a resolução de saída, converter vários arquivos ao mesmo tempo ou juntá-los ou mesmo separar as páginas em novos arquivos PDF. Também é possível juntar online arquivos PDF no site smallpdf, que também possui as opções de dividir, converter de/para JPG e de/para Office.

Juntar imagens em arquivo PDF no Linux

Nomeie as imagens JPG/JPEG na ordem em que elas devem ser incluídas no futuro arquivo PDF (imagem1.jpg, imagem2.jpg, ou 1.jpg, 2.jpg...), coloque tudo em um mesmo diretório e execute o seguinte comando:

$ convert *.jpg meu_arquivo.pdf

Também é possível informar uma a uma as figuras ou aplicar outras regras.

LaTeX

LaTeX é um conjunto de macros para o programa de diagramação de textos TeX, muito utilizado para escrever monografias e textos científicos. O usuário deve escrever um conjunto de comandos de alto nível e depois utilizar um compilador que criará um arquivo PDF conforme as instruções gravadas. Sua concepção de uso é permitir ao usuário focar no conteúdo, utilizando outro momento para desenvolver a aparência do texto. Veja mais clicando no link LaTeX.

Shell script

Primeiramente, um arquivo HTML pode ser gerado imprimindo linha a linha usando shell script. Isso permite fazer a leitura de arquivos gerados em outras fontes e montar a página com informações atualizadas. Um exemplo disso está no post Arquivo HTML para apresentar dados CSV. O programa "wkhtmltopdf" converte o HTML gerado para PDF. Para instalá-lo, basta executar "sudo apt-get install wkhtmltopdf". Seu uso se dá dessa forma:

$ wkhtmltopdf file_in.html file_out.pdf

Para diferentes tamanhos de páginas e outras opções, consulte o manual do wkhtmltopdf.

Caso essa linha de comando esteja no crontab e/ou apareça uma mensagem do tipo "wkhtmltopdf: cannot connect to X server", será necessário executar o comando usando um servidor gráfico X, como o Xvfb. Ele pode ser executado em máquinas sem hardware de exibição e sem dispositivos de entrada físicos, emulando um framebuffer mudo usando a memória virtual. Para isso, instale e execute o comando usando as seguintes linhas:

$ sudo apt-get install xvfb
$ xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf file_in.html file_out.pdf

Note que a diferença foi acrescentar o comando "xvfb-run" com os parâmetros e opções utilizadas.

PHP e linha de comando

Uma opção seria usar o próprio programa "php" para gerar um arquivo HTML do jeito que quiser e depois usar o programa "wkhtmltopdf" para convertê-lo para PDF. Veja esse exemplo:

<?php define ('PATH','/dados/www/produtos'); $filename = 'Relatorio-'.date('m').'-'.date('Y').'.pdf'; exec('php '.PATH.'/gera_html.php > '.PATH.'/arq_html.html');
exec('xvfb-run -a -s "-screen 0 640x480x16" /usr/bin/wkhtmltopdf '.PATH.'/arq_html.html '.PATH.'/'.$filename.' 2>&1');
?>

Para utilizar esse script, você deve instalar os programas necessários: "sudo apt-get install wkhtmltopdf xvfb". É possível configurar o arquivo gera_html.php para receber variáveis do usuário, tornando o documento mais "interativo". Existem também classes PHP que geram o PDF, como o FPDF e o TCPDF.

Python

Existe uma biblioteca do Python chamada pdfkit que é um wrapper do wkhtmltopdf. Pra instalar, use o comando "sudo pip install pdfkit". Segue o script para exportar o HTML para PDF:

# exportpdf.py
import pdfkit
import sys

pdfkit.from_file(sys.argv[1], sys.argv[2])

O primeiro argumento na execução do script é o nome do arquivo HTML e o segundo é o do PDF. Deve-se abrir uma screen, conforme mencionado na parte do wkhtmltopdf.

JavaScript

Veja a seguir algumas opções usando JavaScript:

Chama a caixa de diálogo para impressão conteúdo de div (identificada pelo ID) usando JavaScript, com função ativada pelo clicar do botão. É possível incrementar o texto a ser impresso através da variável "document.body.innerHTML" no script, inclusive recebendo variáveis php como parâmetro de entrada. Um dos pontos negativos desse caso é imprimir com aquele cabeçalho e rodapé que o navegador insere automaticamente. O usuário pode editar o browser para não imprimir "header and footer", mas geralmente o melhor é evitar esse tipo de coisa.

Recebe dados via formulário HTML e imprime PDF contendo texto e as variáveis enviadas, selecionadas pelo ID. Se quiser passar elementos mais complexos (uma tabela, por exemplo), aí complica. Usa jQuery e o arquivo "jspdf.debug.js" além dos arquivos "basic" descritos na página.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

Um Pingback/Trackback