Foros del Web » Programando para Internet » PHP » Zend »

Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addTable()

Estas en el tema de Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addTable() en el foro de Zend en Foros del Web. Saludos Alguien usa Zend_Pdf_Table ? me conseguí en [0] que era sólo descargar, copiar y pegar, pero... Lo primero es que tuve que renombrar la ...
  #1 (permalink)  
Antiguo 14/09/2011, 09:22
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addTable()

Saludos
Alguien usa Zend_Pdf_Table ? me conseguí en [0] que era sólo descargar, copiar y pegar, pero...
Lo primero es que tuve que renombrar la carpeta Zend primero para no perder la "original", cosa que a primera vista no sé sí pierdo algo...
Luego, me dió algunos errores que resolví agregando al archivo Pdf.php:
/** Zend_Pdf_Table */
require_once 'My/Pdf.php';
require_once 'My/Pdf/Document.php';
require_once 'My/Pdf/Page.php';
require_once 'My/Pdf/Table.php';
require_once 'My/Pdf/Table/Cell.php';
require_once 'My/Pdf/Table/Column.php';
require_once 'My/Pdf/Table/Row.php';
require_once 'My/Pdf/Table/HeaderRow.php';
Adivinando porque no está documentado que deba hacerse (a decir verdad que no hay ninguna documentación)
Finalmente, obtengo el siguiente error:
PHP Fatal error: Call to undefined method Zend_Pdf_Page::addTable() in
en la línea que corresponde a: $page1->addTable($table, 0, 0);

El trozo de código es:
$doc = new Zend_Pdf;
$page1 = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER);
$doc->pages[] = $page1;
$page1->drawText("Título",20,$height-50,'UTF-8');
// create table
$table = new My_Pdf_Table(3);
for($i=0; $i<3; $i++)
{
$row = new My_Pdf_Table_Row();
$cols = array();
$col = new My_Pdf_Table_Column();

$cols[] = "reciboc10, reciboc06, reciboc08, reciboc07";
$row->setColumns($cols);
$table->addRow($row);
}
// add table to page
$page1->addTable($table, 0, 0);
sacado del mismo ejemplo en [0]

El apartado en [0] se llama "Turning The Tables".

Gracias!

[0]http://devzone.zend.com/article/12492
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 14/09/2011, 09:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Si ves bien el código, tienes que crear tu PDF usando My_Pdf en lugar de Zend_Pdf:
Código PHP:
Ver original
  1. $pdf = new My_Pdf_Document('example.pdf', '.');

Saludos.
  #3 (permalink)  
Antiguo 14/09/2011, 15:56
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Claro! gracias GatorV

Ahora fíjate.
En efecto, he copiado la carpeta library que viene con Zend_Pdf_Table y la he sustituido, he agregado las líneas antes descritas. Al ingresar a cualquiera de mis aplicaciones (que utilizan de alguna forma Zend) obtengo en el log de apache:
[error] [client 127.0.0.1] PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0

Luego, devuelvo la carpeta original de library, manteniendo la carpeta My de Zend_Pdf_Table y obtengo:
PHP Fatal error: Declaration of My_Pdf_Page::drawImage() must be compatible with that of Zend_Pdf_Canvas_Interface::drawImage() in /var/www/sistemas/p4a-3.8.3/p4a/libraries/My/Pdf/Page.php on line 370

En efecto, cuando chequeo, Zend_Pdf_Canvas_Interface recibe 4 parámetros y My_Pdf_Page recibe 5. Algo de eso veo en [1], pero no es mi segunda lengua y el traductor de google, aunque algo funciona, no le doy mucho...

[1]http://www.pfz.nl/forum/topic/4063-zf-zend-pdf-parameters/
__________________
Gracias de todas todas
-----
Linux!
  #4 (permalink)  
Antiguo 14/09/2011, 16:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Parece que la versión para la que fue hecha My_Pdf_Page::drawImage es otra, y como esta implementando la interfaz tiene que usar la interfaz.

Para arreglarlo debes de hacer una de dos cosas:
a) Modificar la interfaz para que acepte el 5to parámetro.
b) Agregar un getter/setter a My_Pdf_Page para indicarle el $inContentArea como true/false y así llamarlo.

Saludos.
  #5 (permalink)  
Antiguo 14/09/2011, 16:06
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Claro! gracias GatorV

