2010-08-23 4 views
2

У меня есть веб-сайт ASP.NET, и с одной из веб-страниц мне нужно создать документ PDF, содержащий вывод набора веб-страниц, которые пользователь выбирает. Я называю это «пакетный PDF». В принципе, пользователю предлагается выбрать, какие веб-страницы ей нужно поместить в PDF, а затем нажать кнопку, которая создает PDF-файл со всеми выбранными веб-страницами в нем.Дизайн генерации PDF

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

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

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

Спасибо.

ответ

0

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

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

Кроме того, быстрый вопрос: как на земле, вы превратить ваши веб-страницы в PDF, вы используете 3 участника инструмент?

+0

благодарит за вашу помощь. Я сделал что-то подобное. для преобразования страниц в PDF, я использую сторонний инструмент ABCPdf, который принимает html и испускает PDF. здесь есть соответствующее обсуждение: http://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net – akonsu

Смежные вопросы