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

Librería externa con Zend

Estas en el tema de Librería externa con Zend en el foro de Zend en Foros del Web. Buenas, tengo una duda existencial. Estoy trabajando con Zend y quiero agregar una funcionalidad que sea la de generar una ficha en PDF con los ...
  #1 (permalink)  
Antiguo 28/02/2013, 05:17
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 8 años
Puntos: 0
Librería externa con Zend

Buenas, tengo una duda existencial.

Estoy trabajando con Zend y quiero agregar una funcionalidad que sea la de generar una ficha en PDF con los datos de mi aplicación (una tabla gigante con los datos de un usuario) para que cuando lo impriman en papel resulte fácil de leer.

Se me ocurrió volcar los datos en una hoja HTML y luego transformar esta a PDF.
He visto que esta librería lo realiza:
HTML2PDF (http://sourceforge.net/projects/html2fpdf/)

El caso es que no se como hacer uso de ella desde mi Action de Zend pues me salta el siguiente mensaje:
Fatal error: Class 'Html2pdf' not found in C:\xampp\htdocs\accidentes\application\controllers \ExpedienteController.php on line 819

Tengo los ficheros de HTML2PDF en la carpeta library y lo que hago desde el action es simplemente:
$pdf=new HTML2PDF();

Me imagino que Zend no encuentra la misma pero no se que hacer para que la encuentre. Es mi primer proyecto en Zend y aunque ya lo tengo bastante avanzado, todavía hay muchos conceptos que se me escapan.

Un saludo.
  #2 (permalink)  
Antiguo 28/02/2013, 05:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 11 años, 10 meses
Puntos: 845
Respuesta: Librería externa con Zend

No funciona con simplemente "tirar" algo en library, tienes que registrar el namespace en el application.ini y la librería debe ser compatible con el autoloader, la que comentas(al igual que el resto de librerías PDF) no lo es.
Creo que lo mas sencillo seria que en tu namespace tengas un factory a HTML2PDF, algo así:

application.ini
Código INI:
Ver original
  1. autoloaderNamespaces[] = "My"

library/My/Html2Pdf.php
Código PHP:
Ver original
  1. require_once dirname(__FILE__) . '/../Html2Pdf/html2pdf.class.php';
  2.  
  3. class My_Html2Pdf
  4. {
  5.     public static function factory(array $params = array())
  6.     {
  7.         $refl = new ReflectionClass('HTML2PDF');
  8.         return $refl->newInstanceArgs($params);
  9.     }
  10. }

FooController.php
Código PHP:
Ver original
  1. public function indexAction()
  2. {
  3.     ...
  4.     $html2PdfInstance = My_Html2Pdf::factory();
  5.     ...
  6. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 28/02/2013, 05:52
 
Fecha de Ingreso: noviembre-2011
Mensajes: 6
Antigüedad: 8 años
Puntos: 0
Respuesta: Librería externa con Zend

Gracias, lo acabo de solucionar añadiendo esto antes de la declaración de la clase, dentro del controlador:

require_once 'Pdf/html2fpdf.php';

Sólo lo voy a utilizar aquí con lo que me resulta bastante cómodo. No obstante voy a echarle un ojo a la solución que me das.

Muchas gracias por todo.

Por cierto, no cierro el tema por si se os ocurre una solución mas eficiente para realizar el propósito (hacer una vista para impresión de los datos, sin el layout, de forma esquemática, con tablas...) que al final impreso se vea bien os lo agradecería.

Ahora mismo lo que hago es volcar el contenido en HTML y que después transforme a PDF pero lo ideal sería hacerlo directamente a PDF. No se si me explico bien...

Saludos.
  #4 (permalink)  
Antiguo 14/04/2016, 02:45
 
Fecha de Ingreso: abril-2008
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Librería externa con Zend

Habéis probado esta solución si funciona, porque simplemente haciendo un require no funciona te pide que se instale con composer.

Utilizando una u otra me indica lo siguiente:

[ERROR] It seems that HTML2PDF dependencies are not installed... you must install thems with `composer install`

Última edición por Yoshua9; 14/04/2016 a las 02:59

Etiquetas: externa
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 06:18.