Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF
PDF Forum d'entraide sur la gestion dynamique de documents PDF avec PHP. Exemples : PDFLib, eZPdf, PhpToPdf... Avant de poster -> FAQ PDF et Cours PDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2007, 17h07   #1
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
Par défaut [TCPDF] en-tête identique en mode portrait et paysage

Bonjour,
A l'aide de TCPDFje génère une première page en mode portrait, munie d'une entête de 210 mm de long, à la suite de celle-ci je génère une seconde page mais en mode paysage munie de la même en-tête, or je ne parviens pas à centrer l'entête puisque les coordonnées utilisées sont celles de la première page.

J'ai essayé de redefinir les marges avant d'appeler
$pdf->AddPage("L");
mais ça ne fonctionne pas.

j'ai aussi essayé de supprimer le header et le footer pour remettre l'image après mais là aussi, ça ne fonctionne pas: ma page est bien générée en paysage mais le header est aligné en haut à gauche...


le code pour les amateurs:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
require_once('../classes/tcpdf/config/lang/eng.php');	
require_once('../classes/tcpdf/tcpdf.php');
 
class PDF extends TCPDF
{
//En-tête
function Header()
{
//Logo
$this->Image('../images/en_tete_aspe33.png',0,0,209.97);
}
 
//Pied de page
function Footer()
{
//Positionnement à 1,5 cm du bas
$this->Image('../images/pied_page_aspe33.png',0,277.02,209.97);
}
}
 
//création d'un nouveau document pdf: unité par défaut, mm
$pdf = new PDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true); 
 
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor(PDF_AUTHOR);
$pdf->SetTitle($doc_title);
$pdf->SetSubject($doc_subject);
 
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
 
 
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); //facteur de zoom d'image
 
$pdf->setLanguageArray($l); 
$pdf->SetLeftMargin(10);
$pdf->SetRightMargin(10);
 
//première page
$pdf->AddPage();
 
//seconde page
$pdf->setPrintFooter(false);
$pdf->SetMargins(43.5, PDF_MARGIN_TOP, 43.5);
$pdf->AddPage("L");
$pdf->Output("demande.pdf", 'F');
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 17h44   #2
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
j'ai un élément à apporter: en fait quand on étend la classe principale (c'est ce que je fais pour ajouter mon header et mon footer sinon j'ai un trait continu sous mon header et pas de footer), setPrintFooter(false) et setPrintHeader(false) ne fonctionnent plus...
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 17h28   #3
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Salut, que contient exactement ton header ??? juste une image ??? Si c'est le cas, c normal qu'elle soit à gauche, il faut lui préciser son emplacement...

Tu peux envoyer ton pdf généré ainsi que celui que tu voudrais générer ???

++
Jc
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 16h16   #4
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
Oui mon header n'est constitué que d'une image.
c'est effectivement normale quelle soit à gauche puisque qu'elle mesure 210 mm de longueur, donc ça va bien quand je suis en mode portrait.
Comme j'ai étendu TCPDF en PDF pour intégrer cette image en en-tête, AddPage() conserve toujours les paramètres de positionnement et je ne parviens pas à les modifier...
Quelqu'un sur le forum de FPDF propose de mettre une condition dans la fonction Header():
si tu es en mode portrait alors
Code :
$this->Image('../images/en_tete_aspe33.png',0,0,209.97);
si tu es en mode paysage
Code :
$this->Image('../images/en_tete_aspe33.png',43.5,0,209.97);
j'ai essayé ceci:

Code :
1
2
3
4
5
6
7
8
9
10
11
function Header()
{
if ($pdf->AddPage())
{
$this->Image('../images/en_tete_aspe33.png',0,0,209.97);
}
elseif ($pdf->AddPage("L"))
{
$this->Image('../images/en_tete_aspe33.png',43.5,0,209.97);
}
}
mais ça me renvoie une erreur :
Code :
Fatal error: Call to a member function AddPage() on a non-object
(je suis encore débutant en php et je manie mal les fonctions)

en pièce jointe les 2 exemples. il faut noter la disparition du footer sur le modèle paysage: je n'en n'ai pas besoin.

merci beaucoup.
Fichiers attachés
Type de fichier : doc en-tete_portrait.doc (61,0 Ko, 6 affichages)
Type de fichier : doc en-tete_paysage.doc (61,0 Ko, 1 affichages)
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 19h07   #5
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
Concernant l'orientation de la page, le classe fpdf définit dans son constructeur un paramètre, le premier en l'occurrence 'P' pour portrait et 'L' pour paysage.

Dans votre classe vous définissez des constantes et notamment celle-ci PDF_PAGE_ORIENTATION , il faut donc assigné 'L' à cette constante ou alors mettre l'orientation dans le constructeur
Code :
$pdf = new PDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true);
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 19h25   #6
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
Je ne comprends pas trop ce que vous voulez me dire.

j'utilise la classe TCPDF, le paramètre PDF_PAGE_ORIENTATION est défini dans le fichier tcpdf_config.php.
Normalement, quand on appelle AddPage(), on peut lui passer un paramètre: soit AddPage("L") soit AddPage("P") si on le laisse vide comme ceci: AddPage(), l'orientation est celle définie par la constante PDF_PAGE_ORIENTATION située dans tcpdf_config.php.

Mon problème n'est pas l'orientation de la page qui se fait très bien mais la position de mon en-tête: dans la mesure ou j'étends la classe principale, tous les paramètres (l'en-tête qui est une image, position de cette image) donnés lors de l'extension sont conservés et je ne parviens pas à les changer.
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 19h34   #7
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
Citation:
Envoyé par Pixys Voir le message

Mon problème n'est pas l'orientation de la page qui se fait très bien
Désolé j'ai du mal interprété votre Titre "[TCPDF] changement d'orientation portrait/paysage"
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 20h51   #8
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
pas de soucis, c'est de ma faute si le titre n'est pas très explicite, désolé.
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 21h46   #9
Invité régulier
 
Inscription : août 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 26
Points : 5
Points : 5
Le seul moyen que j'ai trouvé, c'est de ne pas étendre la classe de base et de mettre mes en-tête et pied de page comme si c'était "des images normales"; je dois juste les insérer à chaque nouvelle page, (c'est gérable parce que mon document ne fait que 2 pages, ça serait pénible si il y avait de nombreuses pages) mais ça me permet de les positionner quel que soit l'orientation de la page...
Il serait tout de même intéressant de savoir si il est possible de procéder avec les fonctions header() et footer().

merci, bonne soirée et joyeuses fêtes de fin d'année à tous.
Pixys est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h26.


 
 
 
 
Partenaires

Hébergement Web