wkhtmltopdf:带有--toc-header-text属性的自定义TOC样式

时间:2017-02-06 17:24:52

标签: pdf xslt pdf-generation wkhtmltopdf tableofcontents

我正在使用wkhtmltopdf库生成带有选项的PDF文件

--toc-header-text TEXT --xsl-style-sheet config/wkhtmltopdf_toc.xsl

--toc-header-text值未插入到生成的目录中。

有没有办法将--toc-header-text变量的值插入自定义TOC样式表?

2 个答案:

答案 0 :(得分:0)

好的,这不是答案,但它正在解决方法

我为每个生成的pdf创建一个带有toc样式表的临时文件,用我的动态内容替换标题文本并将此文件传递给wkhtmltopdf

在Ruby中,它可以是:

toc_file = Tempfile.new
toc_content = File.
  read('config/wkhtmltopdf_toc.xsl').
  gsub(':index_title', title)
toc_file.write(toc_content)
toc_file.rewind

将文件路径传递给wkhtmltopdf - toc_file.path

生成pdf后销毁文件:

toc_file.close
toc_file.unlink

答案 1 :(得分:0)

使用XSLT magic根据第一个大纲项的名称(即TOC本身)定义变量。

我这样做:

<xsl:variable name="tocTitle" select="//outline:outline/outline:item[1]/@title" />
<xsl:template match="outline:outline">
    <html>
    <head>
        <title><xsl:value-of select="$tocTitle" /></title>
    ...
    </head>
    <body>
        <h1><xsl:value-of select="$tocTitle" /></h1>
        <ul><xsl:apply-templates select="outline:item/outline:item"/></ul>
    </body>
    </html>
...

这是痛苦的反复试验(我不是专家,很高兴有人纠正我)。我搞砸了https://www.freeformatter.com/xsl-transformer.html,直到它起作用为止。