19

我写了一个带有标题的 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 用于具有正常标题的 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?

4

7 回答 7

35

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

  • 玉,它提供了询问者使用的 docbook2pdf 命令。玉是古老的,与 SGML 一起工作,早于 XML,不支持 Unicode;它也缺乏对 docbook 5 的支持。

  • 通过 XSL-FO的docbook-xsl 样式表。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
于 2011-01-18T20:35:31.343 回答
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。您能否举一个包含某些内容的小示例(或几个单独的示例),这使得使用所有必要的附加名称空间。

如果上面的示例不起作用,并且您对我如何设置环境感兴趣,请阅读让 DocBook 内容在 Maven 项目站点中可用。只需将示例替换为上述 DocBook 5.0 示例即可。关于这个问题,只有docbkx-maven-plugin是有趣的。(PS:这需要一些Java和Maven2的基础知识。)

于 2010-04-15T06:14:20.953 回答
2

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

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

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

  2. 工具是精。您可以从 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

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

于 2010-04-16T06:52:11.897 回答
2

公众号

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

JBoss 文档指南

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

于 2011-12-07T00:51:09.553 回答
1

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

于 2011-05-15T19:24:51.697 回答
1

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

或者查看DEP4E 网站,阅读快速入门指南3 部分。入门,了解它的可能性。

于 2014-01-30T13:54:13.237 回答
0

wordpress 发布到 docbook 风格的帖子: http ://hashfold.com/techfold/wordpress-how-to-generate-docbook-style-posts/

于 2012-01-02T20:47:57.547 回答