如何覆盖“region-body”为 XSL:FO 中的表设置的边距?
Posted
技术标签:
【中文标题】如何覆盖“region-body”为 XSL:FO 中的表设置的边距?【英文标题】:how can I override a margin set by "region-body" for a table in XSL:FO? 【发布时间】:2021-04-20 19:35:43 【问题描述】:我正在编辑一个 XSL 文档,该文档在将 XML 转换为 PDF 时控制输出格式。使用“fo:region-body”标签的页面布局中有一个现有的左边距。布局在“fo:page-sequence”元素中设置为主引用,其中包含我的表格的流程和块。我希望我的表覆盖边距。我尝试在表格上使用负边距(我在“表格”和“表格主体”上都尝试过,但只有表格内容向左移动。表格边框保持在同一位置。
有人能指出正确的方向吗?
【问题讨论】:
您应该发布一个简短的 XSL FO 示例以供其他人帮助。也就是说,您可以将结构放在块/块容器中并在其上设置填充/边距,而不是表格。 【参考方案1】:您可能需要围绕结构并在其上设置边距。这是一个例子:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
font-family="Helvetica" font-size="11pt">
<fo:layout-master-set>
<fo:simple-page-master margin-top=".5in" margin-left="1in" margin-bottom="1in"
margin-right="1in" page- page- master-name="first">
<fo:region-body margin-top="0pt" margin-bottom="0pt"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="first">
<fo:flow flow-name="xsl-region-body">
<fo:block>Table not in left margin space</fo:block>
<fo:block>
<fo:table >
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell border-top="1pt solid black" border-bottom="1pt solid red" border-left="1pt solid green" border-right="1pt solid orange" text-align="center">
<fo:block> Center Me </fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block>Table in left margin space</fo:block>
<fo:block margin-left="-0.75in">
<fo:table >
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell border-top="1pt solid black" border-bottom="1pt solid red" border-left="1pt solid green" border-right="1pt solid orange" text-align="center">
<fo:block> Center Me </fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
这会导致以下结果:
【讨论】:
以上是关于如何覆盖“region-body”为 XSL:FO 中的表设置的边距?的主要内容,如果未能解决你的问题,请参考以下文章
XSL/FO:在“fo:block”上遇到无效属性:在将 html 转换为 PDF (xhmtml2fo) 时显示(没有可用的上下文信息)