TCPDF Problem mit Kopfzeile

Diskussionen und Austausch über die von FPDF bereitgestellten Methoden, Problemen bei der Anwendung etc.
Munkel
Benutzer
Beiträge: 2
Registriert: Sa 29. Sep 2018, 19:42

TCPDF Problem mit Kopfzeile

Beitragvon Munkel » Sa 29. Sep 2018, 23:23

Nabend,
ich hoffe dass ich hier richtig bin mit meiner Frage zu TCPDF.
Ich habe ein Dokument mit folgendem Code:

Code: Alles auswählen

   class MYPDF extends TCPDF {

       public function Header() {

           $header_left = 'Kopfzeile';
           $this->Cell(0, 0, $header_left, 0, false, 'L', 0, '', 0, true, 'T', 'T');

           $header_right = 'Seite ' . $this->getAliasNumPage();
           $this->Cell(0, 0, $header_right, 0, false, 'R', 0, '', 0, true, 'T', 'T');

       }

       public function Footer() {}

   }

   $contentPDF = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

   $contentPDF->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
   $contentPDF->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

   $contentPDF->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

   $contentPDF->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
   $contentPDF->SetHeaderMargin(PDF_MARGIN_HEADER);
   $contentPDF->SetFooterMargin(PDF_MARGIN_FOOTER);

   $contentPDF->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

   $contentPDF->setImageScale(PDF_IMAGE_SCALE_RATIO);

   $contentPDF->SetFont('helvetica', '', 12);

   $contentPDF->AddPage();

   $contentPDF->writeHTML('<span style="text-align:justify;">Lorem ipsum ...</span>', true, 0, true, true);

Der funktioniert auch so weit sehr gut, nur sieht das ganze so aus:
https://imgur.com/kUH74vy (falls der Link nicht funktioniert sagt bescheid)

Auch habe ich probiert das ganze mit text-align & float zu lösen, aber das scheint noch nicht unterstützt zu werden.

Meine Frage ist ob jemand eine Idee hat wie ich das lösen könnte?

Vielen Dank schonmal für jede Antwort :D

Benutzeravatar
Wirus!
Beiträge: 1523
Registriert: Do 22. Jun 2006, 18:23

Re: TCPDF Problem mit Kopfzeile

Beitragvon Wirus! » So 30. Sep 2018, 08:47

Passt doch. Zumindest tut TCPDF augenscheinlich das, was Du ihm aufträgst: Erzeuge eine Cell() bis zum rechen Rand, schreibe den Text und richte ihn rechts aus.

Blöd ist halt, daß Du den Rand noch nicht korrekt definiert hast. Dieser ist standardmäßig 1 cm.

Ich würde das nicht so machen. Da Du bei Header und Footer nie wissen kannst, was so an Settings geädert wurde, setze ich ein Element in diesen Funktionen immer auf eine mit SetXY fix definierte Position

Munkel
Benutzer
Beiträge: 2
Registriert: Sa 29. Sep 2018, 19:42

Re: TCPDF Problem mit Kopfzeile

Beitragvon Munkel » So 30. Sep 2018, 10:49

Hallo, danke erstmal für deine schnelle Antwort.
Was mich verwirrt ist, dass sowohl der Header als auch der Inhalt an die Ränder grenzen, trotzdem aber versetzt sind. Oder verstehe ich das falsch?
Ich habe den Rand in den Configs für meine Zwecke passend definiert (ist nicht auf dem Bild zu sehen), wie folgt:

Code: Alles auswählen

/**
 * Header margin.
 */
define ('PDF_MARGIN_HEADER', 62.5);

/**
 * Footer margin.
 */
define ('PDF_MARGIN_FOOTER', 62.5);

/**
 * Top margin.
 */
define ('PDF_MARGIN_TOP', 62.5+37.5);

/**
 * Bottom margin.
 */
define ('PDF_MARGIN_BOTTOM', 62.5);

/**
 * Left margin.
 */
define ('PDF_MARGIN_LEFT', 62.5);

/**
 * Right margin.
 */
define ('PDF_MARGIN_RIGHT', 62.5);

Das sieht dann so aus:
https://imgur.com/eI3HLwN

Aber deine Idee klingt gut - nur wenn die Seitenzahl mal 2-3 Stellen hat wird das doch nicht berücksichtigt, oder liege ich da falsch?

Edit:
Habe jetzt deine Idee ausprobiert, das funktioniert super für die ersten 9 Seiten, aber dann sieht es so aus (wie befürchtet):
https://imgur.com/A0RnBd4
Mit diesem Code:

Code: Alles auswählen

$this->setXY( 65, 62.5 );
$this->Cell( 0, 0, $header_left, 0, false, 'L', 0, '', 0, true, 'T', 'T' );

$this->setXY( $this->getPageWidth()-100, 62.5 ); // setXY( 497, 62.5 )
$this->Cell( 0, 0, $header_right, 0, false, 'L', 0, '', 0, true, 'T', 'T' );


Wenn ich die Seitenzahl nach rechts ausrichte orientiert es sich, ohne das setXY zu beachten, am rechten "Rand". Gibt es dafür eine andere Möglichkeit?

Benutzeravatar
Wirus!
Beiträge: 1523
Registriert: Do 22. Jun 2006, 18:23

Re: TCPDF Problem mit Kopfzeile

Beitragvon Wirus! » Mo 1. Okt 2018, 09:02

Ich verstehe nicht ganz, was Du da machst. Da ist alles sinnlos kompliziert.
$this->Cell(30, 0,"Seite ".$this->PageNo(), ... rechts ausgerichtet und mit SetXY richtig platziert und gut ist.

Du verwendest komplizierte Lösungskonstrukte wo FPDF wo einfache Lösungen bietet. Beispielsweise SetMargins() oder SetRightMargin(). Die Alias-Lösung ist für einfache Seitenzahlangabe sinnlos


Zurück zu „Programmierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste