使用Apache FOP实现XML转PDF:如何插入换行?已试多法无效
在Apache FOP中实现XML转PDF的换行方案
嘿,我来帮你搞定这个换行问题!你之前尝试的
和<br />没生效,是因为XSL-FO有自己的排版规则,和HTML那套不一样。下面给你几个实测有效的解决方案:
方案1:使用XSL-FO专用的换行标签
XSL-FO里专门有个内联换行元素<fo:inline-line-break />,直接插在需要换行的位置就行,这是最直接的内联换行方式:<fo:block> Line 1 <fo:inline-line-break /> Line 2 <fo:inline-line-break /> Line 3 </fo:block>方案2:拆分独立的
<fo:block>块
如果你的每一行都是独立的文本块,最规范的做法是给每行单独套一个<fo:block>,FOP会自动在块之间添加换行:<fo:block>Line 1</fo:block> <fo:block>Line 2</fo:block> <fo:block>Line 3</fo:block>方案3:保留原生换行符(适合动态文本)
如果你必须用
这类换行字符,可以通过修改<fo:block>的空白处理属性来让FOP保留换行:<fo:block white-space-collapse="false" linefeed-treatment="preserve"> Line 1 
 Line 2 
 Line 3 </fo:block>这里的
white-space-collapse="false"会关闭空白折叠,linefeed-treatment="preserve"会让FOP把换行符解析成换行操作。
为什么你之前的方法没用?简单说:<br />是HTML标签,XSL-FO引擎根本不识别;而默认情况下,FOP会把
这类换行符当成普通空白折叠掉,所以不会触发换行。
内容的提问来源于stack exchange,提问作者Karthikeyan
相关产品推荐
相关产品推荐

