From b27f6c67e457bfc108c9b57b6913558a6d75223e Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@unknown> Date: Mon, 14 Jul 2003 12:30:01 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create branch 'fop-0_20_2-maintain'. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-0_20_2-maintain@196704 13f79535-47bb-0310-9956-ffa450edef68 --- .../content/xdocs/dev/conventions.xml | 149 +++++++++ .../content/xdocs/dev/release.xml | 62 ++++ .../content/xdocs/dev/rtflib.xml | 310 ++++++++++++++++++ .../content/xdocs/hyphenation.xml | 51 +++ src/documentation/content/xdocs/maillist.xml | 97 ++++++ src/documentation/content/xdocs/servlets.xml | 246 ++++++++++++++ src/documentation/content/xdocs/team.xml | 251 ++++++++++++++ 7 files changed, 1166 insertions(+) create mode 100644 src/documentation/content/xdocs/dev/conventions.xml create mode 100644 src/documentation/content/xdocs/dev/release.xml create mode 100644 src/documentation/content/xdocs/dev/rtflib.xml create mode 100644 src/documentation/content/xdocs/hyphenation.xml create mode 100644 src/documentation/content/xdocs/maillist.xml create mode 100644 src/documentation/content/xdocs/servlets.xml create mode 100644 src/documentation/content/xdocs/team.xml diff --git a/src/documentation/content/xdocs/dev/conventions.xml b/src/documentation/content/xdocs/dev/conventions.xml new file mode 100644 index 000000000..cdc351ea1 --- /dev/null +++ b/src/documentation/content/xdocs/dev/conventions.xml @@ -0,0 +1,149 @@ + + + +
+ FOP Development: Coding Conventions +
+ +

Acknowledgement: Some content in this guide was adapted from other Apache projects such as Avalon, Cactus, Turbine and Velocity.

+
+ CVS Repository +

Conventions in this section apply to Repository content, regardless of type:

+ +
+
+ Java +
+ Java Style +

In order to facilitate the human reading of FOP source code, the FOP developers have agreed on a set of coding conventions. +The basis of these coding conventions is documented in the Apache XML Project Guidelines, which requires that all Java Language source code in the repository must be written in conformance to Sun's Code Conventions for the Java Programming Language. +In addition, the FOP developers have agreed to other conventions, which are summarized in the following table:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConventionRationaleEnforced By
Every Java source file starts with the Apache licence header.Required by Apache.checkstyle
No tabs in contentProgrammers should not have to adjust the tab settings in their editor to be able to read the source code.checkstyle
Indentation of 4 spaces per levelMaximize readability.Not enforced
Comments must be in EnglishTo avoid the need for everyone to learn all languages, English has become the standard language for many technology projects, and is the only human language that all FOP developers are expected to know.Not enforced
Fully qualify all import statements (no "import java.util.*")Claritycheckstyle
No underscores in variable names except for static finals.Upper/lower case distinctions can be made in all other variable names, eliminating the need for artificial word boundaries.checkstyle
Opening brace for a block should be on the same line as its control statement (if, while, etc.).Standardization, general preference.checkstyle
Write appropriate javadoc entries for all public and protected classes, methods, and variables.Basic API documentation is needed.checkstyle
+

For developers that dislike these conventions, one workaround is to develop using their own style, then use a formatting tool like astyle (Artistic Style) before committing.

+
+
+ Checkstyle +

The java syntax checker "Checkstyle" is used to enforce many of the FOP coding standards. +The standards enforced through Checkstyle are documented in its configuration file (xml-fop/checkstyle.cfg). +The conventions defined in the configuration file are an integral part of FOP's coding conventions, and should not be changed without common consent. +In other words, the configuration file contains additional conventions that are not documented on this page, but are generally accepted as good style within the java community (i.e. they are the default behavior of checkstyle, which the FOP developers have decided to adopt de facto). +Any apparent contradiction between the configuration file and this document should be raised on the fop-dev mailing list so that it can be clarified.

