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