Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

La utilidad de FUSION PDF me da error

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
rafaesco
Soldado
Mensajes: 71
Registrado: Dom, 02/09/2012, 23:47

La utilidad de FUSION PDF me da error

Mensaje por rafaesco »

Buenos días,
Desde la versión 4.0 no puedo fusionar PDF. Ahora he visto que está en la vista de facturas emitidas, selecciono varias y tengo el desplegable para seleccionar "fusion PDF", pero cuando lo hago el sistema se queda pensando unos segundo y da error.
¿Hay que activar algo para que funcione?
Muchas gracias y un saludo,

diegonatalini
Novato
Mensajes: 1
Registrado: Mié, 06/04/2016, 17:32

Mensaje por diegonatalini »

Hola rafaesco, tengo exactamente el mismo problema. ¿Pudiste solucionarlo?

Gracias

Saludos

jmperezra
Novato
Mensajes: 2
Registrado: Mar, 02/05/2017, 10:22

Mensaje por jmperezra »

Hola,

Aunque no conozco mucho el código de dolibarr, he podido indagar un poco sobre este error y he encontrado una solución.

El problema viene por unos caracteres raros que se le pasan a una función para descomprimir cadenas: gzuncompress

En la propia web de php: http://php.net/manual/es/function.gzuncompress.php abajo del todo hay una 'solución':

Código: Seleccionar todo

<?php
    function gzuncompress_crc32($data) {
         $f = tempnam('/tmp', 'gz_fix');
         file_put_contents($f, "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data);
         return file_get_contents('compress.zlib://' . $f);
    }
?>
Aplicado a Dolibarr sería abrir el fichero: /includes/tecnickcom/tcpdf/include/tcpdf_filters.php

y cambiar este código:

Código: Seleccionar todo

public static function decodeFilterFlateDecode($data) {
		// initialize string to return
		$decoded = @gzuncompress($data);
		if ($decoded === false) {
			self::Error('decodeFilterFlateDecode: invalid code');
		}
		return $decoded;
	}
Por este otro:

Código: Seleccionar todo

public static function decodeFilterFlateDecode($data) {
		// initialize string to return
		$decoded = self::gzuncompress_crc32($data);
		if ($decoded === false) {
			self::Error('decodeFilterFlateDecode: invalid code');
		}
		return $decoded;
	}

  /**
	* Workaround chema: solución fusion pdf.
	*/
	public static function gzuncompress_crc32($data) {
	         $f = tempnam('/tmp', 'gz_fix');
	         file_put_contents($f, "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $data);
	         return file_get_contents('compress.zlib://' . $f);
  }
Saludos.