Ahora fíjate.
En efecto, he copiado la carpeta library que viene con Zend_Pdf_Table y la he sustituido, he agregado las líneas antes descritas. Al ingresar a cualquiera de mis aplicaciones (que utilizan de alguna forma Zend) obtengo en el log de apache:
[error] [client 127.0.0.1] PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0
Luego, devuelvo la carpeta original de library, manteniendo la carpeta My de Zend_Pdf_Table y obtengo:
PHP Fatal error: Declaration of My_Pdf_Page::drawImage() must be compatible with that of Zend_Pdf_Canvas_Interface::drawImage() in /var/www/sistemas/p4a-3.8.3/p4a/libraries/My/Pdf/Page.php on line 370
En efecto, cuando chequeo, Zend_Pdf_Canvas_Interface recibe 4 parámetros y My_Pdf_Page recibe 5. Algo de eso veo en [1], pero no es mi segunda lengua y el traductor de google, aunque algo funciona, no le doy mucho...

[1]http://www.pfz.nl/forum/topic/4063-zf-zend-pdf-parameters/
__________________
Gracias de todas todas
-----
Linux!
  #6 (permalink)  
Antiguo 14/09/2011, 16:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Como te digo, es por eso que debes de hacer lo que te indico arriba para que puedas usar My_Pdf_Page con esa versión de Zend (la más nueva generalmente).

Saludos.
  #7 (permalink)  
Antiguo 14/09/2011, 16:27
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Vale vale! Revisando lo que me indicas y el código. Gracias!

Creo que le doy click muy rápido, no entiendo porqué se duplican mis envíos, sí alguien tiene superpoderes para que por favor los borre, agradecido
__________________
Gracias de todas todas
-----
Linux!
  #8 (permalink)  
Antiguo 15/09/2011, 08:50
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: Zend_Pdf_Table: Fatal error: Call to undefined method Zend_Pdf_Page::addT

Rechanfles! No doy pie con bola...

en el Page.php (del My_Pdf_Page), está:
public function drawImage($image,$x1,$y1,$width,$height,$inContent Area=true){
if($inContentArea){
$y1 = $this->getHeight()- $y1 - $this->getMargin(My_Pdf::TOP)-$height;
$x1 = $x1 + $this->getMargin(My_Pdf::LEFT);

$y2=$y1+$height;
$x2=$x1+$width;
}
parent::drawImage($image,$x1,$y1,$x2,$y2);
}
El log me arroja el error en el sierre de la clase.

El Interface.php (que está en Zend/Pdf/Canvas de mi versión), está:
/**
* Draw an image at the specified position on the page.
*
* @param Zend_Pdf_Image $image
* @param float $x1
* @param float $y1
* @param float $x2
* @param float $y2
* @return Zend_Pdf_Canvas_Interface
*/
public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2);
y en el Abstract.php (que está en Zend/Pdf/Canvas de mi versión), está:
/**
* Draw an image at the specified position on the page.
*
* @param Zend_Pdf_Image $image
* @param float $x1
* @param float $y1
* @param float $x2
* @param float $y2
* @return Zend_Pdf_Canvas_Interface
*/
public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2)
{
$this->_addProcSet('PDF');

$imageName = $this->_attachResource('XObject', $image);
$imageNameObj = new Zend_Pdf_Element_Name($imageName);

$x1Obj = new Zend_Pdf_Element_Numeric($x1);
$y1Obj = new Zend_Pdf_Element_Numeric($y1);
$widthObj = new Zend_Pdf_Element_Numeric($x2 - $x1);
$heightObj = new Zend_Pdf_Element_Numeric($y2 - $y1);

$this->_contents .= "q\n"
. '1 0 0 1 ' . $x1Obj->toString() . ' ' . $y1Obj->toString() . " cm\n"
. $widthObj->toString() . ' 0 0 ' . $heightObj->toString() . " 0 0 cm\n"
. $imageNameObj->toString() . " Do\n"
. "Q\n";

return $this;
}
Hundido en mi ignorancia, me parece que el camino debería ser la opción "b" de lo que me propones... pero... como ya dije, estoy hundido en mi ignorancia...

Agregué en Interface.php y Abstarct.php en el llamado a la función para que tuviera como parámetro $inContentArea=true de manera que de una vez entrara true... supongo que está mal
En el Page.php, lo agregué dentro de la función, antes del if, de manera que de entrada lo viera como true... supongo que está mal...

Disculpas adelantadas, pero... ¿cómo va la cosa?
__________________
Gracias de todas todas
-----
Linux!

Etiquetas: frameworks-y-php-orientado-a-objetos, zend_pdf, zend_pdf_table
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:28.