| 4 Nephiston, le 10 nov 2003 à 11:44:47Utilises le logiciel "HTMLdoc", qui permet de transformer dynamiquement un fichier HTML/PHP/... en un fichier PDF.
Par php, tu peux appeler l'exécutable de HTMLdoc en ligne de commande via la fonction "passthru()", et choisir d'afficher le PDF a l'ecran (dans le navigateur), ou de le stocker sur le serveur.
@++ Répondre à Nephiston | 6 sam, le 30 déc 2003 à 16:39:38Salut g téléchargé HTMLdoc et g voulu le tester avec ce bout de code:
include "../HTMLDOC/html.inc.php4";// Globals...
header("Content-Type: application/pdf");
flush();
$url = "exemple.htm";
$file_name = "http://".$_SERVER['HTTP_HOST']."".dirname($_SERVER['PHP_SELF'])."/".$url."\n";
$commandline= "htmldoc -t pdf --quiet --jpeg --webpage '' '$file_name'";
passthru($commandline);
mais ça ne fait rien!!! le fichier pdf n'est pas généré, si tu peus m'aider ça serait cool ça fait un bout de temps que je suis dessus, merci. Répondre à sam |
| 8 khaled, le 27 fév 2007 à 00:13:20Salut
est ce que vous avez une solution sur le probleme de convertir un fichier html en pdf avec php ? si qqun a une solution je suis preneur Répondre à khaled | 25 DIP, le 1 oct 2008 à 06:04:47Salut Khaled,
J'arrive sans doute trop tard, mais la solution, c'est dompdf (http://www.digitaljunkies.ca/dompdf/ )
Il y a des exemples et ça marche nickel.
Après avoir installé le dossier "dompdf" à la racine de ton site, tu changes le mode des dossiers (777) et tu appelles la page php à afficher en lui passant les paramètres nécessaires:
<a href="/dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2Fnom_de_ton_site.com2Fwww%2F&orientation=portrait&output_file=<?php echo $nom_de_la_page.".pdf"?>&input_file=%2Fdata%2F.home%2Fwww%2Fnom_de_ton_site.com/www%2Fnom_de_la_page_a_transformer.php&variable_a_passer=<?php echo $variable ?>" target="_blank" class="actions">Imprimer la page</a>
Et bingo.
Bonne chance Répondre à DIP | Bonjour,
Je me permets de répondre à ce post ancien... car aujourd'hui j'essaies d'installer dompdf, mais je n'y arrive pas et je ne trouve pas de tuto en français. Et si vous pouviez m'aider, ce serait sympa !
Voilà ce que j'ai fait :
j'ai installer le dossier dompdf sur la racine de mon site (plus exactement dans un sous dossier, pour tests). L'url de mon site est donc du type : http://test.mondomaine.fr/monsousdossier/index.php
J'ai mis tous les droits sur ce dossier.
Et après j'ai mis votre lien, mais je ne comprends pas ce que sont les %2F et donc ce qu'il faut modifier, et où sont paramétrés les variables $nom_de_la_page, $nom_de_la_page_a_transformer et $variable...
<a href="dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2Fnom_de_ton_site.com2Fwww%2F&orientation=portrait&output_file=<?php echo $nom_de_la_page.".pdf"?>&input_file=%2Fdata%2F.home%2Fwww%2Fnom_de_ton_site.com/www%2Fnom_de_la_page_a_transformer.php&variable_a_passer=<?php echo $variable ?>" target="_blank" class="actions">Imprimer la page</a>
Merci d'avance, si vous pouvez m'aider ... Répondre à houba_houbi | 27 DIP, le 21 oct 2009 à 14:46:05Salut houba_houbi,
Je vais essayer ...!
Dernièrement, j'ai eu des problèmes pour retrouver le chemin vers la racine d'un site. Finalement, j'ai trouvé ceci :
<?php
$Separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
// pour retrouver le chemin vers la racine
$DirectoryPath = dirname(__FILE__) . "{$Separator}";
//echo "DirectoryPath : ".$DirectoryPath."<br>"; //si tu enlèves le commentaire, tu connaîtras le chemin
?>
<!--lien pour transformer la page-->
<a href="./dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2FNomDeTonSite.com%2Fwww%2F&orientation=landscape&output_file=calendrier.pdf&input_file=<?php echo $DirectoryPath ; ?>NomDeLaPageATransformer.php" target="_blank" class="actions">Cliquer ici pour imprimer la page</a>
Tentative d'explication ;-)
1) ./dompdf/dompdf.php : chemin vers le fichier dompdf.php qui va faire le boulôt.
2) %2F représente le signe '/' encodé
3) orientation=landscape : tu peux choisir l'orientation de ton document pdf. 2 possibilités : paysage ('landscape') ou portrait ('portrait')
4) output_file=calendrier.pdf : c'est le nom que tu veux donner au document pdf que tu veux créer à l'aide de dompdf (ici, j'ai choisi le nom "calendrier.pdf")
5) input_file=<?php echo $DirectoryPath ; ?>NomDeLaPageATransformer.php : c'est le chemin vers le document que tu veux transformer en pdf. <?php echo $DirectoryPath ; ?> est la variable trouvée ci-dessus suivie du nom de la page. (Cette dernière peut être une page .html ou .php par exemple.)
Si tu ne t'en sors pas, tu peux m'envoyer ton code et je verrai ce que je peux faire.
@+
DIP Répondre à DIP |
| 28 DIP, le 21 oct 2009 à 14:58:03J'oubliais,
Si la page que tu veux transformer est un document php et que tu as besoin de lui transmettre un variable, tu vas ajouter : &variable_a_passer=<?php echo $variable ?> ($variable ayant été définie précédemment)
Ce qui va donner:
<a href="./dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2FNomDeTonSite.com%2Fwww%2F&orientation=landscape&output_file=calendrier.pdf&input_file=<?php echo $DirectoryPath ; ?>NomDeLaPageATransformer.php&variable_a_passer=<?php echo $variable ?> " target="_blank" class="actions">Cliquer ici pour imprimer la page</a>
OK? Répondre à DIP | Super merci pour cette réponse rapide DIP, cela m'éclaire un peu plus. Je vais essayé...
En revanche, la variable $variable, tu l'as définies où ?
Et si ma page est une page .php avec un rewrite l'a transformant en .html, je prends l'option .html ?
Merci Répondre à houba_houbi | 30 DIP, le 21 oct 2009 à 18:54:45Admettons que tu veuilles imprimer une recette de cuisine dont les éléments figurent dans la table t_recettes.
Dans cette table, tu as défini les champs suivants:
rec_id (l'id de la recette)
rec_titre (le titre de la recette)
rec_ingredients
rec_recette
et rec_photo, etc.
Petit exemple: on commence par la récupération du chemin vers la racine du site:
<?php
$Separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
// pour retrouver le chemin vers la racine
$DirectoryPath = dirname(__FILE__) . "{$Separator}";
//echo "DirectoryPath : ".$DirectoryPath."<br>"; //si tu enlèves le commentaire, tu connaîtras le chemin
?>
Tu récupères les informations des différentes recettes :
$select_REC=mysql_query("SELECT * FROM t_recettes ORDER BY rec_titre");
$ii=0;
while($result_REC = mysql_fetch_array($select_REC)){
echo $result_REC["rec_titre"] ;
// et maintenant le lien pour l'impression
?>
<a href="./dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2FNomDeTonSite.com%2Fwww%2F&orientation=landscape&output_file=recette_de_=<?php echo $result_REC["rec_titre"] ; ?>.pdf&input_file=<?php echo $DirectoryPath ; ?>impression_recette.php&rec_id=<?php echo $result_REC["rec_id"] ; ?> " target="_blank" class="actions">Cliquer ici pour imprimer la recette</a>
<?php
$ii++;
}
Dans la page impression_recette.php, tu récupère l'id:
<?php
// récupération de l'id
if (isset($_GET["rec_id"]))
$rec_id=$_GET["rec_id"];
else
$rec_id="0";
// tu récupère les infos de la recette
$select_REC_A_IMPRIMER=mysql_query("SELECT * FROM t_recettes WHERE rec_id=' ".$rec_id." ' ");
$result_REC_A_IMPRIMER = mysql_fetch_array($select_REC_A_IMPRIMER));
?>
et ensuite tu composes ta page d'impression selon tes désirs.
<table>
<tr>
<td>Titre : php echo $result_REC_A_IMPRIMER["rec_titre"] ; ?></td>
</tr>
<tr>
<td>Ingrédients : php echo $result_REC_A_IMPRIMER["rec_ingredients"] ; ?></td>
</tr>
<tr>
<td>Recette: php echo $result_REC_A_IMPRIMER["rec_recette"] ; ?></td>
</tr>
</table>
Attention : j'ai constaté que dompdf est très sensible à la correction du code html, ce qui m'a causé qq problèmes. Alors au début fait du basic avec un petit tableau simple avant de compliquer. Répondre à DIP | Merci DIP pour toutes ces explications.
Mais je n'ai pas de base de données...
j'ai une simple page html, sur laquelle je souhaite avoir un lien "pdf" qui ouvre le fichier pdf de cette page html... et je n'y arrive pas Répondre à houba_houbi | 32 dipi, le 22 oct 2009 à 21:05:19Ce qui simplifie donc les choses ...
Dans ce cas, tu auras ta page d'appel:
mesRecettes.php
dans laquelle tu colles:
<?php
$Separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
// pour retrouver le chemin vers la racine
$DirectoryPath = dirname(__FILE__) . "{$Separator}";
//echo "DirectoryPath : ".$DirectoryPath."<br>"; //si tu enlèves le commentaire, tu connaîtras le chemin
?>
afin de connaître le chemin vers le dossier racine
et ensuite tu tape:
<a href="./dompdf/dompdf.php?base_path=%2Fdata%2F.home%2Fwww%2FNomDeTonSite.com%2Fwww%2F&orientation=landscape&output_file=recette_de_gateau.pdf&input_file=<?php echo $DirectoryPath ; ?>impression_recette_de_gateau.html" target="_blank" class="actions">Cliquer ici pour imprimer la recette</a>
la page impression_recette_de_gateau.html étant la page que tu as préparée et que tu souhaites tranformer en pdf.
(Mais bon, dans ce cas, tu pourrais aussi faire la page en Word et la transformer directement en pdf ...) Répondre à dipi | Bonjour,
Non désolée cela ne marche pas non plus : cela m'ouvre une page "internal server error 500". Répondre à houba_houbi | 34 dipi, le 23 oct 2009 à 13:19:16Peux-tu m'envoyer un email et me donner le lien vers ta page? Je vais voir si je peux t'aider de manière plus concrète ;-)
A+ Répondre à dipi |
| Bonjour Dipi,
A force d'insister, j'ai fini par obtenir l'ouverture d'un pdf avec un logo www.pdflib.com en travers !!! Chouette !
Le hic, c'est qu'il me manque la feuille de styles... et mes images..., comment spécifier où aller chercher ces éléments ?
Voici ce que j'ai mis :
<?php //tests dompdf
$fichier = $_SERVER['REQUEST_URI'] ;
$basesite = 'xxxxhttp://www.urldemonsitexxx';
?>
<a href="dompdf/dompdf.php?base_path=<?php echo $basesite; ?>&orientation=landscape&output_file=test.pdf&input_file=<?php echo $basesite.$fichier; ?>" target="_blank" class="actions">!PDF!</a>
Merci si tu peux encore m'aider sur ce coup là!!! Répondre à houba_houbi |
| 36 dipi, le 24 oct 2009 à 19:33:01Salut,
Essaie avec:
<?php
$chemin="/data/.home/www/monSite.com/www/"; // ou le chemin vers la racine
?>
Puis
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />
<title>Imprimer en PDF </title>
<link rel="SHORTCUT ICON" type="image/x-icon" href="tournesol.ico">
<link href="<?php echo $chemin ; ?>/feuille_de_style.css" rel="stylesheet" type="text/css">
etc.
A+ Répondre à dipi |
|
|
|
|
|
|
|
|
|
|