Насколько зрелым является HTML + CSS в отношении создания отчетов для печати?
Я рассматриваю возможность создания всех отчетов о серии настольных бизнес-приложений непосредственно в html. Большинство отчетов представляют собой таблицы (возможно, составные отчеты), заголовки, нижние колонтитулы и т.д. (Без изображений, векторной графики и т.д.).
После поиска в SO, я прочитал много сообщений о проблемах с разрывами страниц и тому подобным (мне не нужно позиционирование пикселей вообще, но да контроль над разрывами страницы).
Например, скажем, у меня есть большая таблица с валютными значениями, и мне нужна последняя строка таблицы на странице, чтобы отобразить текущие итоги в этот момент. Это легко сделать, или я буду запустить много неприятностей?
Какие технологии могут помочь мне здесь?
- HTML5
- Javascript
- CSS
- Библиотека PHP
- JQuery
Некоторые примечания:
- html будет отображаться с встроенным хромовым или firefox-движком, поэтому различия между браузерами это не проблема для меня.
- Я могу использовать встроенный PHP-препроцессор, если это помогает легче генерировать отчеты, я просто ищу лучшие технологии, чтобы сделать работу хорошо.
- Я устал от генераторов отчетов с дизайнерами WYSIWYG (Crystal Report, FastReport, ReportBuilder и т.д.).
Спасибо!
Ответы
Ответ 1
Мы сделали точный ход, о котором вы думаете почти год назад, и не оглянулись назад. Большая часть общения с нашим клиентом проходит через Интернет, поэтому он идеально подходит. Они могут легко просматривать html-выходы на нашем веб-сайте и при необходимости генерировать PDF-страницу (на стороне сервера). Программа, которую мы используем для преобразования PDF, представляет собой бесплатный, простой в использовании проект с открытым исходным кодом под названием wkhtmltopdf.
Где мы велики, но попасть сюда было сложно.
Решение о том, какой pdf-движок использовать, был долгим, болезненным процессом. Короче говоря, HTML предназначен для просмотра страниц в Интернете, а не для просмотра страниц на бумаге. Перерывы страниц станут бичем вашего существования в этой игре - вам буквально приходится измерять каждую страницу и создавать свои собственные чистые разрывы для каждого отдельного отчета (в противном случае все конвертеры html-to-pdf там будут просто продолжать рендеринг документ на следующую страницу, так как он вообще не обнаруживает разрыва страницы). Дальнейшее усложнение вопроса заключается в том, что каждый движок html-to-pdf обрабатывает этот sh * t по-разному, и вам придется написать индивидуальное решение для проверки каждого из них, чтобы узнать, соответствует ли оно вашим индивидуальным потребностям.
Теперь хорошие новости:
Вы можете сэкономить массу неприятностей, прислушавшись к моим советам и зайдя wkhtmltopdf для ваших окончательных отчетов, Эта небольшая программа просто потрясающая - она использует движок webkit, точно отображает CSS/javascript, имеет элемент управления заголовком/нижним колонтитулом, необязательно создает таблицу содержимого содержимого и (что самое главное) последовательно создает превосходный вид pdf без необходимости настройки ваша база кода. Он также имеет множество отличных переключателей командной строки, и он очень и очень быстрый. Я еще раз говорю: очень, очень быстро.
Лучше всего, это инструмент командной строки, который можно использовать в пакетной обработке. И я упомянул, что это действительно, очень быстро?
Ответ 2
Поддержка браузера для печати, как правило, ужасная. Однако есть и другие инструменты, в частности Prince (что не является бесплатным) и Flying Saucer (который является бесплатным), который может генерировать PDF-выход из XML/HTML плюс CSS. Принц даже поддерживает JavaScript, хотя у меня нет опыта с ним.
У меня есть Java back end в моем текущем приложении, поэтому для меня Flying Saucer отлично работает для простых отчетов. Я предварительно обрабатываю HTML-шаблон с помощью FreeMarker, а затем запускаю результат через Flying Saucer. Он получил удивительно умный механизм рендеринга.
CSS3 Paged Media (ну, предлагаемая спецификация) в нем есть всевозможные классные вещи, но они почти полностью не реализованы в браузеры. Даже CSS2-страничный материал носит только половинчатый характер.
Ответ 3
Говоря о принце, вы можете заглянуть в DocRaptor. DocRaptor - это еще один приложение для преобразования HTML в PDF. Он использует Prince XML и обрабатывает CSS лучше, чем сопоставимые программы.
Это не бесплатно, но предлагает бесплатную 30-дневную пробную версию для всех учетных записей, поэтому нет никакого вреда в ее попытке, по крайней мере.
DocRaptor