Conversão automática razoável de HTML para PDF (no ambiente UNIX / Linux) [fechado]


16

Existe uma maneira de gerar documentos PDF a partir de arquivos HTML automaticamente no Linux, onde o PDF oferece algum tipo de nível razoável de semelhança com o arquivo de entrada?

Uma ferramenta de linha de comando - em oposição a uma GUI interativa de algum tipo - é essencial.

Eu tentei htmldoce alguns primos relacionados, é claro. Mas essas ferramentas são irremediavelmente da idade da pedra; htmldocnão suporta CSS. Atualmente, você não encontrará muitos documentos HTML que não tenham pelo menos algum estilo CSS. Eu realmente não me importo com efeitos estúpidos ou pequenos enfeites, mas a questão é que o CSS está no centro da maioria dos layouts atualmente; poucas pessoas estão usando mais 6 camadas de tabelas aninhadas. Portanto, se a ferramenta de conversão não tem nenhum conhecimento de CSS, não se trata apenas de "o documento não parece muito certo"; é provável que não atenda ao padrão mínimo de usabilidade.

Algumas pessoas me sugeriram para tentar usar o mecanismo de renderização Gecko para gerar imagens que podem ser convertidas em PDFs, mas não tenho idéia de como alguém faria isso, muito menos facilmente.

Não tenho dificuldade em acreditar que existem boas ferramentas comerciais que fazem isso, mas estou realmente procurando por um pacote de código aberto, se possível, pois o empreendimento em si é de código aberto e não compensa.

Desde já, obrigado!

Respostas:


7

Você já viu o wkhtmltopdf ? Não posso dizer o quão bem ele funciona pessoalmente, mas parece exatamente o que você precisa. O único problema pode ser, com esta e com qualquer solução de 'automação do navegador', que ela selecionará a folha de estilo de impressão em vez da tela, para que o PDF não seja exatamente o que você vê na tela.


O que é uma folha de estilo de impressão? Devo estar fora de contato com as melhores e mais recentes novidades do universo CSS.
Alex Balashov

Não é novidade, apenas se tornou prático para a maioria dos sites depois que eles mudaram para CSS para layout em vez de tabelas. Experimente alistapart.com/articles/goingtoprint ou webcredible.co.uk/user-friendly-resources/css/… para obter uma introdução.
robertc

2

Tente chm2pdf com python-beautifulsoup.


2

XHTML2PDF é um conjunto de ferramentas Python que inclui scripts de linha de comando e uma biblioteca Python (você deve incorporar isso em algo maior sem precisar usar o script). Ele suporta HTML / XHTML e CSS, com estilos CSS específicos do fornecedor adicionais para ajustar a saída formatada (por exemplo, números de página, fluxo de parágrafos, etc.)

Usei apenas um pouquinho para processar em lote alguns documentos HTML, mas funcionou bem e seu conjunto de recursos parece abrangente para mim. O manual está oculto na página de demonstração, mas é, por si só, um bom exemplo da conversão de um documento HTML para PDF.

Eu tinha um bom conjunto de links para exemplos "antes" e "depois", mas acabei de criar minha conta e, aparentemente, apenas spammers colocaram mais de um link em seu primeiro post :-p


1

Eu queria gerar alguns PNG a partir de páginas HTML a partir da linha de comando. Em algum lugar, encontrei esse script ruby que usa mozembed para gerar uma captura de tela. Você pode remover a linha de escala se não a desejar.

O único problema que vejo é que a página realmente aparece na tela por um momento ...


Hum, sim. A última parte parece ser um assassino. Isso precisa ser incorporado em um back-end puramente do servidor; sem cabeça de exibição ou qualquer coisa. Alguma maneira de conseguir isso?
Alex Balashov

0

tente dompdf funciona bem a partir da linha de comando e por seus exemplos funciona com qualquer tipo de html


0

PrinceXML. Pode lidar com CSS muito bem. Versões Linux, Windows, Mac OS X disponíveis. AFAICS, também é a tecnologia por trás da saída em PDF do Google Docs. Mas observe: isso é payware.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.