首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FO中将多个块容器渲染为内联

在FO中将多个块容器渲染为内联
EN

Stack Overflow用户
提问于 2014-05-13 08:51:40
回答 1查看 6.8K关注 0票数 3

我是FO新手。

我想使用Xalan和FOP1.1将XML文档转换为PDF文件

我制作了一个XSL样式表,将源XML文档转换为FO文档。XSL样式表工作得很好,除了一件事;

源XML

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<root>
    ...
    <order>....</order>
    <books>...</book>
    <location>...</location>
    <item img="a.png" caption="caption1" />
    <item img="b.png" caption="caption2" />
    <books>...</book>
    <books>...</book>
    <item img="c.png" caption="caption1" />
    <location>...</location>
    ...
</root>

我希望渲染相邻的‘项目’元素与图像(外部图形)和标题在一行。然而,我不确定如何做这件事。

例如,下面的FO被渲染为单独的行。当我使用line area元素时,它根本不会被渲染。我还尝试对每个“item”元素使用表格单元格,它工作得很好。但是,我不想使用table/table-cell。(与源XML文档相关的原因很复杂,这里无法解释...)我认为有一些方法可以强制块容器成为“行区域”,而不是“块区域”。你能帮帮我吗?(Apache FOP 1.1)

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="main">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="main">
<fo:flow flow-name="xsl-region-body">
<fo:block>

    <!-- rendered as separated lines -->
    <fo:block>
        <!-- Component#1  -->
        <fo:block-container>
            <fo:block background-color="blue"><fo:external-graphic src="a.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
        <fo:block>Caption1</fo:block>
        </fo:block-container>
        <!-- Component#2  -->
        <fo:block-container>
        <fo:block background-color="blue"><fo:external-graphic src="b.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
        <fo:block>Caption2</fo:block>
        </fo:block-container>
    </fo:block>

    <!-- Using inline-container for each 'item' element, but nothing displaied -->
    <!-- Component#1  -->
    <fo:inline-container>
        <fo:block-container>
        <fo:block background-color="blue"><fo:external-graphic src="a.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
        <fo:block>Caption1</fo:block>
        </fo:block-container>
    </fo:inline-container>
    <!-- Component#2  -->
    <fo:inline-container>
        <fo:block-container>
        <fo:block background-color="blue"><fo:external-graphic src="b.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
        <fo:block>Caption2</fo:block>
        </fo:block-container>
    </fo:inline-container>

    <!-- Using table, work well. but it can not be used for source XML. -->
    <fo:table>
        <fo:table-body>
        <!-- Component#1 -->
        <fo:table-cell>
                <fo:block-container>
            <fo:block background-color="blue"><fo:external-graphic src="a.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
            <fo:block>Caption1</fo:block>
            </fo:block-container>
        </fo:table-cell>
        <!-- Component#2 -->
        <fo:table-cell>
            <fo:block-container>
            <fo:block background-color="blue"><fo:external-graphic src="b.png" width="30mm" content-width="scale-down-to-fit" scaling="uniform" /></fo:block>
            <fo:block>Caption2</fo:block>
            </fo:block-container>
        </fo:table-cell>

        </fo:table-body>
    </fo:table>

</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
EN

回答 1

Stack Overflow用户

发布于 2016-01-29 21:00:55

这是一个古老的问题,但也许有人可以使用这个答案。

要将多个带标签的图像放在同一“行”中,请使用以下代码:

代码语言:javascript
复制
<fo:block>
  <fo:inline-container inline-progression-dimension="49.9%">
    <fo:block>image1</fo:block>
    <fo:block>label1</fo:block>
  </fo:inline-container>
  <fo:inline-container inline-progression-dimension="49.9%">
    <fo:block>image2</fo:block>
    <fo:block>label2</fo:block>
  </fo:inline-container>
</fo:block>

内联-进度-维度显然取决于您想要放置的容器的数量。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23621194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档