2011-03-30 43 views
7

Estoy tratando de generar un archivo PDF que contenga etiquetas que tengan 202 mm de ancho por 50 mm de alto. Logré hacer esto y agregué el texto requerido y un código de barras, pero mi problema es que las etiquetas imprimen primero el borde estrecho, por lo que toda la página debe girar 90 grados.Rotación de página TCPDF

Puedo hacer esto en Adobe Reader con facilidad simplemente haciendo clic derecho en la página y seleccionando Girar a la derecha (Shift + Ctrl ++) pero realmente necesito hacerlo en el código.

¿Alguien sabe cómo hacer esto con TCPDF? He intentado con la función Girar pero parece que no funciona. Cualquier ejemplo de código sería útil.

+2

¿Ya rotó la página en la creación? ver http://www.tcpdf.org/examples/example_060.phps – konsolenfreddy

+0

@James pregunta interesante porque recientemente estaba pensando en automatizar mi cartera en PDF y agregar un código de barras digital en la parte inferior de cada página del proyecto. buscando el CÓDIGO DE BARRAS y el PDF Aterricé aquí. ¿Tu problema está solucionado o no? – Sam

+1

@Sam al final tuve que usar otro programa para rotar la página. La generación de PDF y la renderización de códigos de barras funciona bien sin embargo. Al no tener otra alternativa para usar, probablemente usaría TCPDF nuevamente. – James

Respuesta

7

¿Qué le parece configurarlo en horizontal cuando construye la página?

TCPDF::__construct($orientation = 'L', 
$ unit = 'mm', 
$ format = 'A4', 
$ unicode = true, 
$ encoding = 'UTF-8', 
$ diskcache = false) 

$ orientation (string) page orientation. Los valores posibles son (mayúsculas y minúsculas):

  • P o el retrato (predeterminado)
  • L o paisaje
  • '' (cadena vacía) para la orientación automática

http://www.tcpdf.org/doc/classTCPDF.html#a5420ac8b0726a604260780d8f4185fc1

+3

Creo que tienes razón, pero debes cambiar la 'P' por 'L' –

+0

¡Ups, gracias! – LawrenceGS

+0

Esto fue lo primero que probé pero no es solo la página que quiero rotar. Quiero que el texto y el contenido de la página se lean desde la parte inferior de la página hasta la parte superior. – James

4

Rotate es impar. Lo que los documentos no le dicen es que primero tiene que hacer un StartTransform y luego hacer un Rotate, luego hacer un StopTransform después. Solo puede hacer la llamada StartTransform después de haber establecido de alguna manera la posición X/Y (por ejemplo, uso SetXY para colocar inicialmente la página, luego puede llamar al StartTransform). Así que trate de hacer:

$this->pdfinvoice->StartTransform(); 
    $this->pdfinvoice->Rotate(-90); 

Publique sus contenidos, a continuación, llama a

$this->pdfinvoice->StopTransform(); 

cuando haya terminado. Vea cómo funciona eso para usted.

+0

El uso de lo que sugirió fue lo más cercano que pude rotar en TCPDF pero es probable que tenga todo tipo de anomalías extrañas debido a mi total falta de comprensión de cómo funcionan estas funciones. – James

+1

Supongo que se mueve todo el sistema de coordenadas: tendrá que ajustar todas sus posiciones X/Y en consecuencia, y eso requerirá algunas matemáticas para hacerlo bien. Lamentablemente, no parece haber un ** giro mágico todo en esta página mientras se mueve 0,0 a la posición superior derecha ** método de hacerlo. – Femi

+5

$ page_format = array (55,55, 'Rotar' => - 90); $ pdf-> AddPage ('P', $ page_format, falso, falso); // También es posible y puedes establecer $ pdf-> SetPageUnit ("mm"); en caso ... – YumYumYum

0

La opción más simple es configurar la página en modo Paisaje 'L' si esto es lo que necesita. De lo contrario, si necesita una página en modo retrato pero con objetos girados, puede crear una plantilla de XObject y poner su contenido allí, incluidas las transformaciones gráficas. Consulte los ejemplos predeterminados en http://www.tcpdf.org para las transformaciones gráficas y las plantillas de XObject.

5

Lo que he hecho con la versión 1,5

$pdf->AddPage(); // Orientation for the first page is defined into configuration file. 

    $pdf->writeHTML("Portrait 1"); 

    $pdf->AddPage('L'); 

    $pdf->writeHTML("Landscape !"); 

    $pdf->AddPage('P'); 

    $pdf->writeHTML("Portrait 2"); 

    $pdf->Output(); 

Y esto está funcionando bien.