Comment convertir un fichier HTML en PDF (avec des couleurs)

30

J'ai un fichier HTML qui utilise un style.css et a des couleurs, par exemple:

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

Comment "exporter" ce fichier local sur mon Ubuntu 12.04 vers un PDF? (l'apparence et la couleur doivent rester les mêmes). J'ai essayé par exemple: Ctrl+ P-> imprimer au format PDF, mais cela n'a pas conservé les couleurs. J'ai essayé htmldocavec l' --coloroption .. mais c'est le même problème ..

Ce serait formidable de le faire via la ligne de commande.

gasko peter
la source

Réponses:

36

Ouvrez votre fichier html dans LibreOffice Writer puis, sous Filedans le menu, choisissez export to PDF. C'est ça.

Si vous préférez la ligne de commande, jetez un œil à Convertir la page HTML en PDF en utilisant l'outil Open Source - Linux / OS X / Windows .

Le logiciel peut être installé à l'aide de sudo apt-get install wkhtmltopdf.


la source
Je pense que cela peut aussi être automatisé sur la ligne de commande avec quelques efforts. :)
gertvdijk
@gertvdijk, cela dépasse ma compétence. Je n'ai jamais utilisé LibO via CLI.
Il y a aussi ceci, wkhtmltopdf, mais je n'en ai aucune expérience: cyberciti.biz/open-source/…
Veuillez poster wkhtmltopdf comme RÉPONSE, cela a résolu le problème
gasko peter
@gaskopeter, fait comme demandé en éditant la réponse.
16

Webkit HTML en PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

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

La dernière version est sans tête (ne nécessite pas de serveur X).

Autre possibilité: phantomjs est un navigateur web sans tête magique, également basé sur webkit html. Il peut notamment exporter une page au format PDF.

http://phantomjs.org

Sam Watkins
la source
4
Sur OS X: brew install Caskroom/cask/wkhtmltopdf.
kenorb
10

WeasyPrint semble prometteur. J'ai essayé wkhtmltopdfet bien que cela rend les choses d'une manière acceptable, il ne rend pas tout correctement et crée des fichiers PDF qui prennent plusieurs secondes pour s'ouvrir!

Installer

pip install weasyprint

Courir

weasyprint mypage.html out.pdf

En supplément, il peut être utile de modifier le CSS si vous souhaitez que la vue du navigateur et le PDF soient identiques.

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
Pithikos
la source
Je viens d'essayer d'installer weasypeaseymais n'a pas fonctionné .. Peut-être pourriez-vous aider? :) J'ai d'abord fait ceci: apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoet ensuite j'installe pip avec pip install weasypeasymais obtient cette erreur: Could not find any downloads that satisfy the requirement weasypeasy
clarkk
1
@clarkk mon mauvais. C'est en fait weasyprint. Doncpip install weasyprint
Pithikos
3
weasyprintest bon mais environ 15 fois plus lent que wkhtmltopdfsi je me souviens bien, il ne nous convenait donc pas de générer des rapports à la demande pour nos clients. wkhtmltopdfpeut être persuadé de faire du bon travail même pour des rapports complexes ... avec un effort considérable!
Sam Watkins
Génial, il préserve le CSS et est génial ..
Aditya ultra
3

L' extension Web2PDFConverter pour Chrome ou Chrome convertit n'importe quelle page Web en PDF.

Ou, vous ne pouvez utiliser que ce site: http://pdfcrowd.com/ . Pour les fichiers locaux: http://pdfcrowd.com/#convert_by_upload

Radu Rădeanu
la source
utiliser Firefox + ligne cmd serait mieux: P
gasko peter
@gaskopeter pdfcrowd.com/#convert_by_upload - ouvrez-le dans Firefox
Radu Rădeanu
les équations mathématiques ne sont pas converties, il faut utiliser une version imprimable
Adam
2

Vous pouvez essayer d'utiliser PhantomJS et du code, par exemple en utilisant rasterize.js :

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

Ou utilisez NodeJS html-pdf npm (voir GitHub , installez vianpm install -g html-pdf comme suggéré dans le commentaire. Usage:

html-pdf http://example.com/ example.pdf
kenorb
la source
Il existe un package NodeJS npm prêt à l'emploi: html-pdf - convertisseur HTML en PDF qui utilise phantomjs.
ruvim
Je n'ai pas pu l'installer avec npm en raison du manque de phantomjs-prebuild (qui n'a pas pu être installé correctement en raison des droits d'accès, même avec root)
Martin Thoma
2

J'ai essayé WeasyPrint comme suggéré par d'autres. Il ne se convertit pas bien dans de nombreuses pages et, dans certaines pages, il échoue simplement avec une erreur.

L'addon Firefox suivant fonctionne pour moi. Firefox 55. Il indique Windows uniquement mais il fonctionne sur Ubuntu.

Coup de feu

ravi
la source
1

Essayez Dompdf (vérifiez le code source sur GitHub ) qui est un convertisseur HTML en PDF. Cette bibliothèque est très facile à utiliser et également très facile à installer. Utiliser le compositeur vous pouvez le configurer assez rapidement.

Exigences: PHP 5.0+ (5.3+ recommandé), extension DOM, extension GD

Exemple de code 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
la source