- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 XSL-FO 生成一些 PDF 文档,并且有一些可以跨越多个页面的表格。在这些情况下,我想要做的是在每个新页面的开头重复表格的标题,并在除第一个页面之外的所有页面上添加“(续)”标签。
我的 XSL 代码:
<xsl:template name="Tooling">
<fo:table xsl:use-attribute-sets="tableDefaultLayout">
<fo:table-column column-width="37mm" />
<fo:table-column column-width="37mm" />
<fo:table-column column-width="74mm" />
<fo:table-column column-width="37mm" />
<fo:table-header xsl:use-attribute-sets="categoryDefaultFont">
<fo:table-row height="7.7mm" border="0pt solid black" display-align="before" text-align="start">
<fo:table-cell number-columns-spanned="4" font-size="12pt">
<fo:block margin-top="3mm">
<fo:retrieve-table-marker retrieve-class-name="continued"
retrieve-position-within-table="first-starting"
retrieve-boundary-within-table="table-fragment"/>
 
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row xsl:use-attribute-sets="defaultBodyRow" height="4.7mm" border="0pt solid black">
<fo:table-cell>
<fo:block>
<xsl:text>Item No.</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Part No.</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Description</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Qty Reqd</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body xsl:use-attribute-sets="valueDefaultFont" font-size="8pt">
<xsl:for-each select="1 to 50">
<fo:table-row xsl:use-attribute-sets="defaultBodyRow" border="0pt solid black">
<fo:table-cell>
<fo:block>
<xsl:choose>
<xsl:when test="position()=1">
<fo:marker marker-class-name="continued">
<xsl:text>TOOLING:-</xsl:text>
</fo:marker>
</xsl:when>
<xsl:otherwise>
<fo:marker marker-class-name="continued">
<xsl:text>TOOLING: (continued)</xsl:text>
</fo:marker>
</xsl:otherwise>
</xsl:choose>
<xsl:text>G3@ITEMSEQ</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTNO</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTDESC</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTQTY</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>
生成的 FO :
<fo:table border-bottom="0.5pt solid black" border-collapse="collapse" border-left="1pt solid black" border-right="1pt solid black" border-top="0.5pt solid black" margin="0mm" padding="0mm" table-layout="fixed" width="100%">
<fo:table-column column-width="37mm"/>
<fo:table-column column-width="37mm"/>
<fo:table-column column-width="74mm"/>
<fo:table-column column-width="37mm"/>
<fo:table-header font-family="sans-serif" font-size="10pt" font-weight="bold">
<fo:table-row border="0pt solid black" display-align="before" height="7.7mm" text-align="start">
<fo:table-cell font-size="12pt" number-columns-spanned="4">
<fo:block margin-top="3mm">
<fo:retrieve-table-marker retrieve-boundary-within-table="table-fragment" retrieve-class-name="continued" retrieve-position-within-table="first-starting"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row border="0pt solid black" display-align="center" height="4.7mm" keep-together.within-page="always" text-align="center">
<fo:table-cell>
<fo:block>Item No.</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Part No.</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Description</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Qty Reqd</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body font-family="monospace" font-size="8pt" font-weight="normal">
<fo:table-row border="0pt solid black" display-align="center" height="7.74mm" keep-together.within-page="always" text-align="center">
<fo:table-cell>
<fo:block>
<fo:marker marker-class-name="continued">TOOLING:-</fo:marker>G3@ITEMSEQ</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTNO</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTDESC</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTQTY</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row border="0pt solid black" display-align="center" height="7.74mm" keep-together.within-page="always" text-align="center">
<fo:table-cell>
<fo:block>
<fo:marker marker-class-name="continued">TOOLING: (continued)</fo:marker>G3@ITEMSEQ</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTNO</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTDESC</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>G3@PARTQTY</fo:block>
</fo:table-cell>
</fo:table-row>
然后继续 50 行:如您所见,第一行有一个标记“TOOLING:-”,所有其他行都有一个标记“TOOLING:(续)”,这就是我想要的。
我的问题是我似乎无法使 fo:retrieve-table-marker 对象正常工作:我尝试了与“retrieve-position”和“retrieve-boundary”属性的多种组合,但每次我的标题第一行始终为空白,无论是在第一页还是在其他页面上。
如果有人可以向我解释我对这些“fo:retrieve-table-marker”和“fo:marker”对象做错了什么,那将是一个真正的帮助,我一直在努力解决这个问题已经几天了。
最佳答案
您已设置table-omit-header-at-break="true"
。由于标记只能在表头中使用,因此如果您不要求显示表头,则不会出现继续。否则,您的其余代码是正确的。
因此我将更正您的 XSLT 代码,如下所示:
首先,删除 <xsl:attribute name="table-omit-header-at-break">true</xsl:attribute>
可以在样式表的其他位置找到,在 <xsl:attribute-set name="tableDefaultLayout">
内定义。
然后像这样修改你的模板:
<xsl:template name="Tooling">
<fo:table xsl:use-attribute-sets="tableDefaultLayout">
<fo:table-column column-width="37mm" />
<fo:table-column column-width="37mm" />
<fo:table-column column-width="74mm" />
<fo:table-column column-width="37mm" />
<fo:table-header xsl:use-attribute-sets="categoryDefaultFont">
<fo:table-row height="7.7mm" border="0pt solid black" display-align="before" text-align="start">
<fo:table-cell number-columns-spanned="4" font-size="12pt">
<fo:block margin-top="3mm">
<fo:retrieve-table-marker retrieve-class-name="continued"
retrieve-position-within-table="first-starting"
retrieve-boundary-within-table="table-fragment"/>
 
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body xsl:use-attribute-sets="valueDefaultFont" font-size="8pt">
<fo:table-row xsl:use-attribute-sets="defaultBodyRow" height="4.7mm" border="0pt solid black">
<fo:table-cell>
<fo:block>
<xsl:text>Item No.</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Part No.</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Description</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Qty Reqd</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:for-each select="1 to 50">
<fo:table-row xsl:use-attribute-sets="defaultBodyRow" border="0pt solid black">
<fo:table-cell>
<fo:block>
<xsl:choose>
<xsl:when test="position()=1">
<fo:marker marker-class-name="continued">
<xsl:text>TOOLING:-</xsl:text>
</fo:marker>
</xsl:when>
<xsl:otherwise>
<fo:marker marker-class-name="continued">
<xsl:text>TOOLING: (continued)</xsl:text>
</fo:marker>
</xsl:otherwise>
</xsl:choose>
<xsl:text>G3@ITEMSEQ</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTNO</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTDESC</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>G3@PARTQTY</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>
关于XSL-FO 连续表头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469958/
我有一个 XML 输入文件,可以说 shipnote.xml其中包含一个零件项目列表。部分项目具有通常的属性 qty , partno和 label .每个项目都分配给一个 packetno . 我写
我们客户的要求是提供带圆角的 PDF 表格。我只有 Apache FOP 处理器可供我使用,它不支持圆角属性。它也不支持 float ,因此无法向左和向右 float 圆形图像。 你对如何做到这一点有
我的 FO 流程有问题,因为在一页上,标题显示在一页的末尾并在之后的页面上继续。如何向 title-element 添加属性,以便标题始终显示在同一页面上,这意味着:没有分页符。 谢谢! /丹尼 最佳
我希望 column-count="2"只出现在页面的某些部分。 ]>
我正在为我的 XML 内容生成 xsl-fo 文档,然后将此内容传递给将生成 PDF 的第三方 DLL 之一。我需要以 45 度角显示测试。如何实现这一目标? 谢谢 最佳答案 我很确定您不能在纯 XS
在我的情况下,我必须在两个表格行之间提供高达 0.5cm 的空间。我怎样才能做到这一点。 代码:: 我用过了:
我正在从我的 xsl 和 xml 文件生成一个 pdf,其中我需要在第一页的末尾显示一个表格。但是由于该表格上方还有一些表格,将其显示为静态文本会将其向下推到第 2 页(或第 3 页,依此类推)。所以
我正在从 xml 和 xsl-fo 以及 Apache FOP 创建一个 pdf 文件,我需要在一行上写文本。我的意思是类似于手工编辑的表格,你可以在其中写上名字、姓氏等。是这样的:姓名:______
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我的 XSL 页面主代码看起来像这样......
我有一些很长的表格,它们跨越多个页面,用 Apache-FOP 1.1 呈现 表格有标题,例如“表 7.6. 事物的详细信息”和列标题。 在每个连续页面上,列标题在顶部正确重复。但我还需要让表格延续也
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
我创建了一个 XSL-FO 模板,它打印了一些包含动态变化的文本的块。有时一个块被分成两页,因为页面上没有足够的空间。有没有办法将块放在下一页而不是在不适合的情况下将其拆分到页面上?我试图将它放入一个
我有一个非常简单的模板: 我如何告诉DO即使块为空也要保留空行。 最佳答案 只需在的末尾添加一个元素。像这样:
我有一个 fo:block 可能跨越一个页面。我想在该 block 所在的第一页的底部放置一些文本,例如“继续”。 源文档在 标记内有一系列 。 我认为做到这一点的唯一方法是在源文档的正确位置添加下一
我为 sp_sign 获得的值(如下所示)我想将其用作 fo:external graphics 的 src 。我尝试了很多事情仍然没有运气请帮助。 // 提前致谢 问候,
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在以这种方式在 XSL FO 文档中创建背景文本: Background Watermark Text
我有一个 .xml 文件,我想生成一个 .pdf 文件。我使用 xsl-fo 来实现这一点。 问题是我无法请求当前页面的编号以将其存储到变量中,而是根据其值做出不同的事情。 具体:如果当前页面是0模3
我是一名优秀的程序员,十分优秀!