From ecb989d63899b86f218f59eb9537a47b47525b8f Mon Sep 17 00:00:00 2001 From: William Victor Mote Date: Mon, 14 Apr 2003 16:40:44 +0000 Subject: [PATCH] Move xml/fo content from faq.xml to new fo.xml. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196255 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/book.xml | 1 + src/documentation/content/xdocs/faq.xml | 551 ++++------------------- src/documentation/content/xdocs/fo.xml | 426 ++++++++++++++++++ 3 files changed, 522 insertions(+), 456 deletions(-) create mode 100644 src/documentation/content/xdocs/fo.xml diff --git a/src/documentation/content/xdocs/book.xml b/src/documentation/content/xdocs/book.xml index e1f1ec610..a4654c6eb 100644 --- a/src/documentation/content/xdocs/book.xml +++ b/src/documentation/content/xdocs/book.xml @@ -45,6 +45,7 @@ + diff --git a/src/documentation/content/xdocs/faq.xml b/src/documentation/content/xdocs/faq.xml index 679c43d50..221ca2d0d 100644 --- a/src/documentation/content/xdocs/faq.xml +++ b/src/documentation/content/xdocs/faq.xml @@ -3,9 +3,9 @@ "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/faq-v11.dtd"> - + General questions - + What is FOP?

@@ -19,7 +19,7 @@

- + What can I do with FOP?

@@ -36,7 +36,7 @@

- + What does "FOP" stand for?

@@ -45,7 +45,7 @@

- + How does FOP interact with other Apache Projects?

@@ -61,7 +61,7 @@

- + What is XSL?

@@ -73,8 +73,8 @@

- - What is XSLFO? + + What is XSL-FO?

XSLFO is an XML vocabulary that is used to specify a pagination and @@ -119,9 +119,9 @@ - + Problems running FOP - + I get the error: [ERROR]: 'master-reference' for 'fo:page-sequence'matches no 'simple-page-master' or 'page-sequence-master' @@ -327,7 +327,7 @@

See the article "Review FOP's Standards Compliance".

- + FOP hangs. FOP does not exit.

@@ -367,7 +367,7 @@

- + FOP cannot find a file for fo:external-graphics.

@@ -388,7 +388,7 @@ - + FOP does not find my fonts.

@@ -405,9 +405,9 @@ - + Problems with FOP output - + Why does FOP insert a blank page between my page sequences?

@@ -432,7 +432,7 @@

- + My PNG images don't work.

@@ -486,7 +486,7 @@ ]]> - + My tables are missing, or missing their content.

@@ -502,7 +502,7 @@

- + Text overflowing table cells and the like is not clipped. Long text flows into adjacent cells/block, obscuring stuff there. @@ -532,7 +532,7 @@

- + Page numbers are not properly right aligned.

@@ -549,7 +549,7 @@

- + A graphic is not displayed.

@@ -585,7 +585,7 @@

- + Hyphenation does not work.

@@ -596,7 +596,7 @@ - + Embedding FOP. Using FOP in a servlet. How do I use FOP in a servlet? @@ -606,7 +606,7 @@

- + How do I use FOP in a servlet with an XSLT transformation? @@ -615,7 +615,7 @@

- + How do I pass parameters to the XSLT transformation?

@@ -623,7 +623,7 @@

- + How do I use my own fonts when running FOP from a servlet? @@ -633,7 +633,7 @@ See loading the user configuration file for further

- + How do I set the baseDir property in a servlet environment?

@@ -649,7 +649,7 @@ See loading the user configuration file for further

- + I keep getting NoClassDefFound and other exceptions. How do I get FOP working for various servlet engines? @@ -665,16 +665,16 @@ See loading the user configuration file for further
- + Batik/SVG specific questions - + The rendering of SVG text in my PDF is of poor quality. Can I control this?

See Placing SVG Text into PDF.

- + How do I use FOP with SVG on headless servers?

@@ -714,7 +714,7 @@ Can I control this?

- + I have problems with SVG referring to gradients etc. using "uri(#stuff)". I get a MalformedURLException. @@ -762,9 +762,9 @@ Can I control this?
- + PDF specific (includes Acrobat peculiarities) - + How do I embed fonts in PDF?

@@ -773,7 +773,7 @@ Can I control this?

