Как создать PDF из docbook 5.0

Я написал документ docbook 5.0 с заголовком:

<?xml version="1.0" encoding="UTF-8"?>
<book version="5.0" xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:svg="http://www.w3.org/2000/svg"
      xmlns:m="http://www.w3.org/1998/Math/MathML"
      xmlns:html="http://www.w3.org/1999/xhtml"
      xmlns:db="http://docbook.org/ns/docbook">

и docbook2pdf на Ubuntu 9.10 печатает много сообщений об ошибках и не делает никакого PDF-документа. Ошибки:

openjade:test.xml:2:0:E: prolog can't be omitted unless CONCUR NO and LINK EXPLICIT NO and either IMPLYDEF ELEMENT YES or IMPLYDEF DOCTYPE YES
openjade:test.xml:2:0:E: no document type declaration; will parse without validation
openjade:/usr/share/sgml/docbook/stylesheet/dsssl/modular/print/dbtitle.dsl:18:5:E: flow objects at the root must be all of class scroll or all of class page-sequence or simple-page-sequence
openjade:/usr/share/sgml/docbook/stylesheet/dsssl/modular/print/dbbibl.dsl:704:4:E: flow objects at the root must be all of class scroll or all of class page-sequence or simple-page-sequence

docbook2pdf для документа в формате docbook 4.5 с обычным заголовком, например:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

работает нормально.

Есть ли способ генерировать pdf файл из docbook 5.0?

Ответ 1

Я вижу три варианта (доступных в Debian/Ubuntu) для создания pdf-документа из docbook:

  • jade, который предоставляет команду docbook2pdf, которую использовал ассер. jade является древним и работает с SGML, который предшествует XML и не поддерживает Unicode; ему также не хватает поддержки docbook 5.

  • docbook-xsl stylesheets которые проходят через XSL-FO. docbook-xsl для docbook 4.5, docbook-xsl-ns для docbook5. Используйте fop для перехода с XSL-FO в PDF. Трубопровод: docbook5 - (xsl) → xml.fo - (fop) → pdf. Используемые команды: xsltproc, fop.

  • dblatex, который в основном нацелен на docbook4.5, но был обновлен для некоторых из docbook5.

xmlto может управлять двумя последними, хотя в настоящее время по умолчанию используется docbook-xsl, а не docbook-xsl-ns.


Краткое руководство пользователя Docbook5

Необходимые условия

sudo aptitude install docbook5 docbook-xsl-ns xsltproc fop xmlto libxml2-utils xmlstarlet

Проверка

xmlstarlet val --err --xsd /usr/share/xml/docbook/schema/xsd/5.0/docbook.xsd book.xml

Выход PDF

xsltproc /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/fo/docbook.xsl book.xml > book.fo
fop -fo book.fo -pdf book.pdf

Ответ 2

Помимо заголовка, который вы дали, попробовали ли вы меньший пример, например, этот DocBook 5.0: окончательное руководство?

<?xml version="1.0" encoding="UTF-8"?>

<book xmlns='http://docbook.org/ns/docbook'>
  <title>An Example Book</title>
  <titleabbrev>Example</titleabbrev>
  <info>
    <legalnotice><para>No notice is required.</para></legalnotice>
    <author><personname>
      <firstname>Norman</firstname><surname>Walsh</surname>
    </personname></author>
  </info>

  <dedication>
  <para>
      This book is dedicated to you.
  </para>
  </dedication>

  <preface>
    <title>Foreword</title>
    <para>
        Some content is always required.
    </para>
  </preface>

  <chapter>
    <title>A Chapter</title>
    <para>
        Content is required in chapters too.
    </para>
  </chapter>

  <appendix>
    <title>Optional Appendix</title>
    <para>
        Appendixes are optional.
    </para>
  </appendix>
</book>

Просто передал его в PDF через одну из моих сред Maven. Можете ли вы привести небольшой пример (или несколько отдельных столбцов), содержащих некоторый контент, что позволяет использовать все дополнительные пространства имен.

В случае, если приведенный выше пример не работает, и вас интересует, как я настроил свою среду, прочитайте Создание контента DocBook на сайте проекта Maven. Просто замените пример приведенным выше примером DocBook 5.0. Интересует только docbkx-maven-plugin по этому вопросу. (PS: Для этого необходимы некоторые базовые знания Java и Maven2.)

Ответ 3

Существуют значительные различия между Docbook 4.5 и 5.0. И эти различия могут помешать преобразованию вашего документа.

Если вы хотите проверить правильность вашего документа 5.0, вы можете использовать следующий инструмент командной строки:

  • это инструмент java, поэтому вам нужно иметь среду java runtime.

  • Инструмент - это Цзин. Вы можете скачать его с веб-сайта thaiopensource.: http://www.thaiopensource.com/relaxng/jing.html

  • вам также понадобится файл для обновления для docbook 5.0. Он предоставляется с распределением docbook 5.

  • запустите проверку проверки с помощью следующей командной строки:
    java -jar path_to_Jing/jing.jar -t -i path_to_docbook5/docbook.rng document.xml

Если есть некоторые сбои, их следует вернуть следующим образом: Ошибка в URL файле:...../document.xml, номер строки 211, номер столбца 59: неправильное значение для атрибута "id" из пространства имен " http://www.w3.org/XML/1998/namespace" Истекшее время 968 + 166 = 1134 миллисекунды

Ответ 4

Мытарь

Вы можете использовать Publican, чтобы опубликовать свой DocBook XML в форматах PDF, html и html-single. Publican используется Red Hat как часть его внутренней инструментальной привязки документации и представляет собой приложение с открытым исходным кодом, размещенное в проекте Fedora. Инструмент использует "бренды" для достижения модульности при применении стилей к публикуемому контенту. Этот предустановленный способ позволяет использовать широкий спектр инструментов CMS или документации.

Руководство по документации JBoss

Хорошим примером инструмента в действии является JBoss Press Gang documentation, который сам по себе является отличным ресурсом, дает рекомендации сообщества сообщества по использование DocBook XML в документации JBoss. Версии html и PDF были сгенерированы с помощью Publican.

Ответ 5

http://docbookpublishing.com поддерживает документы DocBook 5.0. Это онлайн-сервис для форматирования DocBook для PDF. Вы также можете отправить документы DocBook через API REST.

Ответ 6

Перейдите в Eclipse и установите DocBook Editing and Processing для плагина Eclipse (DEP4E). Вы можете найти его, зайдя на рынок и найдите там docbook. Этот плагин создаст пример docbook и может опубликовать в html, pdf и даже ebook.

Или просмотрите веб-сайт DEP4E, прочитайте Краткое руководство для начинающих раздел 3. Начало работы, чтобы получить представление об этом возможностях.