2011-11-08 6 views
0

J'ai un projet PHP dans lequel j'ouvre un PDF prédéfini et le remplit avec des données via PHP. Le problème que je rencontre est que l'un des éléments du texte ne s'affiche pas. Je le positionne en bas à droite de la page PDF. Si je le déplace un peu vers la gauche, ça se voit. C'est comme s'il y avait de l'écrêtage ou quelque chose comme ça. J'utilise TCPDF, et comme j'ai besoin de modifier un PDF existant, je dois aussi utiliser la classe FPDI. Il me semble que FPDI est normalement intégré avec FPDF, donc j'ai utilisé les méthodes FPDF pour construire mon PDF. OK, voici donc une partie de mon code (ou les parties pertinentes) ...Texte se tronquant lors de la génération de PDF à l'aide de FPDF/FPDI/TCPDF

$pdf = new PDF(); 
$pdf->AddPage('L', 'Letter'); 
$pdf->SetAutoPageBreak(false); 
$pdf->SetXY(261,200); 
$pdf->Write(5, 'test'); 

Il y a au moins un centimètre d'espaces à droite du texte quand je positionne le texte avec une valeur de 260. Si je le déplace juste une unité de plus à 261, comme dans le code ci-dessus, il disparaît juste. Je suis en mesure de positionner le texte jusqu'ici au bas de la page, que seule la moitié supérieure des lettres montre, cependant, je ne peux même pas approcher le côté droit de la page, ou le texte disparaîtra complètement. J'ai mis le SetAutoPageBreak à faux, donc les nouvelles pages ne sont pas créées, et j'ai également flirté avec la mise à zéro des marges.

Répondre

0

J'ai eu la meilleure chance en utilisant des cellules à positionner le texte, pour une raison quelconque, ils se sont avérés être plus précis et plus facile à travailler que le texte simplement écrit sur le document:

$pdf->SetXY(261,200); 
$pdf->Cell(0,10,'My text',0,1, 'C'); 

Docs: http://www.fpdf.org/en/doc/cell.htm Write() est utilisé pour faire circuler le texte (en interne, il utilise plusieurs appels Cell()).

+0

En fait, j'utilise des cellules pour d'autres objets textuels sur la page (généralement lorsque je dois m'assurer que le texte est centré dans une zone). Une fois que j'ai converti les objets Texte en cellules, tout semblait fonctionner correctement. Je ne sais toujours pas pourquoi l'autre méthode ne fonctionnait pas. Merci pour l'aide. –

0

S'il atteint la marge de droite, un saut de ligne automatique est effectué et le prochain mot/caractère lancera une nouvelle ligne dans la marge de gauche. Le mot ne disparaîtra pas mais sera affiché dans la zone inférieure gauche. Vous pouvez voir les caractères qui coule avec ce script simple:

$pdf = new FPDF(); 
$pdf->AddPage('L', 'Letter'); 
$pdf->SetAutoPageBreak(false); 
$pdf->SetFont('Helvetica'); 
$pdf->SetXY(261,200); 
$pdf->Write(5, 't e s t'); 
$pdf->Output(); 
0

Effectuez les opérations suivantes:

$pdf->SetAutoPageBreak('auto',0); 
2

peut-être un peu en retard dans le jeu ...

J'ai eu un coup d'oeil le fichier fpdf.php et on dirait qu'il ajoute une marge de 1cm.

Si vous l'abaissez, vous pouvez obtenir un texte plus proche du bord de la page. Ci-dessous la ligne d'origine:

// Page margins (1 cm) 
$margin = 28.35/$this->k; 

Mais si vous changez à quelque chose comme

$margin = 10/$this->k; 

Cela vous se rapproche du bord de votre document.

Questions connexes