Como converter um arquivo HTML em PDF (com cores)

30

Eu tenho um arquivo HTML que está usando um style.css e tem cores, ex .:

<font style=BACKGROUND-COLOR:red; color=white>FOO</font>

Como posso "exportar" esse arquivo local no meu Ubuntu 12.04 para um PDF? (a aparência e a cor devem permanecer iguais). Tentei ex .: Ctrl+ P-> imprimir em PDF, mas não preservou as cores. Eu tentei htmldoccom a --coloropção .. mas é o mesmo problema ..

Seria ótimo fazer isso através da linha de comando.

gasko peter
fonte

Respostas:

36

Abra seu arquivo html no LibreOffice Writer e, em seguida, Fileno menu, escolha export to PDF. É isso aí.

Se você preferir a linha de comando, consulte Converter página HTML em PDF usando a ferramenta de código aberto - Linux / OS X / Windows .

O software pode ser instalado usando sudo apt-get install wkhtmltopdf.


fonte
Eu acho que isso pode ser automatizado na linha de comando também com alguns esforços. :)
gertvdijk
@gertvdijk, isso está além da minha competência. Eu nunca usei o LibO via CLI.
Não é este, wkhtmltopdf, tão bem, mas eu não tenho experiência nisso: cyberciti.biz/open-source/...
Por favor, pós wkhtmltopdf como resposta, ele resolveu o problema
Gasko peter
@gaskopeter, feito conforme solicitado, editando a resposta.
16

Webkit HTML para PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

http://www.cyberciti.biz/open-source/html-to-pdf-freeware-linux-osx-windows-software/

A versão mais recente é decapitada (não requer o servidor X).

Outra possibilidade: o phantomjs é um navegador mágico sem cabeça, também baseado no webkit html. Pode exportar uma página como PDF, entre outras coisas.

http://phantomjs.org

Sam Watkins
fonte
4
No OS X: brew install Caskroom/cask/wkhtmltopdf.
Kenorb
10

WeasyPrint parece promissor. Eu tentei wkhtmltopdfe, embora renderize as coisas de uma maneira aceitável, não renderiza tudo corretamente e cria PDFs que levam muitos segundos para abrir!

Instalar

pip install weasyprint

Corre

weasyprint mypage.html out.pdf

Como um extra, pode ser útil alterar o CSS se você quiser que a visualização do navegador e o PDF pareçam idênticos.

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
Pithikos
fonte
Eu apenas tentei instalar, weasypeaseymas não funcionou .. Talvez você possa ajudar? :) Primeiro eu fiz isso: apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoe, em seguida, instalar pip com pip install weasypeasymas recebe esse erro: Could not find any downloads that satisfy the requirement weasypeasy
clarkk
1
@clarkk meu mal. Na verdade é weasyprint. Entãopip install weasyprint
Pithikos
3
weasyprinté bom, mas cerca de 15 vezes mais lento do wkhtmltopdfque eu me lembro, portanto, não era adequado gerar relatórios sob demanda para nossos clientes. wkhtmltopdfpode ser persuadido a fazer um bom trabalho, mesmo em relatórios complexos ... com um esforço considerável!
Sam Watkins
Impressionante preserva o css e é incrível ..
Aditya ultra-
3

A extensão Web2PDFConverter para Chromium ou Chrome converte qualquer página da Web em PDF.

Ou você pode apenas usar este site: http://pdfcrowd.com/ . Para arquivos locais: http://pdfcrowd.com/#convert_by_upload

Radu Rădeanu
fonte
usando o Firefox + cmd linha seria melhor: P
Gasko peter
@gaskopeter pdfcrowd.com/#convert_by_upload - abra-o no Firefox
Radu Rădeanu
equações matemáticas não são convertidos, deve-se usar a versão impressa
Adam
2

Você pode tentar usar o PhantomJS e algum código, por exemplo, usando rasterize.js :

phantomjs rasterize.js http://example.com/

Ou use o html-pdfpacote NodeJS npm (consulte GitHub , instale via :)npm install -g html-pdf como sugerido no comentário. Uso:

html-pdf http://example.com/ example.pdf
kenorb
fonte
Existe um pacote NodeJS npm pronto para usar: html-pdf - conversor de HTML para PDF que usa phantomjs.
Ruvim
Eu não podia instalá-lo com npm devido à falta de PhantomJS-prebuild (que não poderia propperly ser instalado devido a direitos de acesso, mesmo com root)
Martin Thoma
2

Eu tentei o WeasyPrint, como foi sugerido por outros. Ele não converte bem em muitas páginas e, em algumas páginas, apenas falha com um erro.

O seguinte complemento do Firefox funciona para mim. Firefox 55. Diz apenas o Windows, mas funciona no Ubuntu.

Tiro de fogo

arrebatado
fonte
1

Experimente o Dompdf (verifique o código-fonte no GitHub ), que é um conversor de HTML para PDF. Essa biblioteca é muito fácil de usar e também muito fácil de instalar. Usando o compositor, você pode configurá-lo rapidamente.

Requisitos: PHP 5.0+ (5.3+ recomendado), extensão DOM, extensão GD

Exemplo de código PHP:

<?php
// somewhere early in your project's loading, require the Composer autoloader
// see: http://getcomposer.org/doc/00-intro.md
require 'vendor/autoload.php';

// disable DOMPDF's internal autoloader if you are using Composer
define('DOMPDF_ENABLE_AUTOLOAD', false);

// include DOMPDF's default configuration
require_once 'vendor/dompdf/dompdf/dompdf_config.inc.php';


$htmlString = '';
ob_start();
include('html_to_dpf.html');
$htmlString .= ob_get_clean();


$dompdf = new DOMPDF();
$dompdf->load_html($htmlString);
$dompdf->render();
$dompdf->stream("sample.pdf");
Jeff
fonte