Как я могу возвратить PDF из веб-запроса в ASP.NET?

Проще говоря, я хотел бы, чтобы кто-то смог нажать на ссылку и получить PDF с одним разовым использованием. У нас есть библиотека для создания файлов PDF, таким образом, это не проблема.

Мы могли генерировать ссылку на aspx страницу, иметь ту страницу, генерируют PDF, сохраняют PDF к файловой системе и затем Ответ. Перенаправление к сохраненному PDF. Затем мы должны были бы так или иначе отслеживать и очистить файл PDF.

Так как мы никогда не должны сохранять эти данные, что я хотел бы сделать вместо этого, если это возможно, должен иметь aspx страницу, генерируют PDF и служат ему непосредственно назад в качестве ответа на исходный запрос. Действительно ли это возможно?

(В нашем случае мы используем C#, и мы хотим служить PDF назад, но кажется, что любое решение, вероятно, работало бы на различные языки.NET и возвратило типы файлов.)

22
задан Diego C. 25 October 2011 в 19:56
поделиться

2 ответа

Предполагая, что вы можете получить байт [] , представляющий свой PDF:

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition",
    "attachment;filename=\"FileName.pdf\"");

Response.BinaryWrite(yourPdfAsByteArray);

Response.Flush();

Response.End();
38
ответ дан 29 November 2019 в 04:47
поделиться

Посмотрите, как HTTP работает. Клиент (= браузер) не полагается на расширения, он хочет только сервер, чтобы вернуть некоторые метаданные вместе с документом.

Метаданные могут быть добавлены с помощью Response.addheader, а одна «линия метаданных» состоит из имени и значения.

Тип контента - это свойство, в котором вы заинтересованы, и значение является типом MIME данных (исследование: RFC1945 для заголовков HTTP, Google для MIME).

Для порядковых страниц ASPX (HTML, ....) Свойство - «Текст / HTML» (не очень тривиально, но для этого примера достаточно.). Если вы вернете изображение JPG, он может иметь имя «image.gif», но до тех пор, пока вы отправляете «Image / JPEG» в тип Content, он обрабатывается как изображение JPG. Тип содержимого для PDF - «Приложение / PDF».

Браузер будет действовать в соответствии с поведением по умолчанию, например, с плагином Adobe, он будет отображать PDF в окне IT, если у вас нет плагина для PDF, он должен загрузить файл и т. Д. ..

Заголовье по утилизации контента говорит, что вы должны сделать с данными. Если вы хотите явно клиент «скачать» некоторые HTML / PDF / что угодно, и не отображать его по умолчанию, значение «Вложение» - это то, что вы хотите. Он должен иметь другой параметр, (как предложил Джастин Нисснер), который используется в случае чего-то вроде:

http: //server/download.aspx? File = 11 -> Успокой из контента: вложение; filename = file.jpg говорит, как файл должен быть по умолчанию с именем.

2
ответ дан 29 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: