PdfSharp, GDI + и HTML печать - PullRequest
2 голосов
/ 04 марта 2009

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

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

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

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

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

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

1 Ответ

2 голосов
/ 04 марта 2009

Tony

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

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

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

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

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

...