Вопрос

В настоящее время у меня есть "PrintingWebService", который я вызываю со страницы AJAX со всей информацией, необходимой для создания настраиваемой распечатки PDF с использованием PDF Sharp и режима GDI + PDFsharp в PDFsharp, который использует DrawString и другие команды, которые работают в основном так же, как GDI +, только они отображаются в PDF.

Затем я сохраняю PDF-файл в папку на веб-сервере и возвращаю имя файла из веб-службы, и страница AJAX открывает новое окно с PDF-файлом.

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

Я ищу какой-нибудь инструмент, который я мог бы использовать для этой цели.Даже что-то с открытым исходным кодом, которое печатается в GDI +, я мог бы использовать, взяв исходный код и переведя его для использования GDI + в PDFsharp (имена классов похожи на XGraphics, причем каждый класс имеет X перед именем GDI +).

Если мне придется, я ограничу количество HTML, которое может быть сгенерировано TinyMCE, и напишу свой собственный рендерер, но это будет большой проблемой, поэтому сначала я ищу другие решения.

Я воздержался от использования страницы, удобной для печати, потому что хотел создать страницу, которая была бы почти идентична существующей распечатке WinForms, используя мой существующий код.С помощью PDFsharp я смог преобразовать весь код, за исключением содержимого текстовой области (которое использовало RichTextBox и RTF в версии WinForms).

Это было полезно?

Решение

Тони,

Лично я с большим успехом пользовался библиотекой ABCpdf от WebSuperGoo.На самом деле вы можете визуализировать HTML непосредственно в PDF, и это довольно хорошо с точки зрения точности.

Еще одна бесплатная программа, которая позволит вам гибко записывать HTML в PDF, которую я с большим успехом использовал в прошлом, - это iTextSharp.

В противном случае, я думаю, вам придется написать что-то для рендеринга HTML в GDI.

В любом случае, вы можете рассмотреть возможность использования HttpHandler, который вы сопоставляете с помощью вашего web.config для создания PDF-файла.Это позволит вам отобразить PDF-файл в байтовый поток, а затем отправить его непосредственно пользователю (в отличие от необходимости сохранять каждую квитанцию PDF на веб-сервер).Это также позволит вам использовать расширение .pdf на странице, которая возвращает квитанцию (PurchaseReceipt.pdf может быть сопоставлен HttpHandler)...что делает его более удобным для работы в разных браузерах.Более старые версии Adobe / браузеров не будут отображаться корректно, если вы начнете создавать поток байтов PDF со страницы ASPX.

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top