Дизайн генерации PDF - PullRequest
       3

Дизайн генерации PDF

2 голосов
/ 23 августа 2010

У меня есть веб-сайт ASP.NET, и на одной из веб-страниц мне нужно сгенерировать PDF-документ, содержащий выходные данные набора веб-страниц, которые выбирает пользователь.Я называю это "пакетный PDF" .Обычно пользователя просят выбрать, какие веб-страницы ему нужно поместить в PDF, а затем нажимает кнопку, которая создает PDF со всеми выбранными веб-страницами.

Для этого я отправляю списоквыбранных страниц (их идентификаторов) через строку запроса и на сервере для каждого идентификатора веб-страницы в строке запроса он генерирует http-запрос к localhost и получает PDF-файл страницы из этого запроса (у меня есть Request.Filter, который выполняетпреобразование из HTML в PDF).Затем он объединяет все потоки PDF в один PDF и выгружает его в поток ответов.Все работает.

Но я бы хотел сделать это с помощью AJAX.В настоящее время открывается новое окно браузера, и пользователь должен дождаться завершения работы сервера, прежде чем он сможет увидеть страницу.Вместо этого я хотел бы отправить запрос AJAX и, когда генерация PDF завершена, показать PDF.

Один из способов сделать это - записать PDF-файл в файл на сервере, когда AJAX отправляет запроса затем перенаправить на этот файл, но есть ли способ избежать возиться с файлами?Например, я могу поместить весь PDF в сессию?Есть другие идеи?

Спасибо.

1 Ответ

0 голосов
/ 13 декабря 2010

Вместо сеанса, почему бы не поместить все в поток памяти?Прочитайте содержимое страниц HTML, сгенерируйте вывод в байтах и ​​сделайте что-то вроде:

[HttpGet]
public ActionResult PreviewPDF()
{
    // ...
    // The PDF file stream.
    MemoryStream pdf = PDF.Render(xmldata, xslfo);
    return new FileStreamResult(pdf, "application/pdf");
}

Также, быстрый вопрос: как вы преобразовали свои веб-страницы в PDF, используете ли выСторонний инструмент?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...