Pdf XSL:在任意位置切掉字符串

Pdf XSL:在任意位置切掉字符串,pdf,xslt,xslt-1.0,xsl-fo,apache-fop,Pdf,Xslt,Xslt 1.0,Xsl Fo,Apache Fop,我正在使用XSL来获得XML样式。xsl定义了一个包含两列的表。多亏了Kevin Brown,下面的代码可以很好地在单词边界处截断,但我需要的是在任意位置截断 <fo:table-cell> <fo:block-container overflow="hidden" height="15pt"><fo:block>this is a very, very, very long text here</fo:block></fo:bloc

我正在使用XSL来获得XML样式。xsl定义了一个包含两列的表。多亏了Kevin Brown,下面的代码可以很好地在单词边界处截断,但我需要的是在任意位置截断

<fo:table-cell>
    <fo:block-container overflow="hidden" height="15pt"><fo:block>this is a very, very, very long text here</fo:block></fo:block-container>
</fo:table-cell>

这是一个非常非常长的文本

如果您是从XML和XSL生成的,通常在输出特定内容和位置时会创建一个模板​;实体(零宽度打断空格字符)。因此,无论你怎么做,都要让内容像这样(这表示“非常长的单词”,字母之间有实体:

v​;e​;r​;y l​;o​;n​;g w​;o​;r​;d

因此,在您的示例中(我只将它们放在断点附近,以便您可以看到):


这是一个非常非常非常的l​;o​;n​;g t​;e​;x​;t
你现在可以得到这个(它在“long”中的“o”处断开):

如果您非常倾向于将fo:块上的“text align”设置为“justify”,这将使所有内容对齐,如果在块的末尾插入足够长的fo:前导以填充单元格。注意:这在Apache FOP中不起作用,在RenderX XEP中起作用

比如:


这是一个
如果您这样做,您将得到以下结果:


如果您从XML和XSL生成此内容,通常在输出特定内容和放置​;实体(零宽度分隔符)时会创建一个模板。因此,无论您如何操作,都要使内容如下所示(这表示“非常长的单词”,该实体位于字母之间:

v​;e​;r​;y l​;o​;n​;g w​;o​;r​;d

因此,在您的示例中(我只将它们放在断点附近,以便您可以看到):


这是一个非常非常非常的l​;o​;n​;g t​;e​;x​;t
你现在可以得到这个(它在“long”中的“o”处断开):

如果您非常倾向于将fo:块上的“text align”设置为“justify”,这将使所有内容对齐,如果在块的末尾插入足够长的fo:前导以填充单元格。注意:这在Apache FOP中不起作用,在RenderX XEP中起作用

比如:


这是一个
如果您这样做,您将得到以下结果:

<fo:table-cell border="1pt solid silver">
                            <fo:block-container overflow="hidden" height="15pt"><fo:block>this is a very, very, very l&#8203;o&#8203;n&#8203;g t&#8203;e&#8203;x&#8203;t here</fo:block></fo:block-container>
                        </fo:table-cell>
<fo:table-cell border="1pt solid silver">
    <fo:block-container overflow="hidden" height="15pt"><fo:block text-align="justify">this is a<fo:leader leader-length.minimum="3in"/></fo:block></fo:block-container>
</fo:table-cell>