Использование XSL-FO, CSS3 вместо CSS2 для создания разбитых на страницы документов, таких как PDF?

Есть много старых текстов, подобных этой книге 2002 года , в которой говорится, что мы должны использовать «CSS для Интернета» и «XSL-FO для печати». Я думаю, что в наши дни (в 2012 году) мы можем, наконец, использовать CSS с механизмами рендеринга, которые понимают выставляемые ресурсы CSS2 и что-то вроде CSS3 … Но где «новые тексты», консенсус программистов и инвестиции в софты?

XSL-FO или «Объекты форматирования XSL» (стандарт W3C) были наиболее часто используемой технологией для создания PDF-документов из XML или содержимого XHTML. Версия 1.1 XSL-FO была опубликована в 2006 году, 1.0 в 2001 году .

CSS2.1 – с 2011 года, но CSS2.0 – это стандарт 1998 года, пересмотренный в 2008 году … Я думаю, что стандартные возрасты не являются проблемой. CSS с HTML, XHTML или XML имеют «силу печати» : см. Инструменты, такие как PrinceXML , модуль печати WebKit (или wkhtmltopdf ), ABCpdf и другие.

Выбор между CSS и XSL-FO : с помощью CSS2 вы можете точно подогнать текст на бумажную страницу и т. Д. Это не вопрос разбивки на страницы, несколько макетов столбцов, размещение сносок, заголовков или полей страницы … Оба, CSS (paged media) и XSL-FO – хорошие стандарты для этого.

