Guardar PDF desde base64


([N4] Infortic) #1

Hola.

He visto en este foro ejemplos de cómo codificar un fichero PDF en base 64.

Mi problema es el contrario, recibo un PDF codificado en base64 y no consigo guardarlo correctamente en un fichero PDF.

No sé si el problema viene al hacer toLatin1String() o al escribir el fichero (su codificación), el caso es que el PDF guardado no funciona, me inclino a pensar que al pasarlo a Latin ya lo he descogorciado.

Si lo hago desde php con base64_decode no hay problema, el pdf se abre perfectamente.

¿A algún gurú del vByteArray se le ocurre como solucionarlo?

Adjunto ejemplo del pdf.

Gracias por adelantado.


([N4] Infortic) #2

Perdón.

Conforme lo he escrito he vsito que VFile tiene write( vByteArray)

Lo he probado y funciona perfectamente.

Por si a alguien le sirve:

// ENTRADA: BASE64: Textod del fichero en base 64
//          FICHERO: Senda del fichero de salida
// RETORNO  RESULT: 0 No creado, 1 creado

importClass("VByteArray");
importClass("VFile");

var cBase64 = theRoot.varToString( "BASE64" );
var fichero = theRoot.varToString( "FICHERO" );

var oTexto = new VByteArray();
oTexto.setText(cBase64);

var oByteArray = new VByteArray();
oByteArray.fromBase64(oTexto);

var fi = new VFile( fichero );
if ( fi.open( VFile.OpenModeWriteOnly | VFile.OpenModeTruncate) )
{
	fi.setBufferSize( oByteArray.length )
	fi.write( oByteArray );
        fi.close();
	result=1;
} else {
	result=0;
}

theRoot.setVar("RESULT",result);