<!DOCTYPE html>
<html lang="en">
  <head>


    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />
<!--
    <link rel="stylesheet" type="text/css" media="screen" href="http://www.apache.org/css/style.css">
-->
    <link rel="stylesheet" type="text/css" media="screen" href="https://www.apache.org/css/code.css">
    <link href="/css/profile.css" rel="stylesheet" type="text/css" />
    <link href="/css/xmlgraphics.css" rel="stylesheet" type="text/css" />
    <link href="/css/print.css" rel="stylesheet" type="text/css" media="print" />

    <script src="https://code.jquery.com/jquery.min.js"></script>
	<script type="text/javascript" src="/js/jquery.stoc.js"></script>
    <script>
    $(document).ready(function(){
        $('ul#navigation a').each(function() {
		    if (this.href === window.location.href)
			    { $(this). attr('id', 'forefront');} 
        });
        $('ul#navigation a#forefront').each(function() {
        	
        });
    })
	$(function(){
		$("#items").stoc({ search: "#content", stocTitle: "<h3>Page Contents</h3>" });
	});
    </script>



	<style>
	.highlight {color: red;}
	</style>

  </head>

  <body>

	<div id="banner">&nbsp;
	</div>

	<div id="navigation">
[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)

# Apache&trade; FOP
  - [FOP Home](/fop/)
  - [Download](/fop/download.html)
  - [Quick Start Guide](/fop/quickstartguide.html)
  - [Compliance](/fop/compliance.html)
  - [Getting Help](/fop/gethelp.html)
  - [FAQs](/fop/faq.html)
  - [FOP Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP)
  - [Mailing Lists](/fop/maillist.html)
  - [License](/fop/license.html)
  - ## Resources
    - [XSL-FO](/fop/fo.html)
    - [Examples](/fop/examples.html)
    - [Bugs](/fop/bugs.html)
    - [Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FrontPage)
    - [Other](/fop/resources.html)
  - ## Project
    - [News](/fop/news.html)
    - [Who We Are](/fop/team.html)
    - [Status](/fop/status.html)
    - [Known Issues](/fop/knownissues.html)
    - [Changes](/fop/changes.html)
  - ## Versions
      - ## FOP Trunk (dev)
          - [Overview](/fop/trunk/)
          - [Upgrading](/fop/trunk/upgrading.html)
          - ### Using Apache&trade; FOP
            - [Build](/fop/trunk/compiling.html)
            - [Configure](/fop/trunk/configuration.html)
            - [Run](/fop/trunk/running.html)
            - [Embed](/fop/trunk/embedding.html)
            - [Servlets](/fop/trunk/servlets.html)
            - [Ant Task](/fop/trunk/anttask.html)
          - ### Features
            - [Accessibility](/fop/trunk/accessibility.html)
            - [Complex Scripts](/fop/trunk/complexscripts.html)
            - [Events](/fop/trunk/events.html)
            - [Extensions](/fop/trunk/extensions.html)
            - [Fonts](/fop/trunk/fonts.html)
            - [Graphics](/fop/trunk/graphics.html)
            - [Hyphenation](/fop/trunk/hyphenation.html)
            - [Intermediate Format](/fop/trunk/intermediate.html)
            - [Metadata](/fop/trunk/metadata.html)
            - [Output Targets](/fop/trunk/output.html)
            - [PDF/A](/fop/trunk/pdfa.html)
            - [PDF/X](/fop/trunk/pdfx.html)
            - [PDF Encryption](/fop/trunk/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/trunk/whitespacemanagement.html)
      - ## FOP 2.5
          - [FOP 2.5 Overview](/fop/2.5/)
          - [Release Notes](/fop/2.5/releaseNotes_2.5.html)
          - [Changes (2.5)](/fop/2.5/changes_2.5.html)
          - [Known Issues](/fop/2.5/knownissues_overview.html)
          - [Upgrading](/fop/2.5/upgrading.html)
          - ### Using Apache FOP 2.5
            - [Build](/fop/2.5/compiling.html)
            - [Configure](/fop/2.5/configuration.html)
            - [Run](/fop/2.5/running.html)
            - [Embed](/fop/2.5/embedding.html)
            - [Servlets](/fop/2.5/servlets.html)
            - [Ant Task](/fop/2.5/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.5/accessibility.html)
            - [Complex Scripts](/fop/2.5/complexscripts.html)
            - [Events](/fop/2.5/events.html)
            - [Extensions](/fop/2.5/extensions.html)
            - [Fonts](/fop/2.5/fonts.html)
            - [Graphics](/fop/2.5/graphics.html)
            - [Hyphenation](/fop/2.5/hyphenation.html)
            - [Intermediate Format](/fop/2.5/intermediate.html)
            - [Metadata](/fop/2.5/metadata.html)
            - [Output Targets](/fop/2.5/output.html)
            - [PDF/A](/fop/2.5/pdfa.html)
            - [PDF/X](/fop/2.5/pdfx.html)
            - [PDF Encryption](/fop/2.5/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.5/whitespacemanagement.html)     
      - ## FOP 2.4
          - [FOP 2.4 Overview](/fop/2.4/)
          - [Release Notes](/fop/2.4/releaseNotes_2.4.html)
          - [Changes (2.4)](/fop/2.4/changes_2.4.html)
          - [Known Issues](/fop/2.4/knownissues_overview.html)
          - [Upgrading](/fop/2.4/upgrading.html)
          - ### Using Apache FOP 2.4
            - [Build](/fop/2.4/compiling.html)
            - [Configure](/fop/2.4/configuration.html)
            - [Run](/fop/2.4/running.html)
            - [Embed](/fop/2.4/embedding.html)
            - [Servlets](/fop/2.4/servlets.html)
            - [Ant Task](/fop/2.4/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.4/accessibility.html)
            - [Complex Scripts](/fop/2.4/complexscripts.html)
            - [Events](/fop/2.4/events.html)
            - [Extensions](/fop/2.4/extensions.html)
            - [Fonts](/fop/2.4/fonts.html)
            - [Graphics](/fop/2.4/graphics.html)
            - [Hyphenation](/fop/2.4/hyphenation.html)
            - [Intermediate Format](/fop/2.4/intermediate.html)
            - [Metadata](/fop/2.4/metadata.html)
            - [Output Targets](/fop/2.4/output.html)
            - [PDF/A](/fop/2.4/pdfa.html)
            - [PDF/X](/fop/2.4/pdfx.html)
            - [PDF Encryption](/fop/2.4/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.4/whitespacemanagement.html)             
      - ## FOP 2.3
          - [FOP 2.3 Overview](/fop/2.3/)
          - [Release Notes](/fop/2.3/releaseNotes_2.3.html)
          - [Changes (2.3)](/fop/2.3/changes_2.3.html)
          - [Known Issues](/fop/2.3/knownissues_overview.html)
          - [Upgrading](/fop/2.3/upgrading.html)
          - ### Using Apache FOP 2.3
            - [Build](/fop/2.3/compiling.html)
            - [Configure](/fop/2.3/configuration.html)
            - [Run](/fop/2.3/running.html)
            - [Embed](/fop/2.3/embedding.html)
            - [Servlets](/fop/2.3/servlets.html)
            - [Ant Task](/fop/2.3/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.3/accessibility.html)
            - [Complex Scripts](/fop/2.3/complexscripts.html)
            - [Events](/fop/2.3/events.html)
            - [Extensions](/fop/2.3/extensions.html)
            - [Fonts](/fop/2.3/fonts.html)
            - [Graphics](/fop/2.3/graphics.html)
            - [Hyphenation](/fop/2.3/hyphenation.html)
            - [Intermediate Format](/fop/2.3/intermediate.html)
            - [Metadata](/fop/2.3/metadata.html)
            - [Output Targets](/fop/2.3/output.html)
            - [PDF/A](/fop/2.3/pdfa.html)
            - [PDF/X](/fop/2.3/pdfx.html)
            - [PDF Encryption](/fop/2.3/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.3/whitespacemanagement.html)            
      - ## FOP 2.2
          - [FOP 2.2 Overview](/fop/2.2/)
          - [Release Notes](/fop/2.2/releaseNotes_2.2.html)
          - [Changes (2.2)](/fop/2.2/changes_2.2.html)
          - [Known Issues](/fop/2.2/knownissues_overview.html)
          - [Upgrading](/fop/2.2/upgrading.html)
          - ### Using Apache FOP 2.2
            - [Build](/fop/2.2/compiling.html)
            - [Configure](/fop/2.2/configuration.html)
            - [Run](/fop/2.2/running.html)
            - [Embed](/fop/2.2/embedding.html)
            - [Servlets](/fop/2.2/servlets.html)
            - [Ant Task](/fop/2.2/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.2/accessibility.html)
            - [Complex Scripts](/fop/2.2/complexscripts.html)
            - [Events](/fop/2.2/events.html)
            - [Extensions](/fop/2.2/extensions.html)
            - [Fonts](/fop/2.2/fonts.html)
            - [Graphics](/fop/2.2/graphics.html)
            - [Hyphenation](/fop/2.2/hyphenation.html)
            - [Intermediate Format](/fop/2.2/intermediate.html)
            - [Metadata](/fop/2.2/metadata.html)
            - [Output Targets](/fop/2.2/output.html)
            - [PDF/A](/fop/2.2/pdfa.html)
            - [PDF/X](/fop/2.2/pdfx.html)
            - [PDF Encryption](/fop/2.2/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.2/whitespacemanagement.html)
      - ## FOP 2.1
          - [FOP 2.1 Overview](/fop/2.1/)
          - [Release Notes](/fop/2.1/releaseNotes_2.1.html)
          - [Changes (2.1)](/fop/2.1/changes_2.1.html)
          - [Known Issues](/fop/2.1/knownissues_overview.html)
          - [Upgrading](/fop/2.1/upgrading.html)
          - ### Using Apache FOP 2.1
            - [Build](/fop/2.1/compiling.html)
            - [Configure](/fop/2.1/configuration.html)
            - [Run](/fop/2.1/running.html)
            - [Embed](/fop/2.1/embedding.html)
            - [Servlets](/fop/2.1/servlets.html)
            - [Ant Task](/fop/2.1/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.1/accessibility.html)
            - [Complex Scripts](/fop/2.1/complexscripts.html)
            - [Events](/fop/2.1/events.html)
            - [Extensions](/fop/2.1/extensions.html)
            - [Fonts](/fop/2.1/fonts.html)
            - [Graphics](/fop/2.1/graphics.html)
            - [Hyphenation](/fop/2.1/hyphenation.html)
            - [Intermediate Format](/fop/2.1/intermediate.html)
            - [Metadata](/fop/2.1/metadata.html)
            - [Output Targets](/fop/2.1/output.html)
            - [PDF/A](/fop/2.1/pdfa.html)
            - [PDF/X](/fop/2.1/pdfx.html)
            - [PDF Encryption](/fop/2.1/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.1/whitespacemanagement.html)
      - ## FOP 2.0
          - [FOP 2.0 Overview](/fop/2.0/)
          - [Release Notes](/fop/2.0/releaseNotes_2.0.html)
          - [Changes (2.0)](/fop/2.0/changes_2.0.html)
          - [Known Issues](/fop/2.0/knownissues_overview.html)
          - [Upgrading](/fop/2.0/upgrading.html)
          - ### Using Apache FOP 2.0
            - [Build](/fop/2.0/compiling.html)
            - [Configure](/fop/2.0/configuration.html)
            - [Run](/fop/2.0/running.html)
            - [Embed](/fop/2.0/embedding.html)
            - [Servlets](/fop/2.0/servlets.html)
            - [Ant Task](/fop/2.0/anttask.html)
          - ### Features
            - [Accessibility](/fop/2.0/accessibility.html)
            - [Complex Scripts](/fop/2.0/complexscripts.html)
            - [Events](/fop/2.0/events.html)
            - [Extensions](/fop/2.0/extensions.html)
            - [Fonts](/fop/2.0/fonts.html)
            - [Graphics](/fop/2.0/graphics.html)
            - [Hyphenation](/fop/2.0/hyphenation.html)
            - [Intermediate Format](/fop/2.0/intermediate.html)
            - [Metadata](/fop/2.0/metadata.html)
            - [Output Targets](/fop/2.0/output.html)
            - [PDF/A](/fop/2.0/pdfa.html)
            - [PDF/X](/fop/2.0/pdfx.html)
            - [PDF Encryption](/fop/2.0/pdfencryption.html)
            - [PDF Images](/fop/fop-pdf-images.html)
            - [Whitespace Management](/fop/2.0/whitespacemanagement.html)
      - ## FOP 1.1
          - [FOP 1.1 Overview](/fop/1.1/)
          - [Release Notes](/fop/1.1/releaseNotes_1.1.html)
          - [Changes (1.1)](/fop/1.1/changes_1.1.html)
          - [Known Issues](/fop/1.1/knownissues_overview.html)
          - [Upgrading](/fop/1.1/upgrading.html)
          - ### Using Apache FOP 1.1
            - [Build](/fop/1.1/compiling.html)
            - [Configure](/fop/1.1/configuration.html)
            - [Run](/fop/1.1/running.html)
            - [Embed](/fop/1.1/embedding.html)
            - [Servlets](/fop/1.1/servlets.html)
            - [Ant Task](/fop/1.1/anttask.html)
          - ### Features
            - [Accessibility](/fop/1.1/accessibility.html)
            - [Complex Scripts](/fop/1.1/complexscripts.html)
            - [Events](/fop/1.1/events.html)
            - [Extensions](/fop/1.1/extensions.html)
            - [Fonts](/fop/1.1/fonts.html)
            - [Graphics](/fop/1.1/graphics.html)
            - [Hyphenation](/fop/1.1/hyphenation.html)
            - [Intermediate Format](/fop/1.1/intermediate.html)
            - [Metadata](/fop/1.1/metadata.html)
            - [Output Targets](/fop/1.1/output.html)
            - [PDF/A](/fop/1.1/pdfa.html)
            - [PDF/X](/fop/1.1/pdfx.html)
            - [PDF Encryption](/fop/1.1/pdfencryption.html)
      - ## FOP 1.0
          - [FOP 1.0 Overview](/fop/1.0/)
          - [Release Notes](/fop/1.0/releaseNotes_1.0.html)
          - [Changes (1.0)](/fop/1.0/changes_1.0.html)
          - [Known Issues](/fop/1.0/knownissues_overview.html)
          - [Upgrading](/fop/1.0/upgrading.html)
          - ### Using Apache FOP 1.0
            - [Build](/fop/1.0/compiling.html)
            - [Configure](/fop/1.0/configuration.html)
            - [Run](/fop/1.0/running.html)
            - [Embed](/fop/1.0/embedding.html)
            - [Servlets](/fop/1.0/servlets.html)
            - [Ant Task](/fop/1.0/anttask.html)
          - ### Features
            - [Output Targets](/fop/1.0/output.html)
            - [Intermediate Format](/fop/1.0/intermediate.html)
            - [PDF Encryption](/fop/1.0/pdfencryption.html)
            - [PDF/A](/fop/1.0/pdfa.html)
            - [PDF/X](/fop/1.0/pdfx.html)
            - [Graphics](/fop/1.0/graphics.html)
            - [Fonts](/fop/1.0/fonts.html)
            - [Hyphenation](/fop/1.0/hyphenation.html)
            - [Extensions](/fop/1.0/extensions.html)
            - [Events](/fop/1.0/events.html)
            - [Metadata](/fop/1.0/metadata.html)
            - [Accessibility](/fop/1.0/accessibility.html)
      - ## FOP Development
          - [General Info](/fop/dev/)
          - ## Design
            - [Design Info](/fop/dev/design/)
          - ## Core Process
            - [Startup](/fop/dev/design/startup.html)
            - [XML Parsing](/fop/dev/design/parsing.html)
            - [FO Tree](/fop/dev/design/fotree.html)
            - [Properties](/fop/dev/design/properties.html)
            - [Layout](/fop/dev/design/layout.html)
            - [Break Possibility](/fop/dev/design/breakpos.html)
            - [Area Tree](/fop/dev/design/areas.html)
            - [Renderers](/fop/dev/design/renderers.html)
          - ## Miscellaneous
            - [Images](/fop/dev/design/images.html)
            - [PDF Library](/fop/dev/design/pdf-library.html)
            - [SVG](/fop/dev/design/svg.html)
            - [Embedding](/fop/dev/design/embedding.html)
            - [Extending](/fop/dev/design/extending.html)
            - [Optimisations](/fop/dev/design/optimise.html)
            - [User Agent](/fop/dev/design/useragent.html)
          - [Unresolved (Wiki)](https://cwiki.apache.org/confluence/display/XMLGRAPHICSFOP/FOPProjectPages)
          - [SVG](/fop/dev/svg.html)
          - [Extensions](/fop/dev/extensions.html)
          - ## Develop
            - [Walk-Thru](/fop/dev/implement.html)
            - [Patch Queue](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20description%20~%20%22\%22[patch]\%22%22%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
            - [Conventions](/fop/dev/conventions.html)
          - ## Test
            - [Testing](/fop/dev/testing.html)
          - ## Deploy
            - [Doc Mgmt](/fop/dev/doc.html)
            - [Release](/fop/dev/release.html)
            - [Bugs](https://issues.apache.org/jira/issues/?jql=project%20%3D%20FOP%20AND%20issuetype%20%3D%20Bug%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29)
          - ## Resources
            - [FAQs](/fop/dev/faq.html)
            - [Tools](/fop/dev/tools.html)
            - [ViewVC](http://svn.apache.org/viewvc/xmlgraphics/fop)
          - ## SubPackages
            - [RTFlib](/fop/dev/rtflib.html)

# Apache&trade; XML Graphics
  - ## Project Overview
    - [Who We Are](/team.html)
    - [Legal Stuff](/legal.html)
    - [Project Charter](/charter.html)
    - [Mailing Lists](/mail.html)
    - [Code Repositories](/repo.html)
    - [ASF Sponsorship Program](https://www.apache.org/foundation/sponsorship.html)
    - [ASF Thanks](https://www.apache.org/foundation/thanks.html)
    - [Licenses](https://www.apache.org/licenses/)
    - [Apache XML Graphics Security](/security.html)
    - [ASF Security](https://www.apache.org/security/)

# Sub Projects
  - [Apache Batik](/batik/)
  - [Apache XML Graphics Commons](/commons/)

### Search Apache XML Graphics

<form name="search" id="search" action="https://www.google.com/search" method="get">
  <input value="xmlgraphics.apache.org" name="sitesearch" type="hidden"/>
  <input type="text" name="q" id="query" />
  <input type="submit" id="submit" value="Search" />
</form>

### ApacheCon N. America

<a title="ApacheCon North America" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon North America" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />

  * **[ApacheCon NA](https://www.apachecon.com/)**

Hope to see you there!

### ApacheCon Europe

<a title="ApacheCon Europe" href="https://www.apachecon.com"><img class="apachecon_logo" alt="ApacheCon Europe" src="https://www.apachecon.com/images/landingpage/apachecon-logo.png" width="200" /></a><br /><br />

  * **[ApacheCon Europe](https://www.apachecon.com/)**

Hope to see you there!

<a title="Apache Software Foundation" href="https://www.apache.org"><img id="asf_logo_url" alt="Apache Software Foundation " src="/images/asf_logo_url.png" width="200" /></a><br /><br />

<a title="Support the Apache Software Foundation" href="https://donate.apache.org/"><img id="asf_support_url" alt="Support the Apache Software Foundation " src="https://blogs.apache.org/foundation/mediaresource/d67ca611-a57c-462d-ac23-95063f81d175" width="200" /></a>

<script>
$(document).ready(function () {
    $('#navigation :header').click(function () {
        var text = $(this).siblings('ul');
        if (text.is(':hidden')) {
            text.slideDown('200');
        } else {
            text.slideUp('200');
        }
    });
    if ($('#navigation :header').siblings('ul')) {
      $('#navigation :header').not('#search-apache-xml-graphics, #apachewzxhzdk3-xml-graphics, #sub-projects').append(' &raquo;');
    }
  $('#navigation > ul > li > ul > li ul').hide();
  $('#project-overview').next().hide();
  $('#versions').next().show();
  var str=location.href.toLowerCase();
  $("#navigation li a").each(function() {
    if (str.indexOf(this.href.toLowerCase()) > -1) {
      $(this).parents().slideDown('200');
      $("li.highlight").removeClass("highlight");
      $(this).parent().addClass("highlight");
    }
  });
})
</script>	</div>

	<div id="bannertext" style="border-bottom: 2px dashed #666666; height: 70px;">
	  <a href="/fop/"><img src="/images/apache-fop-logo.jpg" alt="The Apache FOP Project" width="120" height="65" style="float:left; margin-right: 15px;" /></a>
	  <h2>The Apache&trade; FOP Project</h2>
	</div>  

    <h1>Standard Apache&trade; FOP Extensions</h1>
    Translations: 
<a href="/fop/2.0/extensions.html">en</a>
<a href="/fop/2.5/extensions.html">en</a>
<a href="/fop/trunk/extensions.html">en</a>
<a href="/fop/1.1/extensions.html">en</a>
<a href="/fop/2.2/extensions.html">en</a>
<a href="/fop/2.1/extensions.html">en</a>
<a href="/fop/2.3/extensions.html">en</a>
<a href="/fop/2.4/extensions.html">en</a>
<a href="/fop/1.0/extensions.html">en</a>


    <h1>Standard Apache&trade; FOP Extensions</h1>
<p>By "extension", we mean any data that can be placed in the input XML document that is not addressed by the XSL-FO standard. By having a mechanism for supporting extensions, FOP is able to add features that are not covered in the specification.</p>
<p>The extensions documented here are included with FOP, and are automatically available to you. If you wish to add an extension of your own to FOP, please see the <a href="../dev/extensions.html">Developers' Extension Page</a>.
All extensions require the correct use of an appropriate namespace in your input document.</p>
<h2 id="svg">SVG</h2>
<p>Please see the <a href="graphics.html#svg">SVG documentation</a> for more details.</p>
<h2 id="fo-extensions">FO Extensions</h2>
<h3 id="fox-namespace">Namespace</h3>
<p>By convention, FO extensions in FOP use the "fox" namespace prefix. To use any of the FO extensions, add a namespace entry for <code>http://xmlgraphics.apache.org/fop/extensions</code> to the root element:</p>
<div class="highlight"><pre><span></span><span class="nt">&lt;fo:root</span> <span class="na">xmlns:fo=</span><span class="s">&quot;http://www.w3.org/1999/XSL/Format&quot;</span>
           <span class="na">xmlns:fox=</span><span class="s">&quot;http://xmlgraphics.apache.org/fop/extensions&quot;</span><span class="nt">&gt;</span>
</pre></div>


<h3 id="bookmarks">PDF Bookmarks</h3>
<p>In previous versions of Apache FOP there was a <code>fox:outline</code> element which was used to create outlines in PDF files. The redesigned code makes use of the new <a href="http://www.w3.org/TR/xsl11/#fo_bookmark-tree">bookmark feature defined in the latest XSL 1.1 working draft</a>.</p>
<h3 id="named-destinations">Anchors or Named Destinations</h3>
<p>Use the fox:destination element to define "named destinations" inside a PDF document. These are useful as fragment identifiers, e.g. "http://server/document.pdf#anchor-name". fox:destination elements can be placed almost anywhere in the fo document, including a child of root, a block-level element, or an inline-level element. For the destination to actually work, it must correspond to an "id" attribute on some fo element within the document. In other words, the "id" attribute actually creates the "view" within the PDF document. The fox:destination simply gives that view an independent name.</p>
<div class="highlight"><pre><span></span><span class="nt">&lt;fox:destination</span> <span class="na">internal-destination=</span><span class="s">&quot;table-of-contents&quot;</span><span class="nt">/&gt;</span>
...
<span class="nt">&lt;fo:block</span> <span class="na">id=</span><span class="s">&quot;table-of-contents&quot;</span><span class="nt">&gt;</span>Table of Contents<span class="nt">&lt;/fo:block&gt;</span>
</pre></div>


<p><warning>It is possible that in some future release of FOP, <em>all</em> elements with "id" attributes will generate named-destinations, which will eliminate the need for fox:destination.</warning></p>
<h3 id="table-continue-label">Table Continuation Label</h3>
<p>This extension element hasn't been reimplemented for the redesigned code, yet.</p>
<h3 id="widow-orphan-content-limit">fox:orphan-content-limit and fox:widow-content-limit</h3>
<p>The two proprietary extension properties, <code>fox:orphan-content-limit</code> and <code>fox:widow-content-limit</code>, are used to improve the layout of list-blocks and tables. If you have a table with many entries, you don't want a single row to be left over on a page. You will want to make sure that at least two or three lines are kept together. The properties take an absolute length which specifies the area at the beginning (<code>fox:widow-content-limit</code>) or at the end (<code>fox:orphan-content-limit</code>) of a table or list-block. The properties are inherited and only have an effect on <code>fo:table</code> and <code>fo:list-block</code>. An example: <code>fox:widow-content-limit="3 * 1.2em"</code> would make sure the you'll have at least three lines (assuming <code>line-height="1.2"</code>) together on a table or list-block.</p>
<h3 id="external-document">fox:external-document</h3>
<p>This feature is incomplete. Support for multi-page documents will be added shortly. At the moment, only single-page images will work. And this will not work with RTF output.</p>
<p>This is a proprietary extension element which allows to add whole images as pages to an FO document. For example, if you have a scanned document or a fax as multi-page TIFF file, you can append or insert this document using the <code>fox:external-document</code> element. Each page of the external document will create one full page in the target format.</p>
<p>The <code>fox:external-document</code> element is structurally a peer to <code>fo:page-sequence</code>, so wherever you can put an <code>fo:page-sequence</code> you could also place a <code>fox:external-document</code>. Therefore, the specified contents for <code>fo:root</code> change to:</p>
<div class="highlight"><pre><span></span>        (layout-master-set, declarations?, bookmark-tree?, (page-sequence|page-sequence-wrapper|fox:external-document|fox:destination)+)
</pre></div>


<h4 id="Specification">Specification</h4>
<p>The <code>fox:external-document</code> extension formatting object is used to specify how to create a (sub-)sequence of pages within a document. The content of these pages comes from the individual subimages/pages of an image or paged document (for example: multi-page TIFF in the form of faxes or scanned documents, or PDF files). The formatting object creates the necessary areas to display one image per page.</p>
<p>In terms of page numbers, the behaviour is the same as for <code>fo:page-sequence</code>. The placement of the image inside the page is similar to that of <code>fo:external-graphic</code> or <code>fo:instream-foreign-object</code>, i.e. the viewport (and therefore the page size) is defined by either the intrinsic size of the image or by the size properties that apply to this formatting object.</p>
<p>Content: EMPTY</p>
<p>The following properties apply to this formatting object:</p>
<ul>
<li>
<p>(Common Accessibility Properties) (not implemented, yet)</p>
</li>
<li>
<p>(Common Aural Properties) (not implemented, yet)</p>
</li>
<li>
<p>block-progression-dimension</p>
</li>
<li>
<p>content-height</p>
</li>
<li>
<p>content-type</p>
</li>
<li>
<p>content-width</p>
</li>
<li>
<p>display-align</p>
</li>
<li>
<p>height</p>
</li>
<li>
<p>id</p>
</li>
<li>
<p>inline-progression-dimension</p>
</li>
<li>
<p>overflow</p>
</li>
<li>
<p>pages: <page-set> (see below) (not implemented, yet)</p>
</li>
<li>
<p>reference-orientation</p>
</li>
<li>
<p>scaling</p>
</li>
<li>
<p>scaling-method</p>
</li>
<li>
<p>src</p>
</li>
<li>
<p>text-align</p>
</li>
<li>
<p>width</p>
</li>
</ul>
<p>Datatype "page-set": Value: auto | <integer-range>, Default: "auto" which means all pages/subimages of the document. <integer-range> allows values such as "7" or "1-3"
 <code>fox:external-document</code> is not suitable for concatenating FO documents. For this, XInclude is recommended.</p>
<h3 id="transform">Free-form Transformation for fo:block-container</h3>
<p>For <code>fo:block-container</code> elements whose <code>absolute-position</code> set to "absolute" or "fixed" you can use the extension attribute <code>fox:transform</code> to apply a free-form transformation to the whole block-container. The content of the <code>fox:transform</code> attribute is the same as for <a href="http://www.w3.org/TR/SVG/coords.html#TransformAttribute">SVG's transform attribute</a>. The transformation specified here is performed in addition to other implicit transformations of the block-container (resulting from top, left and other properties) and after them.</p>
<p>Examples: <code>fox:transform="rotate(45)"</code> would rotate the block-container by 45 degrees clock-wise around its upper-left corner. <code>fox:transform="translate(10000,0)"</code> would move the block-container to the right by 10 points (=10000 millipoints, FOP uses millipoints internally!).
This extension attribute doesn't work for all output formats! It's currently only supported for PDF, PS and Java2D-based renderers.</p>
<h3 id="color-functions">Color functions</h3>
<p>XSL-FO supports specifying color using the rgb(), rgb-icc() and system-color() functions. Apache FOP provides additional color functions for special use cases. Please note that using these functions compromises the interoperability of an FO document.</p>
<h4 id="color-function-cmyk">cmyk()</h4>
<p><code>color cmyk(numeric, numeric, numeric, numeric)</code></p>
<p>This function will construct a color in device-specific CMYK color space. The numbers must be between 0.0 and 1.0. For output formats that don't support device-specific color space the CMYK value is converted to an sRGB value.</p>

      <div class="clear"></div>

	  <div id="footer">
		<div class="copyright">
		  <div style="float:left; padding: 7px;">
			<a title="Apache Software Foundation" href="http://www.apache.org"><img id="asf-feather-logo" alt="Apache Software Foundation" src="/images/asf_logo_url.png" width="200" /></a>
        </div>
		  <p>
			Copyright &copy; 2016 The Apache Software Foundation, Licensed under
			the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
			<br />
			Apache, Apache XML Graphics, Apache FOP, Apache Batik, the Apache feather logo, and the
			Apache XML Graphics logos are trademarks of <a href="http://www.apache.org">The Apache
			Software Foundation</a>. All other marks mentioned may be trademarks or registered
			trademarks of their respective owners.
			<br />
		  </p>
		</div> 
	  </div>
	
  </body>
</html>