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

Есть много старых текстов, таких как в этой книге 2002 года, в которой говорится, что мы должны использовать CSS для Web и 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 и Generation PDF из HTML. Никто не имеет хорошего ответа на этот представленный вопрос.

Ответы

Ответ 1

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

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

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

В СБ, 2013-11-02, Лиам RE Quin писал: "Мы закрыли рабочую группу, потому что недостаточно людей принимали участие", W3C XML Activity Lead, о провале XSL-FO 2.0 непрерывность, (см. более качественная копия здесь).

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

Почему? Он будет заменен на CSS3-page, см. Ниже.

PS: чтобы обсудить "официальный статус", используйте fooobar.com/questions/5097/...

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

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

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

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

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

CSS3 - ключевой момент в двух стратегических делах: 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" на "фрагментацию"... Теперь это рекомендация кандидата, см. https://www.w3.org/TR/css-break-3

Ответ 2

Обновлено 01.10.2015

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

Я согласен с некоторыми из того, что было опубликовано @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 в то время (Дейв Поусон, Майкл Кей, Уэнделл Piez и т.д.)

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

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

2017 Изменить:

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

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

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

Ответ 5

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