Back to All

Quiero guardar automaticamente un pdf que genero con la libreria JSPDF, ¿Es posible?

Puedo enviar por Ajax en formato "Base64" pero al momento de querer almacenarlo en la base de datos no es permitido como file, ya intente pasarlo por tmpfile de la siguiente manera pero sigo sin poder almacenarlo, saben alguna forma para hacer esto posible?

Adjunto Ejemplo de codigo:
<eBD:ARGS name="file" DEFAULT="" />
<eBD:ARGS name="idTramite" DEFAULT="" />
<eBD:IF EXPR="$file != ''">
<eBD:TMPFILE BASE64="S" SOURCE="file" VAR="formato" />
</eBD:IF>

<eBD:INSERT TABLE="pdfCedulaTramite">
<eBD:DATAFIELD FIELD="idTramite" VALUE="$idTramite"/>
<eBD:DATAFIELD FIELD="FilePdf" VALUE="$formato"/>
<eBD:DATAFIELD FIELD="publicado" VALUE="S"/>
</eBD:INSERT>

Buenos días,

Actualmente la opción 'BASE64 = "S"' en el comando 'TMPFILE' solo admite la conversión de imágenes, pero estamos trabajando para que futuras versiones admitan todo tipo de ficheros.

No he utilizado con profundidad la librería 'JSPDF' pero por ejemplo 'PDFMAKEJS' que es similar tiene la opción de exportar el fichero como blob, y así poder mandarlo mediante ajax a un webservice y recogerlo mediante el comando 'TMPFILE', te recomiendo que revises la documentación de la librería.

Saludos

Muchas gracias por la respuesta, esta librería también exporta como tipo blob pero lo reviso mediante ajax en mi webservice y me hace el guardado pero no lo transforma en fichero correctamente, entonces no me esta almacenado el pdf.

Saludos.

var blob = pdf.output("blob");
var formData = new FormData();
formData.append('file', blob);
formData.append('idTramite', "<eBD:OUT VALUE='%idTramite'/>");
$.ajax({
url: "/back_SET.guardarPDF",
type : 'POST',
data : formData,
processData: false, // tell jQuery not to process the data
contentType: false, // tell jQuery not to set contentType
success : function(res) {

  }
});

<eBD:ARGS name="file" DEFAULT="" />
<eBD:ARGS name="idTramite" DEFAULT="" />
<eBD:IF EXPR="$file != ''">
<eBD:TMPFILE SOURCE="file" VAR="formato" />
</eBD:IF>

<eBD:INSERT TABLE="pdfCedulaTramite">
<eBD:DATAFIELD FIELD="idTramite" VALUE="$idTramite"/>
<eBD:DATAFIELD FIELD="FilePdf" VALUE="$formato"/>
<eBD:DATAFIELD FIELD="publicado" VALUE="S"/>
</eBD:INSERT>

Buenas tardes,

Te adjunto el codigo que utilizamos para adjuntar ficheros de tipo blob como form data:

var fileOfBlob = new File([blob], 'nombre_fichero.pdf');
formData.append("pdf", fileOfBlob);

Saludos

Buenas tardes,

Muchísimas gracias Alex, me funciono perfectamente.

Saludos

Marked as answered by Ruben Rodriguez