PHP VERS PDF

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP VERS PDF

info

par jeromebo » 09 mars 2009, 15:26

c'est en ordre, cela fonctionne. merci

par ote » 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.

output

par jeromebo » 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

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

par guy » 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

par jojolapine » 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...

dur dur

par jedebute » 22 janv. 2009, 09:35

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

par jojolapine » 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 ;)

PHP VERS PDF

par jedebute » 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