+

To use the "checkstyle" target in FOP's build process, download the source from the Checkstyle web site, place checkstyle-all-*.jar in the lib directory and call "build checkstyle". Output (in the build directory) includes checkstyle_report.txt and checkstyle_report.xml. If you copy the file contrib/checkstyle-noframes.xsl from Checkstyle into FOP's root directory, you will also get an HTML report.

+

Checkstyle is probably most useful when integrated into your IDE. See the Checkstyle web site for more information about IDE plugins.

+
+
+ Java Best Practices +

The following general principles are a distillation of best practice expectations on the FOP project.

+
    +
  • Apply common sense when coding. When coding keep in mind that others will read your code and have to understand it.
  • +
  • Readability comes before performance, at least initially.
  • +
  • If you can refactor some code to make it more understandable, please do so.
  • +
  • Properly document code, especially where it's important.
  • +
  • Use interfaces instead of implementations where possible. +This favors a clearer design and makes switching between implementations easier (Examples: List instead of ArrayList/Vector, Map instead of HashMap/Hashtable).
  • + + +
  • Avoid using exceptions for flow control.
  • +
  • Try to catch exceptions as much as possible and rethrow higher level exceptions (meaning hiding the low level detailed and putting a message that is more related to the function of your code).
  • +
  • It is important not to lose the stack trace which contains important information. +Use chained exception for that. Avalon Framework provides CascadingException (and similar) for this. +Exception class names and stack traces must be treated like gold. +Do whatever is required so that this information is not lost. +Printing error messages to System.err or System.out is useless in a server-side environment where this info is usually lost.
  • +
  • Always log the exception at the higher level (i.e. where it is handled and not rethrown).
  • +
  • Try to avoid catching Throwable or Exception and catch specific exceptions instead.
  • +
+
+
+ Resources +
    +
  • [book on code style] Code Complete by Steve McConnell.
  • +
  • [code formatting software] JRefactory.
  • +
+
+ +
+
+ XML + + + + + + + + + + + + + + + + + + + + + +
ConventionRationaleEnforced By
XML files must always be well-formed. Validation is optional.Document integrityNot enforced
No tabs in content.Users should not have to adjust tab settings in their editor to be able to read the content.Not enforced
Indentation of 2 spaces per levelMaximize readabilityNot enforced
+
+ +
diff --git a/src/documentation/content/xdocs/dev/release.xml b/src/documentation/content/xdocs/dev/release.xml new file mode 100644 index 000000000..ed340e459 --- /dev/null +++ b/src/documentation/content/xdocs/dev/release.xml @@ -0,0 +1,62 @@ + + + +
+ FOP Development: Release Mechanics +
+ +
+ Introduction +

This page documents the process of creating a FOP release. +FOP releases are coordinated by one member of the team (currently Christian Geisert), so others do not ordinarily need to use this information. +The purpose of documenting it here is to facilitate consistency, ensure that the process is captured, and to allow others to comment on the process.

+

The checklist below was assembled from Christian Geisert's notes. It will be expanded in the future as he has time.

+
+
+ Checklist + +
+
+ Resources +

The following is a sample of some other project release checlists, which might be consulted for ideas:

+ +

Following are links with information about mirroring:

+ +
+ +
diff --git a/src/documentation/content/xdocs/dev/rtflib.xml b/src/documentation/content/xdocs/dev/rtflib.xml new file mode 100644 index 000000000..01e1ef9ca --- /dev/null +++ b/src/documentation/content/xdocs/dev/rtflib.xml @@ -0,0 +1,310 @@ + + + +
+ FOP Development: RTFLib (jfor) +
+ +
+ General Information +
+ Introduction +

The RTFLib package is an open-source, independent package suitable for writing RTF files in a java environment. +By independent we mean:

+
    +
  • Although it is used by FOP to generate FOP's RTF output, it is not dependent on FOP for any of its functionality.
  • +
  • It does not require FOP as a front-end, nor does it even require XSL-FO for input. +It essentially exposes an API of relatively high-level RTF construction routines to a host program. +This means it can be used anywhere RTF output is required and java is available.
  • +
