wkhtmltopdf 目录对象使用 及 目录样式分享
最近又是更新了报告模板的样式新使用了目录对象 因为直接生成的目录样式比较丑所以这边使用的是自定义xsl
直接生成的目录样式
自定义样式
因为需求所以写了些特殊判断
<xsl:if test=""> 只能单条件判断
多条件要使用
<xsl:when> 相当于if
<xsl:otherwise 判断语句> 相当于 else if
<xsl:otherwise> 相当于 else
test 里面可以使用函数 这边只使用到了 contains 包含 前面加 ! 不好使 只能使用上面的 判断语句实现效果
需要使用其他函数的 搜一下 xlst 函数
这里分享下使用到的代码。
toc --xsl-style-sheet C:\Users\Administrator\Desktop\myself.xsl
这句是 生成目录 使用 指定位置的样式
<?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>目录</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> body{ padding:2% } h1 { color: #364063!important; margin: 2% 0%; padding:2% 0; font-size: 30px; font-family: calibri; } div {border-bottom: 1px dashed rgb(200,200,200); padding:2% 0%;} span {float: right;} li {list-style: none; color: #364063;} ul { font-size: 30px; font-family: calibri; color: #364063; } ul ul {font-size: 80%; } ul {padding-left: 0em;} ul ul {padding-left: 1em;} a {text-decoration:none; color: #364063;} </style> </head> <body> <h1 style="font-size:45px;">目录</h1> <ul><xsl:apply-templates select="outline:item/outline:item"/></ul> </body> </html> </xsl:template> <xsl:template match="outline:item"> <li> <xsl:if test="@title!='目录'"> <xsl:if test="@title!=''"> <div> <xsl:choose> <xsl:when test="contains(@title,' 异常')"> <a style="color: #FF8B07!important;"> <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> </xsl:when> <xsl:otherwise> <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> </xsl:otherwise> </xsl:choose> <span> <xsl:value-of select="@page - 4" /> </span> </div> </xsl:if> </xsl:if> <ul> <xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment> <xsl:apply-templates select="outline:item"/> </ul> </li> </xsl:template> </xsl:stylesheet>
这是文件内容可以拷贝直接使用 再根据需求调整
分享结束 感谢 !!
因为要生成页码 所以底下能看到 目录 1 目录 没研究出怎么让目录不生成知道的大佬告知下 谢谢。
xsl中 page - 4 是因为 wkhtmltopdf 生成的页码是正常的 但是 目录里面的指向 多了 目录的页数 所以 page - 目录页数
2023-01-12 17:39:24