Как преобразовать строку в байтовый массив для загрузки PDF в C#

Я работаю с приложением.NET MVC, так как мне нужно реализовать функцию загрузки PDF. Я знаю, как загрузить файл, используя существующий файл, но моя проблема в том, что я получаю содержимое файла pdf в виде строки из службы SOAP.

Содержимое PDF, которое я получаю, выглядит так:

%PDF-1.4
%Óëéá
1 0 obj
<</Creator (Mozilla/5.0 \(Windows NT 6.1; Win64; x64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/65.0.3325.181 Safari/537.36)
/Producer (Skia/PDF m65)
/CreationDate (D:20180407105711+00'00')
/ModDate (D:20180407105711+00'00')>>
endobj
2 0 obj
<</Filter /FlateDecode
/Length 3817>> stream
xœÕ›ÛŽ$9†
..........

У меня есть следующий код для загрузки файла:

public FileResult Download()
{
    byte[] fileBytes = System.IO.File.ReadAllBytes(@"c:\folder\myfile.ext");
    string fileName = "myfile.ext";
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, 
    fileName);
}

Но как преобразовать строку содержимого файла в байтовый массив?

Я пытался преобразовать строку в байтовый массив, используя MemoryStream а также

byte[] bytes = Encoding.ASCII.GetBytes(someString);

но в этом случае PDF Reader показывает ошибку, что файл поврежден.

0 ответов

Пытаться

public async Task GetPdf()
{
  var url = "xxxxxxxx";

  HttpClient client = UtilHttp.CreateHttpClient();
  HttpResponseMessage response = await client.GetAsync(url);

  // json mode 
  string result = await response.Content.ReadAsStringAsync(); // json 
  // archive mode content stream
  var stream = await response.Content.ReadAsStreamAsync(); //pdf

  byte[] bytes;
  using (var memoryStream = new MemoryStream())
  {
    stream.CopyTo(memoryStream);
    bytes = memoryStream.ToArray();
  }
}
Другие вопросы по тегам