【问题标题】:Using text as background使用文本作为背景
【发布时间】:2017-01-30 13:00:43
【问题描述】:

我正在使用此代码将图像背景添加到我的文件中:

<fo:block-container absolute-position="absolute"
                        top="-1cm" left="-3cm" width="26cm" height="29.7cm"
                        background-image="Pictures/afbeelding.png">
                        <fo:block/>
</fo:block-container>

此代码运行良好。我现在想尝试一些新的东西。

是否也可以添加字符串作为背景? 我也可以确定字符串的位置吗? 我希望这个字符串从左上角到右下角对角放置。

我一直在寻找解决方案,但找不到。

【问题讨论】:

  • 如果您使用 apache fop,我认为您可以使用 svg 图像作为背景,您可以在其中轻松存储“字符串”
  • @StefanHegny Thx,dont know if its 可能,但我会看看!
  • 看看stackoverflow.com/questions/38012480/… 使用 svg 作为背景图片。

标签: xml xslt xsl-fo


【解决方案1】:

是的,您可以使用文本作为背景。确保背景文本呈现为背景,而不是在正文顶部:

  • 将文本放在static-content 框架之一中
  • 使用block-containerabsolute-position 将容器放置在主体框架下方

<fo:static-content flow-name="inside">
   <fo:block-container width="170mm" absolute-position="absolute" top="100mm" left="20mm">
        <fo:block text-align="center" font-size="45pt" font-weight="bold"  axf:transform="rotate(-45deg)">
    	  <xsl:text>Watermark text</xsl:text>
        </fo:block>
   </fo:block-container>
</fo:static-content>
  • 在您的fo:simple-page-master 中,区域的顺序决定了在顶部呈现的内容。这些区域按顺序处理,后面的区域将绘制在前面的区域之上。将region-body 放在列表的最后,它将被绘制在所有其他的顶部:

    <fo:simple-page-master master-name="odd">			
    	<fo:region-before/>
    	<fo:region-after/>
    	<fo:region-start/>
    	<fo:region-end/>
    	<fo:region-body/>
    </fo:simple-page-master>

如果您使用 Antennahouse,您可以将 fo:block 旋转到对角线方向:axf:transform="rotate(-45deg)"

与将文本放在 SVG 元素中相比,使用这种方法的优点是:在 SVG 中,文本不能超过一行。每行都必须成为一个单独的 SVG 元素,并且您必须手动拆分文本。使用我的方法,文本以 fo:block 结尾,它支持换行符、连字符等。

【讨论】:

  • Htx 我也会尝试这个解决方案,我也使用过 SVG,效果很好!
  • 我正在测试您的解决方案,以便我可以为您的答案投票,但尚未成功。你能给出一个示例代码吗?而且我没有使用天线屋
  • 它可以工作,但转换不起作用,我无法添加不透明度或字体颜色?
  • 你可以给fo:block添加一个字体颜色(color="#6C6F70"),因为文本在背景中的不透明度可以100%,不会造成问题。
  • 效果很好我已经为你投票了回答不知道是否可以旋转
猜你喜欢
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 2020-12-07
  • 2022-11-21
  • 2017-12-21
  • 2018-11-25
相关资源
最近更新 更多