+

The FOP development team intends to keep the RTFLib package independent so that it can be used for other purposes.

+
+
+ History +

RTFLib was originally developed by Bertrand Delacrétaz and the jfor team. jfor was written under an Apache-style license, and the jfor team contributed the code to the Apache Software Foundation in June, 2003. RTFLib is a subset of the original jfor project, which also includes an XSL-FO parsing mechanism for a complete XSL-FO to RTF solution.

+
+
+ Status +

Although FOP's implementation of the RTFLib package is very incomplete, the RTFLib package itself is relatively mature. RTFLib is only available in the trunk line of FOP development.

+ This documentation is a work in progress. If you see errors or omissions, please report them to the fop-dev mailing list. +
+
+
+ User Documentation +
+ Overview +

Perhaps the easiest way to see how to use RTFLib is by looking at an example. A set of test documents is part of the package, and can be viewed online. +A quick look at the Abstract TestDocument class, and one of the Concrete subclasses, SimpleDocument will provide the basics of how to use the package.

+

There are two basic concepts you will need to understand in order to use RTFLib:

+
    +
  • Documents are created by filling bigger containers with successively smaller containers, and eventually with content.
  • +
  • Attributes may be set for each container or content as it is created
  • +
+

RTFLib handles the process of converting to and writing the RTF content as the document is created. All you need to do is flush the document at the end to make sure that the last pieces get written.

+
+
+ Document Structure + This section is very incomplete. +

The documentation in this section is intended to provide a high-level view of the process of building an RTF document. For more detailed API documentation of the various methods, be sure to consult the Javadocs for RTFLib.

+

The following table summarizes the various containers that can be created:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameClass.Method where createdAttribute Set(s)Valid children
Document AreaRtfFile.startDocumentArea()Information Group, Document FormattingSection
SectionRtfDocumentArea.newSection()Section FormattingParagraph, ParagraphKeepTogether, Image, List, Before (Page Heading), After (Page Footer), JforCmd
ParagraphRtfSection.newParagraph()Paragraph Formatting, Character FormattingText
ParagraphKeepTogetherRtfSection.newParagraphKeepTogether..
ImageRtfSection.newImage..
TableRtfSection.newTable..
ListRtfSection.newList..
Before (Page Heading)RtfSection.newBefore..
After (Page Footer)RtfSection.newAfter..
JforCmdRtfSection.newJforCmd..
TextRtfParagraph.newText()Character FormattingN/A
+
+
+ Attributes + This section is very incomplete. +

Attributes can be set for each container and piece of content in the document. The general approach is to build an RtfAttributes object containing the various attributes, then pass that RtfAttributes object to the method that creates the new container or content. See the Javadoc API documentation for RtfAttributes for details on the syntax for creating an RtfAttributes object. The following information lists the various attributes that can be set for each type of container.

+
+ Information Group +

These attributes are set when creating a Document.

+
+
+ Document Formatting +

These attributes are set when creating a Document.

+
+
+ Section Formatting +

These attributes are set when creating a Section.

+
+
+ Paragraph Formatting +

