Home

User Guide

image

Contents

1. Another useful feature of Pie graphs is the other slice The Report Generator can automatically group values below a certain size to prevent the graph becoming too cluttered The other percentage sets the threshold it defaults to zero and the other label is the label to use which defaults to the word other A further problem wih Pie Graphs is what to do when the value to be plotted is zero Of course having a slice of Pie that s 0 of the whole doesn t make sense in the real world but occasionally it s useful to be able to indicate that the value might have been present To control this the display zeros attribute can be set to true or false if true the zero values will be displayed as infinitely small slices If false they will be skipped completely the default Axes Graphs Every graph other than the Pie Graph is plotted against two or more axes and consequently they all have several attributes in common First we need to define some terms e A formatter determine how the values printed on an axis are displayed as currencies dates integers and so on e A label is the name of the axis like day of week or number of units Labels on axes are optional and off by default e A style is the name given to a group of attributes which together define how a text element in the graph appears Like the key attributes in the general graph attributes section these always have a comm
2. return uri TLIE With this example if the servlet was placed in the WEB INF classes directory as SampleServlet class then to load and convert an example called HelloWorld xml just enter the URL http yourdomain com servlet SampleServlet HelloWorld xml Obviously this is a simple example and it s fully expected that smarter proxies will be written with error checking and the like The main things to remember when implementing this method are e The returned URL must be absolute Here we ensure this by making the requested URL relative to thisur1 which is the URL of the current request e If something goes wrong this method should return nu11 and an error should written to the HttpServletRespons For those requiring more complete control over the conversion process source code for the PDFProxyServlet is supplied in the docs directory Page 5 of 76 Creating PDFs using a transformer When the XML to be converted is a result of one or more transformations the PDF can be created as the end result of the chain The transformations can either be a handwritten XMLFilter like the SampleTransformer java example supplied with the package or the result of an XSL transformation This saves having to serialize and deserialize the XML although it does require at least a SAX 2 0 parser Here s an example which is also supplied with the download package as SampleTransformer java IMPOmeE Wavia On import org facel
3. The Big Faceless Report Generator User Guide Version 1 1 57 Introduction Thank you for your interest in the Big Faceless Report Generator This userguide will give you an overview of how to use the product and start you off with some simple examples For more detailed and up to date information please visit the product homepage at http bfo com products report What is it The Report Generator is a java application for converting source documents written in XML to PDF Build on top of our popular PDF and Graph libraries the Report Generator combines the features of the two and wraps an XML parser around them Thanks to this it is now possible to create a PDF report direct from a database with little or no Java experience Features Here s a brief summary of the generator s features Create dynamic reports using JSP s ASP s XSLT whatever you would normally use to create dynamic HTML pages Simple HTML style XML syntax makes migration for HTML reports and HTML programmers relatively painless Use Cascading Style Sheets level 2 to control the document look and feel Build Reports on top of existing PDF documents Extended Edition only Full support for autosized nested tables lists hyperlinks images and other familar HTML features Inline generation of graphs and charts in full shaded 3D Embed XML metadata directly in the PDF following Adobes XMP specification Native Unicode support No worrying
4. general information dialog Bring up the fonts information dialog Bring up the security information dialog Quit the PDF viewer Go to the next page Go to the previous page Go to the first page Go to the last page Bring up the Go to page dialog Action name Find FindAgain I Copy FullScreen FitPage ActualSize FitWidth FitVisible SinglePage OneColumn TwoColumns Page 56 of 76 Description Bring up the Find dialog Repeat the last search Select the entire page Copy the selection to the clipboard Switch the document to fullscreen mode Zoom the document to fit the page Zoom the document to actual size Zoom the document to fit the width Zoom the document to fit the entire page Set the document to Single page mode Set the document to One column mode Set the document to Two columns mode Interactive Forms support New in version 1 1 is the ability to include Form elements in the document Interactive forms are one of the more underused aspects of PDF but certainly one of the more interesting There s a great deal more to forms than we cover here we highly recommend purchasing a book on the subject and experimenting with a copy of Acrobat to see what s possible This section will document only the syntax used to add form elements to the Report Generator not the reasons why you would The use of interactive forms specifically the lt INPUT gt tag requ
5. name attribute which we then reference later in the document But what do we do if we want it in italic as well lt pdf gt lt head gt lt link name mytimes type font subtype truetype src times ttf src italic timesi ttf gt lt head gt lt body font family mytimes font size 18 gt Hello in an embedded lt i gt italic lt i gt TrueType font lt body gt lt pdf gt Page 31 of 76 55 66 By setting the sre src italic src bold and src bolditalic attributes in the LINK element we can have access to the entire range of styles in the font If a variation isn t used it isn t embedded in the document so it doesn t hurt to link in all the variations the size of the document won t be increased Two additional aspects of TrueType fonts can be set both of which default to true Whether the font is embedded in the document or just referenced by name is controlled by the embed attribute and whether the font is subset or not is controlled by the subset attribute Generally it s best to leave these untouched Type 1 fonts Similar to TrueType fonts above Type 1 fonts can be used too These usually come as two separate files an AFM file describing the size of the characters and a PFA or PFB file describing the actual characters themselves The AFM file must always be available as otherwise the Report Generator won t know the size of the c
6. size A4 landscape background color yellow One additional advantage of giving an element an ID is that it can be referenced from outside the document This can be used to load a PDF at a specific page or section of a page but only works with documents loaded with the Internet Explorer or Netscape plugin from a webserver For example to open the document to the block with an ID of chapter2 put the following hyperlink in your HTML document lt a href http www yourcompany com YourPDF pdf chapter2 gt See Chapter 2 lt a gt Page 12 of 76 Descendants Children and Siblings At times authors may want to match an element that is a descendant or child of another element in the document tree for example match any H1 elements on the first page a descendant relation or match any P elements that are children of BODY a child relation These two rules can be described by the following stylesheet entries pagel H1 color red BODY TEPERT T HT In the first example the descendant relation is specified by the whitespace between the pagel1 selector and the H1 selector These can be chained together as necessary for example DIV P matches any P element that is the grandchild or later descendant of a DIV In the second example the child relation is specified by the gt symbol Only P elements directly under the BODY element will be matched Sometimes it may also be necessary to match elements based on their sibli
7. which means the table is laid out according to the automatic layout algorithm recommended in the CSS2 specification This is the same as that used by most web browsers where each cell is sized based both on it s content any width or height that is specified and the size of the other cells in it s row and column The other option is fixed where the table is laid out according to the fixed layout algorithm from the CSS2 specification This algorithm is slightly faster as it sizes each cell based only on the width attributes not on the cell contents The TABLE element must have an explicit width attribute set otherwise the layout algorithm defaults to auto There are some other subtle differences between HTML CSS and the table model we use here See the table entry in the Element and Attribute Reference section for more detail Lists The Report Generator supports two types of list ordered specified by the OL element and unordered specified by the UL element Each list contains one or more list elements specified by the LI element The elements are printed on the page one after the other often indented slightly and with a marker next to it The marker is the only real difference between the two types of list Here are a couple of examples demonstrating this the only difference are the UL and OL elements lt ul gt lt li gt Item 1 lt 1li gt eo e Item 1 Cistrem
8. 150 yrotation 30 display key flat outer gt lt gdata name Monday value 19 gt lt gdata name Tuesday value 14 gt lt gdata name Wednesday value 12 gt lt gdata name Thursday value 17 gt lt gdata name Friday value 13 gt lt gdata name Saturday value 8 gt lt gdata name Sunday value 3 gt lt piegraph gt Wednesday The library supports two broad categories of graph those plotting discrete data including Pie Graphs and Bar Graphs and continuous data ie Line Graphs and Area Graphs The discrete graphs all use the same pattern shown above a graph element with one or more GDATA elements describing a name value pair whereas the continuous graphs focus on curves a mathematical function created either from sampled values stock prices over the year for example or pure functions like a sine curve These use either a DATACURVE or a SIMPLECURVE Here s an example of both lt linegraph width 200 height 150 gt lt datacurve name Measurements gt lt sainjole 2 1 y 5 s lt semple x 2 yo 97 gt lt sample x 3 y 1 3 gt lt sample x 4 y 1 2 gt lt sample x 5 y 1 7 gt lt sample x 6 y 2 gt lt sample x 7 y 1 8 gt lt datacurve gt 1 15 2 25 3 35 4 45 5 55 6 65 7 lt simplecurve name Predicted method Jjava lang Math 1log gt Measurements lt linegraph gt H Predicted The DATACURVE
9. GB and the Ukraine UA Generally it is enough to set the lang attribute of the lt pdf gt element which sets the language for the entire document A final thing to remember when creating documents from JSP pages is to set the character set to match the lt xm1 gt declaration This also applies to pages included via the lt jsp include gt method The following examples are all valid lt xml version 1 0 encoding ISO 8859 1 gt lt page language java contentType text xml gt ai cocumeme xOlllows am WSO ksa9 1 gt lt xml version 1 0 gt lt page language java contentType text xml charset UTF 8 gt lt document follows in UTF 8 gt lt xml version 1 0 encoding ShiftJIS gt lt page language java contentType text xml charset ShiftJIS gt si cCocrvimeme Collons win Sloat wis gt Page 64 of 76 Problems Limitations and Future Direction Several changes are planned for the next release listed here in no particular order We d greatly appreciate additions or feedback on this list e The collapsing border model for tables needs to be implemented e Running headers and footers are planned e We plan to support subpages dividing a page up into smaller sections like columns or quarters Following is a list of known problems and limitations with the generator Limit on nesting the overflow attribute Due to the way the overflow attribut
10. s id attribute set to pagenumbers Then in the table of contents we can print the page number of this section like so ESO Le Z EE lt td gt Displaying the Page Number lt td gt lt td gt lt pagenumber idref pagenumbers gt lt td gt T e gt lt table gt Page 17 of 76 A mildly annoying feature of these two tags is that they cannot be measured accurately during the layout stage of the document This is obvious when you think about it there s no way to know how many pages are required until the whole document has been laid out Because of this the Report Generator takes a guess at the number of digits that might be required This defaults to three but since 1 1 12 can be set with the size attribute For instance if you know your document will have a maximum of 50 pages you might change your code to read Page lt pagenumber size 2 gt of lt totalpages size 2 gt Another option added in the same release was the ability to display page numbers in formats other than decimal The types available are the same as for the markertype attribute in the OL tag so for example to number your pages with roman digits try lt macrolist gt lt macro id myfooter gt lt p align center gt lt pagenumber type roman lower gt lt p gt lt macro gt lt macrolist gt lt head gt lt body footer myfooter footer height 0 5in gt Page Sizes As a convenience the Report Generator defines
11. way We re only skimming the surface of this topic for now A considerably more in depth coverage of digital signatures including how to generate test keys for signing and verify the signed document using Acrobat is in the PDF library user guide Page 60 of 76 Digital Signatures Although still a type of form field Digital Signatures are handled quite differently from the other fields so we ll cover them seperately Digital signatures allow a PDF report to be signed before distribution Like the other form fields using this feature requires the Extended Edition of the product Page 61 of 76 PDF A Support Since 1 1 47 the Report Generator can generate PDF A 1b documents These are the same as regular PDFs with a few restrictions All fonts must be embedded This includes fonts in graphs and fonts used as the markers in unordered lists eg to draw the bullet An Output Intent must be specified and an ICC profile embedded either RGB or CMYK All colors must match this ICC profile so if an sRGB profile is embedded all colors in the PDF must be RGB Transparency is not allowed All images must match the embedded ICC profile or the image must include an embedded ICC profile itself Transparency is not allowed JavaScript is not allowed Converting a document that meets these requirements to PDF A should be as simple as setting the output profile meta tag to PDFA1b 2005 then setting the output intent icc
12. 13 gt name Saturday value 8 gt name Sunday value 3 gt If you compare this with the pie graph example shown above you ll notice that other than the name of the element and a couple of attributes the XML is almost identical We ve set the xaxis rotate attribute to rotate the values on the X axis to 45 degrees useful for longer values 55 66 Four attributes common to all variants of bar graphs are bar depth bar width round bars and display barvalues The first two set the size of the bar relative to the square that it sits on and both default to 100 The round bars attribute can be set to true or false and if true turns each bar from a box into a cylinder a nice effect although it takes a little longer to draw The display barvalues attribute allows the value of the bar to be plotted directly on or above the bar values can be either top to display the Page 47 of 76 value above the bar middle to display it in the middle of the bar insidetop to display the value at the end of but just inside the bar or none to not display it at all the default Depth Bar Graphs For more than one set of data the simple BARGRAPH shown above can t cope and it s necessary to turn to one of the other three options The first is a DEPTHBARGRAPH which plots the different sets behind each other To be effective this graph really needs to be shown in
13. 2 1 3 has several other issues with DTD parsing and we recommend that a DTD is not used with these versions of Resin at all Namespaces Embedding XML Metadata One of the new features adding in SAX version 2 was the concept of XML namespaces Namespaces don t play a major role in the Report Generator as the end result is a PDF rather than another XML document The role they do have relates to XML Metadata which with the arrival of Acrobat 5 0 can be embedded directly into a PDF document for later extraction Adobe call this XMP and more information on this is available at http www adobe com products xmp The Report Generator automatically recognises whether a SAX 2 0 parser is being used and will become namespace aware if it is In this case any elements with a namespace other than http big faceless org products report will be considered as XMP metadata and will be embedded as is into the PDF document Note that this is the default namespace for any element without a namespace explicitly specified Because of the way this works XMP metadata cannot be embedded with a SAX 1 0 parser an error will be thrown instead As it s very difficult to work with XMP without using namespaces this shouldn t be a concern Not every structure in a PDF document can contain XML metadata currently the only tags that will accept it are lt pdf gt to specify metadata about the entire document lt img gt to specify metadata a
14. 2 12 11 Item 2 1 lt li gt Item 2 2 lt 1i Item 2 2 lt li gt e Item 3 S I IE T IE S RIE Page 34 of 76 lt ol gt 4listeem lt li gt lt a gt lt ol gt f Item 1 zli gt icem Zalai 1 Item 2 1 l Een 2 2 lt 4 2 Item 2 2 lt ul gt 3 Ttem3 lt li gt Klisiteem 3 lt ili gt lt ul gt In the ordered list the marker are the arabic numerals starting at 1 In the unordered list they re the small bullets or discs These can be changed by setting the marker type attribute of the list itself Valid values can be either a literal or one of the following values Marker name Description dise A round bullet character U 2022 Unordered middle dot A small round bullet character U 00B7 Unordered decimal The arabic numerals starting at 1 lower roman Lowercase roman numerals starting at i upper roman Uppercase roman numerals starting at I lower alpha Lowercase latin letters starting at a upper alpha Uppercase latin letters starting at A circled number Circled numbers from to 20 character U 2460 to U 2473 If the marker type is not one of these values it s printed literally This can be used with good effect with a dingbats font The font 55 66 for the marker can be set using the marker font family marker font style and marker font weight attributes which do the same 55 66 job for markers a
15. 230a left floor apl downstile ISOamsc ited oon U 230b right floor ISOamsc lang U 2329 left pointing angle bracket bra ISOtech rang U 232a right pointing angle bracket ket ISOtech TOZ U 25ca lozenge ISOpub spades U 2660 black spade suit ISOpub clubs U 2663 black club suit shamrock ISOpub hearts U 2665 black heart suit valentine ISOpub diams U 2666 black diamond suit ISOpub Page 75 of 76 Element and Attribute reference In a future version of the documentation this section will contain a cross referenced list of all the elements and attributes that can be used in the Report Generator For now the Element and Attribute reference information is online at http bfo com products report docs tags Page 76 of 76
16. 3D We ve also set the xaxis align attribute to right which is effective with 3D rotation Here s an example Notice the name attribute on the GDATA elements This sets the name of the values on the second axes and is used with TOWERBARGRAPH and MULTIBARGRAPH graphs as well lt depthbargraph width 200 height 150 xaxis align right xrotation 30 yrotation 30 gt lt gdata name January name2 2001 value 19 gt lt gdata name April name2 2001 value 14 gt lt gdata name July name2 2001 value 12 gt lt gdata name October name2 2001 value 17 gt lt gdata name January name2 2000 value 22 gt lt gdata name April name2 2000 value 18 gt lt gdata name July name2 2000 value 17 gt lt gdata name October name2 2000 value 17 gt lt depthbargraph gt January Multi Bar Graphs When 3D isn t an option the DEPTHBARGRAPH isn t very effective and a MULTIBARGRAPH is a better choice This plots several narrow columns next to each other on the one axis but other than that is identical in function to the DEPTHBARGRAPH We ve set the zwall border color so you can see more clearly where the divisions between values are 20 18 lt multibargraph width 200 height 150 xaxis rotate 45 zwall border color black bar width 80 display barvalues middle gt lt gdata name January name2 2001 value 19 gt lt gdata name April name2
17. about codepages encodings and so on it just works Embed and subset TrueType and Type 1 fonts or use one of the 14 latin or 8 east asian built in fonts 40 and 128 bit PDF Encryption for eyes only documents Digital signatures too Auto pagination of content with headers footers and watermarks Use ICC color profiles spot color and patterns for sophisticated color control Draw barcodes and simple vector graphics directly into the document using XML elements The generator is written in 100 pure Java and requires only JDK 1 4 or better and a SAX XML parser to run It is supplied with three methods to create the PDF documents a Servlet Filter a Servlet or a Standalone application and installs easily into any Java environment Page 2 of 76 Getting Started Installation Installing the package is a simple matter of unzipping the distribution file and adding the bforeport jar file to your CLASSPATH You will also need a SAX parser Java 1 4 and above are supplied with one but for those forced to Be sure to remove any previous can ulder FV Ms werecommend Xerces versions of the bforeport jar from the CLASSPATH as well as the bfopdf jar files from our PDF library product the API documentation under the docs directory two sample applications are otherwise exceptions during class included in the example directory a standalone XML to PDF application and initialization may result a Java Servlet Several sample XM
18. be adding more support for in later releases The tag can be placed anywhere in the body of the document and doesn t require a lt FORM gt like HTML Here s a quick look at a typical signature tag There are a number of attributes that apply only to digital signatures Page 59 of 76 Attribute IEW AX name keystore handler password alias keypassword keystoretype signer location protocol reason background image background pdf Description Mandatory The type of INPUT tag Must be signature for digital signatures Mandatory The name to give the form field Mandatory except for dse200 handler The URL of the keystore containing the private key to sign the document with Mandatory The Digital Signature handler that will be used to verify the document May be selfsign for the Adobe Self Sign handler supplied with every version of Acrobat verisign for the Verisign Document signer plugin for Acrobat 5 available free from http www verisign com products acrobat acrobat6 for the general PKI plugin supplied with Acrobat 6 dse200 for the DSE200 handler added in release 1 1 23 or optionally the name of a ellasis that implements the org faceless pdf2 SignatureHandlerFactory interface to use a custom signature handler Optional The password required to open the keystore Optional The alias or friendly name given to the private key in t
19. border color I grid axes color HOL color min y Value color color color number number Description Set the color to draw the Y wall of the graph The Y wall is the plane where x 0 or where x min x for most graphs this is where x min x but for line graphs this depends on the value of the yaxis at zero attribute Default to none Set the color to draw the grid on the Y wall of the graph Defaults to none Set which lines to draw on the grid on the Y wall of the graph Valid values are horizontal vertical or a combination of the two e g horizontal vertical the default Set the color to draw the Z wall of the graph The Z wall is the back wall of the graph Defaults to none Set the color to draw the grid on the Z wall of the graph Defaults to none Set which lines to draw on the grid on the Z wall of the graph Valid values are horizontal vertical or a combination of the two e g horizontal vertical the default Set the color to draw the axes lines in Default is black Set the color to draw the optional box around the entire graph The default is none so no box is drawn The minimum value to plot on the Y axis Can be used to just display the top of bar graphs or area graphs The maximum value to plot on the Y axis Can be used to increase the space above the top of the bars in a bar graph for example Page 45 of 76
20. but for 3D graphs is the curve depth attribute which controls how deep into the page the curve is drawn This defaults to 1 and applies to both LINEGRAPH and AREAGRAPH Page 49 of 76 There are several attributes which control the range of the axes on a LINEGRAPH The xaxis at zero and yaxis at zero attributes control where the X and Y axis values and the ywall and floor attributes discussed in Axes Graphs above are drawn These boolean attributes both default to true which means that the axes are drawn where x 0 and y 0 even though this may be in the middle of the graph Notice the difference with this sine curve Axes at zero Axes not at zero Next an attribute which applies to LINEGRAPH and AREAGRAPH and is specific to plotting DATACURVES The max data points attribute allows the number of points actually plotted to be limited to a fixed number This is most commonly done for speed if your database query returns 1000 elements to be plotted on the graph but it s only 2 inches wide this could be set to a value say 100 which would cause only every tenth data sample to be retained By default this is set to 100 Likewise for SIMPLECURVE elements the function smoothness attribute can be used to set the number of samples taken when drawing a SIMPLECURVE This defaults to 30 which is generally adequate but may be set to any value When plotting DATACURVE curves on
21. cover them seperately Digital signatures allow a PDF report to be signed before distribution Like the other form fields using this feature requires the Extended Edition of the product These are useful for two main purposed one to identify the author of the document and two to provide notice if the document has been altered after it was signed This is done by calculating a checksum of the document and then encrypting that checksum with the private key of the author which can later be verified by a user with the full version of Adobe Acrobat or Acrobat Approval although not the free Acrobat Reader by comparing it with the corresponding public key Digital Signatures are implemented in Acrobat via a plug in or handler There are a number of handlers on the market at the moment we are aware of handlers by Adobe VeriSign Entrust Baltimore and CIC Of these all except the CIC handler revolve around a public private key infrastructure or PKI We currently support signing and verifying documents intended for the Adobe Self Sign and VeriSign handlers as well as the general PKI handler introduced in Acrobat 6 Currently signatures are limited in that only one signature may be applied to a document otherwise an Exception is thrown Digital signatures are defined using an INPUT tag the same tag used in HTML to define form elements this is because digital signatures are part of the PDF version of a form which we ll
22. display inline attribute but there s one more common type of placement known as float positioning This causes the inline box to float to the left or right of the paragraph and allows text to wrap around it The following text will be drawn around the box to the right When it grows beyond that box it will automatically fill the full width of the line lt p requote true text align justify border 1 font size 22pt padding 4 gt lt div float right width 120 height 50 background color blue gt The following text will be drawn around the box to the right When it grows beyond that box it will automatically fill the full width of the line TE Any inline elements can be floated to the left or right setting the float attribute causes display to be automatically set to inline and floating blocks can be started anywhere in a paragraph not just at the start Usually the floating block will start at the current line but this depends on the value of the clear attribute This attribute can be set to none left right or both to cause a floating block to be displayed only when the left margin is clear of any other floating blocks the right margin is clear or both are clear The default is none which effectively says it doesn t matter if there is another floating box to the left or right put me on the first line you can Here s an example showing the va
23. is made up of two or more SAMPLE elements which have an x and y attribute relating to the point on the graph The SIMPLECURVE takes the full name of a java method in it s method attribute this method must meet three criteria or an exception will be thrown l It must be static 2 It must take a single double as its parameters 3 It must a return a double as its result Page 41 of 76 General Graph attributes There are a very large number of attributes that can be set to control how the graphs appear more than those used by all the other elements combined These are detailed separately in the reference section but we ll go over some of them here too The best way to try them out is to experiment and to have a look at the graphs xml example supplied in the example samples directory First every graph is a block element which means it can have padding borders a background color and all the other attributes appropriate for a block In addition every graph can have the following attributes set these are covered in more detail in the reference section Attribute Description derault colors list of colors The colors to use to display the graph as a comma separated list These are used in the order specified and when the list is exhausted the sequence starts again from the beginning xrotation an angle in The angle to rotate the graph around the X axis The X axis runs horizontally degrees through the
24. just have space for the invoice details To do this with the report generator create a two page template using your favorite tool Quark Express or MS Word for example and then do something like the following example lt pdf gt lt head gt styles pagel background pdf original pdf 1 body background pdf original pdf 2 lt style gt lt head gt lt body gt lt p padding left lin padding top lin gt lt Address goes her gt lt a gt stelles lt Invoice details go here covering as many pages as necessary gt lt table gt lt body gt lt pdf gt Page 23 of 76 Note that this feature is not limited to pages Theoretically an existing PDF could be used as the background for a table a paragraph or any other box Extended edition pricing information is available from the product homepage Positioning As mentioned above most of the time the boxes containing the XML elements are placed on the page each one following the next with no overlap between them a procedure known as relative positioning The distance between the blocks can be controlled to a degree using the padding and margin attributes discussed above for most layout requirements just these attributes are enough For more control the position left and top attributes can be set to change the way boxes are laid out By default the position is relative which means the box is positioned normal
25. meta tag to the URI of the ICC profile to embed amd the output intent identifier meta tag to the name of the profile So for example lt meta name output intent identifier value sRGB gt lt meta name output intent icc value resources sRGB icc gt lt meta name output profile value PDF A1b 2005 gt There are two example supplied with the Report Generator in the samples folder one for CMYK and one for RGB to get you started Page 62 of 76 Migrating from HTML Migrating a document from HTML to XML may be easy or difficult depending on how the HTML has been written Following these four steps will account for 95 of the changes that are required il The first and probably most painful step is to ensure that all tags are closed and all attributes are quoted so that the document meets the XML specification Elements that don t officially require closure like TD LI P as well as tags with no content like BR and IMG are likely to be the cheif cause of problems We find the insistance on quoting even unambiguous attributes annoying and we re pleased to see that at least one XML parser that supplied with Resin 2 0 has the option of being lax about this requirement Second if any non CSS legacy attributes are used e g bgcolor to set the background color these should be converted to their CSS equivalent e g background color and placed in a stylesheet in the head of the document
26. midnightblue darkblue 4B0082 6A5ACD 483D8B 191970 00008B blue royalblue seagreen 0000FF 4169E1 2E8B57 green darkgreen olive darkolivegreen olivedrab E01 0s 101010 006400 Fis10 1010 0 556B2F 6B8E23 forestgreen darkslategray dimgray slategray 228B22 2F4F4F 696969 708090 a oe Page 67 of 76 Named Entities The following named entities are understood by the Report Generator Name Symbol CodePoint Description zwnbsp nbsp iexcl Ceme pound curren yen brvbar Secs uml copy ordf laquo TOE shy Teg macr deg plusmn sup2 sup3 acute micro para middot cedil supl ordm U feff U 00a0 U 00a1 U 00a2 U 00a3 U 00a4 U 00a5 U 00a6 U 00a7 U 00a8 U 00a9 U 00aa U 00ab U 00ac U 00ad U 00ae U 00af U 00b0 U 00b1 U 00b2 U 00b3 U 00b4 U 00b5 U 00b6 U 00b7 U 00b8 U 00b9 U 00ba zero width non breaking space Best use NOBR instead no break space non breaking space ISOnum inverted exclamation mark ISOnum cent sign ISOnum pound sign ISOnum currency sign ISOnum yen sign yuan sign ISOnum broken bar broken vertical bar ISOnum section sign ISOnum diaeresis spacing diaeresis ISOdia copyright sign ISOnum feminine ordinal indicator ISOnum left pointing double angle quotation mark left pointing guillemet ISOnum not sign discretionary hyphen ISOnum soft hyphen discretionary hyphen ISOnum This character is used in the Unicode as opposed to the H
27. probably have noticed that the boxes overlap In the case of the absolutely positioned example it spills outside the bounds of it s parent This can be controlled by setting the overflow attribute which can be set to visible the default or hidden This determines whether an elements children are clipped at it s edges or not Page 24 of 76 Here s the second example above but with the overflow attribute of the parent element set to hidden The element is clipped at the edge of the parents content box because the parent has padding set to 4 this is 4 points inside the border Normal flow Box 2 has left 10 top 10 position absolute overflow hidden The overflow attribute can be used to interesting effect with the CIRCLE ELLIPSE and SHAPE elements There are two other attributes which will be familiar to HTML JavaScript programmers but which aren t as useful in PDF owing to the static nature of a PDF page although we do support them The visibility and display attributes affect whether an element on the page is displayed or not The value of visibility defaults to visible but can be set to hidden to prevent display of an element and it s children leaving the space it would have taken on the page empty Alternatively to remove an element altogether set the display attribute to none which will prevent the element both from bein
28. set the colorspaces to the default values or the URL of an ICC color profile file Here s an example which calibrates the document to use the NTSC color profile Note that although in theory any element can have a different colorspace set in practice it keeps everything simpler if you set the colorspace on the BODY element and leave it The one exception to this is images which we ll cover below lt body colorspace http path to NTSCspace icc gt lt hl color FFO000 gt This heading is in bright red according to the NISC color profile lt ol gt lt body gt PNG TIFF and JPEG images may optionally have an ICC color profile embedded in the image if one is found it will be used automatically The ability to override the colorspace for an image has been removed in version 1 1 10 if the image needs to use a particular colorspace it should be embedded in the file Page 54 of 76 Hyperlinks Hyperlinks can be used within PDF documents to navigate around the document to load web pages in whatever web browser is installed on the users system and to allow a limited level of interaction between the document and it s environment The familiar lt A gt element from HTML is a part of the Report Generators XML syntax but unlike HTML it s significance is limited to stylistic changes only Instead the href attribute which signifies a hyperlink may be added to any element in the document For example the following tw
29. specified in section B 2 of the MaxiCode specification PDF417 is a stacked 2D barcode probably the most common one i It s used for a wide variety of purposes for instance paper archives ol Iu AW electronic invoices in Spain must use PDF417 The width and height attributes must be set but other attributes will be ignored QR Code is a 2D barcode invented and commonly used in Japan but making m headway elsewhere too due to it s ability to store Kanji and it s incredible m density the largest version can store over 6000 digits The width and or height attributes must be set but other attributes will be ignored E Data Matrix is another commonly used 2D barcode By default a square datamatrix will be used but if the width is a multiple of the height a rectangular code will be produced Aztec Code is a modern compact 2D barcode that is visually quite similar to QR Code Deutsche Post have their own post matrix code which is a variation on DataMatrix The code has a fixed size and the width attribute should be left unspecified Page 38 of 76 Two of the codes listed above Code 3 9 and Interleaved 2 5 are not variable width codes and use just two bars a thick bar and a thin bar These algorithms may optionally use the bar ratio attribute to specify the ratio between the width of thick and thin bars Some knowledge of the algorithms limits are recommend
30. to be understood by mere mortals we recommend reading it We support most but not all of the specification see the appendices for details The first way to set the style for an element is inline Unlike HTML there is no difference between a style attribute and a regular attribute whereas in HTML to specify an inline style you must write lt table style background color red gt in XML you could simply write lt table background color red gt All the examples up until now have used inline styles Although in many cases this method is appropriate if the same style is used more than once in a document it s generally easier to use a stylesheet a collection of CSS2 rules defined in the HEAD of the document which set attributes for various elements in the BODY Stylesheet definitions Stylesheets can be included directly in the document or linked in from an external file In both cases the syntax is the same A Stylesheet consists of one or more selector attribute pairs each selector matching certain elements in the document and the attributes defining which attributes to set for those elements Here s an example body size Letter padding 0 5in ISH lal font family Times example background color yellow This example sets the size attribute for the BODY element to Letter and it s padding attribute to 0 5in sets the font family attribute for all H1 and H2 eleme
31. to hide the user interface of the PDF viewer when the document is first opened viewer hide windowui true false viewer fitwindow true false Whether to resize the PDF viewer to fit the document size viewer centerwindow true false Whether to center the PDF viewer window on the screen security password a password The password if any required to change the password of the document Bookmarks The documents bookmarks are the tree like structure displayed in a pane on the left in Acrobat Reader Sometimes called outlines these are an excellent way to provide easy navigation around larger documents The Report Generator controls bookmarks through the BOOKMARKLIST element which contains one or more BOOKMARK elements These can themselves contain BOOKMARK elements to create the tree structure Each bookmark has a name which is the name displayed to the user in the PDF and an optional href which is the hyperlink to follow if the user clicks on the bookmark usually but not necessarily to a location in the document Page 20 of 76 We ll cover more on Hyperlinks in a later section For the moment it s enough to know that linking to a specific location in the report is done by setting href id where id is the ID of the element you want to link to Here s an example lt pdf gt lt head gt lt bookmarklist gt lt bookmark name Chapter 1 href ch1 gt lt bookmark name Chapter 2 href
32. vertical stems expanded ultra expanded line height number Set the spacing between successive lines of text either normal to choose the spacing the font designer recommended a percentage 100 for line height font size or explicitly eg 14pt font description This shorthand property allows you to set the font family size style weight variant and line spacing with one attribute eg bold 12 14pt Times See the CSS2 specification for a full description of this attribute Color color Set the color of the font outline color color Set the color of the outline of the font if it s drawn outline width number Set the width of the outline of the font if it s drawn Page 29 of 76 Attribute name Values Description text indent number Set the indentation of the first line of text in a paragraph A positive number indents the first line to the right a negative number to the left text decoration underline or line through Set the text decoration underlined or struck out text transform normal capitalize Set the text transformation capitalize capitalizes the first letter uppercase lowercase of each word and uppercase and lowercase transform the whole phrase accordingly text align left right center justify Set the alignment of the text within it s paragraph box This is a standard CSS2 attribute unlike its HTML counterpart align However in an effort to preserve HTML compati
33. 2001 value 14 gt lt gdata name July name2 2001 value 12 gt lt gdata name October name2 2001 value 17 gt lt gdata name January name2 2000 value 22 gt lt gdata name April name2 2000 value 18 gt lt gdata name July name2 2000 value 17 gt lt gdata name October name2 2000 value 17 gt lt multibargraph gt MG 2001 M2000 Notice the name attribute on the GDATA elements This sets the name of the values on the second axes and is used with TOWERBARGRAPH and MULTIBARGRAPH graphs as well We also set the display barvalues attribute to middle and slightly reduced the bar width which can help the legibility of this type of graph Page 48 of 76 Tower Bar Graphs The third option for plotting bargraphs is a TOWERBARGRAPH which is more useful for showing cumulative values than DEPTHBARGRAPH or MULTIBARGRAPH Again note the name attribute on the GDATA elements sets the second axes 35 lt towerbargraph width 200 height 150 xaxis rotate 45 gt lt gdata name January name2 2001 value 19 gt 30 lt gdata name April name2 2001 value 14 gt lt gdata name July name2 2001 value 12 gt lt gdata name October name2 2001 value 17 gt lt gdata name January name2 2000 value 13 gt 25 lt gdata name April name2 2000 value 8 gt lt gdata name July name2 2000 v
34. AW LO p import org faceless report ReportParser import org faceless pdf PDF public void createPDF String xmlfile OutputStream out ReportParser parser ReportParser getInstance PDF pdf parser parse xmlfile pdf render out SEE REGE Page 3 of 76 Creating PDFs using the Servlet 2 3 Filter For servlet environments running the Servlet 2 3 environment like Tomcat 4 0 the recommended way to create dynamic PDF documents is using the Filter included in the JAR file supplied with the package More information on filters is available from http java sun com products servlet Filters html To use it the WEB INF web xml file needs to be edited to map the PDF Filter to certain requests Here s an example web xm1 file which maps any requests to pdf to be run through the PDF filter Lines specific to the PDF filter are in bold STH version YI 0 encoding TSO 8959m INRE lt DOCTYPE web app PUBLIC _ Sun Microsystems Inc DTD Web Application 2 3 http java sun com dtd web app_2_3 dtd lt web app gt lt filter gt lt filter name gt pdffilter lt filter name gt lt filter class gt org faceless report PDFFilter lt filter class gt lt filter gt lt filter mapping gt lt filter name gt pdffilter lt filter name gt lt url pattern gt pdf lt url pattern gt lt filter mapping gt lt web app gt Once this rule is added to web xml and the servlet engine
35. B colorspace used by the Report Generator Colors can be specified in the following ways Color Example none or transparent FF0000 Description Specify no color is to be used Specify a color in the documents RGB colorspace by setting the red component to OxFF and the green and blue components to 0x00 Each component is on a scale from 0 to 255 so OXFF is 100 red U ile Ole ER Another method of specifying an RGB color this is identical to FF0000 May also be specified as rgb 255 0 0 Specify a color in the documents GrayScale colorspace gray 0 is black and gray 100 is white gray 100 ive MOOK ka Oka ks Specify a color in the documents CMYK colorspace The example here would set the color to cyan black Specify a named color one of the list of 140 named colors in the current RGB colorspace the list is the same list as used by HTML The full list of named colors is in the reference section and also in the colors pdf document in the docs directory of the package Specify a spot color Requires the name of the color and the fallback color to use if it s unavailable spot name cmyk 100 72 0 6 spot name emyk 1002 722 02 62 502 Specify a spot color and the intensity of that color Requires the name of the color and the fallback color to use if it s unavailable and the intensity or how much of that ink to use Values can range from 100 which is the s
36. CTYPE line out with no ill effect The actual DTD is stored in the JAR file The Report Generator recognises the public identifier big faceless org report and loads the DTD directly from the JAR so most of the time you won t need to worry about it As always there are a couple of exceptions to this e Several XML parsers including Allaire JRun 3 1 and Caucho Resin up to 2 1 3 are unable to load a DTD from a JAR and requires the DTD to be loaded from a URL e When creating a PDF froma javax xml transform Source using the transform method the DTD cannot be read from the jar and must be loaded from a URL If you re trying to examine or edit the XML using a smart XML tool like Internet Explorer 5 we use the term smart loosely the DTD needs to be accessible Page 9 of 76 In all these cases the DTD will be loaded from the URL specified by the system identifier As the DTD file is supplied in the docs directory of the download package it can be copied into an appropriate directory for your webserver to serve An alternative is to reference the DTD directly from the Big Faceless Organization web server by changing the DOCTYPE declaration to this lt DOCTYPE pdf PUBLIC big faceless org report https bto com products report repont l dtd gt this is not recommended for regular use as loading it from a remote server will slow down the parsing process Note that Caucho Resin prior to
37. Formatting values on the axes The X and Y axis values are displayed using a formatter The default depends on the data being plotted but is always either integer or floatingpoint The xaxis formatter and yaxis formatter can be set to one of the following values Formatter none integer percentage late Hing Oowsatea floatingpoint min max percentage numdp currency currency locale simple format date date format Description Don t plot any values on this axis Plot the values on the axis as integers Plot the values on the axis as percentages Plot the values on the axis as floating point values Plot the values on the axis as floating point values The min and max values are the minimum and maximum number of decimal places to display Plot the values on the axis as percentages The number of decimal places is specified by the numdp attribute Plot the values as currency values The currency format depends on the country part of the locale of the graph as set by the lang attribute Plot the values as currency values The locale of the currency format is specified explicitly eg en GB on de DE Plot the values using a java text DecimalFormat The format attribute specifies the format to use e g 0 0 to plot values that always have one decimal place Plot values on the axis as a date using the format dd MMM yyyy only us
38. Helvetica lt span gt lt p gt lt p gt This is in lt span font family sans serif gt Helvetica lt span gt lt p gt lt body gt As well as the standard 5 fonts users with the appropriate language version of Acrobat can access up to 7 further fonts to display Chinese Japanese and Korean text The names for these fonts are stsong STSong Light simplified Chinese msung MSung Light traditional Chinese mhei MHei Medium traditional Chinese heiseimin HeiseiMin W3 Japanese heiseikakugo HeiseiKakuGo WS Japanese hygothic HYGoThic Medium Korean and hysmyeongjo HYSMyeongJo Medium Korean Page 30 of 76 Thanks to the native Unicode support of Java XML and the Report Generator creating reports with non latin characters is easy We ll cover more on this later but here s a quick example of how to use a JSP to create a document showing the current date in Japanese lt xml version 1 0 gt lt page language java import java text contentType text xml charset UTF 8 gt lt DOCTYPE pdf PUBLIC big faceless org report report 1 1 dtd gt lt DateFormat f DateFormat getDateInstance DateFormat FULL Locale JAPAN lt pdf gt lt body font family HeiseiMin font size 18 gt Today is lt f format new java util Date gt lt body gt lt pdf gt TrueType fonts One of the strengths of PDF documents is their abi
39. L documents are in example samples and several dynamic samples which require a Servlet engine are under examples dynamic Several other files are supplied with the package As well as this userguide and For all modern webservers it is enough to copy the bforeport jar file to the WEB INF 1ib directory of your web application and then set up the WEB INF web xml file to use either the Filter or the ProxyServlet method of calling the Report Generator depending on whether your WebServer supports version 2 3 of the Servlet Specification or not To find out we d suggest trying the filter method first If it doesn t work fall back to the Proxy Servlet Creating PDFs from Applications The API for the report generator is extremely simple Generally you only require three lines to be added to your program to create a PDF Report from XML A simple example of this is the SampleApplication java example supplied with the package in the example directory To use it first ensure the CLASSPATH is set to include your SAX parser then run the command C BFOREPORT EXAMPLE gt java SampleApplication samples HelloWorld xml This creates the PDF document samples HelloWorld pdf which you can check with your PDF viewer To add PDF producing code to your own package is simple Here s an example method which would take the URL of an XML file and an Output Stream to write the PDF to The PDF specific lines are in bold SI J
40. O elements e Stylesheets either externally using a LINK or internally using a STYLE element e Non standard fonts can be linked in using the LINK element This is covered in the Fonts section later e Document meta information such as report title password and various PDF specific attributes can be set using the META element e Bookmarks can be specified using the BOOKMARKLIST and BOOKMARK elements Meta information The META element in the document HEAD requires a name and value attribute which specifies which property of the document to set A number of properties are known to the Report Generator and those that aren t can be passed on to the calling process providing a convenient method of extending the capabilities of the generator Here s an example setting the title of the document lt pdf gt lt head gt lt meta name title value My First Report gt lt head gt lt pdf gt Here s a list of the various names that are recognised ordered roughly from most useful to least useful as we think anyway Description Base URL of the Set the base URL of the document All relative links in the document document will be interpreted as relative to this URL If you re going to set this be sure to set it before any stylesheets or fonts are loaded title The report title Set the title of the report author The authors name Set the author of the report subject The report subject Set the subject of
41. Ogrk3 greek small letter rho ISOgrk3 greek small letter final sigma ISOgrk3 greek small letter sigma ISOgrk3 greek small letter tau ISOgrk3 greek small letter upsilon ISOgrk3 greek small letter phi ISOgrk3 greek small letter chi ISOgrk3 greek small letter psi ISOgrk3 greek small letter omega ISOgrk3 greek small letter theta symbol NEW greek upsilon with hook symbol NEW greek pi symbol ISOgrk3 bullet black small circle ISOpub horizontal ellipsis three dot leader SOpub prime minutes feet ISOtech double prime seconds inches ISOtech overline spacing overscore NEW fraction slash NEW script capital P power set Weierstrass p SOamso blackletter capital I imaginary part ISOamso blackletter capital R real part symbol ISOamso alef symbol first transfinite cardinal NEW leftwards arrow ISOnum upwards arrow ISOnum gt rightwards arrow ISOnum downwards arrow ISOnum left right arrow ISOamsa downwards arrow with corner leftwards carriage return NEW leftwards double arrow ISOtech Symbol CodePoint Description uArr U 21d1 upwards double arrow ISOamsa rArr U 21d2 rightwards double arrow ISOtech dArr U 21d3 downwards double arrow ISOamsa hArr U 21d4 left right double arrow ISOamsa foredi U 2200 for all ISOtech part U 2202 partial differential ISOtech U 2203 there exists ISOtech exist empty U 2205 empty set null set diameter ISOamso 19au vaf EJ gt nabla U 2207 nabla backward diffe
42. TML sense which means it s only displayed if a word break occurs at the specified position registered sign registered trade mark sign ISOnum macron spacing macron overline APL overbar ISOdia degree sign ISOnum plus minus sign plus or minus sign ISOnum superscript two superscript digit two squared ISOnum superscript three superscript digit three cubed ISOnum acute accent spacing acute ISOdia micro sign ISOnum pilcrow sign paragraph sign ISOnum middle dot Georgian comma Greek middle dot IsOnum cedilla spacing cedilla ISOdia superscript one superscript digit one ISOnum masculine ordinal indicator SOnum Page 68 of 76 Symbol CodePoint Description raquo fracl4 SE frac34 iquest Agrave Aacute ACire Atilde Auml Aring AElig Ccedil Egrave EACLE B Euml Igrave LacuEee Ee Tuml ETH Ntilde Ograve Oacuwe ST E Otilde Ouml times Oslash Ugrave Vacuwe Wiebe gt Dt oD m 0 gt m s oh las U 00bb U 00be U 00bd U 00be U 00bf U 00c0 U 00c1 U 00c2 U 00c3 U 00c4 U 00c5 U 00c6 U 00c7 U 00c8 U 00c9 U 00ca U 00cb U 00cc U 00cd U 00ce U 00cf U 00d0 U 00d1 U 00d2 U 00d3 U 00d4 U 00d5 U 00d6 U 00d7 U 00d8 U 00d9 U 00da U 00db right pointing double angle quotation mark right pointing guillemet ISOnum vulgar fraction one quarter fraction one quarter ISOnum vulgar fraction one half fraction one half ISOnum vu
43. a LINEGRAPH markers may be placed at each data sample by setting the marker attribute of the DATACURVE This can be set to either none no marker the default line which simply draws a line across the curve where the value is or circle square diamond octagon uptriangle or downtriangle which place the specified marker at each sample as You d expect These values can optionally be prefixed with big to double the size of the marker small to reduce the size or suffixed with noborder to remove the black border around the markers or only to draw just the marker not the lines connecting them Example combinations include circle circle only small diamond noborder only or big uptriangle only here s what that looks like marker diamond marker big uptriangle only A A A HG Measurements LA Measurements The line option is really only useful for 3D line graphs and results in a black line across the curve where the sample is similar to the segments described in the AREAGRAPH section below When a marker is used on a curve it may optionally be added to the key by adding the with markers suffix to the key type The graph on the right shown above has the display key value set to bottom with markers while the graph on the left has the attribute simply set to bott
44. a bar using a gradient fill Specifying a color as gradient red blue would cause the bar in the graph to smoothly change from red to blue as the value increased Here s an example lt bargraph width 200 height 150 xaxis rotate 45 gt lt gdata color gradient red blue name Monday value 19 gt lt gdata color gradient green yellow name Tuesday value 14 gt lt bargraph gt Page 53 of 76 Color Spaces Each item in the document has three types of colorspace it can work with RGB CMYK and a GrayScale colorspace By default the RGB colorspace is the sRGB calibrated colorspace used by Java and the CMYK and GrayScale spaces are device dependent Any RGB colors that are specified will use the RGB colorspace of the object CMYK colors will use the CMYK colorspace and grayscale colors will use the GrayScale colorspace Any one of these colorspaces can be replaced by setting the colorspace attribute If the value of the colorspace is a 3 component colorspace the elements RGB colorspace will be set If the specified colorspace has 4 components the elements CMYK space will be set and so on This means that only one non standard colorspace can be used per element or put another way no element can use both a calibrated CMYK and calibrated RGB colorspace other than sRGB at the same time We doubt this will cause a problem for many Valid values are sRGB DeviceCMYK and DeviceGray which
45. a5 greek capital letter upsilon ISOgrk3 Phi U 03a6 greek capital letter phi ISOgrk3 CHi U 03a7 greek capital letter chi Daai U 03a8 greek capital letter psi ISOgrk3 O T P a0 Y X E Q Omega U 03a9 greek capital letter omega ISOgrk3 alpha U 03b1 greek small letter alpha ISOgrk3 beta U 03b2 greek small letter beta ISOgrk3 gamma U 03b3 greek small letter gamma ISOgrk3 nn 2 DW e delta U 03b4 greek small letter delta ISOgrk3 lap epsilon U 03b5 greek small letter epsilon ISOgrk3 zeta U 03b6 greek small letter zeta ISOgrk3 eta U 03b7 greek small letter eta ISOgrk3 theta U 03b8 greek small letter theta ISOgrk3 iota U 03b9 greek small letter iota ISOgrk3 kappa K U 03ba greek small letter kappa ISOgrk3 lambda U 03bb greek small letter lambda ISOgrk3 mu U 03be greek small letter mu ISOgrk3 Symbol CodePoint Description omicron pi rho sigmaf sigma tau upsilon phi Cigal psi omega thetasym upsih prime Prime oline Hea weierp image real alefsym HIR GG uarr PALE darr harr rarr lArr a a a a 8 RX e U 03bd U 03be U 03bf U 03c0 U 03c1 U 03c2 U 03c3 U 03c4 U 03c5 U 03c6 U 03c7 U 03c8 U 03c9 U 03d1 U 03d2 U 03d6 U 2022 U 2026 U 2032 U 2033 U 203e U 2044 U 2118 U 2111 U 211c U 2135 U 2190 U 2191 U 2192 U 2193 U 2194 U 21b5 U 21d0 greek small letter nu ISOgrk3 greek small letter xi ISOgrk3 greek small letter omicron NEW greek small letter pi IS
46. alue 12 gt lt gdata name October name2 2000 value 14 gt lt towerbargraph gt Floating Bar Graphs The final option for plotting bargraphs is a FLOATINGBARGRAPH Each bar in a floating bar graph has two halves the intention is to show a minimum a middle value often an average and a maximum The positions on the bar are specified with the min value mid value and max value attributes lt floatingbargraph width 140 height 150 gt lt gdata name Jan min value 10 mid value 19 max value 24 gt lt gdata name Feb min value 12 mid value 17 max value 28 gt lt gdata name Mar min value 11 mid value 15 max value 26 gt lt floatingbargraph gt Jan Feb Mar Bar graphs are unique amongst the different graphs in that they can use a gradient fill to display the colors See the Colors section for more information Line Graphs The LINEGRAPH element allows one or more curves to be plotted against an X and Y axis We ve already described the curves above so in this section we ll focus on attributes specific to the LINEGRAPH element First up is an attribute specific to the LINEGRAPH element the line thickness attribute which sets the thickness of the line used to draw each curve This attribute is unique in that it only has an effect if the graph is plotted in 2D i e xrotation yrotation and zrotation are all zero The default is 1 5 Similar in purpose
47. ame as the 2 argument form above to 0 which is the same as transparency alpha 50 FFO000 Specify a semi transparent version of a color since 1 1 10 The first parameter is the alpha value to use 100 for a completely opaque color 0 for a completely transparent one The second parameter may be any one of the types of color listed above so alpha 50 spot Bluen cmyk 1003 123 03 65 is a valid color if a somewhat extreme example Translucent colors will only work with Acrobat 5 or later As well as the plain colors defined above the Report Generator can use pattern colors when drawing text or as the background color of an element Document authors can choose from one of 8 different predefined patterns Each pattern has a name a foreground color indicated by fg in the following table and a background color indicated by bg and then possibly more attributes depending on the pattern Here s the list The stripe pattern creates a striped color pattern The angle and width of each stripe can be set separately the width of the stripe in the foreground pattern stripe fo D9 fgwidth bgwidth ang color is set by fgwidth and the width in the background color is set by bgwidth The angle is set by ang and is specified in degrees clockwise from 12 o clock Page 52 of 76 pattern brick fg bg width height 1 This brick pattern creates a brickwork pattern m using the runn
48. axis instead of numeric values This can be done by setting the xaxis formatter to date and the x attribute for the SAMPLE element to a valid date recognized formats include RFC822 e g Mon 18 Feb 2002 17 26 18 0100 and ISO8601 e g 2001 02 18 2001 02 18T17 26 or 2001 02 18T17 26 18 0100 although the recommended format is ISO8601 In this example we ve also set the xaxis formatter density to sparse although this is optional Here s how lt areagraph width 200 height 150 xaxis rotate 45 xaxis formatter date xaxis formatter density sparse gt lt datacurve name Measurements gt lt sampl MOV LOGY CORSU lt sampl T2VOL LO O5 RST lt sampl T2001 LL IO T Aa lt sampl TOO k 1 OIL Wal BY Ps lt sampl T20OI 1O 210 T lt sampl VAOOL 1 O 2 5 Wa A lt sample x 2001 10 30 WAL Bit gt lt datacurve gt lt areagraph gt HG Measurements Internally the date is converted to a number value so if the xaxis formatter isn t set the results will look fairly strange The smallest unit of resolution with dates is a second and using this method date ranges of between 2 seconds and 100 years can be plotted Page 51 of 76 Specifying Colors Colors can be specified in the XML in a number of ways Most people are familiar with the RRGGBB notation which specifies a color in the default RG
49. ay then be painted and or may contain other blocks which will be painted inside the shape usually with the shapes overflow attribute set to hidden to clip it s children to the bounds of the shape Each SHAPE element must contain a SHAPEPATH which defines the shape and then may optionally contain other blocks like the DIV element The SHAPEPATH defines the outline to draw and may contain the following elements Element Example Description moveto lt moveto x 20 y 20 gt Moves the cursor to the specified location without marking the page lineto lt lineto x 20 y 20 gt Draws a straight line to the specified location arcto lt arcto width 100 height 100 Draws an arc from an ellipse The size of the ellipse is startangle 0 endengle 90 gt specified by the width and height attributes and the section to draw is specified by the startangle and endangle This example would draw an arc from the current cursor position to a position 50 points to the right and 50 points down the page 6699 bezierto lt bezierto x 100 y 100 cx1 50 Draws a bezier curve to the location specified by x and y cy1l 0 cx2 50 cy2 100 gt cxl cyl is the location of the first control point and cx2 cy2 is the location of the second This is difficult to visualize so here are some examples The first shows how to draw a diamond lt shape width 100 height 100 border 1 gt l
50. below as they are specific to line and area graphs 2 lt linegraph width 200 height 150 yaxis formatter integer yaxis label Integers gt lt datacurve name Measurements gt lt senpole lt 1 y 0 5 s Q 4 lt sample x 2 y 0 9 gt lt sample x 3 y 1 3 gt lt sample x 4 y 1 2 gt lt sample x 5 y 1 7 gt lt sample x 6 y 2 gt 0 lt sample x 7 y 84 s 1 2 3 4 5 6 7 lt datacurve gt lt linegraph gt P Measurements 2 00 lt linegraph width 200 height 150 1 80 yaxis formatter currency en_GB yaxis label Pounds gt 1 60 lt datacurve name Measurements gt w 1 40 lt sample x 1 y 0 5 gt g 1 20 S lt 2 yor OT gt a ea lt sample x 3 y 1 3 gt 0s lt sample x 4 y 1 2 gt 0 80 lt sample x 5 y 1 7 gt 0 60 lt E HAN 9n gt oa a aA 0 40 2 3 4 5 6 T lt datacurve gt lt linegraph gt E Measurements Bar Graphs The simplest and most familiar type of bar graph can be created using a BARGRAPH element which creates a single row of simple bars Here s an example lt bargraph width 200 height 150 xaxis rotate 45 gt lt gdata lt gdata lt gdata lt gdata lt gdata lt gdata lt gdata lt bargraph gt name Monday value 19 gt name Tuesday value 14 gt name Wednesday value 12 gt name Thursday value 17 gt name Friday value
51. bility both parameters are accepted if text align isn t set the value of align is used instead letter spacing number Set the space between letters A positive number moves letters further apart while a negative number moves them together The default is zero JUSt ECs HOM natio number from 0 to 1 When text is justified extra space is placed between letters and words to increase the overall length of the line This parameter controls how much space is added between letters and how much between words A value of 0 means only extend the spacing between words while a value of 1 means only extend the spacing between letters The default is 0 5 which means add a bit to each Note this setting has no effect if text is not justified in that case see the letter spacing attribute requote true or false Whether to use curly quotes or plain quotes suppress ligatures true or false Whether to automatically use the fi fl and ffi ligatures Fonts Built in fonts Every report created by the Report Generator can display the standard 5 fonts available in all PDF documents Times Helvetica and Courier as well as the Symbol and ZapfDingbats fonts Times Helvetica and Courier can also be referred to by the generic CSS2 names of serif sans serif and monospace The following two lines give identical results lt body gt lt p gt This is in lt span font family Helvetica gt
52. bout an image lt body gt to specify metadata about the first page and lt pbr gt to specify metadata about the following page Metadata that is specified on any other tag will be silently dropped Here s a brief example showing how this could be put to use an image is embedded in a document along with information on from whence it came Content in bold is not embedded as metadata but is parsed and processed by the Report Generator lt img src resources canoe jpg gt lt rdf RDF xmlns rdf http www w3 org 1999 02 22 rdf syntax ns xmlns dc http purl org dc elements 1 1 xmlns tc http www w3 org 2000 PhotoRDF technical 1 0 gt lt rdf Description about gt lt dc type gt image lt dc type gt lt dce title gt Fishing Boat lt dc title gt lt dce description gt Photo of a boat on the coast in Ghana lt dc description gt lt dc creator gt mike bfo com lt dce creator gt lt dce date gt 1999 04 20 lt dc date gt lt tc camera gt Canon EOS 100 lt tc camera gt lt tc lens gt Sigma 28mm lt tc lens gt lt rdf Description gt S elie SINT gt lt img gt For a full example have a look at the Met aData xm1 example in the download package Page 10 of 76 Styles The look and feel of a document is defined using Cascading Stylesheets level 2 or CSS2 the same system used by HTML The full CSS2 specification is online at http www w3 org TR REC CSS2 and unlike many specifications it s clear enough
53. boxes Another variation is to set the editable attribute to true which will turn the drop down into a combo box the user can type their own values into the box as well as choose one from the list e There s no submit button instead a regular button with an onClick attribute does the same job In fact the onClick action may be any type of hyperlink that s supported by the Report Generator Buttons can also take a src attribute which can be the URL of an image which will be pasted onto the button e Every form element recognises the boolean attributes readonly which prevents the form from interacting with the user required which means the field must have a value in it befor the form is submitted and submitted which is on by default but may be turned off to prevent the field from being submitted to the server and is useful for fields used only for cosmetic or temporary purposes JavaScript One of the aspects we haven t demonstrated is JavaScript which is supported in Acrobat 4 0 and 5 0 both the Reader and the full version of Acrobat Although the syntax is identical to the JavaScript used in web browsers the Document Object Model is radically different do not expect your HTML JavaScript to work in Acrobat Acrobats object model is documented in the AcroJS pdf document supplied with retail versions of Acrobat We won t go into too much detail about the syntax but will limit ou
54. bute equal to myid Matching certain types of element To match elements of a specific type in the document is the simplest type of rule The following example matches every H1 element in the document and sets the color to red HERTE lOr tred Classes and ID s An HTML specific extension to CSS2 which we have adopted is the concept of matching classes and ids This allows elements in the document to be grouped together or even to match individual elements For example every example in this document is printed in a box on a light blue background Here s how we do it PRE examp leba ckground color tDORRRR padding 4 border 1 Then in the document we simply place each example inside a lt PRE class example gt element As of version 1 1 10 each element can belong to multiple classes For instance this paragraph would have a red background and a black border red background color red outline border thin solid black lt p class red outline gt Individual elements can be referenced by ID as well For example to reference a specific diagram in the document you might set it s id attribute to diagram1 and then use the following stylesheet rule diagraml border 1 Each page in the document is given a unique ID equal to page followed by the current pagenumber For example here s how to set the size and background color of the first page pagel
55. ch2 gt lt bookmark name Chapter 2 part 2 href ch2pt2 gt lt bookmark gt lt bookmark name Chapter 3 href ch3 gt lt bookmarklist gt lt head gt lt body gt lt h1 id chi gt Chapter one here lt h1 id ch2 gt Chapter two part one here lt h2 id ch2pt2 gt Chapter two part two here lt hi id ch3 gt Chapter thr her lt body gt lt pdf gt The expanded attribute can be set to true to cause the specified bookmark tree to be opened by default The color font style and font weight attributes may also be set to set the look of the bookmark entry although this feature is ignored by PDF viewers before PDF 1 4 Acrobat 5 x Box Model The box model is the name given to the layout model used by both CSS2 and the Report Generator Coming to grips with how it works will help you to control the layout of your reports Every element that is displayed in the body of the report is a box be it a paragraph of text a table a bitmap image or even a page itself These boxes are usually positioned one after another down the page to make up the report All these elements have certain properties in common which can be set by the various block attributes in the report generator We ll cover some of these attributes now Padding Margins and Borders Every box placed in the document takes up a certain amount of space As well as the obvious space required to
56. create a document that can be printed but layout change forms change annotations change all plain metadata is not copyable or alterable For 40 bit encryption print lowres is the same as print highres extract can be none or all and changes can be none annotations or all The plain metadata option will cause XMP metadata in the document to be left unencrypted although this will result in a PDF that can only be loaded with Acrobat 6 0 or later show bookmarks true false Whether to show the bookmarks pane when the document is first opened one column Instruct the PDF viewing application on how to display the document two column left The default is single page two column right single page layout 40bit 128bit aes The encryption algorithm to use to secure the document If a password or access level is set defaults to 40bit aes will result in documents that can only be opened in Acrobat 7 0 or later but other than that is identical to 128bit encryption algorithm creator a program name Set the name of the program that created the original XML viewer fullscreen true false Whether to open the PDF viewer in fullscreen mode Whether to hide the toolbar of the PDF viewer when the document is first opened viewer hidetoolbar true false Whether to hide the menubar of the PDF viewer when the document is first opened viewer hidemenubar true false Whether
57. d by Servlet engines supporting only the Servlet 2 2 specification e Can proxy requests to different webservers or even different domains although care must be taken when doing this as session information may not be passed on The disadvantages are mainly that it requires the abstract PDFProxyServlet servlet to be extended and the getProxyURL method implemented so you have to write some code before you can use it Also the current version doesn t support the POST method for proxying requests An example proxy servlet called SampleServlet java is supplied with the package in the example directory Only the getProxyURL method needs to be implemented the contract for this method is given the incoming HttpServletRequest return the absolute URL of the XML document to be converted or nu11 if an error occurred Here s the method from the supplied SampleServlet which extracts the XML documents URL from the PathInfo of the request this is anything in the URL path to the right of servlet SampleServlet public String getProxyURL HttpServletRequest reg HttpServletResponse res throws ServletException IOException URL url null String query req getPathInfo wey al if query null throw new MalformedURLException URL thisurl new URL HttpUtils getRequestURL req toString url new URL thisurl res encodeURL query catch MalformedURLException e ST TTT TT TTT WRI T TOI N
58. d is to embed an appropriate TrueType or Type 1 font using the LINK element Provided the font contains the character and the embed attributes is left at it s default values of true the characters should display correctly The direction attribute which is set to rtl for Arabic Hebrew Yiddish and Urdu sets the main direction of the text as well as other formatting adjustments standard for RTL languages such as drawing lists and tables from right to left Although it does not support the unicode bidi attribute explicit byte order marks can be placed in the document eg amp x202b The Report Generator supports the Unicode 3 1 bidirectional algorithm Every element in the document can have a language set using the lang attribute which defaults to the current locale of the PDF generation process This attribute affects a few things the style of quote substitution if the requote attribute is true the type of currency format to use when a currency formatter is used with graphs default text direction default font if the language is Chinese Japanese or Korean and default page size for en_US en_CA and fr_CA the default is Letter for everyone else it s A4 Examples would be de for German and en_GB for British English residents of Northern Ireland can also use en UK because the code UK was also claimed by the Ukraine ISO gave it to neither party which is why the UK is
59. de 128 variations the package chooses the most compact one based on the data S t R S g S S lay ee symbols A to Z MII HI ll Iil l I and digits space May use the bar ratio attribute code39checksum Code 3 of 9 with checkdigit Identical to code39 but with a checkdigit added CODE 39 code25 Interleaved Code 2 of 5 Can display digits only but is fairly Ill ll I Iil I Il compact May use the bar ratio attribute 0123456789 code25checksum Interleaved Code 2 of 5 with checkdigit Identical to HII ll code25deutschenpost code25 but with a checkdigit added The 0123456789 code25deutschenpost value can be used to select the checksum algorithm used by Deutschen Post in Germany for the Leitcode and Identcode symbols codabar CodaBar algorithm Variable width code used by Fed Ex amongst II others the first and last symbols must be a stop code from A to D and A12345B the symbols in the middle must be a digit or one of or the 6699 decimal point Page 37 of 76 Code name eanl3 upca POSENEE intelligentmail maxicode pdf417 qrcode datamatrix deutchepostmatrix Description and books always 13 digits long The last digit is a checkdigit which may or may not be specified Generally EAN 13 codes should have their bar width attribute set to 0 75 which makes the whole code one inch wide UPC A is the US subset of EAN 13 it is ident
60. display the content of the box such as the dimensions of an image there is the space around the content as well which separates it from it s neighbors Page 21 of 76 Top Margin Transparent Let T LMILB RM Right Bottom aoe Margin edge ms Border edge Padding edge _ Content edge The diagram above shows the various shells around the content of a box Starting with the content and moving out we have 1 Padding the space between the content of the block and the border this has the same background color or image as the content of the block Border the optional border line surrounding the content of the block 3 Margin the space outside the border between this block and it s neighbors It s always transparent The padding border and margin attributes can be set to set the attribute for all four sides of the box or padding top 55 66 padding right padding bottom or padding left etc can be set to set the border padding or margin for just one side The Report Generator also supports the border color attribute to set the color of the border the border style attribute to set the border line to solid dotted dashed and so on and the custom corner radius attribute which allows the corners of the border to be rounded Border colors and styles can be set seperately for each side for example will draw a dot
61. do it anyway You may have noticed that the JSP page directive is the second line rather than the first as is normally the case with JSP s this is because the lt xm1 directive must be on the first line of the XML most SAX parsers will throw an error if it s not The second change is on line 7 where we print the current date using a JSP directive By now we hope it s fairly clear that creating a dynamic report is basically the same as creating a dynamic HTML document provided the XML syntax is adhered to The DOCTYPE declaration A quick word about the DOCTYPE declaration the third line in the example above The DOCTYPE or DTD is used by the XML parser to store information about the structure of the document which elements can contain which and so on The XML document refers to the DTD using two strings the public identifier and the system identifier which are the values big faceless org report and report 1 1 dtd in the example above In practise XML documents include a DTD for two main reasons e To automatically validate the XML document against the DTD e To convert named entities like amp nbsp into character values XML validation isn t used in this package we do our own validation instead so the main reason this is required is to convert named entities see Appendix B for a list of named entities understood by the Report Generator DTD If you don t use any you can leave the DO
62. e is implemented and to limitations in the PostScript language elements with the overflow attribute set to hidden shouldn t be nested more than 12 deep for compatibility with Acrobat 4 0 or 28 deep for Acrobat 5 0 or later Differences with CSS2 specification For those that take specification compliance seriously here is a list of the differences between the CSS2 specification and our implementation of it Numbers refer to the section of the spec at http http www w3 org TR REC CSS2 Over time the length of this list will shorten as we head towards full CSS2 compliance 4 1 5 At rules like import or charset are not supported 4 Parsing errors throw an error and are not ignored Lp T Only the lang and first child and the custom last child pseudo selectors are used Ace Media types are not used we ve only got the one media PDF 8 5 3 Border style double groove ridge inset and outset are not used 9 2 5 The display property defaults to block not inline 9 4 bottom and right aren t used for positioning only top and left 9 9 1 z index isn t supported Later elements will always be drawn over earlier ones 9 10 Changing text direction in the middle of a word won t work Ensure there is always a space between phrases with different directions 0 4 max width is ignored O37 max height is ignored 1 1 1 The clip rectangle value is always auto 2 The generated content section is pret
63. ed if altering this value which defaults to 2 8 If this attribute is specified for a variable width barcode it s ignored Generic Blocks and Vector Graphics Sometimes the need arises to group elements together inside a block for example to set the language or class for a number of elements or to position several absolutely positioned elements relative to the same point There are several generic elements in the XML syntax the most familiar one being DIV short for division which is also used in HTML The DIV element can contain other blocks as children tables paragraphs or other divs are common A plain DIV by itself has no appearance on the page although one can obviously be given by setting the background color and border as for any block Performing an identical function to DIV but with a slight twist are the CIRCLE ELLIPSE and SHAPE elements As a block is just a rectangle on a page these elements can be used to define the shape that s drawn within this rectangle These can be used for interesting effect especially as like a DIV they can also contain other blocks as children For instance a paragraph or image could be placed inside an ELLIPSE whose overflow attribute was set to hidden to give a porthole like view on the contents like the example to the right Note that the children of these shapes are not shaped to fit merely trimmed for example a paragraph of text will still be rectangular but thi
64. ed with Line and Area graphs see their entries for more information Plot values on the axis as a date using the specified java text SimpleDateFormat only used with Line and Area graphs see their entries for more information If these aren t enough a custom formatter can be written in java and referenced from the Report Generator by specifying it s full class name For example lt bargraph xaxis formatter com mycompany CustomFormatter gt All formatters are subclasses of the org faceless graph Formatter class which is described more fully in the API documentation Additionally the density of the formatter can be specified This is an indication of how many values are to be plotted on the graph This is set using the xaxis formatter density and yaxis formatter density attributes values can be normal for between 8 and 14 values on the axis sparse for between 4 and 7 values on the axis and minimal for either 3 or 4 values on the axis depending on data Here s an example showing the differences on the Y axis a ae ee hy BF O O hM 0 8 Normal density G Gu gt P k Sparse density Minimal density 3 4 5 xaxislabel E Measurements 0 70 1 2 3 4 5 6 measurements 2 3 4 5 6 measurements Page 46 of 76 And here are some examples of the different types of formatters The various date formatters will be dealt with separately
65. eing parsed from this is generally the URL the XML is loaded from although this is under the control of the software lt img src file path to myimage tif 2 gt Barcodes The Report Generator can print barcodes directly to the document using one of several barcode algorithms This is generally more convenient than including bitmap representations of the barcode and always results in smaller files The size of the barcode depends on the value to be printed and the bar width attribute the width of the narrowest bar may be set to values between 0 6 and 1 This means the the width element is ignored and the height may be set within the limits imposed by the barcode algorithm the minimum height is 15 of the width or 18 points whichever is greater lt barcode codetype codel128 showtext true value My Value gt The value of the barcode is set by the mandatory value attributes and the showtext attribute which may be true or false determines whether a human readable version of the value is printed below the code The actual bar code algorithm used is set by the mandatory codetype attribute and may be one of the following values If a value contains characters outside the range that can be displayed by the selected code type an error occurs Code name Description code128 Code 128 a modern variable width code Can display II II Ni ASCII values from 0x00 to OxFF Code128 has several a Co
66. either embedded or external Versions of the Report Generator since 1 0 11 recognise the style background color red method of defining attributes although we still recommend the XML equivalent of background color red Third check the document for inline images tables lists or other blocks inside paragraphs We ve found this to be a common occurance due to HTML not requiring a closing lt P gt tag Fourth and finally change the tags that have a different syntax These are e TABLE the HTML attributes border and cellmargin should be renamed cellborder and cellmargin e The legacy FONT element should be replaced with an equivalent SPAN e The various different styles of paragraph and span available in HTML ADDRESS CITE etc should be replaced with a P or SPAN setting the class attribute to control the style Definition lists using the DL DT and DT elements aren t supported and should be replaced wither either a normal UL list with the value attribute set to the definition or a TABLE Provided that no JavaScript forms or frames are used these steps should result in a report that is legible and ready to be tailored for it s eventual destination as a PDF document Page 63 of 76 Internationalization The vast majority of the worlds languages can be used with the Report Generator Thanks to XML s natural character set of UTF 8 as well as it s ability to use preferred native c
67. el size which determines the size of the image A 200 x 200 pixel bitmap at 200dpi will only take up one square inch at 600dpi it takes a third of an inch lt img src canoe jpg dpi 200 gt The image DPI can be set by the dpi attribute and defaults to the DPI set in the image GIF most PNG and the occasional TIFF image don t specify a default DPI in which case it defaults to 72 which conveniently means that a 200 x 200 pixel bitmap takes 200 x 200 points on the page Depending on the type of image this may not be high enough it s probably OK for photographs but hi resolution line art generally requires 200 to 300dpi to avoid appearing blocky when printed lt img src canoe jpg dpi 600 gt As well as using the dpi attribute the width and height of an image can be set directly in the same way as for any other block using the width and height attributes The document author is responsible for making sure there is no change in aspect ratio Page 36 of 76 The TIFF image format allows multiple pages as part of a single image To select a specific page of a TIFF image simply add a n to the image URL For example to load the second page of a multi page TIFF image add the following XML to your document URLs for the the image may be absolute or relative in which case they re relative to the base URL of the source file Technically this is the System ID of the Input Source the XML is b
68. ess report ReportParser import org faceless pdf PDF I OIC MM SE 6 P import org xml sax helpers public void createPDF String xmlfile OutputStream out throws TransformerException IOException Create your filter either explicitly or using the SAXTransformerFactory newXMLFilter method LY XMLReader reader XMLReaderFactory createXMLReader XMLFilter filter new MyFilter reader InputSource source new InputSource xmlfile ReportParser parser ReportParser getInstance PDF pdf parser parse filter source pdf render out out close Requesting PDF documents via HTTPS Whether using the Proxy Servlet or the Filter in principle requesting a PDF document over an SSL encrypted session is identical to requests using normal HTTP In practice however many web servers are only set up to handle incoming HTTPS requests not outgoing This is easy to test add the line java net URL url new java net URL https localhost to any servlet or JSP and run it If you get aMalformedURLException complaining of unknown protocol https then your web server isn t set up to allow outgoing HTTPS requests more specifically this is caused by the HTTPS protocol handler either not being installed or not being registered with the web application security handler Prior to version 1 1 this was an irritating problem Any relative links in the document are relative to the base URL of the doc
69. fault page size for Americans and Canadians They are included in the default stylesheet Lang ko font family HYMyeongJo lang ja font family HeiSeikakuGo ailene in EIN aio SE font famiy A MSUN SLS Ain INN y in Bl Hone fanmiy SIE Sene TR lang en_US en_CA size Letter Page 13 of 76 The language of an element can be set using the lang attribute in the same way as HTML by using the XML specific attribute xml lang or if neither are set it defaults to the Locale that the Report Generator is running in As for the attribute selectors they re easier to understand with an example In HTML an image that is also a hyperlink traditionally has a blue border around it This can be done with the following stylesheet entry img href border medium solid blue Similarly one could create appropriate margins on a floating block by using something like the following which puts left margins on a right floated DIV and right margins on a left floated DIV loat right margin left 10pt ipac letti fe manacain s te akcphiite seein Applying Stylesheets So how to include this style information in the document The following three examples show different ways to get the same result lt xml version 1 0 gt lt DOCTYPE pdf PUBLIC big faceless org report report 1 1 dtd gt First you can include the attributes inline Quick but inflexible lt pdf gt lt body backgrou
70. fied as a vector of the form X Y Z The default is 1 0 0 which causes the light to appear to come from the right side of the graph Page 42 of 76 Pie Graphs The PIEGRAPH element is the only type of graph that isn t plotted using axes Pie graphs have a wider range of key types than the other graphs as well as having the key placed in a box around the graph pie graphs can have inner keys where the name of the value is written directly on the slice outer keys where it s written next to the relevant slice or a combination The examples to the right are rotated inner flat outer and flat outer in total there are 6 different options for display key that are specific to Pie Graphs so we won t demonstrate them all here Below are the list of valid options for display key that are specific to Pie Graphs When we say if it fits above this is not to be taken literally after rotation on three axes the math to determine this is well beyond us Instead the outer key percentage attribute can be set to the minimum percentage of the pie a slice can be before it is considered too narrow for an inner key Slices from the pie can be extended away from the center of the graph like we ve done above This can be done by setting the extend attribute on the GDATA element to the percentage of the radius of the pie to extend the slice The examples here have the purple slice set to 10
71. g displayed and from having space allocated for it on the page Text and Fonts Text Elements The text handling in the report generator revolves around the idea of a paragraph a rectangular block of text Every line of text in the document is inside a paragraph either an explicit one caused by the P PRE BLOCKQUOTE or H1 to H4 elements or an anonymous paragraph more on these below Inside a paragraph of text the current font style may be changed by using inline elements like B I A and SPAN Inline elements may only be used inside a paragraph but other than that are treated as normal blocks and may have a border padding background color or image as usual Here s a simple example lt body gt lt p gt This is a paragraph lt b gt this is in bold lt b gt and this is back to normal lt p gt lt body gt Here s a table summarizing the various text elements and what they re intended for More complete information is available in the Element reference Element Purpose P paragraph A general purpose text container PRE paragraph A type of paragraph that preserves whitespace and newlines HU A paragraph Used for headings BLOCKQUOTE paragraph Used for quotes indented in from the margins to the left and right SPAN inline A general purpose inline element B inline Set the font weight to bold Page 25 of 76 Element Purpose inline Set the font style to italic inline Set the text decorat
72. graph from left to right yrotation an angle in The angle to rotate the graph around the Y axis The Y axis runs vertically down degrees the graph from top to bottom zrotation an angle in The angle to rotate the graph around the Y axis The Z axis goes into the degrees document display key none right Where to place the key relative to the graph Pie Graphs have even moreoptions to bottom top choose from The default is bottom left key attributename font style The style to give the font used to display the key The attributes have the same names as those used for normal text e g color font family font size but are prefixed with key to make key color key font family key font size and so on keybox color color The color to fill the box containing the key with If the display key value is not top right bottom or left this value is ignored keybox border color color The border color to outline the box containing the key with If the display key value is not top right bottom or left this value is ignored light level 0 to 100 The intensity of the light used to simulate the shading on the graph A value of 0 gives no shading at all a value of 100 gives deep shadows The default is 70 light vector a vector e g The direction of the light used to determine the shadows on the graph The vector 10 0 is speci
73. ground color lightblue gt lt div float left clear none width 40 height 40 background color U lt div float left clear left width 40 height 40 background color w More more more mor lt a gt Lies a LT GLA 5 Page 28 of 76 Text Attributes There a several attributes that can be set to control how text is displayed in the document Most of the inline elements defined above set one of these attributes to alter the style of text for example the lt b gt element is identical to lt span font weight bold gt Almost all of these are taken from CSS2 and are in many cases identical to the values used in HTML Full details for each attribute are defined in the Attribute reference section Attribute name Description 55 66 font cami liy name of a font Set the font face e g Times Helvetica monospace or a user defined font The CSS2 generic fonts serif sans serif and monospace are also recognised and mapped to Times Helvetica and Courier by default Since version 1 0 14 it s possible to specify more than one font family seperated by spaces or commas This is commonly done in HTML to say use the first font in this list that s available but the actual meaning is display each characters using the first font in the list that contains it This is particularly useful with PDF fonts for example setting font family Times S
74. h SOlat1 latin small letter n with tilde SOlat1 latin small letter o with grave ISOlat1 latin small letter o with acute SOlat1 latin small letter o with circumflex ISOlat1 latin small letter o with tilde ISOlat1 latin small letter o with diaeresis ISOlat1 division sign ISOnum latin small letter o with stroke latin small letter o slash SOlat1 latin small letter u with grave ISOlat1 latin small letter u with acute ISOlat1 latin small letter u with circumflex ISOlat1 latin small letter u with diaeresis ISOlat1 Symbol CodePoint Description yacute thorn yuml OElig oelig SCaron scaron Yuml Sire tilde zwnj zwj rlm ndash mdash lsquo rsquo sbquo ldquo rdquo bdquo dagger Dagger permil lsaquo rsaquo cUra Enade fnof Alpha Beta Gamma U 00fd U 00fe U 00ff U 0152 U 0153 U 0160 U 0161 U 0178 U 02c6 U 02dc U 200c U 200d U 200e U 200f U 2013 U 2014 U 2018 U 2019 U 201a U 201c U 201d U 201e U 2020 U 2021 U 2030 U 2039 U 203a U 20ac U 2122 U 0192 U 0391 U 0392 U 0393 latin small letter y with acute SOlat1 latin small letter thorn with ISOlat1 latin small letter y with diaeresis ISOlat1 latin capital ligature OE SOlat2 latin small ligature oe SOlat2 latin capital letter S with caron SOlat2 latin small letter s with caron ISOlat2 latin capital letter Y with diaeresis ISOlat2 modifier letter circumflex accent ISOpub small tilde ISOdia zero width non j
75. haracter sets like Shift JIS or EUC KR specifying the actual characters to display is not a problem When editing your XML just remember to save the file in the correct encoding UTF 8 unless you ve specified otherwise When it comes to actually displaying the characters the key is to use the right font The standard fonts Helvetica Times and Courier will as far as we know display the following languages correctly English French German Portuguese Italian Spanish Dutch no ij ligature Danish Swedish Norwegian Icelandic Finnish Polish Croatian Czech Hungarian Romanian Slovak Slovenian Latvian Lithuanian Estonian Turkish Catalan although the L with dot character is missing Basque Albanian Rhaeto Romance Sorbian Faroese Irish Scottish Afrikaans Swahili Frisian Galician Indonesian Malay and Tagalog Note that this information is based on several authoratitive websites but as we don t speak most of these we can t confirm it first hand For Chinese Japanese and Korean the obvious choice is to use the standard east asian fonts like hygothic heiseimin and mhei the full list is in the Fonts section TrueType or Type 1 fonts for these languages cannot be embedded in the current version although this is planned for a later release For other languages like Czech Slovenian Russian or Hebrew that require characters not directly supported by the PDF specification the best metho
76. haracters or which characters are available in the font The PFB file should always be included but isn t mandatory Leaving it has the same effect as turning off embedding for TrueType fonts if the font isn t installed on the viewers computer it will be approximated Here s an example of how to embed a Type 1 font in the document lt pdf gt lt head gt lt link name BitstreamCharter type font subtype typel src charter afm pfbsrc charter pfb gt lt head gt lt body font family BitstreamCharter font size 18 gt Hello in an embedded Type 1 font lt body gt lt pdf gt Like TrueTypes the italic bold and bold italic variants must be included separately using the src italic src bold and src bolditalic for the AFM files and pfbsrc italic pfbsrc bold and pfbsrc bolditalic for the PFB or PFA files Tables The table syntax is almost identical to HTML with a few added features Each table is a block as described in the box model section above with one or more rows the TR element containing several columns the TH and TD elements Page 32 of 76 Cells can span several columns or rows by setting the colspan and rowspan attributes As each row and cell are also blocks their margin padding border and backgrounds can be set separately in CSS2 a row cannot have padding margin or border set We allow this but only the vertical compone
77. he keystore Defaults to mykey Optional The password to open the private key in the keystore Defaults to the value of the password attribute Optional The type of keystore Usually will be either JKS for Java Keystore or some other value like pkcs12 which depends on what JCE providers are available May optionally include a hyphen followed by a provider name for example JKS SUN to load the Sun implementation of the JKS keystore or pkcs12 BC for the PKCS 12 implementation by The Legion of the Bouncy Castle Defaults to JKS Optional The name of the person or entity signing the document For informational purposes only Defaults to the name on the signing certificate Optional The location where the document was signed For informational purposes only Mandatory for dse200 handler only The hostname of the DSE200 being used for signing Optional for dse200 handler only The protocol to connect to the DSE200 with may be http or tsp defaults to http if not set Optional The reason why the document was signed For informational purposes only Optional An image to display as the content of the signature annotation This should be used carefully in particular the image should ideally be transparent enough that it doesn t completely mask out the area it covers Alternatively a background pdf may be used instead it functions the same
78. he parser is having trouble parsing a document a good first step is to replace all the anonymous paragraphs with actual paragraphs so you can see more clearly where the problem lies Page 26 of 76 Making block elements inline Since version 1 1 it s also possible to display block elements like images tables and so on inside a paragraph This can be done by setting the display attribute to inline rather than the default value of block this is a break with the CSS2 standard where all elements default to inline we hope to fix this in a future release Here s an example lt p gt This paragraph has an lt img display inline src images logo png gt image in the middle lt p gt and here s the result This paragraph has an K O image in the middle Vertical Alignment When mixing elements of differing heights in a paragraph like the example above there are several options available for vertical positioning First there are two definitions we need to make The Inline Box is a box equivalent to the size of the inline item itself usually a word or phrase but as we saw above it s sometimes an image or similar The above example contains three inline boxes one for the text before the image one for the image and one for the text after it Each inline box is the same size or smaller than the Line Box which is simply the box representing the physical line and is always just big enough to fit it s inl
79. how the specified form element if it is hidden The form element must be the name of a form element See the Forms section Hide the specified form element if it is visible The form element must be the name of a form element See the Forms section Reset the documents form to it s default values See the Forms section Submit the contents of the documents form to a URL The method is optional it defaults to POST but if specified must be one of the following values POST Post the form using the standard HTTP POST method FDF Post the form in Adobes Form Description Format FDF XML Post the form as XML requires Acrobat 5 0 PDF Post the entire document requires Acrobat 5 0 See the Forms section Run a section of JavaScript code See the Forms section Run a named action PDF viewer dependent see below Page 55 of 76 The facility to run named actions can be very useful provided you know which PDF viewer application your target audience is running For the vast majority who run Acrobat 4 0 or greater the following named actions may be used they loosely correspond to the equivalent actions which can be run from the drop down menus in Acrobat These values are case sensitive Action name Description Open Close Prine GeneraliInfo EontsInfo SecurityInfo Quit Next Prev H Last GoTo Open the open file dialog Close the current document Print the current document Bring up the
80. href attribute the rest are limited to use with form fields Attribute I E T onMouseOver onMouseOut onMouseDown onMouseUp OnE Te EZ R IE onChange onKeyPress onFormat Description The action to perform when the element of form field is clicked Identical in function to href the two attributes can be used interchangeably The action to perform when the mouse moves over the element or form field The action to perform when the mouse moves out of the element or form field The action to perform when the mouse button is clicked in the form fields focus area The action to perform when the mouse button is released in the form fields focus area The action to perform when the field gains focus text elements only The action to perform when the field loses focus text elements only The action to perform when the value of the field has changed The action to perform when a key is pressed in the form field text elements only Use for limiting input into the field to digits for example The action to perform when the contents of the field is about to be redisplayed onOtherChange The action to perform when the value of one of the other fields has changed This is commonly used in conjunction with read only fields to show a value based on the contents of other fields Digital Signatures Although still a type of form field Digital Signatures are handled quite differently from the other fields so we ll
81. ical except that the first digit is always zero and isn t specified EAN 13 the international variable width barcode used on groceries 9 780596 001971 1 ll 5512 PostNet algorithm used by the US Postal Service to encode lllllnnlln lln lul ZIP codes so it only represents digits The height and width of this code are fixed according to the specification so the width and height attributes are ignored EAN 8 is an 8 digit barcode which is very similar to EAN 13 in design and purpose It s typically used where an EAN 13 barcode would be too large Royal Mail 4 state Customer Code A 4 state code used by the I E I BT l l Ale sl Royal Mail in the UK to encode postcodes Like PostNet the WEEE HYNI l width and height of this code are fixed This algorithm can encode digits and the upper case letters A Z The IntelligentMail barcode UAn T llli lrn llill introduced in 2008 by the USPS to replace Postnet It takes a 20 25 29 or 31 digit value and has a fixed width and height gt types in that they are always 80x80 points the width and height attributes should be set to 80 and showtext is ignored A MaxiCode symbol can encode up to 183 ISO 8859 1 characters of general text extended error correction is used if space permits it or for addressing SY a Structured Carrier Message can be specified For an SCM the value must begin with gt and the format must be as
82. ies to any web application that needs to create an HTTPS URL Although every webserver will have a different way of doing this we did find some Tomcat 4 0 specific instructions at http www planetsaturn pwp blueyonder co uk tomcatandhttps which you may be able to adapt if you can t find anything for your server The second option is much simpler You can use the new base meta tag to set the base URL of the document to any value you like For example to get all relative links in the document to load from the filesystem rather than via the webserver add something like this to your code immediately after the lt head gt tag lt pdf gt lt head gt lt meta name base value file path to webapplication gt lt head gt This will cause relative links in your document like lt img _ src images logo gif gt to be resolved as file path to webapplication images logo gif Page 7 of 76 Creating the XML A simple example Iig 2a 3 4 Br 6 Ta 8 Os AL il lt xml version 1 0 gt lt DOCTYPE pdt BUBLIC big facelless org report report l 1 dtd gt lt pdf gt lt head gt lt meta name title value My First Document gt lt head gt lt body background color yellow font size 18 gt Hello World lt body gt lt pdf gt This simple document creates a single page PDF with the text Hello World in 18pt text at the top of the first page Barring the first two
83. in the table Page 33 of 76 This can be done using the THEAD TBODY and TFOOT elements also part of HTML although not commonly used These elements allow rows in the table to be assigned to the header the body or the footer of the table If the table is all on one page this distinction isn t important but if it s split over several pages this allows the Report Generator to reprint the headers and footers on each sub table as required Here s an example lt table gt lt thead gt lt tr gt lt td gt Animal name lt td gt lt td gt Habitat lt td gt lt tr gt lt thead gt lt tbody gt Katee I le I clay tel lt a testa lt tr gt lt td gt Ant lt td gt lt td gt My Kitchen lt td gt lt tr gt lt tr gt lt td gt Anteater lt td gt lt td gt South America lt td gt lt tr gt lt tr gt lt td gt Antelope lt td gt lt td gt Africa lt td gt lt tr gt lt tr gt lt td gt Armadi llo lt td gt lt td gt South America lt td gt lt tr gt lt tbody gt lt table gt If a row is added to a table directly without being placed inside a THEAD TBODY or TFOOT element it s assumed to be inside the TBODY The TH element meant to represent a table header is purely stylistic and is treated no differently to the TD element in terms of layout Table Layout algorithms A table is laid out according to one of two algorithms which one is controlled by the setting of the table layout attribute The default is auto
84. ine boxes In the example below the line box is in yellow the larger text box is in green and the smaller of the two text boxes is shown in orange This example shows the four different options for vertical alignment within a line box which is set with the vertical align or valign attribute Top places the top of the inline box at the top of the line box middle places the middle of the inline box at the middle of the line box baseline the default places the baseline of the inline box at the baseline of the line box Finally bottom places the bottom of the text box at the bottom of the line box There are two other values which can be used super and sub which place the text in the super or subscript position These are not demonstrated here The height of each inline box depends on both the size of the font used and it s leading or white space between lines This is set with the line height attribute Each font has a preferred leading set by the font author which is equivalent to setting line height to normal usually equivalent to between 100 and 120 of the font size The 1ine height can also be set to a percentage in which case it s a percentage of the current font size S P As you can see any leading that is applied is split evenly above and below the text as required by CSS2 Page 27 of 76 Float positioning You ve seen how to add blocks in the middle of a paragraph using the
85. ing bond style of bricklaying for What it s worth The width and height of each brick must be specified pattern check fg bg size The check pattern requires the size of each square in the check to be specified pattern grid fg bg linewidth spacewidth The grid pattern creates a gridded pattern as shown here The width of the line and the width of the space between the lines must be specified pattern spot fg bg size A spot pattern similar to the pattern used for halftoning in newspapers can be created with the spot pattern The size of each spot must be specified pattern polka fg bg size a A different kind of spot pattern containing a l number of different size random spots can be created with the polka pattern The average size of the spots must be specified pattern star fg bg 20 Finally a pattern of repeating 5 pointed stars like those on the US flag can be created with the star pattern The size of each star must be specified Here s an example of how to use a pattern as the background color and a spot color as the foreground for a page header lt body background color pattern stripes FFFOFO FOEOEO 5 5 45 gt lt h1 color spot PANTONE Reflex Blue CVC cmyk 100 72 0 6 gt Heading in Reflex Blue S AinlS lt p gt The pages of this document have light pink stripes TO lt body gt Finally for Bar Graphs only it s possible to fill
86. ion to underlined inline Set the font style to outlined inline Set the text decoration to underlined inline Set the text to UPescriPt inline Set the text to subscript inline Set the text to use a font size 11 4 times normal size inline Set the text to use a font size 3 4 times normal size inline Set the text decoration to strike oeut T inline Set the text to use a typewriter font e g Courier ZAPF inline Set the text to use the Zapf Dingbats font SYMBOL inline Set the text to use the Symbol font inline Set the text to turn off automatic linewrapping inline Set the text to use a typewriter font turn of line wrapping etc inline Identical to I inline Identical to B Anonymous Paragraphs Under certain circumstances the report generator will create anonymous paragraphs basically it inserts a P element for you into the document where required It will do this automatically if it finds text or inline elements directly inside a BODY LI or TD element Taking the example above this could have been written as follows lt body gt This is a paragraph lt b gt this is in bold lt b gt and this is back to normal lt body gt The Report Generator will automatically add the surrounding lt P gt and lt P gt so internally this is converted to lt body gt lt p gt This is a paragraph lt b gt this is in bold lt b gt and this is back to normal lt p gt lt body gt If t
87. ires the Extended Edition of the product Like HTML forms a document can contain text boxes drop down lists radio buttons check boxes regular submit buttons and even JavaScript The main differences are that the JavaScript object model is radically different that each PDF only has a single form unlike HTML and that the form isn t tied to a single submit URL instead each submit button there may be more than one specifies the URL to submit to Form elements are not covered by CSS2 so we ve based our implementation fairly closely on HTML4 0 with a couple of simplifications lt table gt lt tr gt lt td gt Name lt td gt lt td gt lt input type text name name width 10em gt lt td gt icies lt ee gt lt td gt Address lt td gt lt td gt lt input type text name address lines 3 width 10em gt lt td gt ies a lt td gt Sex lt td gt lt tc ale lt input display inline type radio name sex value male padding right 0 2in gt Female lt input display inline type radio name sex value female gt lt td gt Ey CEE td gt Country lt td gt lt ul gt lt input type select name country value Cameroon gt lt option gt Cameroon lt option gt lt opt ion gt Lebanon lt option gt lt option gt Other lt option gt lt input gt SES E E lt td gt Email me lt td gt lt td gt lt input type checkbox name email checked true gt lt td gt co TEELT lt td colspa
88. ists is the marker offset This is the distance away from the left edge of the list element to place the marker Generally this is the same as the list elements padding left attribute which defines how far in the list element is nested but it can be made smaller to indent the marker as well Images The Report Generator can embed several different bitmap image formats PNG JPEG GIF PBM PGM and TIFF There are some restrictions however Progressive JPEG images can only be read in Acrobat 4 x and greater and as they re larger as well they should be avoided and standard baseline JPEG s used Animated GIF images can be used but only the first frame will be shown GIF images may use any number of colors JPEG NeXT and Thunderscan TIFF image sub formats are not supported e Transparency including alpha transparency is supported in the GIF and PNG image formats Be warned that alpha transparency definitely will not work in viewers prior to Acrobat 5 and printing images with mask transparency of the kind used in GIF and some indexed PNG images is device dependent in Acrobat 4 it requires PostScript level 3 support from the printer driver e Only the first image of multi image PGM and PBM images will be used ASCII encoded PNMs cannot be parsed The size of the image depends on the size in pixels of the bitmap and the dots per inch or DPI it s rendered at As PDF is a print based medium there is no fixed pix
89. lace mintcream honeydew FOFFFF FFFAFO FDF5E6 F5FFFA FOFFFO linen ivory lightyellow beige antiquewhite FAFOE6 FFFOFO FFFFEO F5F5DC FAEBD7 cornsilk lemonchiffon lightgoldenrodyellow mistyrose bisque FFF8DC FFFACD FAFAD2 FFE4E1 FFE4C4 papayawhip blanchedalmond peachpuff palegoldenrod wheat FFEFD5 FFFFCD FFEFD5 EEE8AA F5DEB3 d khaki FOE68C ellow FFFFOO moccasin FFE4B5 navajowhite ol FFDEAD FFD700 darkkhaki BDB76B goldenrod tan eru darkgoldenrod DAA520 D2B48C CD853F B8860B saddlebrown 8B4513 rosybrown burlywood BC8F8F DEB887 sandybrown F4A460 lightsalmon FFAO7A darksalmon E9967A coral FF7F50 salmon peachpuff FA8072 FFEFD5 lightcoral F08080 darkorange FF8C00 ink FFCOCB orange FFA500 mistyrose FFE4E1 lightpink FFB6C1 thistle D8BFD8 hotpink FF69B4 lum DDAODD palevioletred DB7093 navy mediumorchid darkmagenta BA55D3 8B008B 000080 mediumblue powderblue 0000CD B0E0E6 lightblue ADD8E6 darkcyan 008B8B lightsteelblue BOC4DE IGEI 008080 paleturquoise AFEEEE lightcyan EQOFFFF efi PNM J M greenyellow ADFF2F palegreen ___ 90EE9 _ 98FB98 _ 9ACD32 E D3D3D3 DCDCDC C0COCO A9A9A9 000000 CD5C5C maroon darkred F221010 0 0 0 E23 510 0 0 0 l A ma Y poe indigo slateblue darkslateblue
90. lgar fraction three quarters fraction three quarters ISOnum inverted question mark turned question mark ISOnum latin capital letter A with grave latin capital letter A grave ISOlat1 latin capital letter A with acute ISOlat1 latin capital letter A with circumflex SOlat1 latin capital letter A with tilde SOlat1 latin capital letter A with diaeresis ISOlat1 latin capital letter A with ring above latin capital letter A ring ISOlat1 latin capital letter AE latin capital ligature AE ISOlat1 latin capital letter C with cedilla SOlat1 latin capital letter E with grave ISOlat1 latin capital letter E with acute ISOlat1 latin capital letter E with circumflex ISOlat1 latin capital letter E with diaeresis ISOlat1 latin capital letter I with grave ISOlat1 latin capital letter I with acute ISOlat1 latin capital letter I with circumflex ISOlat1 latin capital letter I with diaeresis ISOlat1 latin capital letter ETH SOlat1 latin capital letter N with tilde ISOlat1 latin capital letter O with grave ISOlat1 latin capital letter O with acute ISOlat1 latin capital letter O with circumflex ISOlat1 latin capital letter O with tilde ISOlat1 latin capital letter O with diaeresis ISOlat1 multiplication sign ISOnum latin capital letter O with stroke latin capital letter O slash SOlat1 latin capital letter U with grave ISOlat1 latin capital letter U with acute ISOlat1 latin capital letter U with circumflex SOlat1 Symbol CodePoin
91. lines it should look fairly familiar to anyone that s ever created an HTML page Although it s simple there are a couple of key points here Let s go through this example a line at a time Line 1 Line 2 Line 4 Line 5 Line 6 Line 8 the XML declaration lt xml version 1 0 gt must always be included as the very first line of the file the DOCTYPE declaration tells the XML parser which DTD to use to validate the XML against See here for more information on DTDs the top level element of the XML document must always be pdf like HTML the document consists of a head containing information about the document and a body containing the contents of the document a trap for HTML authors In XML an element must always be closed this means that lt pdf gt must always be matched by lt pdf gt lt b gt by lt b gt and so on When an element has no content like lt br gt lt img gt or lt meta gt it may close itself by writing it as we ve done here lt meta gt The lt body gt element has some attributes set background color and font size In XML every attribute value must be quoted this can be frustrating for HTML authors used to typing lt table width 100 gt Creating Dynamic Reports A report generator isn t much use if it can t create reports based on dynamic data creating customer account statements on the fly from database queries for example Rather than use custo
92. lity to embed fonts into the document both TrueType and Type 1 fonts can easily be embedded When embedding fonts it s important to remember a key point about the PDF specification Each font variation there are four normal italic bold and bold italic is treated as a completely separate font For the built in fonts this isn t important but when embedding a font authors need to remember that if even one letter is to be displayed in italic two fonts will need to be embedded instead of one the normal version and the italic TrueType fonts can be embedded using one or two bytes per glyph Two bytes are recommended for any fonts that will be used to display glyphs outside the 8859 1 character set japanese chinese russian czech arabic and so on The bytes attribute on the LINK element sets how many bytes are used if not specified it defaults to 1 So how do you embed a font Let s take as an example the Times Roman font supplied with Microsoft Windows It s a TrueType font and there are four files that make up the font one for each variation as described above lt pdf gt lt head gt lt link name mytimes type font subtype opentype src times ttf bytes 1 gt lt head gt lt body font family mytimes font size 18 gt Hello in an embedded TrueType font lt body gt lt pdf gt This shows the basic setup embedding a single font variation Notice that when we link in the font we set the
93. ly and then offset by the left and top attributes these default to zero The position of the following box is calculated as if the box was not offset Here s an example S pa Normal flow Box 2 has left 10 top 10 Sometimes this isn t flexible enough for example if you want to place a paragraph of text on top of an image or at a specific position on the page In this case you can set the position attribute to absolute This causes the box to be taken out of the normal flow and positioned relative to it s parent only i e completely independent of it s siblings Here s the above example again but with the second box positioned absolutely Notice how the left and top offsets are now relative to it s parent and how the third box is positioned as if the second didn t exist S Normal flow Box 2 has left 10 top 10 position absolute There is one critical condition when using absolutely positioned elements the element cannot be the child of the BODY element This is because unlike HTML elements must be assigned to a page before they can be positioned but as absolutely positioned items are independent of their siblings there s no way to decide which page they go on To position an item at an absolute position on a specific page it can be placed in a background macro which is then assigned to the page Clipping and Visibility In the above examples you will
94. m elements to query the database and include the results we ve gone with a much more flexible solution and separated the generation from the PDF conversion This means you can use your favorite technology to create the dynamic XML we prefer JSP but ASP XSLT CGI or any other solution will do and the Filter or Proxy Servlet will convert that to PDF transparently Page 8 of 76 Here s an example showing how to create a PDF with the current date from a JSP There are some more examples in the examples dynamic directory of the download package lt P weesiLom il OURS lt page language java contentType text xml charset UTF 8 gt lt DOCTYPE pdt BUBLIC big facelless org report report l 1 dtd gt lt pdf gt lt body font size 18 gt Today is lt t new java util Date gt lt body gt lt pdf gt ale 2s 30 4 2k 6 fli 8 Oe This is very similar to the previous example We ve marked the two changes in bold The first one is the most important You need to set the page Content Type to text xm1 in order for it to be converted to a PDF You should also set the charset to UTF 8 like we ve done here This is because of an important difference between HTML and XML the default characterset for HTML and therefore for JSPs is ISO 8859 1 but the default for XML is UTF 8 Of course if you re only using 7 bit ASCII characters characters you can leave this out but it s a good idea to
95. n 2 align center gt lt input type button name submit onClick pdf submit http localhost POST gt lt td gt lt tr gt lt table gt Male Q Female Q Much of this should look fairly familiar to HTML authors The key differences here are e The name and type values are mandatory and each name must be unique across the entire document Page 57 of 76 e As well as the value attribute which can be set for every type of form field the fields can take a default value attribute which controls what the field is reset to when a pdf reset action is run e Multiline text boxes don t use the lt textarea gt tag but are identical to normal text boxes just set the lines attribute to the number of lines that are required You can also optionally set the scrollable attribute to false to prevent users from scrolling the box to enter more text Initial values can be set either in the value attribute or between the lt input gt and lt input gt tags s Drop down lists don t use the lt select gt tag but instead use a regular INPUT element with a type of select It does use the OPTION elements to list the options but the selected option is chosen by setting the value attribute on the INPUT It s not currently possible to select more than one option in a list For multi line lists just add a lines attribute in the same way as the multiline text
96. nd color yellow font size 18 gt Hello World lt body gt lt pdf gt lt xml version 1 0 gt lt DOCTYPE pdf PUBLIC big facelless org report report 1 1 dtd gt lt pdf gt lt head gt lt style gt Second you can embed the body L background color yellow font size 18 stylesheet directly in the lt style gt lt head gt lt body gt Hello World lt body gt lt pdf gt document body L background color yellow font size 18 Third for maximum flexiblity create the stylesheet as a separate lt xml version 1 0 gt file The first file here is called lt DOCTYPE pdf PUBLIC big faceless org report report 1 1 dtd gt style css and we load it using the LINK element Scie lt head gt lt link t stylesheet style WS Relative URLs referenced from eee T Sal the stylesheet will be relative to lt body gt the sheet not the document that Hello World uses it lt body gt lt pdf gt Page 14 of 76 Elements Most of the XML elements we use are the same as HTML In this section we ll broadly describe what the various elements are most of them should be familiar but there are a few new ones and a couple of important differences to others See the reference section for a full list and more detail Document Structure Every report is defined by a single PDF element which may contain an optional HEAD element and must contain the mandatory BODY eleme
97. ngs rather than their ancestors for example to set the vertical space for an H2 element when it s immediately preceded by an H1 element Another useful option is to match an element that isn t preceded by another element it s the first child of it s parent This is useful to set a default style for the first column of a table for example The following two examples show how to describe these situations iil ap IZ mergim coos Ooch ieGle iciwesie Elniilel coOme wedlelnic sioellels Two custom extensions which we support but CSS2 doesn t are the last child psuedo element and the previous sibling relation These are the opposite of the two rules shown above and can be matched like this H2 JRL marcgim oot coms Oeics ieclelasie Cliallel coOme welcinc slo llels Grouping When several identical attributes are to be set for different elements they may be grouped into a comma separated list The following two examples are identical lll TS T TE we Bile JalZi 2 Ha H TT TE T TE BA I EHH HS L ISS ER HOSE Language and Attribute selectors New in version 1 1 is the ability to select attributes based on the language of an element as defined by the lang attribute or based on other attributes The language selector is extremely useful when creating a document that will contain text in more than one language For example the following rules set the default font for different languages and the de
98. nt which contains the actual content of the report As PDF documents consist of multiple pages the contents of the BODY may be split into one or more pages a process known as pagination Pagination Generally speaking the Report Generator uses the following algorithm to place elements on the page 1 Take the first element in the BODY and try to fit it on the current page Z If it can t fit but it can be split in two split it at the end of the page and carry on 3 If it can t be split into two halves place it on the next page and carry on This process can be altered in one of three ways 55 66 e Using the page break before page break after and page break inside attributes to control breaks between elements e Within paragraphs the P PRE BLOCKQUOTE and H1 to H4 elements set the orphans and widows attributes to control the minimum number of lines that must remain at the end of a page the orphans and the minimum number that may be at the top of a new page the widows These both default to 2 e Using the PBR element to explicitly place page breaks The first method which is part of CSS2 allows authors to set various attributes on elements to either prevent or force pagebreaks For example the default setting for the H1 to H4 elements is that they are never immediately followed by a page break The stylesheet entry looks like this H1 H2 H3 H4 page break after avoid Only some elemen
99. nts e g setting lt tr border 1 gt only sets the top and bottom borders to 1 This is necessary to lay the table out correctly Here s an example lt table width 100 border 2 gt lt i gt lt td colspan 2 align center gt Countries and their foods lt td gt ZEE lt tr background color DO0ODO0ODO0 gt lt th gt Country lt th gt lt th gt Food lt th gt EEE S lt td gt Wales lt td gt lt td gt Leek lt td gt L S lt td gt Argentina lt td gt lt td gt Steak lt td gt EREE S lt td gt Denmark lt td gt lt td gt Herring lt td gt L lt table gt And here s what it looks like Countries and their foods Food Leek Steak Herring When migrating from HTML tables you need to remember that the border directive sets the border for the entire table rather than the border around each of it s cells To draw a border around every cell you can either set the border attribute for each of them or set the cellborder option for the table Likewise the HTML attribute cellspacing which set the margin for each cell has been renamed to cellmargin Pagination with tables headers and footers When a table is too long to fit on a page it may be broken into smaller tables that do fit this can be prevented by setting the page break inside attribute see Pagination for more detail A common requirement when this happens is to reprint a standard header or footer row
100. nts to Times and sets the background color for any elements with the class attribute set to example to yellow The CSS2 specification gives a great deal of control over the selector Here s a list of the different options Pattern Meaning Matches any element Matches any E element i e an element of type E Matches any F element that is a descendant of an E element Matches any F element that is a child of an element E IN Snes T EES Matches element E when E is the first child of its parent ast eha lid Matches element E when E is the last child of its parent custom extension of CSS2 Matches any F element immediately preceded by an element E Matches any F element immediately followed by an element E custom extension of CSS2 E warning Matches any E element with the class attribute equal to warning E myid Matches any E element with the id attribute equal to myid inh 6 Ibe vaney see Matches any E element where the lang attribute begins with fr including for example fr_CH lign right Matches any E element where the align attribute is set to the value right lign Matches any E element where the align attribute is set the actual value it is set to is irrelevant warning Matches any element with the class attribute equal to warning Page 11 of 76 Pattern Meaning myid Matches any element with the id attri
101. o lines are equivalent lt a href http bfo com gt go to website lt a gt lt span href http bfo com gt go to website lt span gt This opens up some possibilities not available in HTML for example a TABLE or PIEGRAPH element could be turned into a hyperlink simply by adding an href attribute Be warned that the PDF specification is quiet about what happens if two hyperlink areas overlap So what values can the href attribute take This tables lists the possibilities Example elementid elementid zoom fit http domain com playsound soundurl f show form element f hide form element fF reset Pe Submate uml mes hod javascript code pdf action Description Jump to the specified element in the report The elementid is the ID of the destination element Jump to the specified element in the report and zoom the page so that just that element is visible Any URL may be specified to jump to an external document This functionality requires a web browser to be installed and the exact form of the URL depends on the capabilities of that browser Play an audio sample from the specified URL The PDF specification can in theory handle Sun AU Macintosh AIFF and AIFF C and Windows RIFF WAV files although RIFF support seems to be slightly more capable in our tests This requires sound support from the PDF viewer application and may not work on all operating systems S
102. oiner NEW RFC 2070 zero width joiner NEW RFC 2070 left to right mark NEW RFC 2070 right to left mark NEW RFC 2070 en dash ISOpub em dash ISOpub left single quotation mark ISOnum right single quotation mark ISOnum single low 9 quotation mark NEW left double quotation mark ISOnum right double quotation mark ISOnum double low 9 quotation mark NEW dagger ISOpub double dagger ISOpub per mille sign ISOtech single left pointing angle quotation mark ISO proposed single right pointing angle quotation mark ISO proposed euro sign NEW trade mark sign ISOnum latin small f with hook function florin ISOtech greek capital letter alpha greek capital letter beta greek capital letter gamma ISOgrk3 Symbol CodePoint Description Delta U 0394 greek capital letter delta SOgrk3 Epsilon U 0395 greek capital letter epsilon Zere U 0396 greek capital letter zeta Eta U 0397 greek capital letter eta NaS Theta U 0398 greek capital letter theta ISOgrk3 Iota U 0399 greek capital letter iota Kappa U 039a greek capital letter kappa Lambda U 039b greek capital letter lambda ISOgrk3 U 039c greek capital letter mu Zz Zz gt e A U 039d greek capital letter nu U 039e greek capital letter xi ISOgrk3 LY U 039f greek capital letter omicron U 03a0 greek capital letter pi ISOgrk3 U 03al greek capital letter rho Sigma U 03a3 greek capital letter sigma ISOgrk3 Tau U 03a4 greek capital letter tau Upe ion U 03
103. om Page 50 of 76 Area Graphs The AREAGRAPH is very similar to the LINEGRAPH but is more appropriate for displaying cumulative data as the curves are stacked on top of each other Many of the AREAGRAPH attributes are described in the LINEGRAPH section above as they apply to both lt areagraph width 200 height 150 gt lt datacurve name Measurements gt lt sample x 1 y 0 5 gt lt sample x 2 y 0 9 gt lt sample x 3 y 1 3 gt lt sample x 4 y 1 2 gt lt sample x 5 y 1 7 gt lt sample x 6 y 2 gt lt sample x 7 y 1 8 gt lt datacurve gt lt simplecurve name Predicted method java lang Math log gt H Measurements lt areagraph gt Predicted As you can see both DATACURVE and SIMPLECURVE can be mixed on the same graph Noticable on the DATACURVE though are the black lines dividing the curve into segments and showing where the sample values are These may not always be desirable and can be removed by setting draw segments attribute to false The other difference between this and the LINEGRAPH is that the data values at each point are added together This is the result of the cumulative attribute which defaults to true Occasionally you may be working with pre accumulated values in which case setting this attribute to false turns off this behaviour Plotting Dates Both the LINEGRAPH and AREAGRAPH support plotting dates on the X
104. on prefix followed by the name of a text attribute for Page 43 of 76 example xaxis font family and xaxis color set the style of the values printed on the X axis in the same way that font family and color set the style of normal text in the document Valid suffixes are color the color of the text font family the font family of the text font style the font style of the text normal or italic font weight the font weight of the text normal or bold font size the font size of the text in points align the horizontal alignment of the text left center or right valign the vertical alignment of the text top middle or bottom O O O O O O O 0 rotate the angle to rotate the text in degrees clockwise With these definitions out of the way we can list several attributes which are common to all graphs plotted on an axis Attribute Value Description style The xaxis group of attributes set the style to display the values plotted on the X axis e g xaxis color or xaxis font family The default is black 7pt Helvetica style The yaxis group of attributes set the style to display the values plotted on the Y axis e g yaxis color or yaxis font family The default is black 7pt Helvetica xaxi s formatter formatter The formatter to use to display the values on the X axis See below for m
105. ore on formatters yaxis formatter formatter The formatter to use to display the values on the Y axis See below for more on formatters xaxis formatter density normal The density of the X axis formatter See below for more on formatters S SE minimal yaxis formatter density normal The density of the Y axis formatter See below for more on formatters sparse minimal xaxis label style The xaxis label group of attributes set the style to display the label given to the X axis e g xaxis label color or xaxis label font family The default is black 10pt Helvetica yaxis label style The yaxis label group of attributes set the style to display the label given to the Y axis e g yaxis label color or yaxis label font family The default is black 10pt Helvetica Ploor color Set the color to draw the floor of the graph The floor is the plane where y 0 or where y min y for most graphs this is where y min y but for line graphs this depends on the value of the xaxis at zero attribute Defaults to none Ilgor border color Set the color to draw the grid on the floor of the graph Defaults to none Oor grid Set which lines to draw on the grid on the floor of the graph Valid values are horizontal vertical or a combination of the two e g horizontal vertical the default Page 44 of 76 Attribute ywall color l border color Tal
106. page by using a pagen entry in a stylesheet e header to set the header of the page e footer to set the footer of the page e background macro to set the background of the page A macro is defined in the HEAD of the document inside a MACROLIST Each macro must have an ID which is how it s referenced later in the document Here s an example which sets a standard footer on each page lt pdf gt lt head gt lt macrolist gt lt macro id myfooter gt lt p align center gt Page lt pagenumber gt of lt totalpages gt lt p gt lt macro gt lt macrolist gt lt head gt lt body footer myfooter footer height 20mm gt Document contents here lt body gt lt pdf gt Page 16 of 76 The footer attribute is the ID of the macro and the footer height attribute is the height required for the footer If the document contents require several pages the footer will be placed on each one unless there is a PBR element which changes the footer or removes it by setting footer none The header attribute can be used the same way to set a header at the top of each page The background macro element allows more control than the background image and background color attributes A classic example is placing a watermark on each page Rather than use a bitmap image and set background image the background macro allows you to add custom XML to each page The watermark can cover
107. r discussion to showing you how to embed JavaScript code into your report Like HTML we use the SCRIPT tag in the HEAD of the document to embed JavaScript However due to JavaScript code commonly containing the lt and gt characters we recommend embedding it inside a CData block like so lt pdf gt lt head gt lt script gt lt CDATA function dumpForm var s s Your name is this getField name valuet n Ss r vom Connery LS Vieme cecrieilel Weores valee Vin g r Wow sex ays UVShel G RT sex walllinecr na app alert s 11 gt lt script gt lt head gt Then to call this function simply create a link or button that runs the action javascript dumpForm Click here to see what we mean Two actions we haven t demonstrated yet are the pdf show and pdf hide actions These can only be used with form fields and although not terribly useful they re interesting enough to demonstrate here Roll your mouse over this link and keep an eye on the address box on the previous page This example is useful because it demonstrates an event handler We ve seen one example of these already the onClick attribute on the submit button in the previous example In fact there are several to choose from but although the onMouseOver Page 58 of 76 onMouseOut and onClick handlers can be used with any element in the same way as the
108. rence ISOtech U 2208 element of ISOtech Saio M U 2209 not an element of ISOtech m notin U 220b contains as member ISOtech w U 220f n ary product product sign ISOamsb eal U 2211 n ary sumation ISOamsb minus U 2212 minus sign ISOtech lowast U 2217 asterisk operator ISOtech Ladue U 22la square root radical sign ISOtech prop U 221d proportional to SOtech SES U 221e infinity ISOtech ang U 2220 angle ISOamso and U22227 logical and wedge ISOtech ole U 2228 logical or vee ISOtech cap U 2229 intersection cap ISOtech cup U 222a union cup ISOtech int U 222b integral ISOtech there4 da U 2234 therefore SOtech sim U 223c tilde operator varies with similar to SOtech U 2245 approximately equal to ISOtech U 2248 almost equal to asymptotic to ISOamsr U 2260 not equal to ISOtech U 2261 identical to ISOtech U 2264 less than or equal to ISOtech U 2265 greater than or equal to ISOtech Symbol CodePoint Description sub U 2282 subset of ISOtech sup U 2283 superset of ISOtech nsub U 2284 not a subset of ISOamsn sube U 2286 subset of or equal to ISOtech supe U 2287 superset of or equal to ISOtech oplus U 2295 circled plus direct sum ISOamsb otimes Wa 2297 circled times vector product ISOamsb perp U 22a5 up tack orthogonal to perpendicular ISOtech sdot W225 dot operator SOamsb lceil U 2308 left ceiling apl upstile ISOamsc reeil U 2309 right ceiling ISOamsc HEG U
109. restarted an XML document will be automatically converted to PDF before it is returned to the browser For example to convert the file pdf HelloWorld xml to a PDF and view it in the browser simply load the URL http yourdomain com pdf HelloWorld xml Only files with a mime type of text xml will be processed so images and other non xml files in this path will be returned unaltered See the API documentation for more detailed information If the XML file is being returned directly to the browser rather than being converted to PDF this is probably caused by the mime type not being set correctly For dynamic XML documents like those created from JSP or CGI the mime type must be explicitly set by the document author For static files the xml extension must be mapped to the text xml mimetype this is done by adding the following block to your web xm1 file lt mime mapping gt lt extension gt xml lt extension gt lt mime type gt text xml lt mime type gt lt mime mapping gt Creating PDFs using the Proxy Servlet The other option when displaying dynamic PDFs from a Servlet is to use the Proxy Servlet As the name suggests this is a servlet which relays HTTP requests from a browser reads the response and converts it to a PDF before sending it back to the browser Page 4 of 76 Although the filter method described previously is much simpler to install and use the proxy servlet has a couple of advantages e Can be use
110. rious different settings in combination Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text More more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more More more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more more lt p border 1 font size 12pt padding 4 gt lt div float right clear right width 40 height 40 background color es lt div float right clear right width 40 height 40 background color OS lt div float right clear none width 40 height 40 background color w e mezt S EEIE EEEo lt div float left clear none width 40 height 40 background color pink gt lt div float left clear none width 40 height 40 back
111. s font family font style and font weight do for normal text Also of note are the marker prefix and marker suffix attributes which can be used to display a literal immediately before or after the marker Here are some examples 1 Item 1 S Item 1 i Item 1 2 Item2 Item 2 ii Item 2 3 Item3 E Item 3 ui Item3 marker type decimal marker type lower alpha marker type lower roman marker prefix marker suffix X Item 1 Item 1 X Item 2 Item 2 X Item 3 Item 3 marker type amp x2717 marker type circled number marker suffix marker font family ZapfDingbats marker font family ZapfDingbats Page 35 of 76 A useful feature which is missing in HTML is the ability to create hierarchical lists This is most easily demonstrated marker type upper alpha marker hierarchy true gt 1i gt Item 1 lt li gt aL T Te E HT A Item 1 lEt 2oi lt ili gt B i Item 2 1 lt liSitcem 2 2 lt li gt Bii Item 2 2 lt ul gt C Item3 lt a gt KlisSticem 3 lt ili gt is As you can see the marker hierarchy attribute allows nested lists to refer to the value of the parent list The value specified by the marker hierarchy separator attribute is the literal if any to place between the nested elements performing a similar job to marker 6699 prefix and marker suffix It defaults to The final setting relating to l
112. s method allows only a portion of that rectangle to be seen These elements can also be used to draw diagrams often by setting the position attribute to absolute Here s an example lt sicyle gt HOC Ging position scl solutes vidta T TT LT lt style gt lt div class pic width 150 height 150 gt lt div background color red gt lt div left 75 background color green gt lt div top 75 background color yellow gt lt div left 75 top 75 background color cyan gt lt ellipse width 150 height 150 border 2 gt lt div gt Ellipses The ELLIPSE element takes the same attributes as a DIV a width and height to specify the width and height of the ellipse Circles The CIRCLE element is an alternative to the ELLIPSE Instead of specifying the width and height the mandatory radius attribute must be set to the radius of the circle Unlike the ellipse the left and top attributes specify the location for the center of the circle not the top left corner of the rectangle containing it This can be confusing when the circle is relatively positioned as it will appear to be misplaced in this case the left and top attributes need to be set to the same value as the radius or the ELLIPSE element used instead Page 39 of 76 Shapes The SHAPE element allows a custom shape to be defined by a drawing lines arcs and bezier curves This shape m
113. several standard sizes which can be used to set pages in the document to a standard paper size so lt body size A4 gt is identical to lt body width 210mm height 297mm gt Here s the list of known sizes every one of these can have the suffix landscape appended to rotate the page size by 90 degrees e g Letter landscape ISO B series ISO C series 31mm x 44mm C10 28mm x 40mm ISO A series A10 26mm x 37mm A9 A8 A7 A6 AS A4 A3 A2 37mm x 52mm 52mm x 74mm 74mm x 105mm 105mm x 148mm 148mm x 210mm 210mm x 297mm 297mm x 420mm 420mm x 594mm 44mm x 62mm 62mm x 88mm 88mm x 125mm 125mm x 176mm 176mm x 250mm 250mm x 353mm 353mm x 500mm 500mm x 707mm C9 C8 C7 C6 c5 C4 C3 c2 40mm x 57mm 57mm x 81mm 81mm x 114mm 114mm x 162mm 162mm x 229mm 229mm x 324mm 324mm x 458mm 458mm x 648mm Al 594mm x 841mm 707mm x 1000mm Cl 648mm x 917mm AO 841mm x 1189mm 1000mm x 1414mm CU 917mm x 1297mm Che secs 4A0 1682mm x 2378mm Letter 8 5in x 11in ID 2 107mm x 74mm 2A0 1189mm x 1682mm Common envelopes Legal 8 5in x 14in ID 3 125mm x 88mm D1 110mm x 220mm Executive 7 5in x 10in OHP A 250mm x 250mm OHP B 285mm x 285mm E4 280mm x 400mm Ledger llin x 17in Page 18 of 76 The Document Head The HEAD element of the report contains information about the report There are five different options that can be specified inside the HEAD e Macros described above using the MACROLIST and MACR
114. t Description latin capital letter U with diaeresis ISOlat1 Uuml MacuiEe THORN SS agrave aacute agi nec atilde auml aring aelig ccedil egrave eacuce ecirc cumi igrave iacute SL iuml eth ntilde ograve ocacute GT otilde ouml divide Ostasin ugrave BIZ Ucire uuml U 00dc U 00dd U 00de U 00df U 00e0 U 00e1 U 00e2 U 00e3 U 00e4 U 00e5 U 00e6 U 00e7 U 00e8 U 00e9 U 00ea U 00eb U 00ec U 00ed U 00ee U 00ef U 00f0 U 00f1 U 00f2 U 00f3 U 00f4 U 0085 U 00f6 U 00f7 U 00f8 U 00f9 U 00fa U 00fb U 00fc latin capital letter Y with acute ISOlat1 latin capital letter THORN ISOlat1 latin small letter sharp s ess zed ISOlat1 latin small letter a with grave latin small letter a grave ISOlat1 latin small letter a with acute ISOlat1 latin small letter a with circumflex SOlat1 latin small letter a with tilde ISOlat1 latin small letter a with diaeresis ISOlat1 latin small letter a with ring above latin small letter a ring SOlat1 latin small letter ae latin small ligature ae ISOlat1 latin small letter c with cedilla ISOlat1 latin small letter e with grave ISOlat1 latin small letter e with acute ISOlat1 latin small letter e with circumflex SOlat1 latin small letter e with diaeresis ISOlat1 latin small letter i with grave ISOlat1 latin small letter i with acute ISOlat1 latin small letter i with circumflex SOlat1 latin small letter i with diaeresis ISOlat1 latin small letter et
115. t shapepath gt lt moveto x 50 y 0 gt lt lineto x 100 y 50 gt lt lineto x 50 y 100 gt lt lineto x 0 y 50 gt lt lineto x 50 y 0 gt lt shapepath gt lt shape gt If you then wanted to place some text inside this diamond clipped to it s edges you could do this lt shape width 100 height 100 overflow hidden gt lt shapepath gt lt moveto x 50 y 0 gt lt lineto x 100 y 50 gt lt lineto x 50 y 100 gt lt lineto x 0 5 y 50 gt lt lineto x 50 y 0 gt lt shapepath gt lt p gt This text will be clipped at the edge of the diamond lt p gt lt shape gt Page 40 of 76 Graphs The ability to plot inline graphs is a key feature of the Report Generator The usual method of including graphical information creating the graph as a bitmap using a separate package then including it as an image has the disadvantages of increasing the size of the document and giving poor results especially when compared to a vector based language like PDF With the Big Faceless Report Generator graphs can be created using the same methods you would normally use to create a dynamic table for example with a JSP or similar The graphs are built using our Graph Library which uses a 3D engine to create fully shaded realistic graphs So how do you create a graph Here s a simple Pie Graph to get you started lt piegraph width 200 height
116. ted red border above the DIV tag and a thick solid black one below it Drawing the Background Both the content and the padding of a box can optionally be drawn over a background This can either be a color by setting the background color attribute or a bitmap image as set by the background image attribute The background image can be drawn in one of several positions as set by the background position attribute By default this is set to stretch which means the image is drawn once and stretched to fit the box Other options are repeat where the image is tiled repeatedly to fill the box or any combination of top middle bottom left center or right to draw the image once PDF is not as efficient as HTML at rendering background images so the repeat setting should be used with care as it can result in long delays for those viewing the document Unlike HTML PDF images don t have a fixed size Instead the size of the bitmap image on the page depends on the dots per inch or DPI of the image For background images this can be set using the background image dpi or background image width and background image height attributes These have the same function for background images as the image dpi width and height attributes do for normal images see the section on Images for more information Page 22 of 76 Here are some examples showing
117. the effects of the different settings FO background image position stretch background image position epeat background image position center middle Building on an existing PDF A feature of the Extended Edition of the Report Generator is the ability to use a page from an existing PDF document as a background in the same was as you could use a background image or a background color This is done using the background pdf attribute which can be set to the URL of a PDF to include Here s an example lt P vers on SIMONS Se TEE pdt PUBLIC gt big tacellesis org repore report i 1 dredl gt lt pdf gt lt body background pdf original pdf 2 font size 18 gt Hello World lt body gt lt pdft gt This simple example would create a single page document with the words Hello World placed on top of the second page of the original pdf document The pagenumber is specified by the 2 in the URL it can be left out in which case the page that s used will be the same page as that in the current document the first page is overlaid on page 1 the second is overlaid on page 2 and so on When the source document is out of pages it starts again at the beginning A useful example of this is a multi page invoice Imagine you want to create an invoice which will run over several pages The first page has the company logo and space for an address whereas the remaining pages
118. the report keywords a list of keywords Set the keywords for the report output profile the name of an output This can be set to cause the PDF to be written according to the rules of profile a specific output profile For more detail see the org faceless pdf2 OutputProfile class Valid values are currently Default NoCompression Acrobat4 Acrobat5 PDF X 1a PDF X 3 No ICC and PDF X 3 ICC password a password The password to encrypt the report with servlet filenam a filename For Proxy Servlet and Filter use only Set the PDF to be saved rather than viewed directly by the browser and set the name to give the PDF document when it s saved This functionality may cause problems with some browsers see the Filter API documentation for more information servlet cache period of time For Proxy Servlet only Set the length of time the generated PDF is to be cached by the Proxy Servlet See the Proxy Servlet API documentation for more information Page 19 of 76 access level print none print lowres print highres extract none extract accessibility extract all change none change Description What permissions to give the application viewing the document One of each of the print extract and change values should be specified in a string seperated with spaces So for example lt meta name access level value print all change none extract none gt would
119. the whole page including the header and footer if they re specified but excluding any page margin or padding Here s an example which places the word Confidential on each page in light gray lt pdf gt lt head gt lt sicwle gt watermarkbody font size 80 font Helvetica color FOFOFO lt style gt lt macrolist gt lt macro id watermark gt lt p id watermarkbody rotate 30 valign middle align center gt Confidential S lt macro gt lt macrolist gt lt head gt lt body background macro watermark gt Document contents here lt body gt lt pdf gt Displaying the Page number The current page number and the total number of pages in the document can be displayed in the document by means of two special elements PAGENUMBER and TOTALPAGES These can be used inside a text paragraph the footers example above shows how they are used The current page number generally starts at one and increases by one for each page but can be set specifically by using the pagenumber attribute This can be set on a BODY or PBR element to set the page number of the next page As well as just printing the current page number the PAGENUMBER element can be used to print the page number of other elements in the document This comes into it s own when creating a table of contents Every item in the table of contents has an id tag for example the header at the start of this paragraph has it
120. ts may be split and placed on multiple pages if they don t fit currently the TABLE UL OL and all the paragraph elements listed above To prevent one of these elements being split set the page break inside attribute to avoid The third method uses the PBR element to split pages This is especially useful when you want to change the format of the document as the page dimensions for the new page and for all following pages can be set explicitly Page 15 of 76 For example lets say you want your report to have a cover page on A4 with a yellow background the bulk of the report on normal A4 but also a special section at the end to be printed on landscape Here s how to do it lt pdf gt lt body size A4 background color yellow gt COMmcemics Oi wKroOmic Jage IMmece lt pbr background color white gt Bulk of report here lt pbr size A4 landscape gt Landscape section here lt body gt lt pdf gt As well as setting page formats and colors this method can also be used to set page margins and macros for setting headers and footers Headers Footers and Macros To display headers and footers on the page the Report Generator introduces the concept of a macro a block of XML which can be repeated multiple times throughout the document There are three different types of macro attribute which can be used either on the BODY or PBR elemnts to set a macro for every page or for a specific
121. ty different We don t use this method for inserting quotes around text or numbers before lists The way we do it is shown in the lists xml example eel We don t use the page rule 3 2 3 We don t do the crop marks S The page break attributes are only recognised on elements that are the direct child of the BODY element the exception to this is the TR tag which recognises it when these attributes is set to join All elements other than P PRE H1 H4 BLOCKQUOTE and TABLE have the page break inside attribute set to avoid 3 3 2 Named pages are not used 2 4 font size adjust is ignored 2 1 background attachment doesn t apply to PDF We use a much simpler method for selecting fonts you either embed it or you don t overline and blink are not valid text decorations text shadow is ignored word spacing isn t used see justification ratio though The collapsing border model is not supported and borders are always drawn around empty cells User interface doesn t apply to PDF Aural style sheets doesn t apply to PDF MO 0 0 Gw Gn Gn Ln A Ln Gn Ln amp W LU Page 65 of 76 Reference Section Page 66 of 76 Named Colors The following named colors can be used in the Report Generator Their equivalent RGB values are listed below white whitesmoke ghostwhite snow gainsboro FFFFFF F5F5F5 F8F8FF FFFAFA DCDCDC lavender aliceblue lavenderblush seashell lightcyan E6E6FA FOF8FF FFFOF5 FFF5EE EQOFFFF azure floralwhite old
122. ument and if it was requested via an HTTPS URL these links will themselves be HTTPS in practice even documents with no relative links were causing problems as the SAX parsing routines require a base URL regardless In version 1 1 we added a couple of ways to workaround this issue The first is all done behind the scenes If a PDF is requested via HTTPS but the webserver can t handle outgoing HTTPS requests the base URL of the document is internally downgraded to HTTP This isn t a security risk because any requests to relative URLs for images stylesheets and so on are all made from the server to the server ie the requests are made to localhost The completed PDF is still sent back to the browser over a secure link If you don t like this or for some reason it won t work for example because your webserver only handles HTTPS and not HTTP there are a couple of other options First you can install the JSSE package and register the HTTPS protocol handler this was the only option for earlier versions of the Report Generator This can be done either by upgrading to Java 1 4 which includes JSSE1 0 3 or by Page 6 of 76 installing it separately The broad details on how to do this are on the JSSE website at http java sun com products jsse install html you can probably find specific instructions for your webserver through your normal support channels Please remember this problem is not specific to the report generator but appl
123. ymbol would mean that text will be displayed in the Times Roman font if the character is available otherwise the Symbol font will be used This makes it easy to mix text from different fonts eg abcay font style normal italic outline Set the style of the font face italic outline or a combination e g italic outline font weight normal or bold Set the weight of the font Only two weights are recognized normal and bold font size size of the font Set the size of the font Can be absolute e g 12pt or relative e g 1 5em where lem is the current size of the font Other valid values as defined in CSS2 are larger and smaller 55 66 as well as xx small x small small medium large x 298 166 large and xx large medium is equivalent to 1 Ipt font variant normal small caps Set the font variant either normal the default or small caps The small caps font is synthesized so no explicit small caps font is required THIS TRANSFORMATION IS QUITE TIME CONSUMING SO AVOID USING IT FOR LONG PHRASES font stretch normal ultra condensed Set the horizontal stretching of the font Note this attribute is not extra condensed condensed typographically correct in that it simply stretches the text rather semi condensed semi than choosing a variant of the typeface This will result in wider or expanded expanded extra narrower

Download Pdf Manuals

image

Related Search

Related Contents

Urgosorb® compresses  安全のために必ずお守りください    インフィニティDIGIスポーツ 取扱説明書 この度は、OPTION No.1 製品を  Evolution UK User Manual      fujitsu lifebook u904    PhastSystem - Bascom Palmer Eye Institute  

Copyright © All rights reserved.
Failed to retrieve file