首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在xsl-fo中,如何在除最后一列之外的每一页的最后一列添加固定文本?

在xsl-fo中,可以通过使用表格布局和条件格式化来实现在除最后一列之外的每一页的最后一列添加固定文本。

首先,需要创建一个表格,并定义列数和行数。然后,在表格中添加需要显示的内容。

接下来,使用条件格式化来确定在哪些列上添加固定文本。条件格式化可以通过使用xsl:when和xsl:otherwise语句来实现。

例如,假设我们有一个包含3列的表格,我们想在第1列和第2列的每一页的最后一列添加固定文本。我们可以使用以下代码:

代码语言:txt
复制
<fo:table>
  <fo:table-column column-number="1"/>
  <fo:table-column column-number="2"/>
  <fo:table-column column-number="3"/>
  
  <!-- 添加表头 -->
  <fo:table-header>
    <fo:table-row>
      <fo:table-cell>Column 1</fo:table-cell>
      <fo:table-cell>Column 2</fo:table-cell>
      <fo:table-cell>Column 3</fo:table-cell>
    </fo:table-row>
  </fo:table-header>
  
  <!-- 添加表体 -->
  <fo:table-body>
    <fo:table-row>
      <fo:table-cell>Content 1</fo:table-cell>
      <fo:table-cell>Content 2</fo:table-cell>
      <fo:table-cell>Content 3</fo:table-cell>
    </fo:table-row>
    <!-- 添加更多行... -->
  </fo:table-body>
  
  <!-- 添加条件格式化 -->
  <xsl:template match="fo:table-cell">
    <xsl:choose>
      <!-- 在第1列的每一页的最后一列添加固定文本 -->
      <xsl:when test="position() = 1 and not(position() = last())">
        <fo:table-cell>
          <xsl:apply-templates/>
          <fo:block>Fixed Text 1</fo:block>
        </fo:table-cell>
      </xsl:when>
      <!-- 在第2列的每一页的最后一列添加固定文本 -->
      <xsl:when test="position() = 2 and not(position() = last())">
        <fo:table-cell>
          <xsl:apply-templates/>
          <fo:block>Fixed Text 2</fo:block>
        </fo:table-cell>
      </xsl:when>
      <!-- 其他情况保持原样 -->
      <xsl:otherwise>
        <xsl:copy-of select="."/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
</fo:table>

在上述代码中,我们使用了xsl:choose和xsl:when语句来判断当前列的位置,并根据条件在最后一列添加固定文本。注意,我们使用了position()函数来获取当前列的位置,last()函数来获取最后一列的位置。

这样,就可以在除最后一列之外的每一页的最后一列添加固定文本。

关于xsl-fo的更多信息和详细用法,请参考腾讯云的XSL-FO产品介绍页面:XSL-FO产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

独家 | 手把手教你如何用Python从PDF文件中导出数据(附链接)

你将很大可能地需要使用Google和Stack Overflow两个查询工具来弄清楚如何在这篇贴子的涵盖内容之外有效地使用PDFMiner。 提取所有文本 有时你会想要提取PDF文件中的所有文本。...最后,我们创建一个PDF解释器对象,携带着我们的资源管理器和转换器对象,来提取文本。 最后一步是打开PDF文件并且循环遍历每一页。...那么,让我们改写代码以便它提取文本呈分页的格式。这将允许我们在检查文本时,一次一页地进行: ? 在这个例子中,我们创建了一个生成器函数按页生成(yield)了文本。...不管怎样,一旦文件被分析,我们只要打印出每一页的文本即可。 我非常喜欢slate,它用起来更简单。不幸的是,这个包也几乎没有什么相关文档。在浏览过它的源码之后,它看起来只支持纯文本提取。...Pages键对应一个空的表单。接着,我们循环遍历PDF的每一页并且提取每一页的前100个字符。然后创建一个字典变量以页号作为键100个字符作为值并将其添加到顶层的页表单中。

5.4K30

Excel表格中最经典的36个小技巧,全在这儿了

