par
moogli » 17 juin 2011, 14:56
salut,
la détection de la fin de page automatique se fait avec $PDF->SetAutoPageBreak(true,5);, c'est le cas par défaut lors de l'utilisation de la classe.
J'ai testé ton code avec une base de test (assez immportante que j'ai trouvé
ici) et j'ai bien les saut de page qui se font sans soucis.
tu peux voir le résultat la =>
http://phpjungle.info/phpfrance/testpdf.php?nb=120
tu peux jouer avec le paramètre nb pour voir avec différent nombre de résultat (max 2000 pour pas dépasser la mémoire max

))
le code utilisé c'est le tiens j'ai juste modifié un peu les marge et le nombre de champ pour coller à ce que je voulais
<?php
if (isset($_GET['nb']) && is_numeric($_GET['nb']) && $_GET['nb']<=2000) {
$nb = (int) $_GET['nb'];
}
else $nb = 250;
$pdoconnect = array(
'local' => array(
'host' => 'localhost',
'dbname'=> 'employees',
'user' => 'root',
'mdp' => ''
)
);
$emplacement = 'local';
if ($_SERVER["SERVER_NAME"]=='phpjungle.info') $emplacement = 'inthenet';
try {
$bdd = new PDO('mysql:host='.$pdoconnect[$emplacement]['host'].';dbname='.$pdoconnect[$emplacement]['dbname'],
$pdoconnect[$emplacement]['user'], $pdoconnect[$emplacement]['mdp']);
} catch(Exception $e) {
die('Erreur : '.$e->getMessage().var_dump($bdd)
);
}
$inventaire = $bdd->prepare('select E.emp_no as id,last_name, first_name,date_format(birth_date,\'%d/%m/%Y\') as birth,gender, date_format(hire_date,\'%d/%m/%Y\') as arrive, title from employees E join titles using(emp_no) limit :limite;')or die(print_r($bdd->errorInfo()));
$inventaire->bindValue(':limite', $nb, PDO::PARAM_INT);
$inventaire->execute();
include("phpToPDF/phpToPDF.php");
$PDF = new phpToPDF('P','mm','A4');
$PDF->AddPage();
$PDF->SetAutoPageBreak(true,3);
$PDF->setXY(0,10);
//la j'ai juste ajouté un titre pour liste c'est moins laid
$PDF->SetFont('Arial','B',30);
$PDF->Cell(0,20,'Liste des employes ('.$nb.')',0,1,'C');
// Définition des propriétés du tableau.
$proprietesTableau = array(
'TB_ALIGN' => 'C',
'L_MARGIN' => 0,
'T_MARGIN' => 0,
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.3,
);
// Définition des propriétés du header du tableau.
$proprieteHeader = array(
'T_COLOR' => array(150,10,10),
'T_SIZE' => 12,
'T_FONT' => 'Arial',
'T_ALIGN_COLO' => 'C',
'T_ALIGN' => 'C',
'V_ALIGN' => 'M',
'T_TYPE' => 'B',
'LN_SIZE' => 7,
'BG_COLOR_COL0' => array(170, 240, 230),
'BG_COLOR' => array(170, 240, 230),
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.2,
'BRD_TYPE' => '1',
'BRD_TYPE_NEW_PAGE' => '',
);
// Contenu du header du tableau.
// la j'ai modifié pour coller à ma table mais ça reviens au même
$contenuHeader = array(
20, 35 , 35 ,35 ,25 , 15 , 20,
"Numero", "Nom", "Prenom",'titre',"Date\nnaissance",'sexe','arrivee'
);
// Définition des propriétés du reste du contenu du tableau.
$proprieteContenu = array(
'T_COLOR' => array(0,0,0),
'T_SIZE' => 10,
'T_FONT' => 'Arial',
'T_ALIGN' => 'C',
'V_ALIGN' => 'M',
'T_TYPE' => '',
'LN_SIZE' => 6,
'BG_COLOR_COL0' => array(245, 245, 150),
'BG_COLOR' => array(255,255,255),
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.1,
'BRD_TYPE' => '1',
'BRD_TYPE_NEW_PAGE' => '',
);
// Contenu du tableau.
$contenuTableau = array();
// pareil modification pour coller aux tables.
while ($tab = $inventaire->fetch()) {
array_push($contenuTableau,
$tab['id'],
$tab['last_name'],
$tab['first_name'],
$tab['title'],
$tab['birth'],
$tab['gender'],
$tab['arrive']);
}
$inventaire->closeCursor();
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
$PDF->Output();
?>
les tables
CREATE TABLE titles (
emp_no INT NOT NULL,
title VARCHAR(50) NOT NULL,
from_date DATE NOT NULL,
to_date DATE,
KEY (emp_no),
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,title, from_date)
);
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
Aurait tu un exemple de fichier pdf qui pose soucis ?
le code est bien celui que tu nous amis dans ton message ?
quel version phptopdf ? (perso je l'ai prise la
http://jc-cornic.developpez.com/tutorie ... age_1#LI-B il y a sur le même lien de la doc pour phptopdf

)
@+
salut,
la détection de la fin de page automatique se fait avec $PDF->SetAutoPageBreak(true,5);, c'est le cas par défaut lors de l'utilisation de la classe.
J'ai testé ton code avec une base de test (assez immportante que j'ai trouvé [url=https://launchpad.net/test-db/]ici[/url]) et j'ai bien les saut de page qui se font sans soucis.
tu peux voir le résultat la => [url]http://phpjungle.info/phpfrance/testpdf.php?nb=120[/url]
tu peux jouer avec le paramètre nb pour voir avec différent nombre de résultat (max 2000 pour pas dépasser la mémoire max :) )) ;)
le code utilisé c'est le tiens j'ai juste modifié un peu les marge et le nombre de champ pour coller à ce que je voulais ;)
[php]
<?php
if (isset($_GET['nb']) && is_numeric($_GET['nb']) && $_GET['nb']<=2000) {
$nb = (int) $_GET['nb'];
}
else $nb = 250;
$pdoconnect = array(
'local' => array(
'host' => 'localhost',
'dbname'=> 'employees',
'user' => 'root',
'mdp' => ''
)
);
$emplacement = 'local';
if ($_SERVER["SERVER_NAME"]=='phpjungle.info') $emplacement = 'inthenet';
try {
$bdd = new PDO('mysql:host='.$pdoconnect[$emplacement]['host'].';dbname='.$pdoconnect[$emplacement]['dbname'],
$pdoconnect[$emplacement]['user'], $pdoconnect[$emplacement]['mdp']);
} catch(Exception $e) {
die('Erreur : '.$e->getMessage().var_dump($bdd)
);
}
$inventaire = $bdd->prepare('select E.emp_no as id,last_name, first_name,date_format(birth_date,\'%d/%m/%Y\') as birth,gender, date_format(hire_date,\'%d/%m/%Y\') as arrive, title from employees E join titles using(emp_no) limit :limite;')or die(print_r($bdd->errorInfo()));
$inventaire->bindValue(':limite', $nb, PDO::PARAM_INT);
$inventaire->execute();
include("phpToPDF/phpToPDF.php");
$PDF = new phpToPDF('P','mm','A4');
$PDF->AddPage();
$PDF->SetAutoPageBreak(true,3);
$PDF->setXY(0,10);
//la j'ai juste ajouté un titre pour liste c'est moins laid
$PDF->SetFont('Arial','B',30);
$PDF->Cell(0,20,'Liste des employes ('.$nb.')',0,1,'C');
// Définition des propriétés du tableau.
$proprietesTableau = array(
'TB_ALIGN' => 'C',
'L_MARGIN' => 0,
'T_MARGIN' => 0,
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.3,
);
// Définition des propriétés du header du tableau.
$proprieteHeader = array(
'T_COLOR' => array(150,10,10),
'T_SIZE' => 12,
'T_FONT' => 'Arial',
'T_ALIGN_COLO' => 'C',
'T_ALIGN' => 'C',
'V_ALIGN' => 'M',
'T_TYPE' => 'B',
'LN_SIZE' => 7,
'BG_COLOR_COL0' => array(170, 240, 230),
'BG_COLOR' => array(170, 240, 230),
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.2,
'BRD_TYPE' => '1',
'BRD_TYPE_NEW_PAGE' => '',
);
// Contenu du header du tableau.
// la j'ai modifié pour coller à ma table mais ça reviens au même
$contenuHeader = array(
20, 35 , 35 ,35 ,25 , 15 , 20,
"Numero", "Nom", "Prenom",'titre',"Date\nnaissance",'sexe','arrivee'
);
// Définition des propriétés du reste du contenu du tableau.
$proprieteContenu = array(
'T_COLOR' => array(0,0,0),
'T_SIZE' => 10,
'T_FONT' => 'Arial',
'T_ALIGN' => 'C',
'V_ALIGN' => 'M',
'T_TYPE' => '',
'LN_SIZE' => 6,
'BG_COLOR_COL0' => array(245, 245, 150),
'BG_COLOR' => array(255,255,255),
'BRD_COLOR' => array(0,92,177),
'BRD_SIZE' => 0.1,
'BRD_TYPE' => '1',
'BRD_TYPE_NEW_PAGE' => '',
);
// Contenu du tableau.
$contenuTableau = array();
// pareil modification pour coller aux tables.
while ($tab = $inventaire->fetch()) {
array_push($contenuTableau,
$tab['id'],
$tab['last_name'],
$tab['first_name'],
$tab['title'],
$tab['birth'],
$tab['gender'],
$tab['arrive']);
}
$inventaire->closeCursor();
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
$PDF->Output();
?>
[/php]
les tables
[sql]
CREATE TABLE titles (
emp_no INT NOT NULL,
title VARCHAR(50) NOT NULL,
from_date DATE NOT NULL,
to_date DATE,
KEY (emp_no),
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,title, from_date)
);
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
[/sql]
Aurait tu un exemple de fichier pdf qui pose soucis ?
le code est bien celui que tu nous amis dans ton message ?
quel version phptopdf ? (perso je l'ai prise la [url]http://jc-cornic.developpez.com/tutoriels/php/pdf/?page=page_1#LI-B[/url] il y a sur le même lien de la doc pour phptopdf ;) )
@+