Насколько зрелым является HTML + CSS для создания отчетов для печати? - PullRequest
14 голосов
/ 21 декабря 2011

Я рассматриваю возможность создания всех отчетов серии настольных бизнес-приложений непосредственно в формате html.Большинство отчетов представляют собой таблицы (возможно, составные отчеты), верхние и нижние колонтитулы и т. Д. (Без изображений, векторной графики и т. Д.).

После поиска в SO я прочитал много постов о проблемах с разрывами страниц и тому подобным (мне вообще не нужно позиционирование в пикселях, но да, контроль на разрывах страниц).

Например, допустим, у меня есть большая таблица со значениями валюты, и мне нужна последняя строка таблицы на странице для отображения промежуточных итогов в этот момент ... это легко выполнимо, или яработать много хлопот?

Какие технологии могут помочь мне здесь?

  • HTML5
  • Javascript
  • CSS
  • Библиотеки PHP
  • JQuery

Некоторые примечания:

  • HTML будет отображаться с встроенным движком Chrome или Firefox, поэтому различия между браузерамиэто не проблема для меня.
  • Я могу встроить препроцессор php, если это помогает легче генерировать отчеты, я просто ищу лучшую технологию под рукой, чтобы сделать работу хорошо ..
  • Я устал от генераторов отчетов с остроумиемh Дизайнеры WYSIWYG (Crystal Report, FastReport, ReportBuilder и т. д.)

Спасибо!

Ответы [ 3 ]

8 голосов
/ 26 декабря 2011

Мы сделали именно то, о чем вы думаете почти год назад, и не оглядывались назад. Большая часть общения с нашим клиентом происходит через Интернет, поэтому он идеально подходит. Они могут легко просматривать html-результаты на нашем веб-сайте и создавать PDF-файлы страницы (на стороне сервера) при необходимости. Программа, которую мы используем для конвертации в PDF, представляет собой бесплатный, простой в использовании проект с открытым исходным кодом, который называется wkhtmltopdf .

Где мы велики, но попасть сюда было сложно.

Решение о том, какой механизм pdf использовать, было долгим и болезненным процессом. Суть в том, что HTML предназначен для просмотра страниц в Интернете, а не для просмотра страниц на бумаге. Разрывы страниц станут проклятием вашего существования в этой игре - вам буквально нужно измерить каждую страницу и создать собственные чистые разрывы для каждого отдельного отчета (в противном случае все конвертеры HTML-PDF-файлов будут там). просто продолжайте отображать документ на следующей странице, как если бы он вообще не встречался без разрыва страницы). Еще более усложняет вопрос то, что каждый механизм html-to-pdf там обрабатывает этот sh * t по-своему, и у вас написать индивидуальное решение для проверки каждого из них, чтобы убедиться, что оно соответствует вашим индивидуальным потребностям.

Теперь, хорошие новости:

Вы можете избавить себя от множества неприятностей, прислушиваясь к моим советам и выбрав wkhtmltopdf для получения окончательных отчетов. Эта небольшая программа просто удивительна - она ​​использует движок webkit, точно отображает CSS / javascript, имеет элемент управления header / footer, опционально создает страницу с содержанием и (что наиболее важно) последовательно создает превосходно выглядящие pdf без необходимости настраивать ваша кодовая база. Он также имеет множество отличных переключателей командной строки, , и он очень, очень быстрый. Я снова говорю: это очень, очень быстро.

Лучше всего, это инструмент командной строки, который можно использовать в пакетной обработке. И я упоминал, что это действительно очень быстро?

6 голосов
/ 21 декабря 2011

Поддержка браузера для печати вообще ужасна. Однако есть и другие инструменты, в частности Prince (который не является бесплатным) и Flying Saucer (который является бесплатным), который может генерировать PDF-вывод из XML / HTML. плюс CSS. Prince даже поддерживает JavaScript, хотя у меня нет никакого опыта с ним.

В моем текущем приложении есть серверная часть Java, поэтому для меня Flying Saucer отлично работает для простых отчетов. Я предварительно обрабатываю шаблон HTML во FreeMarker, а затем запускаю результат через Flying Saucer. У него удивительно умный движок рендеринга.

Спецификация CSS3 Paged Media (ну, в общем, предлагаемая спецификация) содержит в себе много всяких интересных вещей, но они почти полностью не реализованы в браузерах. Даже CSS2-медиа-контент поддерживается только нерешительно.

0 голосов
/ 26 декабря 2011

Говоря о принце, вы можете заглянуть в DocRaptor. DocRaptor - это еще одно преобразование HTML в PDF . Он использует Prince XML и обрабатывает CSS лучше, чем сопоставимые программы.

Это не бесплатно, но предлагает бесплатную 30-дневную пробную версию для всех учетных записей, так что, по крайней мере, нет ничего плохого в этом.

DocRaptor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...