在线用户指南加PDF下载


Online user guide plus PDF download

目前,我正在使用Microsoft Word 2003管理我的用户指南,并将其转换为PDF文件,该文件可以从网站下载,产品安装程序还包括该文件。

我想转向一种实现以下目标的机制:

  • 生成具有可点击目录和首页的PDF文件
  • 按章节生成符合HTML5的输出,但不包含HTML框架
  • 为用户指南生成JSON TOC(章节大纲)

我想将PDF文件与分布式产品打包。

我想创建一些简单的PHP脚本,用上下文敏感的TOC(显示当前章节的部分)生成HTML页面,并显示相关文档。

我对开发PHP脚本来实现这一点没有任何问题,但我想知道如何生成上述输出。我更希望使用现成的GUI键入文档。我很乐意编写XSLT2样式表来执行任何必要的转换。

让人们了解我的目标:

  • 当前PDF手册:http://rotorz.com/tilesystem/user-guide.pdf

  • API文档使用自定义XSLT2样式表生成为一组"不完整"的HTML文件,带有JSON TOC,然后由PHP组合在一起:http://rotorz.com/tilesystem/api

当您浏览我的API文档时,您会注意到左侧的TOC是上下文敏感的。我希望我的用户指南以类似的方式工作。

有没有免费的王子替代品:http://www.princexml.com/用于分页媒体CSS?

在花了相当长的时间阅读了许多变体之后,我发现了一个潜在的解决方案。。。

  1. 使用PHP和http://aloha-editor.org我的所见即所得编辑器。可能使用https://github.com/chillitom/CefSharp将编辑器直接嵌入到更相关的GUI中。

  2. 使用带有自定义封面、页眉和页脚.html文件的"wkhtmltoxdoc"将HTML5页面转换为PDF。Plus会自动生成一个TOC页面。

  3. "wkhtmltoxdoc"还生成一个XML TOC,该TOC可以很容易地转换为JSON。

我还在试验"wkhtmltoxdoc",但它看起来很好!当然,除非有一个更简单的解决方案。。。

添加:

我的TOC文件似乎需要手动编写和自动生成的混合体。类似EclipseTOC模式的东西就足够了,一个简单的XSLT样式表可以通过获取H1-6标签并添加哈希链接的唯一标识符来自动填充空白。

因此,这个TOC可以由XSLT2样式表使用,然后最终转换为JSON供PHP脚本使用。

我现有文档的模型摘录:

<?xml version="1.0" encoding="UTF-8"?>
<toc>
    <topic label="Introduction" href="introduction.html"/>
    <topic label="Getting Started">
        <topic label="Installation" href="getting-started/installation.html"/>
        <topic label="User Interface" href="getting-started/ui/index.html">
            <topic label="Menu Commands" href="getting-started/ui/menu-commands.html"/>
            <topic label="Tile System Panel" href="getting-started/ui/tile-system-panel.html"/>
            <topic label="Brush Designer" href="getting-started/ui/brush-designer.html"/>
        </topic>
        <topic label="User Preferences" href="getting-started/user-preferences.html"/>
    </topic>
    <topic label="Creating a Tile System" href="creating-a-tile-system">
        <!-- ... -->
    </topic>
</toc>

参考Eclipse文档:http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fextension-points%2Org_eclipse_help_toc.html

经过大量的研究和实验,我决定使用DITA(Darwin信息类型体系结构)。对我来说,DITA最棒的地方在于它是基于主题的,这使得文档模块化和可重用。

DITA模式相对简单,好的XML编辑器提供了对可用元素和属性的有用见解。

DITA文档可以使用DITAMAP进行组合。例如,一个人可能会选择分发一份包含最少信息的"快速入门指南",而一份完整的"用户指南"将包含更多细节。美妙之处在于,两个文档都可以重用相同的信息;此外,文档可以输出为多种交付格式:

  • XHTML(单个文件或分块)
  • PDF
  • Docbook

使用DITA Open Toolkit(又名DITA-OT)可以轻松地处理将输出转换为交付格式的过程。此工具包可从以下位置获得:http://dita-ot.sourceforge.net其仅通过提取所提供的档案来安装。该工具包可以通过运行startcmd.bat(在Windows上)或startcmd.sh(类Unix系统)轻松访问。

自定义和品牌化PDF输出不是一项容易的任务。自定义XHTML输出要容易得多,但仍然需要了解XSL转换。可以通过创建插件并将其放置在DITA-OT的plugins文件夹中进行自定义。我想强调的一件事是,一旦进行了定制,您必须调用ant -f integrator.xml,更改才会变得明显。缺乏这些知识给我造成了很多困惑!

生成的XHTML文件非常简单(非常棒!),因为这使它们易于自定义。不过,添加HTML5 DOCTYPE并不是那么容易;但出于我的目的,这并不重要,因为我的PHP脚本只关心<body>内部的内容。

我一直找不到任何好的所见即所得编辑器XMLMind似乎是一个非常好的所所得编辑器,也非常容易使用。我怀疑使用Aloha Editor之类的东西创建一个基于web的基本解决方案不会太难(http://aloha-editor.org)。

虽然定制PDF输出似乎很困难,但将所有文档生成为一个XHTML页面似乎很容易,然后可以使用CSS对其进行格式化,最后使用wkhtmltopdf进行转换。我还没有决定我的解决方案,但至少对于那些无法(或没有时间)定制DITA-OT的XSL:FO样式表的人来说,这是一个可行的选择。

添加:经过一番搜索,我发现DITA-OT还有另一种开源替代方案,名为"Ditac",它似乎更容易使用,并产生更好的输出。该工具由"XMLMind"的创建者创建。虽然该工具是基于命令行的,但那些使用"XMLMind"的人可以从功能丰富的GUI中受益:

http://www.xmlmind.com/ditac/

注意:我留下了之前的答案,因为它可能对其他人有用