- + Some characters are not displayed, or displayed incorrectly, or displayed as “#”. @@ -799,7 +799,7 @@ Can I control this? ∅]]> - + What tools are available for post-processing my PDF document?
    @@ -881,7 +881,7 @@ Can I control this?

    - + How do I add document properties (title, author, etc.) to my PDF document? @@ -890,7 +890,7 @@ Can I control this? Post-Processing FAQ.

    - + How do I add watermarks to my PDF document?

    FOP does not currently support this feature. Possible @@ -915,7 +915,7 @@ Can I control this?

- + The PDF is printed contorted!

@@ -927,7 +927,7 @@ Can I control this?

- + How do I control the Acrobat bookmark display?

@@ -938,9 +938,9 @@ Can I control this? - + IEx specific stuff - + The FOP servlet is called multiple times!

@@ -972,7 +972,7 @@ Can I control this? - + How do I print PDF directly from the browser?

@@ -996,89 +996,31 @@ Can I control this? - - More general questions regarding XSLT and XSLFO and basic XML - + + General questions regarding XSLT, XSLFO, and basic XML + (FO) How do I vertically center an image or a table (or whatever)?

- Use display-align="center". FOP implements this for block containers - and table cell. A small self-contained document centering an image on - a page: -

- - - - - - - - - - - - - - - - - - - - - - - -]]> -
-
- + See XSL-FO Vertical Centering. +

+ +
+ (FO) How do I center a table horizontally?

- You can add a column left and right wich pad the table so that the visible part is centered. -

- - - - - - - - - - - - - - - - - - foo - - - - - - - -]]> -

- If your table is more complicated, or if defining borders on individual cells becomes too much work, use the code above and nest your table within the moddle cell. -

-
-
- + See XSL-FO Horizontal Centering (Tables). +

+ +
+ (FO) How to get page numbers printed on the "outer side" of the page (for books, for example)?

- Place different static content on odd and even - pages. + See Recto/Verso Static Content Differences.

@@ -1087,419 +1029,116 @@ Can I control this? pages?

- There are examples in the FO distribution and in the XSL FAQ FO - section. -

-

- Define a page master with alternating pages masters for odd and even - pages, specify appropriate regions in these page masters, and be sure - to give them different names. You use these names to put different - static content in these regions. A self contained document - demonstrating this: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]]> -
-
- + See Recto/Verso Static Content Differences. +

+ +
+ (FO) How do I get a special header on the first page?

- You can insert it into the flow instead of the static content. - Alternatively, use a page master referring to different page masters - for the first page and the rest. It is quite similar to the odd/even - page mechanism. A code sample: -

- - - - - - - - - - - - - - - - - - - - - First page. - - - Other page. - - - - - - - -]]> -
-
- + See Making the First Page Special. +

+ +
+ (FO) How do I omit my headers on a blank page? How do I write "This page is left blank" on an intentionally blank page?

- A blank page can be forced by a break-before="page-even" - or similar properties, or by a force-page-count="end-on-odd" on a page - sequence, which ensures a new chapter or something starts on the - preferred page. -

-

- You can define a conditional page master with a page master specific - for blank pages. This allows you to specify static content for blank - pages (by definition, a page is blank if no content from a flow is - rendered on the page). You can omit your normal headers and footers, - and use for example an extended header to print the "..left blank" - statement. -

- - - - - - - - - - - - - - - - - - - - - Normal footer - - - - Intentionally left blank. - - - - - -]]> -
-
- + See Blank Pages. +

+ +
+ (FO) How do I print an Euro sign, a checkbox or other some other special symbols?

- Try to look the character up in the Unicode reference at the Unicode Consortium, in - particular search the reference by - name. -

-

- Use XML - character references to put the character into your source - XML, XSLT or FO. -

-

- For example, the following will result in an Euro sign: -

- -

- The selected font family must have a glyph for the character you want - to show. This is actually a somewhat tricky issue, especially for - symbol characters. -

-

- Some environments provide also a character table utility (like Win2K - or WinXP), which can also help you to get an idea what glyphs are - available in a certain font. -

-

- Alternative: Use an embedded graphic: GIF, PNG, SVG, whatever. + See Special Characters.

- + (FO) How do I keep linebreaks and hard spaces? How do I get preformatted text displayed as expected?

- The specification provides some properties for this: white - space collapsing and line - feed treatment. In FOP, use white-space-collapse="false" on an - enclosing block. This will also preserve line breaks (which is - actually a bug, expect this to be changed). + See Preformatting Content.

