Estoy usando ajax para generar y ver un archivo.
$.ajax({ url: '/Materials/Enquiries/GetRequisitionVersion', type: 'POST', data: $('#materialRequisitionVersionForm').serializeArray() }).done(function (response) { var file = new Blob([response], { type: 'application/pdf' }); var fileURL = URL.createObjectURL(file); window.open(fileURL); }).fail(function () { })Este es mi método de controlador. La función GenerateMaterialRequisitionPreview devuelve una matriz de bytes. Para probar, creé un flujo de archivos para guardar el archivo localmente.
public async Task<IActionResult> GetRequisitionVersion(Guid requisitionId) { var bytes = await _reportingClient.GenerateMaterialRequisitionPreview(requisitionId); //For testing using (FileStream pdfOutput = new FileStream("test2.pdf", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) { pdfOutput.Write(bytes); } return File(bytes, "application/pdf", "generated.pdf"); }En la respuesta de ajax, cuando se abre la nueva ventana, devuelve un archivo PDF vacío; sin embargo, cuando reviso el archivo guardado por el flujo de archivos, es correcto. generado.pdf prueba2.pdf
Inspeccioné ambas matrices de pdf y descubrí que algunos de los caracteres en el pdf generado han sido reemplazados por caracteres desconocidos □ y � Si compara estas dos imágenes, verá lo que quiero decir. PDF corrompido PDF correcto
No estoy exactamente seguro de por qué el archivo se corrompe de esta manera y una solución para esto. Estoy usando Google Chrome.