Exportacion PDF o Excel de un cuadro con columnas que permiten HTML

Hola, por una cuestión de necesidad, en un cuadro, permito la inserción de html para formatear los datos de una columna.
Sobre esa columna, siguiendo el consejo de la ayuda, ejecuto texto_plano, para evitar ataques sobre el código que se arma.
El problema que se me dá, es que utilizando la llamada standard de salidas excel o pdf, los datos de esa columna salen impresos con todos los tags del formato (table, tr, td, font…etc).

Este es el código que estoy utilizando:


	function vista_pdf(toba_vista_pdf $salida)
	{
		$salida->titulo('titulo');
		$this->dep('cuadro')->vista_pdf($salida);
	}
	
	function vista_excel(toba_vista_excel $salida)
	{
		$excel = $salida->get_excel();
		$excel->setActiveSheetIndex(0);
		$excel->getActiveSheet()->setTitle('Principal');
		$salida->titulo('titulo');
		$salida->separacion(1);
		$this->dep('cuadro')->vista_excel($salida);
	}	

Hay algo que pueda hacerse al respecto? mil gracias!!

Hola Martin,

creo que por ahi lo que te conviene es redefinir el metodo que saca el html del cuadro y en particular para la columna esa agregarle el HTML que necesitas, la alternativa es encontrar la forma de sacarle el HTML al valor pasado al Excel o PDF, ya que estos ultimos toman literalmente lo que se envia y lo exportan.

Saludos

creo que por ahi lo que te conviene es redefinir el metodo que saca el html del cuadro y en particular para la columna esa agregarle el HTML que necesitas
Como lo tengo definido, cuando armo la consulta que arma el cuadro, el valor que toma el campo a mostrar es una cadena con los tags necesarios... algo así:

select
   nombre1,
   '<b>'||nombre2||'</b>'
from tabla

la alternativa es encontrar la forma de sacarle el HTML al valor pasado al Excel o PDF, ya que estos ultimos toman literalmente lo que se envia y lo exportan
Vale, es la idea... ahora... ¿como? hay alguna api de toba que remueva los tags? en $salida está lo que se envia a pdf o excel? si es así, la recorro a mano y parseo esos datos?

Otra alternativa, podría ser tener otro campo que no pase formateado… algo como:


select
   nombre1,
   '<b>'||nombre2||'</b>',
   nombre2
from tabla

Pero esto no va a estar asociado a ningún cuadro, como puedo hacer para que se exporte este campo y no el otro (siendo que este, no sería visible en el campo actual)? En este caso, hay forma de pasarle al PDF dentro de este campo, una cadena que obligue el salto de línea? o que inserte la foto?

Por si ayuda, la idea, es una cuadro con 2 columnas… agrupado por grupo y subgrupo. Se muestran los grupos y los subgrupos, no colapsables, y el detalle, es en la columan uno… titulo de un grupo de items, y en la segunda, un grupo de datos que se recuperan de la tabla como una sola cadena formateada con saltos de línea, en algunos detalles, como tabla, y en un detalle, un enlace a una foto (te adjunto una idea de como se muestra en pantalla… la vista preliminar, y la impresión, al ser HTML, funcionan impecable)


No existe api para remover los tags… lo que deberias hacer es usar str_replace para quitarlos… si es que sabes cuales son, de todas maneras eso no seria para todos los servicios, sino para los que generan la exportacion a excel o pdf. Por ello me parecia mas simple agregarlos que quitarlos pero bueno es a gusto del programador :D.

Por si ayuda, la idea, es una cuadro con 2 columnas... agrupado por grupo y subgrupo. Se muestran los grupos y los subgrupos, no colapsables, y el detalle, es en la columan uno... titulo de un grupo de items, y en la segunda, un grupo de datos que se recuperan de la tabla como una sola cadena formateada con saltos de línea, en algunos detalles, como tabla, y en un detalle, un enlace a una foto (te adjunto una idea de como se muestra en pantalla... la vista preliminar, y la impresión, al ser HTML, funcionan impecable)

En toba 1.4 hay una manera de generar el pdf usando XML + XSLT… quizas eso te vendria bien para este caso donde necesitas un formato especifico, ya que la salida estandar va a necesitar redefinicion.

Saludos

El tema es que toda la columna no es igual. Se conforma de un campo de texto, que reune datos diferentes (fijate en la imagen anterior), la columna es la misma, pero en una fila, va una tabla de 2 columnas con datos y la foto, en otras, una tabla de 2 columnas con titulos y texto, y varias cosillas por el estilo.
Estuve mirando y está strip_tags (de php) en principio para remover los tags de cada string… ahora, la consulta de rigor… donde pesco lo que se envia al pdf, para cambiarlo antes de que lo genere?

La unica forma de pescarlo es extendiendo el cuadro y redefiniendo el metodo que manda a generar el pdf con esos valores.

Saludos

Extiendo el cuadro y modifico a mano el generar_salida o vista_pdf?
Hay algún ejemplo de esto?
Gracias mil… como siempre!

Hola Martin,

tendrias que modificar el metodo pdf_cuadro en la extension del componente.

Saludos