web-dev-qa-db-fra.com

Comment convertir un fichier HTML en PDF (avec couleurs)

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

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

Comment "exporter" ce fichier local sur mon Ubuntu 12.04 vers un PDF? (le look et la couleur devraient rester les mêmes). J'ai essayé ex .: Ctrl+P -> imprimer en PDF, mais les couleurs ne sont pas préservées. J'ai essayé htmldoc avec l'option --color .. mais c'est le même problème ..

Ce serait génial de le faire via la ligne de commande.

26
gasko peter

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

Si vous préférez la ligne de commande, examinez Convertir une page HTML en PDF à l'aide d'un outil Open Source - Linux/OS X/Windows .

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

35
user25656

Webkit HTML au format 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).

Une autre possibilité: phantomjs est un navigateur Web magique sans tête, également basé sur webkit html. Il peut exporter une page au format PDF, entre autres.

http://phantomjs.org

15
Sam Watkins

WeasyPrint semble prometteur. J'ai essayé wkhtmltopdf et bien qu'il rend les choses de manière acceptable, il ne rend pas tout correctement et crée des fichiers PDF nécessitant plusieurs secondes pour s'ouvrir!

Installer

pip install weasyprint

Courir

weasyprint mypage.html out.pdf

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

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
9
Pithikos

Web2PDFConverter extension pour Chromium ou Chrome convertir une page Web au format PDF.

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

3
Radu Rădeanu

J'ai essayé WeasyPrint comme suggéré par d'autres. Il ne 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 ne dit que Windows mais fonctionne sur Ubuntu.

FireShot

2
rapt

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

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

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

html-pdf http://example.com/ example.pdf
2
kenorb

Essayez Dompdf (consultez le code source sur GitHub ), qui est un convertisseur HTML vers PDF. Cette bibliothèque est très facile à utiliser et très facile à installer. En utilisant composer , vous pouvez le configurer assez rapidement.

Conditions requises: PHP 5.0+ (5.3+ recommandé), extension DOM, extension Gd

Exemple PHP code:

<?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");
1
Jeff