These attributes are set when creating a Paragraph.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionAttribute NameAttribute ValueRTF Control Word
.
Alignment.
Align LeftRtfText.ALIGN_LEFTN/A (boolean)\ql
Align RightRtfText.ALIGN_RIGHTN/A (boolean)\qr
Align CenteredRtfText.ALIGN_CENTERN/A (boolean)\qc
Align JustifiedRtfText.ALIGN_JUSTIFIEDN/A (boolean)\qj
Align DistributedRtfText.ALIGN_DISTRIBUTEDN/A (boolean)\qd
Kashida justificationnot implemented0-20 (integer)\qkN
Thai Distributed justificationnot implementedN/A (boolean)\qt
Indentation.
Left indent bodyRtfText.LEFT_INDENT_BODY(int) "hundredths of a character unit" (?)\li
Left indent firstRtfText.LEFT_INDENT_FIRST(int) "hundredths of a character unit" (?)\fi
Borders.
Bottom single borderRtfText.BDR_BOTTOM_SINGLEBoolean?brdrb\\brsp40\\brdrs
Bottom double borderRtfText.BDR_BOTTOM_DOUBLEBoolean?brdrb\\brsp40\\brdrdb
Bottom embossed borderRtfText.BDR_BOTTOM_EMBOSSBoolean?brdrb\\brsp40\\brdremboss
bottom dotted borderRtfText.BDR_BOTTOM_DOTTEDBoolean?brdrb\\brsp40\\brdrdot
bottom dashed borderRtfText.BDR_BOTTOM_DASHBoolean?brdrb\\brsp40\\brdrdash
+
+
+ Character Formatting +

These attributes are set when creating a Paragraph, or Text.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionAttribute NameAttribute ValueRTF Control Word
BoldRtfText.ATTR_BOLDN/A (boolean)\b
ItalicRtfText.ATTR_ITALICN/A (boolean)\i
UnderlineRtfText.ATTR_UNDERLINEN/A (boolean), or (int) 0 to turn underlining off\ul
Font SizeRtfText.ATTR_FONT_SIZE(int) font size in half-points\fs
Font FamilyRtfText.ATTR_FONT_FAMILY(int) entry in document font-table\f
Font ColorRtfText.ATTR_FONT_COLOR(int) entry in document color-table\cf
Background ColorRtfText.ATTR_BACKGROUND_COLOR(int) entry in document color-table\chcbpat
+
+
+
+ +
diff --git a/src/documentation/content/xdocs/hyphenation.xml b/src/documentation/content/xdocs/hyphenation.xml new file mode 100644 index 000000000..92f77904e --- /dev/null +++ b/src/documentation/content/xdocs/hyphenation.xml @@ -0,0 +1,51 @@ + + + +
+ FOP: Hyphenation +
+ +
+ Introduction +

FOP uses an XML-based TeX-like hyphenation pattern scheme. +Hyphenation pattern files for many languages are included in the standard FOP distribution. +However, because of licensing issues, there are currently some significant holes in FOP's hyphenation support. +The information on this page is intended to help you work around these limitations, if possible, add support for other languages, or enhance FOP's support of current languages.

+ If you have access to hyphenation patterns that are licensed in an Apache-compatible way, or if you have made improvements to an existing FOP hyphenation pattern, or if you have created one from scratch, please consider contributing these to FOP so that they can benefit other FOP users as well. Please inquire on the FOP User mailing list. +
+
+ License Issues +

Many of the hyphenation files distributed with TeX and its offspring are licenced under the LaTeX Project Public License (LPPL), which prevents them from being distributed with Apache software. +Although Apache FOP cannot redistribute hyphenation pattern files that do not conform with its license scheme, that does not necessarily prevent users from using such hyphenation patterns with FOP. +However, it does place on the user the responsibility for determining whether the user can rightly use such hyphenation patterns under the hyphenation pattern license.

+ The user is responsible to settle license issues for hyphenation pattern files that are obtained from non-Apache sources. +
+
+ Sources of Hyphenation Pattern Files +

The most important source of hyphenation pattern files is the CTAN TeX Archive.

+
+
+ Installing Custom Hyphenation Patterns +

To install custom a custom hyphenation pattern for use with FOP:

