PHP VERS PDF

Petit nouveau ! | 2 Messages

19 janv. 2009, 14:42

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

ViPHP
ViPHP | 3607 Messages

19 janv. 2009, 15:09

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 ;)

Petit nouveau ! | 2 Messages

22 janv. 2009, 09:35

pas facile pour un débutant !
mais j'avance doucement... merci

ViPHP
ViPHP | 3607 Messages

22 janv. 2009, 11:43

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...

guy
Eléphant du PHP | 134 Messages

23 janv. 2009, 11:50

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

ViPHP
ViPHP | 3607 Messages

23 janv. 2009, 12:04

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();
?>

Eléphanteau du PHP | 13 Messages

05 mars 2009, 12:19

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

ote
Eléphanteau du PHP | 15 Messages

05 mars 2009, 14:07

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.

Eléphanteau du PHP | 13 Messages

09 mars 2009, 15:26

c'est en ordre, cela fonctionne. merci