TOC是否可以与PDF的其余部分一起显示?

时间:2014-04-29 23:25:03

标签: xslt wkhtmltopdf

使用toc选项使用wkhtmltopdf创建目录时,是否可以将其与文档的其余部分一起显示?目前,我只能将它显示为其自己的页面而没有其他内容,但我希望它立即跟随我的文档的开头。我使用--xsl-style-sheet命令来设置toc的样式,我没有看到任何表明这是可能的事情。

只是想象一下,这就是我现在所拥有的:

1. Title ........ 1
2. Title 2 ...... 4
3. Title 3 ...... 5









-------------------------

1. Title

其中“------”表示分页符。而我所追求的是:

1. Title ........ 1
2. Title 2 ...... 4
3. Title 3 ...... 5


1. Title

用于生成此命令的命令:

./wkhtmltopdf 
    --footer-center '- [page] -' 
    --enable-javascript 
    --margin-top 40 
    --margin-bottom 20 
    --footer-spacing 10 
    --page-size Letter 
    --orientation portrait 
    --header-spacing 10 
    --header-html ./1398708303-header.html 
    cover ./1398708303-cover.html 
    toc 
        --xsl-style-sheet ./templates/pages/pdf/toc-style.xsl 
    ./1398708303-content.html 
    ./1398708303.pdf
显然,我模糊了网址。由于NDA和机密性协议,我无法提供用于生成HTML的文件,但即使是一个简单的HTML文件,也只是各种标题的列表,如上所述生成。

我目前正在运行来自http://wkhtmltopdf.org/downloads.html的Debian开发版。我还尝试了稳定版本以及各种其他版本,例如来自h4cc和pilotftzi的版本。正式版本是唯一似乎提供适当toc支持的人。

' - xsl-style-sheet'内容:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:outline="http://wkhtmltopdf.org/outline"
                xmlns="http://www.w3.org/1999/xhtml">
    <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
                doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
                indent="yes" />
    <xsl:template match="outline:outline">
        <html>
            <head>
                <title>Table of Contents</title>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <style type="text/css">
                    #header, #header h1 {
                        text-align:left;
                        font-size:24px;
                        font-weight: bold;
                        font-family:arial;
                        margin-bottom: 5px;
                    }

                    #header {
                        display: inline;
                    }

                    #header h1 {
                        display: inline;
                    }

                    ol li {
                        font-size: 16px;
                        font-weight: normal;
                    }

                    ol {
                        max-width: 100%;
                        overflow-x: hidden;
                        list-style: upper-roman;
                    }

                    ol li ol {
                        list-style: upper-alpha;
                    }


                    .title {
                        background: #fff;
                        padding-right: 5px;
                    }

                    .page {
                        background: #fff;
                        padding: 0 0 0 5px;
                        position: absolute;
                        right: 0;
                    }

                    li:before {
                        float: left;
                        width: 0;
                        white-space: nowrap;
                        content:
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                            ". . . . . . . . . . . . . . . . . . . . "
                    }

                    li, ol {
                        padding-top: 0 !important;
                        padding-bottom: 0 !important;
                        margin-top: 0 !important;
                        margin-bottom: 0 !important;
                    }

                    ol > li > ol {
                        padding-left: 20px !important;
                    }

                    a {
                        color: #000;
                        text-decoration: none;
                    }
                </style>
            </head>
            <body>
                <div id="header">I. <h1>Table of Contents</h1></div>
                <div class="table-of-contents-container">
                    <ol><xsl:apply-templates select="outline:item/outline:item"/></ol>
                </div>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="outline:item">
        <li>
            <xsl:if test="@title!=''">
                <span class="title">
                    <a>
                        <xsl:if test="@link">
                            <xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
                        </xsl:if>
                        <xsl:if test="@backLink">
                            <xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
                        </xsl:if>
                        <xsl:value-of select="@title" />
                    </a>
                </span>
                <span class="page"><xsl:value-of select="@page" /> </span>
            </xsl:if>
            <ol>
                <xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment>
                <xsl:apply-templates select="outline:item"/>
            </ol>
        </li>
    </xsl:template>
</xsl:stylesheet>

0 个答案:

没有答案