André Laugks: pdflib / Text rotieren

Hallo!

Ich möchte einen Text rotieren lassen. Mit folgendem Script funktioniert das auch.

Nur wenn ich das Koordinatensystem ändern möchte, wird mir der Text nicht mehr angezeigt.

So wird das Koordinatensystem so gesetzt, das x=0 und y=0 oben links auf der Seite ist:

  
pdf_set_parameter($pdf, "topdown", "true");  

~~~// Ich habe es natürlich dann einkommentiert!  
  
Dementsprechend ändere ich auch die Koordinaten des Textes der gesetzt werden soll:  
~~~php
  
pdf_show_xy($pdf,"vertical text",300, 300);  

Kann mir jemand erklären was das Problem ist? also wieso ich bei ändern des Koordonatensystems den Text nicht mehr auf der Seite sehe.

  
<?PHP  
 $pdf = pdf_new();  
 pdf_open_file($pdf);  
 pdf_set_info($pdf,"Creator","rotate.pdf");  
 pdf_set_info($pdf,"Title","foo");  
 #pdf_set_parameter($pdf, "topdown", "true");  
 PDF_begin_page($pdf, 595, 842);  
  
 $fontdir = $_SERVER['DOCUMENT_ROOT'] . "/fonts";  
 pdf_set_parameter($pdf, "FontOutline", "Arial=$fontdir/arial.ttf");  
 $font = PDF_findfont($pdf, "Arial", "winansi", 0);  
 pdf_setfont($pdf, $font, 10);  
  
 pdf_rotate($pdf, 90);  
 pdf_show_xy($pdf,"vertical text",300, -300);  
  
 pdf_end_page($pdf);  
 pdf_close($pdf);  
 $buf = pdf_get_buffer($pdf);  
 $len = strlen($buf);  
 Header("Content-type: application/pdf");  
 Header("Content-Length: $len");  
 Header("Content-Disposition: inline; filename=rotate.pdf");  
 echo $buf;  
 pdf_delete($pdf);  
?>  

MfG, André Laugks

--
L-Andre @ gmx.de
  1. Hallo!

    Nach längerem probieren und nach dem ich noch einmal die pdflib-Doku bezüglich rotation gelesen habe, ist mir klar geworden, dass man mit pdf_rotate() das gesamte Koordinatensystem dreht. Wenn das gedreht wurde, muss man dementsprechend die Koordinaten für alle nachfolgende Objekte anpassen.

    In meinem Beispiel wird der Text vom oberen linken Seitenrand um 90 Grad bei x=100/y=100 und x=200/y=100 positioniert.

    Damit es nicht zu einer großen Rechnerei von Objekt zu Objekt wird, drehe ich das Koordinatensystem wieder zurück.

      
    <?php  
     $pdf = pdf_new();  
     pdf_open_file($pdf);  
     pdf_set_info($pdf,"Creator","rotate.pdf");  
     pdf_set_info($pdf,"Title","foo");  
     pdf_set_parameter($pdf, "topdown", "true");  
     PDF_begin_page($pdf, 595, 842);  
      
     $fontdir = $_SERVER['DOCUMENT_ROOT'] . "/fonts";  
     pdf_set_parameter($pdf, "FontOutline", "Arial=$fontdir/arial.ttf");  
     $font = PDF_findfont($pdf, "Arial", "winansi", 0);  
     pdf_setfont($pdf, $font, 10);  
      
     pdf_rotate($pdf, 90);  
     pdf_show_xy($pdf,"1. vertical text", -100, 100);  
      
    // Koordinatensystem zurück drehen  
    pdf_rotate($pdf, -90);  
      
     pdf_rotate($pdf, 90);  
     pdf_show_xy($pdf,"2. vertical text", -100, 200);  
      
     pdf_end_page($pdf);  
     pdf_close($pdf);  
     $buf = pdf_get_buffer($pdf);  
     $len = strlen($buf);  
     Header("Content-type: application/pdf");  
     Header("Content-Length: $len");  
     Header("Content-Disposition: inline; filename=rotate.pdf");  
     echo $buf;  
     pdf_delete($pdf);  
    ?>  
    
    

    MfG, André Laugks

    --
    L-Andre @ gmx.de