+
    +
  1. Convert the TeX hyphenation pattern file to the FOP format. The FOP format is an xml file conforming to the DTD found at {fop-dir}/src/hyph/hyphenation.dtd.
  2. +
  3. Name this new file following this schema: languageCode_countryCode.xml. +The country code is optional, and should be used only if needed. For example: +
      +
    • en_US.xml would be the file name for an American English hyphenation pattern.
    • +
    • it.xml would be the file name for an Italian hyphenation pattern.
    • +
    +The language and country codes must match the XSL-FO input, which follows ISO 639 (languages) and +ISO 3166 (countries). +NOTE: The ISO 639/ISO 3166 convention is that language names are written in lower case, while country codes are written in upper case.
  4. +
  5. There are two ways to make the FOP-compatible hyphenation pattern file accessible to FOP: +
      +
    • Place the FOP-compatible hyphenation pattern file into the directory {fop-dir}/src/hyph and rebuild FOP. The file will be picked up and added to fop.jar.
    • +
    • Put the file into a directory of your choice and configure FOP to look for custom patterns in this directory, by setting the <hyphenation-dir> configuration option.
    • +
    +
  6. +
+
+ +
diff --git a/src/documentation/content/xdocs/maillist.xml b/src/documentation/content/xdocs/maillist.xml new file mode 100644 index 000000000..d42fabea8 --- /dev/null +++ b/src/documentation/content/xdocs/maillist.xml @@ -0,0 +1,97 @@ + + + +
+ FOP: Mailing List Resources +
+ +
+ General Information +

Before posting questions to any list:

+ +

For help in understanding email acronyms, see the Lingo2Word Acronym List, or the Keno Internet Services Internet Glossary.

+
+
+ FOP User Mailing List +

Use this forum to discuss topics of interest to FOP users.

+
+ Archives +

To review the archives, you have several options:

+
    +
  • The Mailing list ARChives (MARC) at the AIMS group (search).
  • +
  • The Apache Eyebrowse archive (search, list by date, author, subject, or thread).
  • +
  • The Apache Mailing List archive (gzip files).
  • +
+
+
+ Subscription Information +
    +
  • See Apache XML Mailing Lists for detailed subscription information.
  • +
  • To subscribe (digest only): Send email to fop-user-digest-subscribe@xml.apache.org.
  • +
  • To subscribe fully: Send email to fop-user-subscribe@xml.apache.org.
  • +
  • For standard help: Send email to fop-user-help@xml.apache.org.
  • +
  • To unsubscribe: Send email to fop-user-unsubscribe@xml.apache.org.
  • +
+
+
+ Submitting a Question +

FOP support is primarily self-service. The FOP User Mailing List serves as a backup to the self-service documentation for cases where either the documentation is deficient or where users have unusual circumstances. FOP developers and users are happy to help answer questions that are appropriate to the forum (i.e. FOP-specific), and that are submitted after appropriate preparation. To ensure that your question is not abusive of this policy, please use the following checklist:

+
    +
  • Have you followed the Getting Help checklist? If not, please do so before submitting your question.
  • +
  • Is your question appropriate to the forum? If it is really an XSL-FO question, XSLT question, or PDF question, please see the other resources on this page that are intended to help you get those questions answered.
  • +
  • Have you read Mailing List General Information? If not please do so before proceeding.
  • +
  • Have you stated the version of FOP you are using? Please do so.
  • +
  • Have you included any detailed error messages? Please do so.
  • +
  • Does a proper understanding of your question require inclusion of XSLT code, DocBook source, or other semantic XML? If so, the question is almost certainly not appropriate to this list. In general, the only input documents that are appropriate on this list are XSL-FO snippets. See Running Xalan for instructions about capturing the XSL-FO document that is actually submitted to FOP. If you haven't examined the XSL-FO document yourself, then you are not yet prepared to formulate a FOP-specific question.
  • +
  • If you are providing one or more XSL-FO snippets: +
      +
    • Have you reduced them to the shortest possible complete, self-contained document that demonstrates the problem? Please do so.
    • +
    • Have you removed images that are not an integral part of the question? Please do so.
    • +
    • Have you filtered out confidential material? Please do so.
    • +
    +
  • +
  • If you are including a stack trace: +
      +
    • Is it helpful in finding the problem? If not, please do not submit it.
    • +
    • Have you included only those portions that are relevant to the question? If not, please do so.
    • +
    +
  • +
  • Are you attaching large PDF files or screen shots to your message? If so, please consider attaching a minimal, appropriate B&W GIF, JPG or PNG that conveys the necessary information instead.
  • +
