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

31

Есть много старых текстов, таких какэта книга 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, Никто с хорошим ответом на этот заданный вопрос.

И почему вы хотите " превратить HTML в хороший PDF "Когда есть CSS2? Похоже, вы задаете другой вопрос, который вы должны попытаться сделать более очевидным. Требуется ли вам PDF для профессиональной печати? Какие требования вы суммируете как" хороший PDF "? TOC? Ссылки на страницы? Или просто что-то, что загружается в один файл, более или менее плавно в разных браузерах, и печатает более или менее нормально? Alain BECKER
Ален, потому что многие из нас ХОТЯТ «превратить HTML в хороший PDF». У нас есть HTML-документы, отчеты и т. Д., Которые мы хотели бы предоставить с использованием PDF. IE сделал это возможным для ГОДОВ с очень простым использованием содержащей таблицы и thead / tfoot. Если HTML должен стать стандартом документа, движущегося вперед, к которому, похоже, движется мир, печать должна быть решена, и самые основные аспекты печати - это разбиение на страницы, поля, верхние и нижние колонтитулы. Они в значительной степени игнорируются, даже с CSS3 (в любом случае реализация браузера). rainabba
CSS2.1 не было с 2011 года; она была сформулирована только в 2011 году в Рекомендации W3C и существует с момента пересмотра CSS2 (как вы уже догадались, CSS2.1). BoltClock♦
XSL-FO - это словарь для точного описания презентации и размещения элементов печати. CSS описывает стиль HTML. Если вы начинаете с чего-то, что не является HTML, вероятно, довольно сложно преобразовать его в HTML + CSS для достижения желаемого результата. Marcin
CSS намного проще в разработке, но XSL-FO использует мощный движок XSLT. Таким образом, выбор должен быть сделан на основе того, являются ли ваши данные Де-нормализованы для визуализации. Если он нормализован, вам нужен дополнительный шаг дестормализации, который является XSL. Если данные уже нормализова для этого конкретного выходного документа, Я бы просто использовал CSS. bytebuster

Ваш Ответ

5   ответов
30

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-

Это хорошо, но реальность такова, что apache fop, похоже, является единственной доступной библиотекой для создания хороших PDF-файлов. Все эти коммерческие продукты стоят денег, и для большинства веб-сайтов платить за небольшую функциональность не вариант. И HTML не может заменить PDF прямо сейчас и в ближайшем будущем. Так что XSL-FO, кажется, единственное жизнеспособное решение на рынке. vbezhenar
Prince и другие бесплатно для личного использования. Для неличного, даже FOP не является выбором, он не «на 100% профессиональный», не генерирует «такие хорошие PDF-файлы»; нельзя использовать ни в конкурентном журнале, ни в издательском доме ... Нужны некоторые адаптации или замена на проприетарное программное обеспечение. Таким образом, сегодня речь идет не об использовании свободных программ, а об использовании «свободных стандартов». XSL-FO предназначен для «экосистемы Adobe», CSS3 - для «экосистемы W3C», которая бесплатна и совместима со свободными программами и другими бесплатными стандартами. Peter Krauss
«Я понимаю, что для W3C CSS3-страницы делают все, что нам нужно, чтобы выразить хорошие отпечатки и хороший PDF», - я не согласен. Я только что выполнил макет в CSS; по сравнению с ФО все еще есть некоторые упущения. Например, нельзя вставить более одного текстового блока в один блок верхнего или нижнего колонтитула. У вас также меньше вариантов условного форматирования: вы не можете сказать «делай X, если предыдущий абзац имел свойство Y». Hobbes
@ PeterKrauss - Почему это? - [ANN] Выпущен Apache FOP 2.0 - Markmail.org / сообщение / s5jox57bbhtkd5o6 Alex S
@ PeterKrauss Вас также может заинтересовать Pagedmedia.org / Paged-JS mb21
9

Обновлено 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.

Кроме того, «с помощью CSS2 вы можете разместить текст точно на бумажной странице» - что, я думаю, действительно зависит от вашего движка рендеринга. С wkhtmtopdf я пытался сделать это несколько раз, и каждый раз терпел неудачу. Nenotlep
Привет, спасибо большое! Некоторые проверки: "ИМО" = "по моему мнению" ?; Можете ли вы попробовать PrinceXML? Их можно загрузить бесплатно (это хороший справочник по удобству использования CSS2PDF), и вы можете создать пустую первую страницу и вырезать ее в Linux с помощью pdftk. Для личного использования был мой лучший выбор. Peter Krauss
В последнее время я участвую в wkhtmltopdf (rainabba) в надежде использовать его для замены ошибочного, слишком сложного и ДОРОГОГО решения, но верхние и нижние колонтитулы все еще являются основным упущением, к которому я надеюсь обратиться. Пока только IE позволяет достойный контроль. Я продолжаю слышать, что у FF тоже есть потенциал, но (FF, правда?) rainabba
@ rainabba Я вижу твоих двух уток и поднимаю тебе одну благодарность: все, что движет wkhtmltopdf вперед, - отличная вещь :-)! В последнее время было несколько коммитов по репозитарию антиализаций, что тоже здорово. Я думаю, что я даже видел, как кто-то недавно компилировал новые окна в списке рассылки. Для меня самыми большими проблемами являются разрыв страниц, продвинутое позиционирование, качество текста и поддержка изображений. Хотя поддержка изображений довольно хорошая, есть некоторые векторные форматы, которые браузерам вообще не нравятся, и я хотел бы увидеть это изменение, но мне, возможно, придется подождать некоторое время. Nenotlep
4

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

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

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

Eсть Группа по печати и макету страницы на W3C. Это открытый форум, который является продолжением несуществующей Рабочей группы по печати и макету страницы. mzjn
3

что 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 лет, а в веб-технологиях это слишком медленно :).

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

Привет, Алекс, спасибо за историческую перспективу (!). Ваш 10-летний опыт является важной ссылкой на более полное обсуждение: возможно, вы сможете улучшить свой текст и указать названия инструментов, компании и даты (врагов нет) ... Ну, есть "открытая война", и сегодня Adobe побеждает. InDesign настолько популярен, что все "PDFdesigner" знают это. Adobe-InDesign закрыт, не экспортирует хороший XML или XHTML + CSS2 и не импортирует стандартные макеты XHTML + CSS2 или XML + CSS2; Adobe избегает поддержки хороший ePUB или "полный и открытый XML-публикации». Peter Krauss
Я полагаю, что "вся репрезентативная разметка, которую XSL-FO имел над CSS для постраничного вывода, теперь (2013) реплицируется в CSS3, но, возможно, из-за лоббирования Adobe, CSS3-страница на март'2013 - только черновик ... Сегодня, если ваш "PDFdesigner" являетсяPDFdesigner code а для шаблонов и автоматизации PDFdesigners + программисты объединены в одну команду вы можете использовать PrinceXML; иначе единственный «стандартный и недорогой» инструмент - это пиратский InDesign. Peter Krauss
Уточни, что ты имеешь в виду под этим имена инструментов, компании и даты (врагов нет). Какие названия инструментов вы хотите? Небольшая разница здесь в том, что мы использовали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?) Alex S
-3

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

Ложное утверждение. PrinceXML (и я думаю, что wkhtmltopdf и другие) ДА, может преобразовать (HTML + SVG + CSS) или (XHTML + SVG + CSS) или (XML + SVG + CSS) в хороший PDF. Peter Krauss

Похожие вопросы