Как упоминалось в TomTom, вы не можете преобразовать PDF в формат json, PDF не похож на текст или файл json.
Итак, в Blazor вам нужно будет сделать следующее.
Когда вы получите результат от конечной точки, это будет поток. Таким образом, вы можете сделать следующее, чтобы получить поток из конечной точки :
var fileStream = new FileStream()
{
Stream = await httpResponseMessage.Content.ReadAsStreamAsync(),
Filename = $"someFile.pdf"
};
После того, как вы получите поток файла, вам нужно преобразовать его в байт :
byte[] bytes;
using (var memoryStream = new System.IO.MemoryStream())
{
fileStream.Stream.CopyTo(memoryStream);
bytes = memoryStream.ToArray();
}
После того, как вы получили его в байтовом массиве, теперь он находится в формате массива, который теперь мы можем использовать и загружать через браузер пользователя. Вам нужно будет создать следующее js, чтобы запустить загрузку браузера в Blazor
Здесь мы в основном создаем привязку в HTML DOM и запускаем событие щелчка ( источник ) :
var saveAsFile = function (filename, bytesBase64) {
var link = document.createElement('a');
link.download = filename;
link.href = "data:application/octet-stream;base64," + bytesBase64;
document.body.appendChild(link); // Needed for Firefox
link.click();
document.body.removeChild(link);
}
Мы можем вызвать приведенный ниже код в Blazor c# и запустить его через JSInterop
await JsRunTime.InvokeAsync<object>("saveAsFile", fileStream.Filename,
Convert.ToBase64String(bytes));