Page 1 sur 1

PHP VERS PDF

Posté : 19 janv. 2009, 14:42
par jedebute
Bonjour à tous,

j'ai créé un formulaire html. Je récupère les données dans un fichier php et j'aimerais imprimer cette nouvelle page (php) sans la date, le nombre de page, l'adresse du site... que les navigateurs intégrent à chaque fois. OU MIEUX j'aimerais pouvoir enregistrer cette nouvelle page (via serveur) sous le format pdf. J'ai lu beaucoup de choses dans ce forum mais n'y comprend pas grand chose. Y a t il une solution simple pour transformer mon formulaire rempli en fichier pdf...
Si la solution passe par fpdf ou autre, pourriez vous m'indiquer le fonctionnement.

D'avance merci à tous.

Marc

Posté : 19 janv. 2009, 15:09
par jojolapine
Alors oui la solution passe par fpdf par exemple...
Pour le fonctionnement: http://www.fpdf.org/ (section tutoriel/manuel)
Fait des essais, et viens nous poser des questions quand y a un soucis ;)

dur dur

Posté : 22 janv. 2009, 09:35
par jedebute
pas facile pour un débutant !
mais j'avance doucement... merci

Posté : 22 janv. 2009, 11:43
par jojolapine
Tu peux nous demander si tu bloques quelque part ;)
C'est vrai que c'est pas forcément évident...
Je te montrerai si tu veux une classe que j'ai faite pour générer des tableau simplement...

Posté : 23 janv. 2009, 11:50
par guy
Tu peux nous demander si tu bloques quelque part ;)
C'est vrai que c'est pas forcément évident...
Je te montrerai si tu veux une classe que j'ai faite pour générer des tableau simplement...
je suis aussi interressé par la class dont tu parle ... elle est en ligne quelque part ? Un poil documentée ?

Merci

Guy

Posté : 23 janv. 2009, 12:04
par jojolapine
Bonjour,
La classe n'est pas en ligne car pas terminée, mais pour vous montrer le principe, je vous la colle içi:
<?php

//inclusion de fpdf


class PDF extends FPDF
{
	/**
	*  largeur d'une page au format portrait
	*/
	private $largeurPage=190;
	
	/**
	*  Hauteur d'une cellule de tableau
	*/
	private $hauteurCell=6;


	/**
	* PDF::table
	*
	* créer un tableau de donnée dans un document pdf
	* 
	* @access   public
	* @param    array    	$header			Les entêtes du tableau (cad le nom des colonnes)
	* @param    array      	$data			Les données du tableau
	* @param    mixed		$pourcentage	taille en pourcentage du tableau
	* 										Si un entier est passé, les colonnes
	* 										on la même largeur et le tableau occupe
	* 										x pourcent de la largeur de la page.
	* 										Si un array de int est passé, 
	* 										c'est la largeur des colonnes qui est déterminée
	* @return   none  
	*/
	public function table($header,$data,$pourcentage=100){
		
		$nbCell=count($header);
		if(is_array($pourcentage) && count($pourcentage)==$nbCell && array_sum($pourcentage)==100){
			foreach($pourcentage as $value){
				$largeurCell[]=$this->largeurPage*($value/100);
			}
			$largeurTab=$this->largeurPage;
		} else {
			$largeurCell=array_fill(0,$nbCell,($this->largeurPage*($pourcentage/100))/$nbCell);
			$largeurTab=$this->largeurPage*($pourcentage/100);
		}
		

               //global parameter
               $this->SetFont('Arial','',14);
		

		//header parameter
		$this->SetFillColor(255,0,0);
		$this->SetTextColor(255);
		$this->SetDrawColor(128,0,0);
		$this->SetLineWidth(.3);
		$this->SetFont('','B');
		
		//header
		$this->Cell($this->largeurPage,$this->hauteurCell);
		$this->Ln();
		for($i=0;$i<$nbCell;$i++)
			$this->Cell($largeurCell[$i],7,utf8_decode($header[$i]),1,0,'C',1);
		$this->Ln();
		
		
		//content parameter
		$this->SetFillColor(224,235,255);
		$this->SetTextColor(0);
		$this->SetFont('');
		
		//content
		$fill=0;
		foreach($data as $row){
			
			if(isset($row['separator']) && $row['separator']){
				
				$this->Cell($largeurTab,1,'','TB');
				
			} else {
				
				$i=0;
				foreach($row as $cell){
					
					$this->Cell(
						$largeurCell[$i++],
						$this->hauteurCell,
						$cell,
						'LR',
						0,
						'C',
						$fill
					);
				}
				$fill=!$fill;
			}
			
			$this->Ln();
		}
		$this->Cell($largeurTab,1,'','T');		
	}

}
à utiliser comme suit:
<?php
$header=array('col1','col2');

$data=array(
        array(1,2),
        array(3,4),
        array('separator'=>true),
        array(5,6),
        array(7,8)
);


$pdf= new PDF();
$pdf->table($header,$data,array(20,80));
$pdf->Output();
?>

output

Posté : 05 mars 2009, 12:19
par jeromebo
bonjour, j'ai tester ce module pdf, mais il me dit :FPDF error: Some data has already been output, can't send PDF file

savez-vous pourquoi? voilà mon code, il me semble en ordre :

Code : Tout sélectionner

<?php require('fpdf.php'); class PDF extends FPDF { //En-tête function Header() { //Logo $this->Image('logo_nopixel.jpg',10,8,33); //Police Arial gras 15 $this->SetFont('Arial','B',15); //Décalage à droite $this->Cell(80); //Titre $this->Cell(30,10,'Titre',1,0,'C'); //Saut de ligne $this->Ln(20); } //Pied de page function Footer() { //Positionnement à 1,5 cm du bas $this->SetY(-15); //Police Arial italique 8 $this->SetFont('Arial','I',8); //Numéro de page $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); } } //Instanciation de la classe dérivée $pdf=new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Times','',12); for($i=1;$i<=40;$i++) $pdf->Cell(0,10,'Impression de la ligne numéro '.$i,0,1); $pdf->Output(); ?>
merci de votre aide

Posté : 05 mars 2009, 14:07
par ote
Ce message vient du fait que tu affiches déjà des choses (via html ou php) sur ta page avant d'envoyer le pdf. Le fichier qui crée le pdf doit uniquement contenir les instructions qui crée le pdf. Il doit commencer par les lignes de ton dernier message. Rien d'autre avant. Le script doit être appelé à l'aide d'un bouton ou autre.

En tout cas sinon j'ai testé ton code et il est correct. Dis moi si ce que je t'explique n'est pas clair.

info

Posté : 09 mars 2009, 15:26
par jeromebo
c'est en ordre, cela fonctionne. merci