Я использую ITextSharp для преобразования HTML-страницы в PDF.
Однако ITextSharp напрямую печатает CSS в объявлении STYLE, игнорирует таблицы стилей даже при программном добавлении и слушает только некоторые встроенные стили (например, font-size и color, но не background-color).
Есть ли что-то, чего мне не хватает в ITextSharp, или есть лучший (и бесплатный) способ сделать это преобразование?
Заранее спасибо,






Поддержка HTML / CSS в iText / iTextSharp - очень простой. Это просто неподходящий инструмент для преобразования HTML в PDF. Взгляните на эти решения вместо этого:
Они отображают HTML в изображение. Затем вы можете вставить их в свой PDF-файл с помощью iTextSharp.
В противном случае вы можете попробовать преобразовать HTML -> XSL-FO -> PDF, но включение CSS - это совсем другое.
Взгляните на WKHTMLTOPDF. Это открытый исходный код, основанный на webkit и бесплатный.
Мы написали небольшой учебник здесь.
Существует библиотека привязок C, которую теоретически можно использовать из C# с помощью P / Invoke, но мне пока не удалось добиться успеха: github.com/bamccaig/WkHtmlToPdfDflat. Я также пробовал написать простую программу C (даже из Linux) для непосредственного тестирования привязок C, но даже это не удалось: code.google.com/p/wkhtmltopdf/issues/detail?id=614.
Это то, с чем я пошел. Однако у него есть серьезные проблемы с производительностью (кажется, он замедляет работу всего AppDomain, поэтому требуются краткосрочные приложения по расписанию или регулярные перезапуски).
@MattMitchell На какой ОС вы его используете? Мы не видим этой проблемы на сервере Ubuntu.
@Mic - Win7 + IIS7 (.5?). Я упустил из виду упоминание о том, что использую оболочку Печкина (github.com/gmanny/Pechkin), которая может внести свой вклад (другие сообщают о подобных проблемах там, но я не особо разбирался в проблеме, чтобы изолировать причину). Со временем рендеринг значительно замедляется, но поскольку рендеринг не самый быстрый для начала (и кажется, что он либо полностью завершается сбоем, либо периодически истекает время ожидания), я теперь использую кэшированный визуализированный отчет в своей базе данных, и запланированное задание периодически генерирует отчеты. . Несмотря на некоторые нюансы, качество рендеринга высокое.
@Mic - лайк мертв, а поиск по сайту абсолютно ничего не дает.
Попробуйте конвертер PDF Duo .NET. Вы можете подать заявку на поддержку, если вам нужна особая функция.
http://www.duodimension.com/html_pdf_asp.net/downloads/html_pdf_net.zip
ABCpdf предоставляет два механизма рендеринга HTML. Один основан на версии MSHTML, установленной в системе. Другой основан на движке рендеринга FireFox Gecko.
Так что есть много места для маневра, если вам нужен определенный набор функций. Это очень реальный мир.
Что касается качества, я бы просто сказал, что многие люди останавливаются на ABCpdf после того, как попробовали множество различных альтернатив.
Я работаю над программным компонентом ABCpdf .NET, поэтому мои ответы могут содержать концепции, основанные на ABCpdf. Это то, что я знаю. :-)
Наверное, стоит упомянуть, что это коммерческий компонент. На самом деле сайт сбивает с толку в этом вопросе - говорит, что он бесплатный, а потом говорит, что это условно-бесплатное ПО.
Почему бы не использовать онлайн-API? Их много, и они хорошо справляются со своей задачей, что позволяет вам беспокоиться о своей основной работе, а не о том, как правильно отрисовать PDF-файл :)
Вы упомянули что-то «бесплатное». Это зависит от вашего использования, но большинство сервисов для начала предлагают бесплатные преобразования в диапазоне от 50 до 250 (и даже больше). Может, тебе этого хватит?
Все, что вам нужно сделать, это простой запрос POST к службе с вашими данными HTML (или ссылкой), и вы получите в ответ PDF-файл.
Вот список API для преобразования HTML в PDF (не исчерпывающий):
Ссылка PDFShift не работает.
Спасибо, исправил ссылку!
Это случайно можно запрограммировать с помощью C# ... Я вижу только использование командной строки ?!