Как открыть PDF документ программно, не сохраняя его? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть документ PDF, сохраненный в моей папке PDF.Я создал одну функцию, задача которой - загрузить PDF в класс PdfDocument, добавить несколько стилей в runtime, сохранить его обратно как временный файл и просмотреть в WebClient.Моя логика работает абсолютно нормально.Я хочу исключить сохранение его обратно как временный файл.Я хочу напрямую просмотреть его без сохранения, это возможно?Я искал в Интернете, но не нашел хорошего источника.Вот мой код:

PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("MyFile.pdf");
pdf.SaveToFile("ModifiedMyFile.pdf"); // Eliminate this part
WebClient User = new WebClient();
Byte[] FileBuffer = User.DownloadData("ModifiedMyFile.pdf");
if (FileBuffer != null)
{
  Response.ContentType = "application/pdf";
  Response.AddHeader("content-length", FileBuffer.Length.ToString());
  Response.BinaryWrite(FileBuffer);
}

1 Ответ

0 голосов
/ 30 апреля 2019

Согласно документации Spire, у вас есть два способа сделать это

Используя метод SaveToHttpResponse ()

https://www.e -iceblue.com / Tutorials / Spire.PDF / Spire.PDF-Руководство по программам / Как создать PDF-файл динамически и отправить его клиенту-браузеру-используя-ASP.NET.html

PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("MyFile.pdf");

.... edit the document

pdf.SaveToHttpResponse("sample.pdf",this.Response, HttpReadType.Save);

Или,если встроенный метод не работает, попробуйте использовать поток памяти вместо временного файла.

https://www.e -iceblue.com / Tutorials / Spire.PDF / Spire.PDF-Руководство по программам / Работа с документами / Сохранить-PDF-файл в Stream-and-Load-PDF-file-from-Stream-in-C-.NET.html

PdfDocument pdf = new PdfDocument();

.... edit the document

using (MemoryStream ms = new MemoryStream())
{
  pdfDocument.SaveToStream(ms);

  Byte[] bytes = ms.ToArray();

  Response.ContentType = "application/pdf";
  Response.AddHeader("content-length", bytes.Length.ToString());
  Response.BinaryWrite(bytes);
}
...