Page 1 sur 1

Impression php/pdf

Posté : 08 nov. 2012, 13:41
par orell1
Bonjour,
j'essaie d'imprimer depuis mon site une page qui se transforme en pdf via ce code:
<?php
//---------------------------------------------------------------------------------------
  include_once("../fonctions.php");
  
  // Fonction qui permet d'afficher le theme du site
  $aff_theme = rech_enreg_theme();
  $dir_image = "../images";
  
  $aff_langue_site = rech_enreg_langue_site();
  include_once("../langues/$aff_langue_site[langue]");
?>  
  <link rel="stylesheet" href="../templates/<?php echo $aff_theme[theme]; ?>/style.css" />
  <br />
<?php
//----------------------------------------------------------------------------------------
  echo "<br /><br /><br /><br /><br /><br /><br /><br />";
  echo "<div align=\"right\"><a href=\"javascript:window.print()\"><img src=\"".$dir_image."/icone_imp.png\" alt=\"Imprimer\" title=\"Imprimer\" />
  </a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </div>";
//---------------------recuperation des id par la methode GET-----------------------------
   	$id = $_GET['id']; 
//----------------------------------------------------------------------------------------
  if (isset($_GET[id_rubrique])) {
  	$id_rubrique = $_GET['id_rubrique'];
  }
//----------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------
  //fonction permettant l'affichage de l'article en detaille
  $affiche = rech_enreg_picture($id);

  //affiche largeur des photos en presentation
  $aff_largeur_photo_presentation = rech_enreg_largeur_presentation();

  //affiche largeur des photos en rubrique
  $aff_largeur_photo_rubrique = rech_enreg_largeur_rubrique();

  //affiche les autres photos si l'option est activee
  $option_autre_photo = get_variable('autre_photo');

//----------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------
if ($affiche['publier'] == NULL && !$_SESSION['administrateur'] && !$_SESSION['groupe']) {

	echo "<fieldset class=\"fieldset\"><legend class=\"legend\">Cette page n'existe pas !</legend>
		<div class=\"titre_page\">
		<p>D&eacute;sol&eacute;, mais cette page n'existe pas !</p>
		</div>
		</fieldset>";
}
//----------------------------------------------------------------------------------------
else {

  $titre = stripSlashes($affiche['titre']);
  $rubrique = stripSlashes($affiche['rubrique']);
//----------------------------------------------------------------------------------------

//------------------ position photo article sur la page de présentation ------------------
    if ($affiche[position_photo] == "gauche") {
	$position = "style=\"float:left; margin-right:20px;\"";
    }
    else {
	$position = "style=\"float:right; margin-left:20px; \"";
    }
//----------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------------  
    $an = @date(Y);
//----------------------------------------------------------------------------------------

//---------------------- si il y a une photo alors afficher la photo ---------------------
if ($affiche['photo']) {
	$affiche_photo = "<img src=\"../".$affiche['photo']."\" border=\"0\" width=\"".$aff_largeur_photo_presentation['largeur_photo_presentation']."px\" alt=\"\" ".$position." />";
}
//-------------------------------------------------------------------------------------------
  	$zone_texte =	"".stripSlashes($affiche['texte'])."<br />";
//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------	
 	$zone_texte_op = "<table  border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"1\">";
//-------------------------------------------------------------------------------------------

//----------------------------------------- OPTIONS -----------------------------------------
//---------------------------- option vitrine presentation ----------------------------------
if (file_exists("../lib/afficher_articles/afficher_option_vitrine.php")) { 
	include_once("../lib/afficher_articles/afficher_option_vitrine.php");	 
}
//-------------------------------------------------------------------------------------------

//------------------------------------- option immobilier -----------------------------------
if (file_exists("../lib/afficher_articles/afficher_option_immobilier.php")) { 
	include_once("../lib/afficher_articles/afficher_option_immobilier.php");
}
//-------------------------------------------------------------------------------------------

//------------------------------------- option reservation ----------------------------------
if (file_exists("../lib/afficher_articles/afficher_option_reservation.php")) { 
	include_once("../lib/afficher_articles/afficher_option_reservation.php");
}
//-------------------------------------------------------------------------------------------

//----------------------------------------- OPTIONS -----------------------------------------
	   $zone_texte_op .= "</table>";
//------------------------------------ ZONE AUTRE PHOTO -------------------------------------
	   $zone_autre_photo .= "<br /><br />";
	   $zone_autre_photo .= "<table align=\"center\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"100%\">";
	   //affiche N articles par colonne sur la page
	   $nbr_article_colonne = rech_enreg_limite();

	   //connexion et requete dans la table autres_photos pour affichage des photos supplementaires
	   $conn = db_connect();
   	   $sql_autre_photo = "select * from ".AUTRES_PHOTOS." where id_article = '$affiche[id]' order by ordre"; 
   	   $resultat_autre_photo = mysql_query($sql_autre_photo, $conn);
       	   $nbr_element = mysql_num_rows($resultat_autre_photo); 

   	if ($nbr_element >= 1) {
       		$zone_autre_photo .= "<tr><td colspan=\"6\"><img src=\"".$dir_image."/afficher_art.gif\" alt=\"\" />&nbsp;&nbsp;<b>".AUTRES_VUES."</b></td></tr>";
        }
        else {
                $zone_autre_photo .= "<tr><td colspan=\"6\">&nbsp;</td>";
        }

   	//initialisation du compteur
	 $compteur = 0;  
	//affichage des photos dans un tableau
	 while ($sql_autre_photo = mysql_fetch_array($resultat_autre_photo)) 
	{
		if ($compteur == 0) {
			$zone_autre_photo .= "<tr>";
		}
	     
	       	elseif ($compteur % $nbr_article_colonne[nbr_article_colonne] == 0) {
		      	$zone_autre_photo .= "</tr><tr>";
		}

		$zone_autre_photo .= "<th><img src=\"../".$sql_autre_photo[autre_photo]."\" border=\"0\" width=\"".$aff_largeur_photo_rubrique[largeur_photo_rubrique]."px\" alt=\"\" /></th>";

	  $compteur = $compteur + 1;
        }
		$zone_autre_photo .= "</tr></table>";

//------------------------------------ ZONE AUTRE PHOTO -------------------------------------

//------------------------------------- ZONE D'AFFICHAGE ------------------------------------
	echo "<div id='container' style=\"width:100%; margin-left:-350px;\">";
  	echo "<div id='contenu'>";
 	echo "<fieldset class=\"fieldset\"><legend class=\"legend\">".get_nom_rubrique($affiche[id_rubrique])." / ".$titre."</legend>";
	echo "<div class=\"titre_page\">";
 	echo "<div class=\"affichage_article_page\">";
 	echo "<div class=\"presentation_article\">";
 	echo "".$affiche_photo.$zone_texte."";
 	echo "".$zone_texte_op."";
 	echo "".$zone_autre_photo."";
	echo "</div>";
	echo "</div>";
	echo "</div>";
	echo "</fieldset>";
	echo "</div>";
  	echo "</div>";	
//------------------------------------- ZONE D'AFFICHAGE ------------------------------------
}
?>
Mais en vain, enfin pas totalement...
En fait le document se créé correctement mais à l'impression le document n'est pas entier... il n'imprime qu'une page au lieu d'imprimer toutes les pages...
Savez-vous d'où cela peut venir?

