gpt4 book ai didi

java - fo :data-cell overflow

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:59 24 4
gpt4 key购买 nike

我正在使用 XSLT -> FO 生成 PDF。

当列中的文本超过列的大小并且文本中没有空格时 - 文本会延伸到下一个单元格或表格之外。

我希望文本占据同一个单元格。

提前致谢,斯维莎

最佳答案

您可以通过插入零宽空格字符(U+200B,HTML实体​)将文本拆分为单词,然后换行符将出现在这些位置:

<xsl:template name="split_value">
<xsl:param name="value"/>
<xsl:param name="max_length"/>
<xsl:variable name="ret">
<xsl:value-of select="substring($value, 1, $max_length)"/>
<xsl:if test="string-length($value) &gt; $max_length">
<xsl:value-of select="'&#x200b;'"/>
<xsl:call-template name="split_value">
<xsl:with-param
name="value"
select="substring($value, $max_length + 1)"
/>
<xsl:with-param
name="max_length"
select="$max_length"
/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:value-of select="$ret"/>
</xsl:template>

注意:您可能希望增强模板,使其仅拆分 $max_length 连续字符之间不出现空格的文本片段。


这是一个测试用例。

输入 XML:

<data>0123456789</data>

样式表(生成 HTML):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsl"
>
<xsl:template match="/">
<html>
<body
style="font-family: Arial; font-size: 12pt; font-weight: normal"
>
<table width="4cm">
<xsl:for-each select="/data">
<tr><td>
<xsl:call-template name="split_value">
<xsl:with-param
name="value"
select="text()"
/>
<xsl:with-param
name="max_length"
select="number(4)"
/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

关于java - fo :data-cell overflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com