Convertir un site HTML en PDF
But de ce document
Ce document me sert de mémo pour recenser les commandes utiles permettant de convertir des pages HTML en fichiers PDF. Mon objectif étant de convertir un site entier en fichier PDF en conservant la feuille de style d’impression du site concerné.
wget
Ces commandes permettent de connaître la liste des pages à convertir :
wget --recursive --level=2 --no-parent www.coagul.org 2> index.txt
cat index.txt | grep "^\-\-..:..:.." | cut -d " " -f3
html2ps
Cette commande permet de convertir directement une page html en ligne en fichier PostScript :
$ html2ps -o test.ps www.coagul.org
$ ps2pdf mon_fichier.ps mon_fichier.pdf
Problèmes rencontrés :
wget + htmldoc
Ces commandes permettent de télécharger une page html et la convertir en fichier pdf :
wget www.coagul.org
$ htmldoc --continuous -t pdf index.html > test.pdf
Problèmes rencontrés :
Remarque 1 : Le programme « htmldoc » dispose également d’une interface utilisateur pour effectuer tous les réglages plus facilement.
Remarque 2 : Il est possible également de générer un format livre au lieu du format HTML ce qui offre un bien meilleur rendu.
Remarque 2 : htmldoc est souvent utilisé par les sites en php/asp pour générer des PDF à la volé.
Article intéressant sur HTMLDOC :
kwebdesktop
Cette commande permet de créer une image .png de la page en utilisant le rendu de Konqueror :
$ kwebdesktop 1024 2000 test.png www.coagul.org
Problèmes rencontrés :
khtml2png
Semble donner le même résultat que kwebdesktop et n’est pas disponible en standard sous Debian :
Utiliser Mozilla en ligne de commandes
Cette méthode semble la meilleure, mais je n’ai pas réussi à la mettre en oeuvre :
Dcop et Konqueror
Avec Dcop, il est possible de piloter Konqueror en ligne de commande.
Lancement de Konqueror :
$ kfmclient openURL 'http://www.coagul.org' &
Je n’ai pas compris la différence avec :
$ konqueror 'http://www.coagul.org' &
Récupération de la référence de Konqueror ouverte :
$ HKON=`dcop | grep konqueror`
# Recherche de la référence sur la partie ’html-widget’ de konqueror.
$ HWDG=`dcop $HKON | grep html-widget`
# Utilisation de la fonction print (true=affiche menu d’impression)
Impression :
$ dcop $HKON $HWDG print true
Mais lors du lancement de l’impression, j’avais systématiquement ce message d’erreur :
cupsdoprint -P ...
No printer specified (and PRINTER variable is empty)
Pour régler ce problème, j’ai ajouté dans le fichier « .bash_profile » la ligne suivante pour initialiser la variable PRINTER et indiquer le nom de l’imprimante PDF à utiliser :
export PRINTER=Imprimante-PDF
Ensuite, il faut se reconnecter de KDE pour prendre en compte la modification.
#!/bin/bash
konqueror &
while [ -z "$HKON" ]
do
sleep 1
HKON=`dcop | grep konqueror`
done
echo $HKON
dcop $HCON
for fichier in `cat index2.txt`
do
echo $fichier
dcop $HKON "konqueror-mainwindow#1" openURL $fichier
sleep 4
HWDG=`dcop $HKON | grep html-widget`
dcop $HKON $HWDG print true
sleep 3
done
#dcop $HKON MainApplication-Interface quit
Autre variante :
#!/bin/bash
# Lance le processus de konqueror en arrière plan
konqueror &
# `jobs -p` retourne le numéro du dernier processus lancé en arrîère plan
pid=`jobs -p`
konq="konqueror-$pid"
# Attente que konqueror soit lancé
sleep 1
#dcop "konqueror-$PIDkonqueror"
# Modife l'URL de Konqueror
dcop $konq "konqueror-mainwindow#1" openURL [http://fr.openoffice.org/->http://fr.openoffice.org/]
# Attends que la page HTML soit chargée
# -> ATTENTION : Si la page n'a pas le temps de se charger entièrement, le PDF sera incomplet
sleep 5
interface=`dcop $konq | grep html-widget`
dcop $konq $interface print true
# Quitte konqueror
dcop $konq MainApplication-Interface quit
Problèmes posés par le script :
Autres liens
Article intéressant sur le fonctionnement de Dcop :
Historique des modifications
| Version | Date | Commentaire |
|---|---|---|
| 0.4 | 21/03/07 | Création par Tony GALMICHE |
| 0.5 | 29/05/08 | Mise en ligne |