+
+
+
+ XSL-FO Mailing List (at W3C) +

Use this forum to ask general XSL-FO questions.

+ +
+
+ XSL-FO Mailing List (at YahooGroups) +

Use this forum to ask general XSL-FO questions.

+ +
+
+ XSLT List (Mulberry Tech) + +
+ +
diff --git a/src/documentation/content/xdocs/servlets.xml b/src/documentation/content/xdocs/servlets.xml new file mode 100644 index 000000000..efe5bc7b1 --- /dev/null +++ b/src/documentation/content/xdocs/servlets.xml @@ -0,0 +1,246 @@ + + + +
+ Servlets + How to use FOP in a Servlet +
+ +
+ Overview +

+ This page discusses topic all around using FOP in a servlet environment. +

+
+
+ Example Servlets in the FOP distribution +

+ In the directory {fop-dir}/examples/servlet, you'll find a working example + of a FOP-enabled servlet. +

+

+ You can build the servlet easily by using the supplied Ant script. After building + the servlet, drop fop.war into the webapps directory of Tomcat. Then, you can use + URLs like the following to generate PDF files: +

+ +

+

The source code for the servlet can be found under {fop-dir}/examples/servlet/src/FopServlet.java.

+
+
+ Create your own Servlet + + This section assumes you are familiar with embedding FOP. + +
+ A minimal Servlet +

+ Here is a minimal code snippet to demonstrate the basics: +

+ public void doGet(HttpServletRequest request, + HttpServletResponse response) throws ServletException { + try { + response.setContentType("application/pdf"); + Driver driver = new Driver(new InputSource("foo.fo"), + response.getOutputStream()); + driver.setRenderer(Driver.RENDER_PDF); + driver.run(); + } catch (Exception ex) { + throw new ServletException(ex); + } +} + + There are numerous problems with the code snippet above. + Its purpose is only to demonstrate the basic concepts. + See below for details. + +
+
+ Adding XSL tranformation (XSLT) +

+ A common requirement is the to transform an XML source to + XSLFO using an XSL transformation. It is recommended to use + JAXP for this task. The following snippet shows the basic + code: +

+ +protected Logger log; +protected TransformerFactory transformerFactory; + +public void init() throws ServletException { + this.log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN); + this.transformerFactory = TransformerFactory.newInstance(); +} + +[..] + + //Setup FOP + Driver driver = new Driver(); + driver.setLogger(this.log); + driver.setRenderer(Driver.RENDER_PDF); + + //Setup a buffer to obtain the content length + ByteArrayOutputStream out = new ByteArrayOutputStream(); + driver.setOutputStream(out); + + //Setup Transformer + Source xsltSrc = new StreamSource(new File("foo-xml2fo.xsl")); + Transformer transformer = this.transformerFactory.newTransformer(xsltSrc); + + //Make sure the XSL transformation's result is piped through to FOP + Result res = new SAXResult(driver.getContentHandler()); + + //Setup input + Source src = new StreamSource(new File("foo.xml")); + + //Start the transformation and rendering process + transformer.transform(src, res); + + //Prepare response + response.setContentType("application/pdf"); + response.setContentLength(out.size()); + + //Send content to Browser + response.getOutputStream().write(out.toByteArray()); + response.getOutputStream().flush(); + + Buffering the generated PDF in a ByteArrayOutputStream is done to avoid potential + problems with the Acrobat Reader Plug-in in IEx. + +

+ The Source instance used above is simply an + example. If you have to read the XML from a string, supply + a new StreamSource(new + StringReader(xmlstring)). Constructing and reparsing + an XML string is generally less desirable than using a + SAXSource if you generate your XML. You can alternatively + supply a DOMSource as well. You may also use dynamically + generated XSL if you like. +

+

+ Because you have an explicit Transformer object, you can also use it to + explicitly set parameters for the transformation run. +

