Печать PdfSharp, GDI + и HTML

77
7

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


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


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


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


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


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

спросил(а) 2021-01-25T17:16:55+03:00 5 месяцев назад
1
Решение
77

Тони


Я лично использовал WebSupergoo ABCPdf библиотеку с большим успехом. Вы можете фактически преобразовать HTML непосредственно в PDF, и он достаточно хорошо относится к точности.


Другое бесплатное программное обеспечение, которое позволит вам гибко писать HTML в PDF, который я использовал в прошлом с большим успехом, это iTextSharp.

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


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


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

ответил(а) 2021-01-25T17:16:55+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема