[![Apache XML Graphics Project Logo](/images/apache-xml-graphics.gif "Apache XML Graphics Project")](/)

# Apache&trade; XML Graphics
  - ### Project Overview
    - [Who We Are](/team.html)
    - [Legal Stuff](/legal.html)
    - [Project Charter](/charter.html)
    - [Mailing Lists](/mail.html)
    - [XML Graphics Wiki](https://cwiki.apache.org/confluence/display/XMLGRAPHICS)
    - [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/)
    - [Security](https://www.apache.org/security/)

# Sub Projects
  - # Apache Batik
    - [Overview](/batik/)
    - [License](/batik/license.html)
    - [Download](/batik/download.cgi)
    - [Installation notes](/batik/install.html)
    - [Status](/batik/status.html)
    - [Demo](/batik/demo.html)
    - [FAQs](/batik/faq.html)
    - [Mailing lists](/batik/mailing-lists.html)
    - [Contributors](/batik/contributors.html)
    - [Bug database](http://issues.apache.org/bugzilla/buglist.cgi?query_format=specific&amp;bug_status=__open__&amp;product=Batik)
    - [Projects using Batik](/batik/uses.html)
    - ## Batik Tools
        - [Browser](/batik/tools/browser.html)
        - [Rasterizer](/batik/tools/rasterizer.html)
        - [Font converter](/batik/tools/font-converter.html)
        - [Pretty printer](/batik/tools/pretty-printer.html)
    - ## Using Batik
      - [Architecture](/batik/using/architecture.html)
      - [Javadoc APIs](/batik/javadoc/)
      - [DOM API](/batik/using/dom-api.html)
      - [Parsers](/batik/using/parsers.html)
      - ### Scripting
        - [Scripting with ECMAScript](/batik/using/scripting/ecmascript.html)
        - [Scripting with Java](/batik/using/scripting/java.html)
        - [Security](/batik/using/scripting/security.html)
      - [SVG generator](/batik/using/svg-generator.html)
      - [Swing components](/batik/using/swing.html)
      - [Transcoder API](/batik/using/transcoder.html)
      - [Extending Batik](/batik/using/extending.html)
    - ## Development
      - [Branches](/batik/dev/branches.html)
      - [SVG 1.2 support](/batik/dev/svg12.html)
      - [Test infrastructure](/batik/dev/test.html)
  - # Apache 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)
    - [Mailing Lists](/fop/maillist.html)
    - [License](/fop/license.html)
    - ## Resources
      - [XSL-FO](/fop/fo.html)
      - [Examples](/fop/examples.html)
      - [Bugs](/fop/bugs.html)
      - [Wiki](/fop/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)
    - ## Branches
      - ## Apache&trade; FOP Trunk (dev)
        - [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)
      - ## Apache&trade; 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)
      - ## Apache&trade; FOP 0.95
        - [FOP 0.95 Overview](/fop/0.95/)
        - [Release Notes](/fop/0.95/releaseNotes_0.95.html)
        - [Changes (0.95)](/fop/0.95/changes_0.95.html)
        - [Changes (0.95beta)](/fop/0.95/changes_0.95beta.html)
        - [Known Issues](/fop/0.95/knownissues_overview.html)
        - [Upgrading](/fop/0.95/upgrading.html)
        - ### Using Apache FOP 0.95
          - [Build](/fop/0.95/compiling.html)
          - [Configure](/fop/0.95/configuration.html)
          - [Run](/fop/0.95/running.html)
          - [Embed](/fop/0.95/embedding.html)
          - [Servlets](/fop/0.95/servlets.html)
          - [Ant Task](/fop/0.95/anttask.html)
        - ### Features
          - [Output Targets](/fop/0.95/output.html)
          - [Intermediate Format](/fop/0.95/intermediate.html)
          - [PDF Encryption](/fop/0.95/pdfencryption.html)
          - [PDF/A](/fop/0.95/pdfa.html)
          - [PDF/X](/fop/0.95/pdfx.html)
          - [Graphics](/fop/0.95/graphics.html)
          - [Fonts](/fop/0.95/fonts.html)
          - [Hyphenation](/fop/0.95/hyphenation.html)
          - [Extensions](/fop/0.95/extensions.html)
          - [Metadata](/fop/0.95/metadata.html)
      - # Apache&trade; 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)
  - # XML Graphics Commons
    - [Overview](/commons/)
    - [Download](/commons/download.html)
    - ## Documentation
      - [Tools for Adobe PostScript](/commons/postscript.html)
      - [Image Loader Framework](/commons/image-loader.html)
    - ## Information
      - [Mailing Lists](/mail.html)
      - [Code Repositories](/repo.html)
      - [Changes](c/commons/hanges.html)
      - [Bugs](/commons/bugs.html)

<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>

## 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>

<style type="text/css">
.highlight {color: red;}
</style>

<script type="text/javascript">
$(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').append(' &raquo;');
    }
  $('#navigation > ul > li > ul').hide();
  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>