PS: есть некоторые связанные вопросы / ответы для этого контекста, о трансформировании webkit , преобразовании с помощью PHP и о генерации PDF из HTML . Никто не имеет хорошего ответа на этот представленный вопрос.

    Спасибо всем комментариям и ответам!

    Теперь, 2014 год, прошло более 1,5 лет с моего поста (17 мая 12), настало время консолидироваться: никакой ответ для меня не был «полным ответом», но все ответы (см. Nenotlep’s and Alex’s) способствовали формированию большого картина. Моей главной мотивацией сейчас, чтобы консолидироваться, является новость @ mzjn (здесь) 2013-11.

    XSL-FO официально умирает

    В субботу, 2013-11-02, Лиам Реи Квин писал : «Мы закрыли рабочую группу, потому что не так много людей принимали участие» , W3C XML Activity Lead, о провале непрерывности XSL-FO 2.0 . (см. лучшую копию здесь ).

    Последнее обновление рабочего проекта было в январе 2012 года, и теперь подтверждено: W3C прекращает разработку XSL-2 .

    Зачем? Он будет заменен CSS3-страницей , см. Ниже.

    PS: для обсуждения «официального заявления» используйте https://stackoverflow.com/a/21345449/287948

    CSS3 официально растет

    Стандартная CSS3-страница представляет собой черновик, но многие приложения, такие как PrinceXML v9 и AntennaHouse Formatter v6, продемонстрировали, что он готов (!); и ожидаемый запуск HTML5 для 2014 года идет вдоль outlookируемого выпуска CSS3.

    Итак, я понимаю, что для W3C, CSS3-страница делает все, что нам нужно, чтобы выразить хорошие отпечатки и хороший PDF .

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

    Однажды, в далеком будущем … PDF будет мертвым – он сложный и не является частью семейства XML или инвестиций W3C, и многие утверждают, что EPUB заменит его. Это еще одна хорошая мотивация: планшетные компьютеры и ПК-браузеры будут печатать (HTML, XHTML и EPUB), а также PDF. Поэтому PDF не понадобится … И для этого дня единственная стандартная потребность, например. Проект печати Webkit , станет стандартом CSS3-страницы .

    CSS3 является ключевым моментом в двух страtagsческих делах: 1) генерировать хороший PDF-файл из содержимого XML или HTML; 2) заменить PDF.


    ПРИМЕЧАНИЕ. Еще одно обновление 2014 года для ссылок на вопрос: wkHtmlToPDF теперь находится здесь . О «новых текстах», теперь у нас много, см. Пример. Создание книг с CSS3 .



    Обновленный ответ для программистов, для вопроса этой страницы: зачем использовать XSL-FO вместо CSS2, чтобы преобразовать HTML в хороший PDF?

    Если вы пойдете дальше и внедряете новую систему для XML-публикации , нет никаких оснований для использования XSL-FO . ПОДВЕДЕНИЕ:

    • Сегодня XSL-FO – это мертвая технология, используемая только нишевыми компаниями для обслуживания старых систем в крупных издательских компаниях, таких как Elsevier … Большинство авторов / читателей Stackoverflow – из небольших и средних компаний. Такие компании, как O’Reilly Media, Inc., уже используют CSS3 для печати .

    • CSS3 заменит CSS2, покрывая все пробелы (и страхи как @ AlexS’s) CSS2 .

    • сегодня (2014), как вы можете проверить Google или мои ссылки (см. PrinceXML v9 и AntennaHouse Formatter v6), у нас есть хорошее программное обеспечение для рендеринга контента с CSS2 или CSS3 .

    • как @bytebuster говорят: «CSS намного легче развивается» (и проще учиться!).

    • как я уже говорил выше, CSS3 не изолирован, это часть семейства «XML / HTML / SVG».

    • гораздо дешевле разрабатывать «HTML + CSS-шаблоны» (почасовая стоимость стандартного веб-дизайнера, выполняющего простую задачу), чем «шаблоны XSL-FO» (почасовая стоимость редкого профессионала в сложной задаче).

    • ….



    Новости…

    Jan’2016, окончательный стандарт CSS3 подходит!

    О стандартах W3C: старая «css-страница» была заменена на «css-break» и «paged media» на «fragmentацию» … Теперь это рекомендация кандидата, см. https://www.w3.org/ TR / KSS-брейк-3

    Обновлено 01.10.2015

    Я использовал CSS для PDF (wkhtmltopdf) и XSL-FO для PDF, и я предпочитаю CSS, но с ним много проблем. IMO – лучший инструмент для CSS / HTML для PDF-рендеринга – wkhtmltopdf, но у него много проблем, таких как проблемы с качеством печати, проблемы с нарушением страницы, окраска CMYK, точное позиционирование и полноэкранный рендеринг.

    Такие требования, как «переместить этот ящик на 1,8 мм вправо и вверх, чтобы он касался верхней части бумаги» и «нам нужна последняя страница, чтобы быть 100% -ной шириной таблицы без полей» , вполне возможны в XSL-FO, но в CSS это слишком страшно даже рассмотреть. В некоторых случаях CSS просто не сокращает его, как достаточно хорошее программное обеспечение для рендеринга, оно не существует, даже если tags делают. Даже wkhtmltopdf (0.11, не уверен в дальнейшем) использует XSLT при рендеринге TOC и на самом деле не поддерживает @page .

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

    Если бы было лучшее программное обеспечение для рендеринга и больше пользователей, я действительно считаю, что CSS будет лучшим вариантом, так как писать гораздо лучше (как css, так и source (x) html), и там есть множество редакторов. Это немного похоже на старую дискуссию по Linux и Windows – IMO Linux более удобна в использовании, но ей не хватает программного обеспечения, опыта и поддержки, которые часто требуются.

    И чтобы повторить комментарии, исходный материал всегда является проблемой с CSS. CSS для XML – это некоторая неизведанная территория, и почти везде есть XML. К сожалению. У меня сильная неприязнь к XML, хотя она практически намного удобнее, чем (X) HTML.

    Одной из возможных причин для банковской деятельности в отношении CSS, а не XSL-FO в будущем является то, что рабочая группа XML Print и Page Layout в W3C больше не активна. Недостаточно интереса к поддержанию этой рабочей группы. Группа опубликовала рабочий проект XSL 2.0 в начале 2012 года, но теперь представляется маловероятным, что обновленная рекомендация W3C когда-либо появится.

    В списке рассылки XSL-List есть очень свежий stream о причинах закрытия рабочей группы и о будущем XSL-FO и CSS. См. http://markmail.org/thread/65j2ah2kulcp35fm .

    И, кстати, хотя это интересная тема, я не уверен, что вопрос подходит для Stack Overflow. ИМХО, это скорее открытое приглашение обсудить что-то, а не вопрос о конкретной, практической, ответной проблеме .

    Я согласен с некоторыми из того, что было опубликовано @Nenotlep. Но я не уверен, что разметка CSS пока не столь обширна для разбитых на страницы документов как XSL-FO. Но я этого не знал.

    Я также добавил эту часть к его ответу, потому что я не смог «прокомментировать» ответ.

    Существует некоторая история для всей проблемы.

    Кроме того, богатство XSL-FO и его изучение и кривая ожога за последние 10 лет на FO-рендеринге имели довольно длительный срок, чтобы получить «больше» вещей, сглаженных.

    Я был ответственным за доказательство концепции и прототипирование системы XML с широким спектром приложений для компании Fortune 20 в 2003 году.

    Один из компонентов этой системы должен был преобразовывать документы PDF, Word, X / HTML «на лету», поскольку люди меняли, добавляли и модифицировали контент XML.

    Даже XSL-FO> PDF и Word-ML в то время имели кучу проблем.

    Они были присущи по следующей причине:

    • Оригинальные и новые цели и возможности языков разметки и стилизации
    • Способность и ограничения конечного компонента рендеринга для точного представления данной разметки (например, XSL-FO для PDF-компонента или X / HTML для экрана через веб-браузер)

    Прошло уже 10 лет с тех пор, как я часто занимался XSL-FO / HTML / CSS, но вышеупомянутые проблемы были интересны для обсуждения с богами мира XML / XSL в то время (Дейв Поусон, Майкл Кей, Венделл Пьез и т. Д. )

    Вполне возможно, что вся репрезентативная разметка, которую XSL-FO имела над CSS для Paginated output, теперь (2013), возможно, реплицируется в CSS3 и отображается соответствующим образом.

    Надеюсь, это поможет.

    2017 Редактировать:

    По-видимому, CSS по-прежнему играет в какой-то степени, и я помню, что большую часть этого в 2003 году – это 14 лет, а в веб-технологиях это слишком медленно.

    https://twitter.com/t_machine_org/status/917025348646199297

    введите описание изображения здесь

    Насколько я знаю, вы не можете генерировать SVG-графики или SVG-штрих-коды с помощью CSS.

    Interesting Posts

    Как подсчитать посещаемость в Excel?

    Компьютер Воспроизводит звук, но не показывает действие на Volume Mixer

    Как ввести даты в формате даты ISO 8601 (YYYY-MM-DD) в Excel (и Excel распознает этот формат как значение даты)?

    Как отслеживать сетевой трафик на маршрутизаторе?

    Внешний вид диалогового windows «Безопасность Java»

    Как я могу получить идентификатор канала с YouTube?

    MS Word: как отключить проверку орфографии / грамматики в пользовательском стиле

    Структура иерархических данных в пустых строках

    Избегание! = Null

    Как отслеживать использование ЛВС? (AKA 'top для LAN')

    Как получить и отобразить изображения из базы данных на странице JSP?

    Могут ли браузеры изменять URL-адреса сохраненных закладок в ответ на 301 переадресацию?

    как вернуть карту с помощью HQL

    Подавление “предупреждения CS4014: поскольку этот вызов не ожидается, выполнение текущего метода продолжается …”

    Есть ли способ использовать бивариантные цветовые карты в matplotlib?

    Давайте будем гением компьютера.