Вопрос по css, xml, pdf – Использовать 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 was published in 2006, 1,0 в 2001 году.
CSS2.1 с 2011 года, но CSS2.0 - это стандарт 1998 года, пересмотренный в 2008 году ... Я думаю, что стандартные возрасты не проблема.CSS with HTML, XHTML or XML have "the power of print": увидеть инструменты, такие какPrinceXML, Модуль печати WebKit (или жеwkhtmltopdf), ABCpdf и другие.
Choosing between CSS and XSL-FO: с помощью CSS2 вы можете поместить текст точно на бумажную страницу и т. д. Это не относится к нумерации страниц, разметке нескольких столбцов, сноскам мест, заголовкам или полям страницы ... И CSS (paged media), и XSL-FO - хорошие стандарты для этого.
PS: есть некоторые связанные вопросы / ответы для этого контекста,о преобразовании webkit, конвертировать с помощью PHP и оГенерация PDF из HTML, Никто с хорошим ответом на этот заданный вопрос.
Now, 2014, прошло более 1,5 лет моего поста (17 мая '12), пришло время для консолидации: для меня ни один ответ не был «полным», но все ответы (см. Nenotlep и Alex) способствовали формированию Большая фотография. Моя главная мотивация сейчас, чтобы консолидироваться, это@ новости 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/28794
CSS3 официально растетСтандарт CSS3-страницы является черновиком, но многие приложения, такие как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.
as @bytebuster говорит: «CSS намного проще в разработке» (и легче в освоении!).
Как я уже сказал выше, CSS3 не является изолированным, это часть семейства «XML / HTML / SVG».
Гораздо дешевле разработать «шаблоны HTML + CSS» (почасовая стоимость стандартного веб-дизайнера, выполняющего простую задачу), чем «шаблоны XSL-FO» (почасовая стоимость редкого специалиста в сложной задаче).
....
Новости.. Jan'2016, окончательный стандарт CSS3 идет!О стандартах W3C: старые "CSS-страница" был заменен на "CSS-брейк", а также "постраничный носитель" в "Фрагментация" ... Теперь это рекомендация кандидата, см.https: //www.w3.org/TR/css-break-
Обновлено 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 при рендеринге оглавления и не поддерживает@page
.
Я не могу говорить о PrinceXML, поскольку, хотя он выглядит великолепно, я заранее знаю, что ценник будет невозможен, так что это не вариант - я подозреваю, что это верно для многих разработчиков и компаний.
Если бы было лучшее программное обеспечение для рендеринга и больше пользователей, я действительно думаю, что CSS, как правило, был бы лучшим вариантом, поскольку писать его было бы намного приятнее (как CSS, так и исходный (x) HTML), и там было множество редакторов. , Это немного похоже на старые дебаты о Linux и Windows - IMO Linux удобнее в использовании, но ему не хватает программного обеспечения, опыта и поддержки, которые часто требуются.
И чтобы повторить комментарии, исходный материал всегда является проблемой с CSS. CSS для XML - это немного неизведанная территория, и почти все везде - это XML. К несчастью. У меня сильная неприязнь к XML, хотя он практически намного удобнее, чем (X) HTML.
чтобы в будущем делать ставку на CSS, а не на XSL-FO, заключается в том, чтоXML Рабочая группа по печати и макету страницы на W3C больше не активен. Не было достаточно интереса, чтобы поддержать эту рабочую группу. Группа опубликовалаXSL 2.0 рабочий проект в начале 2012 года, но сейчас вряд ли когда-нибудь появится обновленная рекомендация W3C.
В списке рассылки XSL-List есть недавняя тема о причинах закрытия рабочей группы и о будущем XSL-FO против CSS. Видетьhttp: //markmail.org/thread/65j2ah2kulcp35f.
И, кстати, хотя это интересная тема, я не уверен, подходит ли этот вопрос для переполнения стека. ИМХО, это скорее открытое приглашение обсудить что-то, а не вопрос о конкретная, практическая, ответственная проблема.
что CSS-разметка для Paginated документов так же обширна, как XSL-FO. Но я бы этого не знал.
Я также добавил эту часть в его ответ, потому что не смог "прокомментировать" ответ.
Есть некоторая история для всей проблемы.
Кроме того, богатство XSL-FO и его изучение и кривая выработки за последние 10 с лишним лет рендеринга FO дало достаточно времени, чтобы сгладить «больше» вещей.
Я отвечал за проверку концепции и создание прототипа системы, связанной с XML-контентом в масштабах предприятия, для Fortune 20 еще в 2003 году.
Одна из частей этой системы должна была визуализировать PDF, Word, X / HTML версии документов на лету, когда люди меняли, добавляли и модифицировали контент XML.
Even XSL-FO> У PDF и Word-ML в то время было множество проблем с прорезыванием зубов.
Они были присущи по следующей причине:
Первоначальные и новые цели и возможности языков разметки и стиля Возможность и ограничения конечного компонента рендеринга для точного представления заданной разметки (т.е. компонента XSL-FO в PDF или X / HTML на экран через веб-браузер)Прошло 10 лет с тех пор, как я часто работал с XSL-FO / HTML / CSS, но вышеупомянутые вопросы было интересно обсудить с богами мира XML / XSL в то время (Дейв Поусон, Майкл Кей, Уэнделл Пиз и т. Д. .)
Вполне возможно, что вся репрезентативная разметка, которая была в XSL-FO поверх CSS для постраничного вывода, теперь (2013 г.), возможно, реплицируется в CSS3 и отображается соответствующим образом.
Надеюсь, это поможет
2017 Редактировать:
Судя по всему, CSS все еще играет в догонялках, и я помню, что большую часть этого я получил в 2003 году - это 14 лет, а в веб-технологиях это слишком медленно :).
XML Data + XSLT(containing XSL-FO markup)
создавать.FO (XML Data inside XSL-FO markup)
, который был подан наXSL-FO (.FO)
в PDF движок. например RenderX XEP и т. Д. У нас было 3 различных варианта XSLT - Common Logic для синтаксического анализа XML, но разная разметка вывода - HTML, FO, Word ML. Мы занимались ручным кодированием с использованием XMLSpy; нет WYSIWYG. Теперь StyleVision и другие инструменты существуют. PS: У меня нет опыта работы с InDesign (это как Dreamweaver?)