blob: 385dcf1935076096aae81d33736de3e2e441ddf0 [file] [log] [blame]
Title: Apache(th) FOP: Whitespace Management
Notice: Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
.
http://www.apache.org/licenses/LICENSE-2.0
.
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
#Apache™ FOP: Whitespace Management
## Overview { #overview}
This page describes an extension for FOPs page breaking algorithm that enables the handling of dynamic content. Dynamic content has multiple variants, only one of which will be inserted in the document. Variant selection is done in a First Come First Served manner and the first variant that fits within the remaining space in the current page is chosen. If no appropriate variant is found, the dynamic content will be skipped without affecting the rest of the document layout.
## Example { #example}
Here is an example of dynamic content with two variants:
:::xml
<fo:multi-switch fox:auto-toggle="select-first-fitting" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
<fo:multi-case>
<fo:block>First variant</fo:block>
</fo:multi-case>
<fo:multi-case>
<fo:block>Second variant</fo:block>
</fo:multi-case>
</fo:multi-switch>
## Limitations { #limitations}
* Space attributes (space-before, space-after) are not currently supported. This is primarily due to how space resolution is done in FOP, which requires the whole FO content to be known before doing page breaking.
* Dynamic content inside a table cell does not work.