Сохранение стиля CSS при преобразовании HTML в PDF в ASP.NET

Я использую ITextSharp для преобразования HTML-страницы в PDF.

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

Есть ли что-то, чего мне не хватает в ITextSharp, или есть лучший (и бесплатный) способ сделать это преобразование?

Заранее спасибо,

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
7
0
38 680
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Поддержка HTML / CSS в iText / iTextSharp - очень простой. Это просто неподходящий инструмент для преобразования HTML в PDF. Взгляните на эти решения вместо этого:

Они отображают HTML в изображение. Затем вы можете вставить их в свой PDF-файл с помощью iTextSharp.

В противном случае вы можете попробовать преобразовать HTML -> XSL-FO -> PDF, но включение CSS - это совсем другое.

Ответ принят как подходящий

Взгляните на WKHTMLTOPDF. Это открытый исходный код, основанный на webkit и бесплатный.

Мы написали небольшой учебник здесь.

Это случайно можно запрограммировать с помощью C# ... Я вижу только использование командной строки ?!

Jalal El-Shaer 30.03.2010 02:37

Существует библиотека привязок C, которую теоретически можно использовать из C# с помощью P / Invoke, но мне пока не удалось добиться успеха: github.com/bamccaig/WkHtmlToPdfDflat. Я также пробовал написать простую программу C (даже из Linux) для непосредственного тестирования привязок C, но даже это не удалось: code.google.com/p/wkhtmltopdf/issues/detail?id=614.

bambams 17.05.2011 23:10

Это то, с чем я пошел. Однако у него есть серьезные проблемы с производительностью (кажется, он замедляет работу всего AppDomain, поэтому требуются краткосрочные приложения по расписанию или регулярные перезапуски).

Matt Mitchell 23.05.2013 05:12

@MattMitchell На какой ОС вы его используете? Мы не видим этой проблемы на сервере Ubuntu.

Mic 23.05.2013 17:21

@Mic - Win7 + IIS7 (.5?). Я упустил из виду упоминание о том, что использую оболочку Печкина (github.com/gmanny/Pechkin), которая может внести свой вклад (другие сообщают о подобных проблемах там, но я не особо разбирался в проблеме, чтобы изолировать причину). Со временем рендеринг значительно замедляется, но поскольку рендеринг не самый быстрый для начала (и кажется, что он либо полностью завершается сбоем, либо периодически истекает время ожидания), я теперь использую кэшированный визуализированный отчет в своей базе данных, и запланированное задание периодически генерирует отчеты. . Несмотря на некоторые нюансы, качество рендеринга высокое.

Matt Mitchell 24.05.2013 06:25

@Mic - лайк мертв, а поиск по сайту абсолютно ничего не дает.

MicroservicesOnDDD 09.03.2020 22:42

Попробуйте конвертер 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. Это то, что я знаю. :-)

Наверное, стоит упомянуть, что это коммерческий компонент. На самом деле сайт сбивает с толку в этом вопросе - говорит, что он бесплатный, а потом говорит, что это условно-бесплатное ПО.

Matt Mitchell 23.05.2013 05:11

Почему бы не использовать онлайн-API? Их много, и они хорошо справляются со своей задачей, что позволяет вам беспокоиться о своей основной работе, а не о том, как правильно отрисовать PDF-файл :)

Вы упомянули что-то «бесплатное». Это зависит от вашего использования, но большинство сервисов для начала предлагают бесплатные преобразования в диапазоне от 50 до 250 (и даже больше). Может, тебе этого хватит?

Все, что вам нужно сделать, это простой запрос POST к службе с вашими данными HTML (или ссылкой), и вы получите в ответ PDF-файл.

Вот список API для преобразования HTML в PDF (не исчерпывающий):

Ссылка PDFShift не работает.

MicroservicesOnDDD 09.03.2020 22:44

Спасибо, исправил ссылку!

Cyril N. 10.03.2020 13:16

Другие вопросы по теме