Je lance le script grace à cette commande :
<a href="#" onclick="window.open('lib/imp_article.php?id=<?php echo $affiche[id]; ?>&id_rubrique=<?php echo $id_rubrique; ?>', '_blank', 'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=1024, height=764, left=0, top=0');return(false)">&nbsp;&nbsp;<img src="images/icone_imp.png" /></a>
Merci par avance.

Re: Impression php/pdf

Posté : 08 nov. 2012, 13:55
par schim59
Bonjour,
Je ne sais pas...
Ton imprimante détecte une ou plusieurs pages ?

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:06
par orell1
merci pour ta réponse rapide...
Elle ne détecte qu'une page mais il y en a au moins 2 car les informations sont tronquées...

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:10
par schim59
Dasn le navigateur tu peux ouvrir le doc en pdf pour tester ?

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:15
par orell1
oui oui on voit la page entière mais quand je veux imprimer c'est trnqué...
si tu veux voir ce que ça fait : http://ruffin-tillemont.com/lib/imp_art ... ique=71607

merci beaucoup.

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:18
par schim59
C'est en html par contre et l'imprimante detecte 2 pages.

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:20
par orell1
oui et après tu cliques sur l'imprimante en haut à droite de la page

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:31
par Ryle
Euh... ton site ouvre une page php dans une popup et propose juste d'imprimer la page html générée via le navigateur avec un window.print(). Il n'y a absolument aucun rapport avec pdf dans tout ça...

Le résultat de l'impression dépendra donc du navigateur utilisé. Qu'est ce que tu utilises comme navigateur ? (A priori pas de soucis avec chrome, il me propose bien d'imprimer deux pages)

A noter que lorsque tu imprimes du html, tu peux également définir une feuille de style dédiée à l'impression (media="print" dans l'appel au css dédié à l'impression) pour masquer les éléments que tu ne veux pas faire apparaitre sur le papier ou changer les marges, etc.

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:36
par orell1
Merci pour ton explication! ;-)
j'utilise firefox...

Donc pour toi la solution serait de faire appel au css...? en utilisant cette méthode par exemple : http://www.alsacreations.com/tuto/lire/ ... ssion.html

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:42
par Ryle
Ah ben oui tiens, c'est plus qu'étrange ça... même sous IE ça fonctionne bien et il détecte 2 pages, par contre sous FF, pas moyen de lui faire sortir plus d'une page, même en jouant sur le zoom...

Du coup je ne sais pas si le css changera grand chose (mais le principe reste sympa de dissocier la mise en page à l'écran de celle sur papier).. par contre je constate que ta page ne contient pas les balises <html>, <head> (avec l'appel du css) ou <body>. Commence déjà par les ajouter, peut être que c'est juste cela qui manque à FF pour imprimer correctement ?

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:50
par orell1
Trop bizarre!
Le head et autres sont contenu dans include_once("../fonctions.php");

j'y comprends rien la lol

Re: Impression php/pdf

Posté : 08 nov. 2012, 14:52
par orell1
et il n'y a pas un moyen tout simple pour imprimer ces infos en pdf rapidement depuis la page d'affichage en php...? avec une autre méthode (pour débutant comme moi)

Merci beaucoup