Добавление файлового потока для SelectPDF в Blazor (на стороне сервера)

Я пытаюсь экспортировать HTML-код в формате PDF. Мне нужно сохранить в клиентском браузере, а не на сервере. Все, что мне удалось найти в Интернете, - это сохранить в root, а затем загрузить в браузер. По возможности я бы хотел избежать этого шага.

void ExportPDF()
    {
        SelectPdf.HtmlToPdf converter = new SelectPdf.HtmlToPdf();
        SelectPdf.PdfDocument doc = converter.ConvertUrl("https://selectpdf.com");
        doc.Save("test.pdf");
        doc.Close();
    }

person Wheeping    schedule 08.09.2020    source источник


Ответы (1)


Взглянув на документацию, вы можете вместо этого сохранить в Stream. Итак, ваш код будет

  SelectPdf.HtmlToPdf converter = new SelectPdf.HtmlToPdf();
  SelectPdf.PdfDocument doc = converter.ConvertUrl("https://selectpdf.com");
  using (var ms = new System.IO.MemoryStream())
  {
    doc.Save(ms);
    doc.Close();
    // todo- create response using the data in `ms`
  }

Поскольку это вопрос Blazor, я бы спросил, находится ли этот метод внутри компонента? Если это так, нет способа загрузить файл в браузере внутри компонента. Вам нужно написать этот метод в действии контроллера и вернуть FileResult. Затем в компоненте Blazor вам нужно перейти к контроллеру, который заставит браузер загрузить файл.

См. Есть ли способ получить поток файлов для загрузки в браузер в Blazor? для получения более подробной информации

person Quango    schedule 09.09.2020