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.


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.


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.


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;
}

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-


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

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


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");
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.