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?
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);