2012-07-30 19 views
1

我对XSLFO有个疑问,生成器是FOP。我想要做什么: 在PDF中,我想要生成一个项目列表,每个项目都在一个具有特定宽度和高度的框中。如果内容不适合这个框,内容应该显示在一个更大的框中(也有特定的尺寸)。带FOP的xslfo:检查内容是否溢出并调用不同的模板?

我看不出有什么办法可以达到XSLFO,特别是使用FOP。

有人想法解决这个问题吗?

感谢您的每一个想法!

+0

你只能根据你的文字数量做一个粗略的猜测,因为小盒子会有太多的东西,所以没有办法测量它 – Woody 2012-07-30 12:48:23

+0

是的,我明白了。但不幸的是,我必须支持许多不同的语言,所以我甚至不能猜测: - /。但是谢谢你! :) – 2012-07-31 08:27:21

+0

计算你在整个盒子里有多少个字符会给你一个不错的主意 – Woody 2012-07-31 08:35:45

回答

1

有两个单独的,独立的处理这里涉及以下步骤:

  1. XSL-FO标记的生成(使用样式表,并XSLT处理器)。
  2. 将XSL-FO标记呈现为PDF(使用FO处理器,如FOP)。

第二步不能影响第一步。在渲染过程中无法测试溢出条件,并以某种方式决定要调用的模板。没有反馈回路。你所要求的是不可能的。


可以通过估计XSLT中文本字符串的长度来进行粗略文本拟合。这是"Saxon Extension for Guessing Composed Text String Length"背后的想法。

我还没有使用这个扩展,它甚至可能不再可用(关于它的公告是从2004年)。无论如何,这与实际的布局反馈机制相去甚远。

+0

是的,我的问题不够具体,这是真的,你是对的,我在第一步使用XSLT处理。 – 2012-07-30 12:13:27