Problème avec tcpdf Pagebreak
J'ai un petit problème avec un pagebreak. Le Multicellulaire est affichée au dessus du pied de page de la première page et puis il se casse: Comment puis-je définir la marge inférieure de la page de sorte que la rupture est arrivé plus tôt ci-dessus? Voici l'exemple PDF: Exemple et voici le code source:
<?php require_once('../tcpdf/config/lang/eng.php');
require_once('../tcpdf//tcpdf.php');
class MYPDF extends TCPDF {
public function Header() {
$auto_page_break = $this->AutoPageBreak;
$this->SetAutoPageBreak(false,0);
$this->setJPEGQuality(100); $img_file = 'images/mandanten/ce_background.jpg';
$this->Image($img_file, $x=160, $y=72, $w=36, $h=200, $type='', $link='', $align='', $resize=true, $dpi=150, $palign='', $ismask=false, $imgmask=false, $border=0);
$this->SetAutoPageBreak($auto_page_break); }
}
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('tmpAutor');
$pdf->SetTitle('tmpTitle'); $pdf->SetSubject('tmpSubject');
$pdf->SetKeywords('tmp'); $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, 10, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(True, PDF_MARGIN_BOTTOM);
//set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
//set some language-dependent strings
$pdf->setLanguageArray($l); $pdf->AddPage();
$pdf->SetFont('freesans', '', 16);
$pdf->Cell(0, 10, 'Headline', 0, 1, 'L');
$pdf->SetFont('freesans', '', 11);
//Some Dummy Unicode content
$tmp = 'Lorèm ìpsum dolor sìt åmèt, čonsètètur sådìpsčìng èlìtr, sèd dìåm nonumy èìrmod tèmpor ìnvìdunt ut låborè èt dolorè mågnå ålìquyåm èråt, sèd dìåm voluptuå. åt vèro èos èt åččusåm èt justo duo dolorès èt èå rèbum. Stèt člìtå kåsd gubèrgrèn, no sèå tåkìmåtå sånčtus èst Lorèm ìpsum dolor sìt åmèt. Lorèm ìpsum dolor sìt åmèt, čonsètètur sådìpsčìng èlìtr, sèd dìåm nonumy èìrmod tèmpor ìnvìdunt ut låborè èt dolorè mågnå ålìquyåm èråt, sèd dìåm voluptuå. åt vèro èos èt åččusåm èt justo duo dolorès èt èå rèbum. Stèt člìtå kåsd gubèrgrèn, no sèå tåkìmåtå sånčtus èst Lorèm ìpsum dolor sìt åmèt.wåèdr';
$pdf->MultiCell(140, 0, $tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp."<br><br>".$tmp, 0, 'J', 0, 0, '', '', true, 0,true);
$pdf->Output('example_051.pdf', 'I');
OriginalL'auteur fillibuster | 2010-01-19
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé:
ou
Malheureusement, son tout simplement pas assez pour mettre de l'auto pagebreak au pied de la marge. Je vais poster mon code ASAP - probablement lundi.
OriginalL'auteur ChuckO
Comme Jason,
J'utilise aussi le checkPageBreak() fonction.
Je suis l'aide de la version 5.9.113 de tcpdf.
J'ai dû modifier le changePageBreak() la fonction de protection du public.
Puis dans une boucle de sortie de chaque ligne de données à partir d'une table de base de données à l'aide Multicellulaire() avec la largeur des cellules, je vérifie pour la nouvelle page, d'agir en conséquence, et il fonctionne comme un charme.
Je n'ai pas à utiliser des méthodes de transaction pour traiter de nouvelles pages.
Voici un extrait de la boucle de code qui s'occupe de tout:
La checkPageBreak() retourne true quand une nouvelle page est ajoutée. Lorsque c'est le cas, vous pouvez effectuer toutes les autres tâches nécessaires comme je l'ai fait avec une nouvelle ligne.
Espère que cela aide quelqu'un d'autre avec ce MutliCell personnalisé et de la largeur de la question.
Chance
checkPageBreak
méthode est protégée maintenantOriginalL'auteur Chance
Même problème ici, en utilisant la version 6.2.0 de la bibliothèque (c'est tellement triste de rapport que les rumeurs que cela a été corrigé, sont prématurée). J'ai aimé dwayne towell approche avec Ln, mais je suis nerveux à propos d'un tel changement systémique: il y a peut être une subtile Multicellulaire comportement qui est cassé... j'ai également aimé la Chance de l'idée de juste appeler checkPageBreak l'intérieur de la boucle. J'ai trouvé cette question, tout en cherchant à voir si TCPDF avait une "tenir ensemble" option.
J'ai ma propre classe dérivée de l'TCPDF (a brûlé trop nombreuses fois les préjugés contre la modification de bibliothèques, je préfère ignorer), et ajouté cette méthode:
J'ai mis à jour mon impression de code à inclure au-dessus de l'impression de chaque enregistrement de boucle:
et puis, au sommet de la boucle
Cela fonctionne pour moi. L'impression de la boucle utilise Multicellulaire parce que j'ai besoin d'ajuster les tailles de police dans les différentes colonnes. Donc je n'ai pas pour passer en HTML, juste pour avoir une meilleure impression.
OriginalL'auteur ssdscott
Eu le même problème, mais il a utilisé une méthode à partir de l'une des tcpdf exemples qui définit la autopagebreak off, écrit la cellule, puis s'autopagebreak:
OriginalL'auteur Dan
Le problème est dans
Ln()
. Il n'effectue pas unecheckPageBreak()
. Modifier les lignes suivantes à la fin deLn()
::
J'ai ouvert un patch billet.
OriginalL'auteur Dwayne Towell
J'ai eu autour de ce problème à l'aide de la checkPageBreak méthode, à l'aide d'une boucle while. Je suis à l'aide de PHP 4, si. En PHP5, checkPageBreak est une méthode privée. Je pense que sa vaut la peine que l'on demande qu'il soit rendu public, de sorte que nous pouvons obtenir plus de conttrol au fil des pages.
J'ai aussi utilisé les méthodes de transaction, de sorte que, après vérification, si j'ai atteint un point proche de la max la hauteur de la page, j'ai roulé en arrière de la transaction et n'a addPage().
Je vais obtenir une copie de ma boucle ici très bientôt. C'est une grande bibliothèque, mais l'auto saut de page est une douleur avec le multi-caractéristiques de cellules.
-Jason
Je vais l'avoir organisé et posté pour vous.
toute chance vous pourriez publier ce code? Je suis à jouer avec TCPDF et ont exactement le même problème, lors de l'utilisation d'un HTMLMultiCell dans le bas d'une page, l'auto saut de page se détraque et de vous retrouver avec un désordre sur la page suivante. J'ai lu que ce problème est résolu dans les versions plus récentes de TCPDF, mais je suis en utilisant la bibliothèque de Joomla donc je ne peux pas compter sur la mise à jour du code. Merci
Avez-vous encore le code de la checkPageBreak méthode?
OriginalL'auteur JasonMichael
Moyens essayer le writeHTMLCell fonction au lieu de Multicellulaire
changement
à
OriginalL'auteur Sumod Nair
Ou d'autre, vous pouvez remplacer la TCPDF pied de méthode,
OriginalL'auteur Sumod Nair
Dans l'exemple, vous avez 10 élèves dans la gamme, et vous avez besoin de créer des curriculum vitae pour chaque. Lors de l'examen, un résumé ont 3 pages. Donc dans u obtenir des pdf de 30 pages, avec le texte correct.
p.s Sry pour mon anglais.
OriginalL'auteur smashrain
La page blanche n'est pas vraiment une vraie nouvelle page, car lorsque vous ajoutez une page, vous êtes toujours sur la page blanche. Ainsi, en suivant résout le problème :
OriginalL'auteur Julien Gustin