在线用户指南加PDF下载

时间:2012-07-23 20:05:47

标签: php html5 xml

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

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

  • 生成包含可点击的TOC和首页的PDF文件
  • 每章/节生成符合HTML5标准的输出,但不包含HTML骨架
  • 为用户指南生成JSON TOC(章节/章节大纲)

我想用分发产品打包PDF文件。

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

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

让人们了解我的目标:

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

是否有Prince的免费替代方案:http://www.princexml.com/用于分页媒体CSS?

2 个答案:

答案 0 :(得分:0)

在花了很长时间阅读许多变化之后,我遇到了一个潜在的解决方案......

  1. 使用PHP创建一个非常简单的“静态”CMS,并为我的WYSIWYG编辑器创建http://aloha-editor.org。可能使用https://github.com/chillitom/CefSharp将编辑器直接嵌入到更相关的GUI中。

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

  3. “wkhtmltoxdoc”还会生成一个可以轻松转换为JSON的XML TOC。

  4. 我还在尝试“wkhtmltoxdoc”,但看起来还不错!除非当然有更简单的解决方案......

    <强>增加:

    似乎我的TOC文件需要是手动编写和自动生成的混合文件。 Eclipse TOC模式的某些内容就足够了,简单的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%2Forg_eclipse_help_toc.html

答案 1 :(得分:0)

经过大量的研究和实验,我决定使用DITA(达尔文信息打字架构)。对我而言,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>里面的内容。

我找不到任何好的WYSIWYG编辑器 XML Mind似乎是一个非常好的WYSIWYG编辑器,它也非常容易使用。我怀疑用Aloha编辑器(http://aloha-editor.org)创建一个基于网络的基本解决方案并不太难。

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

ADDED:经过一番搜索,我发现DITA-OT的另一个开源替代品名为“Ditac”,它似乎更容易使用并产生更好的输出。该工具由“XML Mind”的创建者创建。虽然该工具是基于命令行的,但使用“XML Mind”的人可以从功能丰富的GUI中受益:

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

注意:我之前的回答是因为它可能对其他人有用。