+
+
+ Custom configuration +

+ If you need to supply a special configuration do this in the init() + method so it will only be done once and to avoid multithreading problems. +

+ public void init() throws ServletException { + [..] + new Options(new File("userconfig.xml")); + //or + Configuration.put("baseDir", "/my/base/dir"); +} +
+
+ Improving performance +

+ There are several options to consider: +

+
    +
  • + Instead of java.io.ByteArrayOutputStream consider using the ByteArrayOutputStream + implementation from the Jakarta Commons IO project which allocates less memory. +
  • +
  • + In certain cases it can help to write the generated PDF to a temporary file so + you can quickly reuse the file. This is especially useful, if Internet Explorer + calls the servlet multiple times with the same request or if you often generate + equal PDFs. +
  • +
+

+ Of course, the + performance hints from the Embedding page + apply here, too. +

+
+
+
+ Notes on Microsoft Internet Explorer +

+ Some versions of Internet Explorer will not automatically show the PDF or call the servlet multiple times. + These are well-known limitations of Internet Explorer and are not a problem of the servlet. + However, Internet Explorer can still be used to download the PDF so that it can be viewed later. + Here are some suggestions in this context: +

+ +
+
+ Servlet Engines +

+ When using a servlet engine, there are potential CLASSPATH issues, and potential conflicts + with existing XML/XSLT libraries. Servlet containers also often use their own classloaders + for loading webapps, which can cause bugs and security problems. +

+
+ Tomcat +

+ Check Tomcat's documentation for detailed instructions about installing FOP and Cocoon. + There are known bugs that must be addressed, particularly for Tomcat 4.0.3. +

+
+
+ WebSphere 3.5 +

+ Put a copy of a working parser in some directory where WebSphere can access it. + For example, if /usr/webapps/yourapp/servlets is the CLASSPATH for your servlets, + copy the Xerces jar into it (any other directory would also be fine). + Do not add the jar to the servlet CLASSPATH, but add it to the CLASSPATH of the + application server which contains your web application. + In the WebSphere administration console, click on the "environment" button in the + "general" tab. In the "variable name" box, enter "CLASSPATH". + In the "value" box, enter the correct path to the parser jar file + (/usr/webapps/yourapp/servlets/Xerces.jar in our example here). + Press "OK", then apply the change and restart the application server. +

+
+
+
+ Handling complex use cases +

+ Sometimes the requirements for a servlet get quite sophisticated: SQL data sources, + multiple XSL transformations, merging of several datasources etc. In such a case + consider using Apache Cocoon instead + of a custom servlet to accomplish your goal. +

+
+ +
+ diff --git a/src/documentation/content/xdocs/team.xml b/src/documentation/content/xdocs/team.xml new file mode 100644 index 000000000..ae37fd6d1 --- /dev/null +++ b/src/documentation/content/xdocs/team.xml @@ -0,0 +1,251 @@ + + + + +
+ FOP: Development Team +
+ +

All lists on this page are in alphabetical order. Some of them may be incomplete. If you know of an error or omission, please send a message to the fop-dev mailing list.

+
+ Active Committers + +
+
+ Active Contributors + +
+
+ Founder +

FOP was originally created and donated to the Apache Software Foundation by James Tauber. Information about him can be found at his website.

+
+
+ Former Committers + +
+
+ Areas of Expertise + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ BD CG KL KLLJM GM WVMJP AS OT PBW
PMC representation + + + + X + + + + + X
Release manager + X + + + + + + + + +
XSL-FO tree + + + X + + + + + + X
Layout + + XX + + + XX + +
Fonts + + + + X + + + + + +
SVG + + + XX + + + + + +
Java2D (AWT) + + + XX + + + + + +
PDF + + + XX + + + + + +
PostScript + + + + X + + + + + +
PCL + + + + + + + + + + +
RTFX + + + + + + + + + +
MIF + + + + + + + + + + +
+
+ +
+ -- 2.39.5