Hola,
Tengo una duda.
- Tengo una instalación local de dolibarr en windows. En los PDFs (presupuestos, facturas...) imprimo correctamente textos con acentos y eñes.
- Cuando lo subo al servidor en Linux, los acentos y eñes no salen correctamente.
El texto lo imprimo así:
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset("Texto con áéíóúñ"), 0, 'L');
También he probado:
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset("Texto con áéíóúñ",$pagecodefrom='UTF-8'), 0, 'L');
Lo que imprime el PDF es... "Texto con".
Los textos que están en la BBDD con acentos y eñes, sí salen correctamente. Este texto es para que salga en el pie de página y lo imprimo directamente desde el código pdf_azur.modules.php
versión dolibarr: 3.4.1
Entorno Local: Windows 7 en español.
Servidor: Linux (no conozco la distribución ni versión. Es hosting compartido).
¿Qué puede estar mal?
Gracias.
Acentos y eñes no salen en PDFs
¿Has comprobado la codificación de las bases de datos y de los archivos?
Saludos.
Saludos.
Desarrollador con categoría Almirante de Dolibarr.
¿Quiere soporte personalizado? Contacte conmigo.
¿Quiere soporte personalizado? Contacte conmigo.
Hola,
Gracias por tu respuesta.
Pues no he podido (o no he sabido). Es un hosting compartido y no tengo acceso a la linea de comandos siquiera. El proveedor me dice que ellos no pueden hacer nada, y me remite a este foro.
No sé si desde el script en php se podría hacer algo, o hay algún método para evitar el error. En caso contrario tendré que cambiar de proveedor.
Gracias.
Gracias por tu respuesta.
Pues no he podido (o no he sabido). Es un hosting compartido y no tengo acceso a la linea de comandos siquiera. El proveedor me dice que ellos no pueden hacer nada, y me remite a este foro.
No sé si desde el script en php se podría hacer algo, o hay algún método para evitar el error. En caso contrario tendré que cambiar de proveedor.
Gracias.
No te pedí que accedieras a la línea de comandos. Desde PHPMyAdmin puedes ver la codificación de la base de datos, y el .pdf lo estás grabando tú así que tienes que fijarte en qué codificación lo guardas.
Un saludo.
Un saludo.
Desarrollador con categoría Almirante de Dolibarr.
¿Quiere soporte personalizado? Contacte conmigo.
¿Quiere soporte personalizado? Contacte conmigo.
Hola,
la BBDD está en UTF-8 (utf8_general_ci), pero con la BBDD no tengo ningún problema.
El problema es al generar el PDF con un texto que no sale de la BBDD, sino que imprimo desde el script php. En el primer correo está la llamada que hago, pero te la pongo aquí también:
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset("Texto con áéíóúñ",$pagecodefrom='UTF-8'), 0, 'L');
Y lo que imprime es "Texto con". Es decir no imprime ningún carácter con acento.
Gracias.
la BBDD está en UTF-8 (utf8_general_ci), pero con la BBDD no tengo ningún problema.
El problema es al generar el PDF con un texto que no sale de la BBDD, sino que imprimo desde el script php. En el primer correo está la llamada que hago, pero te la pongo aquí también:
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset("Texto con áéíóúñ",$pagecodefrom='UTF-8'), 0, 'L');
Y lo que imprime es "Texto con". Es decir no imprime ningún carácter con acento.
Gracias.
-
- Soldado
- Mensajes: 116
- Registrado: Mar, 19/06/2012, 19:36
Esta es la funcion que no te devuelve lo que esperas(translate.class.php)
/**
* Convert a string into output charset (this->charset_output that should be defined to conf->file->character_set_client)
*
* @param string $str String to convert
* @param string $pagecodefrom Page code of src string
* @return string Converted string
*/
function convToOutputCharset($str,$pagecodefrom='UTF-8')
{
if ($pagecodefrom == 'ISO-8859-1' && $this->charset_output == 'UTF-8') $str=utf8_encode($str);
if ($pagecodefrom == 'UTF-8' && $this->charset_output == 'ISO-8859-1') $str=utf8_decode(str_replace('€',chr(128),$str));
return $str;
}
Prueba a llamarla asi :
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset('Texto con áéíóúñ','UTF-8'), 0, 'L');
O asi(UTF-8 se usa por defecto) :
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset('Texto con áéíóúñ'), 0, 'L');
Deberia funcionar...
Un saludo
/**
* Convert a string into output charset (this->charset_output that should be defined to conf->file->character_set_client)
*
* @param string $str String to convert
* @param string $pagecodefrom Page code of src string
* @return string Converted string
*/
function convToOutputCharset($str,$pagecodefrom='UTF-8')
{
if ($pagecodefrom == 'ISO-8859-1' && $this->charset_output == 'UTF-8') $str=utf8_encode($str);
if ($pagecodefrom == 'UTF-8' && $this->charset_output == 'ISO-8859-1') $str=utf8_decode(str_replace('€',chr(128),$str));
return $str;
}
Prueba a llamarla asi :
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset('Texto con áéíóúñ','UTF-8'), 0, 'L');
O asi(UTF-8 se usa por defecto) :
$pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset('Texto con áéíóúñ'), 0, 'L');
Deberia funcionar...
Un saludo
Gracias, pero no funciona.
Todas las instalaciones que he hecho en en entornos distintos (Windows / Linux) (español/inglés) me han funcionado a la perfección. Esto es un hosting compartido, en el que es el propio proveedor quien lo instala automáticamente, pero no da soporte a la instalación (¡!).
Me temo que la solución es cambiar de proveedor.
Gracias a todos por vuestro tiempo
Todas las instalaciones que he hecho en en entornos distintos (Windows / Linux) (español/inglés) me han funcionado a la perfección. Esto es un hosting compartido, en el que es el propio proveedor quien lo instala automáticamente, pero no da soporte a la instalación (¡!).
Me temo que la solución es cambiar de proveedor.
Gracias a todos por vuestro tiempo
