Anglais Francais Prosygma Italie
-
    hebergement asp
prosygma_logo

Créer des fichiers PDF avec HTMLDoc

Techniques

Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...

Il peut être utile de produire des fichiers PDF depuis une page dynamique, pour générer les fichiers à la volée par exemple afin de créer des états de type publipostage , des listings ou même un formulaire à remplir. Plusieurs solutions s'offre alors à vous suivant le langage utilisé. Une méthode pratique et gratuite, utilisable par tous les langages peut être de transformer des fichiers HTML en PDF. Il existe pour cela plusieurs techniques. L'une d'elle repose sur l'utilisation d'un utilitaire gratuit : HTMLDoc. HTMLDoc est un exécutable qui permet de convertir un ou plusieurs fichiers HTML en fichier PDF. Il s'utilise normalement avec une interface graphique mais peut aussi être appelé en ligne de commande.

Avantages sur un serveur WEB :


Inconvénients :


Le fichier HTML peut être converti en fichier pdf avec un ligne de commande sous DOS :

htmldoc -t pdf --quiet -webpage -f fichier.pdf fichier.html

Par contre depuis un site dynamique, si vous devez générer les fichiers PDF à la volée depuis ASP ou PHP, par exemple, il vous faut écrire un fichier HTML qui sera transformer via la ligne de commande exécutée depuis le serveur WEB . Cet appel peut être coûteux en temps de traitement.


Générer un fichier PDF à la volée depuis ASP :


' ****** La ligne de commande

CmdeHTMLDOC = chr(34)&"C:\Program Files\HTMLDOC\htmldoc.exe" &_
chr(34)& "  -t pdf --quiet "& _
"  --webpage -f "



' En consultant le fichier de documentaion de HTMLDOC 
' vous vous rendrez compte
' qu'un certains nombre de paramètres peuvent aussi être
' précisés, comme la police, sa taille, la compression
' du document final, etc. Par exemple :
' CmdeHTMLDOC = chr(34)& _
' "C:\Program Files\HTMLDOC\htmldoc.exe" & _
' chr(34) & "  --compression=1 --no-toc " & _
' " --pagemode document  "& _
' " --textfont Arial "& _
' " --fontsize 8 "& _
' " --header ... --footer ...  "& _
' " --size a4 --left 1.5cm "& _
' " --right 1.5cm "& _
' " --fontspacing 2 --webpage -f "



' ******* génération du fichier HTML à la volée
Set FSO =   Server.CreateObject("Scripting.FileSystemObject") 
name_fileHTML= "fichier.html"
dir = Server.MapPath(name_fileHTML)
set inF = FSO.OpenTextFile(dir,2,true) 
	
inF.write "<html><body>"_
	"<table border=""1"" width=""90%"">"_
	"<tr><th>Employé</th><th>Salaire</th></tr>"_
	"<tr><td>Smith</td><td>1 000 euros</td></tr>"_
	"</table>"_
	"</body></html>"
	
'fermeture fichier HTML
inF.close
			
	
	
' ******* génération du fichier PDF
set wshell=Server.CreateObject("wscript.shell")

' ******* Ligne de commande complétée par les chemins 
' ******* des fichiers source HTML et de destination en PDF :

fic_html = dir
fic_pdf = Server.MapPath("fichier_test.pdf")

wpath= CmdeHTMLDOC &chr(34)& _
fic_pdf &chr(34)&" "& chr(34)& fic_html &chr(34)

' ******* Lancement de la commande
wshell.Run wpath, SW_SHOWNORMAL,true
Set wshell=nothing

' ******* L'ouverture du document peut se faire  
' ******* alors simplement en JavaScript :

Response.write "<script>window.document.location.href='" & _
	 	Server.MapPath("fichier_test.pdf") & _
		"';</script>"
		
' ******* Mais il est aussi possible d'effectuer
' *******  une redirection sur 
' ******* le fichier PDF depuis le serveur 		

' ******* Fin du script
Response.End
Convertir une page HTML en ligne, en fichier PDF depuis PHP :
header("Content-Type: application/pdf");
flush();
$CmdeHTMLDOC= 'htmldoc -t pdf --size A4 --webpage'.
	' -f c:\SITE_PROG.pdf http://dypso.free.fr';
passthru($CmdeHTMLDOC);