- - (FO) How do I print the total number of pages, like in "page 1 + + (FO) How do I print the total number of pages, for example "page 1 of 12" - -

- This is an XSL FAQ. -

-

- Put an empty block with an id at the end of the flow: -

- - ... - -]]> -

- Get the number of the last page as follows: -

- ]]>

- This does not work for all problems, for example if you have multiple - page sequences, an initial page number different from 1, or if you - force a certain page count, thereby producing blank pages at the end. -

-

- There is no reliable way to get the real total page count with FO - mechanisms, you can only get page numbers. -

-

- The FOP library provides a method to get the total page count after a - FO document has been rendered. You can implement your own wrapper to - do a dummy rendering, inquire the total page count and the perform the - real rendering, passing the total page count to the XSLT processor to - splice it into the generated FO. A sample code: -

- -

- Declare and use the parameter "page-count" in your XSLT. Be aware you - may run into convergence problems: replacing the "#" placeholder from - the first run by the actual page count may change it. + See Total Document Pages.

- + (FO) The header overlaps body content. The body extends into the footer.

- Contrary to popular opinion, the regions on a page may overlap. - Defining a certain body region does not automatically constrain other - regions, this has to be done explicitely. -

-

- If you have a header region with an extent of 20mm, you should define - a margin for the body region of at least 20mm too, otherwise the - header content may overwrite some stuff in the body region. This - applies similarly to the extent of the after region and the bottom - margin of the body region. -

-

- The overlap effect can be used creatively for some purposes. + See Aligning Regions.

- + (FO) How do I get lines in the document, as separators, side bars or folding marks?

- Several possibilities: + See Drawing Lines.

-
    -
  • - Use fo:leader (look up the details in the XSLFO - specification, or use a book). For horizontal lines only. -
  • -
  • - Use a solid border on a suitable fo:block. Horizontal and vertical - lines only. -
  • -
  • - Insert a graphic. GIF, PNG SVG, whatever. -
  • -
- + (FO) How do I validate my FO document?

- RenderX has provided an - Unofficial - DTD for FO Documents. This document may be helpful in - validating general FO issues. -

-

- FOP also maintains an Unofficial - FOP Schema in the FOP CVS Repository. This document can be - used either to validate against the FO standard, or against the - actual FOP implementation. See the notes near the beginning of the - document for instructions on how to use it. + See Validating XSL-FO.

- - (XML) There are complaints about  . How - do I get a non-breaking space in FO? + + (XML) How do I get a non-breaking space in FO? There are complaints about  .

- Use   everywhere. In your own XML, you could also use a DTD - which declares the entity. + See XML Special Characters.

- - (XML) There are complaints about undefined entities, for example - about ü which used to work in HTML. How do I enter - special characters like in HTML? + + (XML) How do I enter special characters in XML? There are complaints about undefined entities, such as ü, which work in HTML.

- Don't use names as in HTML, use numbers (unless you have a DTD which - declares the entities). For predefined HTML entities and their Unicode - codepoints see Character entity - references in HTML 4 + See XML Special Characters.

- + (XML) There are complaints about illegal characters and entities in the input.

- Make sure ampersands in text and attributes are written as &amp;, - "<" is written as &lt; and ">" as &gt;. It's not necessary - everywhere but do it just to be sure. -

-

- The XML parser should give the proper line and possibly column for - offending characters. -

-

- Refer to the XML - specification or to a good tutorial for details of the XML - file format. + See XML Entity Characters.

- + (XML) There are complaints about illegal bytes or characters in the input. There are odd characters in the result.

- Usually, this is a character encoding problem. See XSL FAQ. Many software - packages producing XML, in particular most XSLT processors, produce by - default UTF-8 encoded files. If you view them with something not aware - of the encoding, like Notepad for Win95/98/ME/NT, funny characters are - displayed. A Å is a giveaway. + See XML Encoding Issues.

