如何从docbook 5.0生成pdf

时间:2010-04-10 21:13:16

标签: linux pdf ubuntu docbook docbook-5

我写了一个带有标题的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">
Ubuntu 9.10上的

和docbook2pdf会打印许多错误消息,并且不会执行任何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 for 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">

工作得很好。

有没有办法从docbook 5.0生成pdf?

7 个答案:

答案 0 :(得分:32)

我看到三个选项(在Debian / Ubuntu中可用)从docbook生成pdf:

  • jade,它提供了asker使用的docbook2pdf命令。 jade很古老,可以使用SGML,它早于XML,不支持Unicode;它也缺乏对docbook 5的支持。

  • 通过XSL-FO的docbook-xsl stylesheets。 docbook-xsl适用于docbook 4.5,docbook-xsl-ns适用于docbook5。使用fop从XSL-FO转到PDF。管道:docbook5 - (xsl) - &gt; xml.fo - (fop) - &gt; 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

答案 1 :(得分:4)

除了您提供的标题之外,您是否尝试了一个较小的示例,例如DocBook 5.0: The Definitive Guide中的这个示例?

<?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>

通过我的一个Maven环境将其渲染为PDF。你能给出一个包含一些内容的小例子(或几个单独的onces),这样就可以使用所有额外的名字空间。

如果以上示例不起作用,并且您对如何设置我的环境感兴趣,请阅读Making DocBook content available in a Maven project site。只需用上面的DocBook 5.0示例替换该示例。对于这个问题,只有docbkx-maven-plugin是有意义的。 (PS:这需要Java和Maven2的一些基本知识。)

答案 2 :(得分:2)

Docbook 4.5和5.0之间存在显着差异。这些差异可能会阻止您的文档被转换。

如果要检查5.0文档的有效性,可以使用以下命令行工具:

  1. 这是一个java工具,所以你需要有一个最近的java运行时环境。

  2. 这个工具是Jing。您可以从thaiopensource网站下载: http://www.thaiopensource.com/relaxng/jing.html

  3. 您还需要docbook 5.0的relax ng文件。它随docbook 5发行版一起提供。

  4. 使用以下命令行运行验证测试:
    java -jar path_to_Jing / jing.jar -t -i path_to_docbook5 / docbook.rng document.xml

  5. 如果有一些失败,它们应该以这种方式返回:URL“file:..... / document.xml”,行号211,列号59:来自命名空间的属性“id”的错误值“http://www.w3.org/XML/1998/namespace” 经过时间968 + 166 = 1134毫秒

答案 3 :(得分:2)

税吏

您可以使用Publican以PDF,html和html单格式发布DocBook XML。 Redan将Publican用作其内部文档工具链的一部分,并且是由Fedora项目托管的开源应用程序。该工具使用“品牌”来实现将样式应用于正在发布的内容的模块化。这种预设方式可以模拟各种CMS或文档工具。

JBoss文档指南

该工具的一个很好的例子是JBoss Press Gang documentation,它本身就是一个很好的资源,它提供了有关在JBoss文档中使用DocBook XML的文档社区指南。 html和PDF版本是使用Publican生成的。

答案 4 :(得分:1)

http://docbookpublishing.com支持DocBook 5.0文档。它是DocBook到PDF格式的在线服务。您还可以通过REST API提交DocBook文档。

答案 5 :(得分:1)

转到Eclipse并安装DocBook Editing and Processing for Eclipse (DEP4E) plugin。您可以通过进入市场并在那里搜索docbook来找到它。这个插件将创建一个示例docbook,并可以发布html,pdf,甚至电子书。

或查看DEP4E web site,阅读Quick Starter Guide部分 3。入门,了解它的可能性。

答案 6 :(得分:0)

相关问题