技巧3、打印标题行 如果想在打印时每一页都显示标题,页面布局 - 打印标题 - 首端标题行:选取要显示的行 ?...技巧10、单元格中输入00001 如果在单元格中输入以0开头的数字,可以输入前把格式设置成文本格式,如果想固定位数(如5位)不足用0补齐,可以: 选取该区域,右键 - 设置单元格格式 - 数字 - 自定义...2 引用单元格的内容法。如果销售员在单元格B4:B8区域里,在“来源”后输入或点框最后的折叠按钮选这个区域。如下图所示。 ? 进行如上设置后,我们就可以在销售员一列看到下拉菜单了。...你试着在黄色之外的区域修改或插入行/列,就会弹出如下图所示的提示。 ? 技巧29、文字跨列居中显示 如果你不想合并单元格,又想让文字跨列显示。...技巧34、快速调整最适合列宽 选取多行或多行,双击其中一列的边线,你会发现所有行或列调整为最适合的列宽/行高。 ? 技巧35、快速复制公式 双击单元格右下角,你会发现公式已复制到表格的最后面。 ?

8.1K21
  • Linux三剑客命令之Grep

    -A #除了显示符合范本样式的那一行之外,并显示该行之后的内容 -b #在显示符合范本样式的那一行之外,并显示该行之前的内容 -B #除了显示符合样式的那一行之外,并显示该行之前的内容 -c...#计算符合范本样式的列数 -C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容 -d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作 -e #...,格式为每一列的范本样式 -F #将范本样式视为固定字符串的列表 -G #将范本样式视为普通的表示法来使用 -h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称 -H #在显示符合范本样式的那一列之前...: grep "file" file_1 file_2 file_3 2、输出除之外的所有行 -v 选项: grep -v "file" file_name 3、标记匹配颜色 --color=auto...... 10、grep递归搜索文件 在多级目录中对文本进行递归搜索: grep "text" .

    78310

    如何使用Selenium Python爬取多个分页的动态表格并进行数据整合和分析

    正文 Selenium Python简介 Selenium是一个开源的自动化测试框架,它可以模拟用户在浏览器中的操作,如点击、输入、滚动等,从而实现对网页的自动化测试或爬取。...我们需要用Selenium Python提供的各种操作方法,如click、send_keys等,来模拟用户在表格中翻页,并用BeautifulSoup等库来解析表格数据,并存储到列表或字典中。...在爬取过程中,可能会遇到各种异常情况和错误,如网络中断、页面跳转、元素丢失等,我们需要用Selenium Python提供的异常处理方法来捕获和处理这些异常,并设置重试机制和日志记录。...rows = soup.find_all('tr') # 遍历每一行数据 for row in rows: # 提取每一行数据中的每一列数据...len(cols) > 0: # 获取每一列数据的文本 name = cols[0].text position

    1.7K40

    每天学一个 Linux 命令(5):grep

    -b #在显示符合范本样式的那一行之外,并显示该行之前的内容 -B #除了显示符合样式的那一行之外,并显示该行之前的内容 -c #计算符合范本样式的列数 -C #除了显示符合范本样式的那一列之外...,意味着使用能使用扩展正则表达式 -f #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式 -F #将范本样式视为固定字符串的列表 -G #将范本样式视为普通的表示法来使用...-h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称 -H #在显示符合范本样式的那一列之前,标示该列的文件名称 -i #忽略字符大小写的差别 -l #列出文件内容符合指定的范本样式的文件名称...正则表达式 ^ #匹配以XX开头的行 $ #匹配以XX结尾的行 常用实例 1、在多个文件中查找: grep "file" file_1 file_2 file_3 2、输出除之外的所有行 -..." -n file_1 file_2 9、搜索多个文件并查找匹配文本在哪些文件中: grep -l "text" file1 file2 file3... 10、grep递归搜索文件 在多级目录中对文本进行递归搜索

    82710

    VI基本的工作模式

    0 :光标移动至行首 h :光标左移一格 l :光标右移一格 j :光标下移一行 k :光标上移一行 $+A :将光标移动到该行最后 PageDn :向下移动一页...PageUp :向上移动一页 d+方向键 :删除文字 dd :删除整行 pp :整行复制 r :修改光标所在的字符 S :删除光标所在的列,并进入输入模式...0x03:文本输入模式(Input Mode) 在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。...a :在光标后开始插入 A :在行尾开始插入 i :从光标所在位置前面开始插入 I :从光标所在列的第一个非空白字元前面开始插入 o :在光标所在列下新增一列并进入输入模式...例如在每一行前都插入"() ": 1)光标定位到要操作的地方 2)CTRL+v 进入“可视 块”模式,选取这一列操作多少行 3)SHIFT+i或者I(大写字母i) 输入要插入的内容 4)ESC 按两次,

    86420

    MySQL数据库规约.

    3、在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可。...order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。 正例: where a=? and b=?...说明: 如果一本书需要知道第 11 章是什么标题,会翻开第 11 章对应的那一页吗?目录浏览一下就好,这个目录就是起到覆盖索引的作用。...2、count(distinct col) 计算该列除 NULL 之外的不重复行数, 注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,...正例: 可以使用如下方式来避免 sum 的 NPE 问题: SELECT IF(ISNULL(SUM(g)),0,SUM(g)) FROM table; 4、在代码中写分页查询逻辑时,若 count 为

    1.4K50

    Vim 快速入门

    本文大约 5000 字, 阅读大约需要 10 分钟 在 Linux 下最常使用的文本编辑器就是 vi 或者 vim 了,如果能很好掌握这个编辑器,非常有利于我们更好的在 Linux 下面进行编程开发。...vim 和 vi Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。...输入模式 在命令模式并不能编辑文件,需要输入如『i, I, o, O, a, A, r,R』等任何一个字母之后才会进入输入模式(也称为编辑模式)。注意了!...在 vi 中設定一下行號; 6. 移動到第 43 列,向右移動 59 個字元,請問你看到的小括號內是哪個文字? 7. 移動到第一列,並且向下搜尋一下『 gzip 』這個字串,請問他在第幾列? 8....我要複製 66 到 71 這 6 列的內容(含有MANDB_MAP),並且貼到最後一列之後; 11. 113 到 128 列之間的開頭為 # 符號的註解資料我不要了,要如何刪除? 12.

    1.2K20

    探索AES加解密算法:原理、应用与安全性解析

    每轮操作包括字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)和添加轮密钥(AddRoundKey)四个步骤。...不同行的移动距离不同,这有助于在加密过程中进一步扩散数据。 列混合(MixColumns)(除最后一轮外):在这一步中,算法使用一个固定的矩阵与数据块的每一列进行矩阵乘法运算。...这个操作进一步混淆了数据,并增强了加密过程的非线性性。然而,在最后一轮加密中省略了这一步,以简化解密过程。 轮密钥加(AddRoundKey):在这一步中,算法将当前轮次的轮密钥与数据块进行异或运算。...它首先使用与加密过程相同的密钥扩展算法生成轮密钥。然后,从最后一轮开始逆向执行解密操作,包括逆行移位、逆字节替换、逆列混合(除第一轮外)和轮密钥加等步骤。最终,解密过程输出原始的明文数据。...在实际应用中,建议使用更安全的模式,如CBC或GCM。 Base64编码仅用于将二进制数据转换为可打印的ASCII字符。它不是加密方法,只是编码方式。

    2.9K10

    Shell三大利器之grep

    -C或- 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。...-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 -f 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。...-F 将范本样式视为固定字符串的列表。 -G 将范本样式视为普通的表示法来使用。 -h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。...grep 命令常见用法 -------------- 在文件中搜索一个单词,命令会返回一个包含str 的文本行: grep str file_name grep "str" file_name 在多个文件中查找...输出除之外的所有行 -v选项: grep -v "str" file_name 标记匹配颜色 --color=auto 选项: grep "str" file_name --color=auto 使用正则表达式

    1.2K00

    如何在矩阵的行上显示“其他”【4】看得见与看不见,看上去看不见但还是能看得见,看上去看不见也真的看不见

    按照惯例,先上链接: 往期推荐 如何在矩阵的行上显示“其他”【1】 如何在矩阵的行上显示“其他”【2】 如何在矩阵的行上显示“其他”【3】切片器动态筛选的猫腻 引子 正常情况下,我们所见的表或者矩阵...然而Power BI的表和矩阵在显示的时候,默认会将文本前后的空格忽略掉,也就是上图所展示的,呈现效果完全一样。...正文开始 上一篇文章中我们已经实现了这个效果: 当年度切片器变换筛选时,子类别中显示的种类和顺序是不相同的,但不变的是: ①others永远显示在最后一行 ②显示的10个子类别按照sales或sales...2016-2019年,我们可以在不同的年份对应的子类别上分别加上不同数量的空格,这样,在[子类别3]这一列中,就不会有重复值了,也就是说在对[子类别3]进行“按列排序”选择[sales.oneyear.rankx2...原本这个问题可以使用度量值来解决,但是度量值要实现的必要条件是在矩阵上额外添加一列排序: (来源:阿伟,固定城市分组配色。报告非常棒,值得学习。

    1.6K30

    技术阅读-《MySQL 必知必会》

    将把一个表想成一个网格,网格里每一列存储数据都是属于该字段下的,每列相互独立。 每列都有对应的数据类型,就是说每个字段都有数据类型限制,这个类型能帮助我们排序数据和检索数据。...,返回一列的最小值/最大值 SUM 函数,返回一列的最大值 聚集不同值 ALL 返回所有行数,默认行为 DISTINCT 只返回包含不同的值 组合聚集函数 在一个查询语句允许采用多个函数。...除此之外,处理聚集计算语句之外,SELECT语句中的每个列都必须在GROUP BY语 句中给出,否则会报错。...一般新建时在表名前添加 IF NOT EXISTS 。...针对查询出的行数据的位置进行存储,用于浏览指定的行数据,类似下一页效果。

    4.6K20

    Axure交互大全:Axure全交互模板及视频教程

    2.3 设置文本设置文本最常见的就是设置文本=输入框的内容,或者是设置显示文字的样式;除此之外也会用到一些函数,例如时间、日期、角度等等。...旋转的方向——顺时针或者逆时针旋转的角度——按需填写,如果需一直旋转可以填写大一点的角度,如36000000就是10万圈锚点——至旋转的中心点,一般选择中心。...所以中继器是在高保真原型中最重要的一个事件4.1 排序数字排序——可以按中继器表格中的某一列数字进行升降序切换排序文本排序——可以按中继器表格中的某一列文本进行升降序切换排序日期排序——可以按中继器表格中的某一列日期进行升降序切换排序...可以设置为显示下一页、显示上一页、显示最后一页、显示第一页或者显示具体页面。4.6 设置每页显示数目初始的显示的数目可以在中继器样式分页里面设置,演示时如果需要更每页显示数目可以用该交互设置。...4.7 添加行可以在中继器列表中新增一行内容。

    23430

    Parquet存储的数据模型以及文件格式

    Aapche Parquet是一种能有效存储嵌套数据的列式存储格式,在Spark中应用较多。 列式存储格式在文件大小和查询性能上表现优秀,在列式存储格式下,同一列的数据连续保存。...在Hadoop生态中还有其他的列式存储,如Hive项目中著名的ORCFile(Optimized Record Columnar File)。...对于气象记录模式这种既无嵌套也无重复的扁平表而言,非常简单。 由于每一列都含有相同数量的值,因此可以直观地判断出每个值属于哪一行。...请注意,实际采用的编码方式保存在文件的元数据中,这样才能确保reader 在读取数据时使用正确的编码方式。 除编码外,还可以以页为单位,利用标准压缩算法对编码后的数据进行第二次压缩。...Parquet 的默认设置是不使用任何压缩算法,但它可以支持 Snappy、gzip 和LZ0 等压缩工具。 对于嵌套数据来说,每一页还需要存储该页所包含的值的列定义深度和列元素重复次数。

    28310

    来看看数据分析中相对复杂的去重问题

    如果重复的那些行是每一列懂相同的,删除多余的行只保留相同行中的一行就可以了,这个在Excel或pandas中都有很容易使用的工具了,例如Excel中就是在菜单栏选择数据->删除重复值,然后选择根据哪些列进行去重就好...特定条件例如不是保留第一条也不是最后一条,而是根据两列存在的某种关系、或者保留其中最大的值、或保留评价列文字最多的行等。...更深入一些,如果没有某一列可以作为主键呢?存在一个表,除name之外,其他的列都相同算重复行,这些列有文本有数值型,但是不能拿其中任何列作主键,实现上面的去重合并name,怎么办?...一个个比对是O(n^2),我目前的思路时用除name之外的列合并形成一个字符串型的新列,拿这列做主键,用上面的代码片段。合并之后再删掉之前建的新列保持数据的格式。...指定根据哪些列去重,默认是根据所有列,也就是当两行的所有列都一样时满足去重条件; keep有三种选择:{‘first’, ‘last’, False},first和last分别对应选重复行中的第一行、最后一行

    2.5K20
    领券