- + General suggestions. How to solve problems. I think I have found a bug in FOP. What should I do? @@ -1520,7 +1159,7 @@ class rendtest { If you have a runtime exception or other runtime problem:
  • - double-check the Runtime FAQs. + double-check the Runtime FAQs.
  • ClassNotFoundException, NoSuchMethodException and diff --git a/src/documentation/content/xdocs/fo.xml b/src/documentation/content/xdocs/fo.xml new file mode 100644 index 000000000..a05996a7c --- /dev/null +++ b/src/documentation/content/xdocs/fo.xml @@ -0,0 +1,426 @@ + + + +
    + XSL-FO Input + Basic Help for Using XML, XSLT, and XSL-FO +
    + +
    + Overview +

    + FOP uses XSL-FO as input. +It is the responsibility of the user to make sure that the XSL-FO submitted to FOP is correct. +The tutorial items presented here are not comprehensive, but are of the FAQ variety. +

    +
    +
    + XML Issues +
    + Special Characters +

    + When entering special (non-ASCII) characters in XML, the general rule is to use the applicable Unicode character instead of trying to use a character entity as you would with HTML. +Remember that HTML is an SGML document type. +SGML has a limited character set, which requires it to use character entities to represent special characters. +One of the improvements of XML over SGML (and thus HTML) is native support for Unicode. +Basic XML has only a handful of character entities, primarily because it doesn't really need more. +

    +

    + Entities such as &uuml; (u with an umlaut), which work in HTML, will be flagged as undefined entities unless you define them yourself in your DTD. +Use the corresponding Unicode character instead. +A list of predefined HTML entities and their Unicode codepoints can be found at Character entity references in HTML 4. +

    +

    + One common example is &nbsp;, used to obtain a non-breaking space in HTML. +In XML, use &#160; instead. +

    +

    + For other non-ASCII characters, such as the Euro symbol, checkbox, etc., see the Unicode Reference By Name document that is found at the Unicode Consortium site. +

    +

    + After finding the correct Unicode codepoint to represent the character, use XML Character References to put the character into your source XML, XSLT or FO. +See the non-breaking-space comments above for an example of the syntax using decimal notation. +The following hexadecimal example will result in a Euro sign: +

    + +

    + Getting your XML correctly encoded is only part of the job. +If you want the character to display or print correctly (and you probably do), then the selected font must contain the necessary glyph. +Because of differences between font encoding methods, and limitations in some font technologies, this can be a troublesome issue, especially for symbol characters. +The FOP example file Base-14 Font Character Mapping is a very useful resource in sorting these issues out for the Base-14 fonts. +For other fonts, use font editing sofware or operating system utilities (such as the Character Map in most Windows platforms) to determine what characters the font supports. +

    +

    + An alternative to encoding the character and making it available through a font is to use an embedded graphic to represent the character: GIF, PNG, SVG, etc. +

    +
    +
    + Entity Characters +

    + The handful of basic XML character entities that do exist are the ampersand, apostrophe, less-than, greater-than, and single-quote characters. +These are needed to distinguish markup tags from content, and to distinguish character entities from content. +To avoid parser complaints about illegal characters and entities in your input, ensure that ampersands in text and attributes are written as &amp;, "<" is written as &lt;, and ">" as &gt;. +It is not necessary everywhere, but it is wise to do so anyway, just to be sure. +

    +

    + Most XML parsers will provide a line number and sometimes a column number for offending characters. +

    +

    + Review the XML Specification or a good tutorial for details of the XML file format. +

    +
    +
    + Encoding Issues +

    + If the parser complains about illegal bytes or characters in the input, or there are unexpected characters in the output, this is usually is the result of a character encoding problem. +See the XSL FAQ for additional information. +Many software packages that produce XML, including XSLT processors, use UTF-8 encoding as a default. +If you view their output with something not aware of the encoding, like Notepad for Win95/98/ME/NT, funny characters are displayed. A Å is a giveaway. +

    +
    +
    +
    + XSL-FO Issues +
    + Vertical Centering +

    + To vertically center an image, table, or other item, use display-align="center". +FOP implements this for block containers and table cell. +Here is a small, self-contained document centering an image on a page: +

    + + + + + + + + + + + + + + + + + + + + + + + +]]> +
    +
    + Horizontal Centering (Tables) +

    + To center a table horizontally, one possibility is to add one column on the left and one on the right which pad the table so that the visible part is centered: +

    + + + + + + + + + + + + + + + + + + foo + + + + + + + +]]> +

    + If your table is more complicated, or if defining borders on individual cells becomes too much work, use the code above and nest your table within the middle cell. +

    +
    +
    + Recto/Verso Static Content Differences +

    + One frequent request is that static content be different between recto pages (right-side or odd-numbered pages typically) and verso pages(left-side or even-numbered pages typically). +For example, you may wish to place the page number on the "outer" side of each page. +There are examples in the FO distribution and in the XSL FAQ FO section. +

    +

    + First, define a page master with alternating pages masters for odd and even pages. +Then specify appropriate regions in these page masters, giving them different names. +Use these names to put different static content in these regions. Here is a self-contained demonstration: +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> +
    +
    + Making the First Page Special +

    + To get a special header on the first page, one possibility is to insert it into the flow instead of the static content. Alternatively, use a page master referring to different page masters for the first page and the rest. Here is a code sample: +

    + + + + + + + + + + + + + + + + + + + + + First page. + + + Other page. + + + + + + + +]]> +
    +
    + Blank Pages +

    + Sometimes it is desirable to insert blank pages within your output, starting, for example, a new chapter on an odd page or an even page. +A blank page can be forced by using break-before="page-even" or similar properties, or by a force-page-count="end-on-odd" on a page sequence. +

    +

    + To write "This page is intentionally left blank" (or something similar) on an intentionally blank page, first define a conditional page master with a page master specific for blank pages. +This allows you to specify static content for blank pages (by definition, a page is blank if no content from a flow is rendered on the page). +Omit your normal headers and footers, and use (for example) an extended header to print the "..left blank" statement: +

    + + + + + + + + + + + + + + + + + + + + + Normal footer + + + + Intentionally left blank. + + + + + +]]> +
    +
    + Preformatting Content +

    + Sometimes it is desirable to retain linebreaks and hard spaces, and to get preformatted text to pass through without being changed. +The XSL-FO specification provides some properties for this: white-space-collapse and linefeed-treatment. +In FOP, use white-space-collapse="false" on an enclosing block. +

    + + Due to a bug in current versions of FOP, setting white-space-collapse="false" will also preserve line breaks in the text. Do not rely on this behavior, as it is non-conformant and will be changed. + +
    +
    + Total Document Pages +

    + It is frequently desirable to know the total number of pages in a document and to use that number within the document. +For example, you might wish to show the page number on the first page as being "page 1 of 12". +To accomplish this, place an empty block with an id at the end of the flow: +

    + + ... + +]]> +

    + Get the number of the last page as follows: +

    + ]]> +

    + This does not work in certain situations: multiple page sequences, an initial page number other than 1, or forcing a certain page count, thereby producing blank pages at the end. +

    + + There is no reliable way to get the real total page count with FO mechanisms. You can only get page numbers. + +

    + The FOP library provides a method to get the total page count after an FO document has been rendered. +One possibility is to implement your own wrapper to do a dummy rendering, inquire the total page count and then perform the real rendering, passing the total page count to the XSLT processor to splice it into the generated FO. +For example: +

    + +

    + Declare and use the parameter "page-count" in your XSLT. +

    + + It is possible to run into a convergence problem with this solution. Replacing the "#" placeholder in the first run with the actual page count in the second run, may change the total number of pages in the document. + +
    +
    + Aligning Regions +

    + Although it may seem counterintuitive, the regions on a page may overlap. +Defining a certain body region does not automatically constrain other regions. +Instead, this has to be done explicitly. +Sometimes for creative reasons it may be desirable to have the regions overlap. +Otherwise, you will want to set them up so that the header does not overlap body content or the body extend into the footer. +

    +

    + Assuming you wish to keep the regions separate, if you have a header region with an extent of 20mm, you should define a margin for the body region of at least 20mm too. +Otherwise the header content may overwrite some stuff in the body region. +This applies similarly to the extent of the after region and the bottom margin of the body region. +

    +
    +
    + Drawing Lines +

    + It is frequently desirable to draw lines in a document, as separators, side bars or folding marks. There are several possibilities: +

    +
      +
    • + Horizontal lines can be drawn using fo:leader. +
    • +
    • + Use a solid border on a suitable fo:block. This will work for horizontal and vertical lines only. +
    • +
    • + Insert a graphic. GIF, PNG SVG, whatever. +
    • +
    +
    +
    + Validating XSL-FO +

    + RenderX has provided an Unofficial DTD for FO Documents, which may be helpful in validating general FO issues. +

    +

    + FOP also maintains an Unofficial FOP Schema in the FOP CVS Repository. +This document can be used either to validate against the FO standard, or against the actual FOP implementation. +See the notes near the beginning of the document for instructions on how to use it. +

    +
    +
    + +
    -- 2.39.5