Home
        RML User Guide
         Contents
1.                                                                                    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123     Text 123      Text 123    Text 123                 Text 123    Text 123    Text 123    Text 123    Text 123    Text 123      Text 123    Text 123      Text 123      Text 123      Text 123    Document generated on 2014 09 25 13 10 59    darkred  darksalmon  darkseagreen  darkslateblue  darkslategray  darkturquoise  darkviolet  deeppink  deepskyblue  dimgray  dodgerblue  firebrick  floralwhite  forestgreen  fuchsia  gainsboro  ghostwhite  gold  goldenrod  gray   grey  same as              green  greenyellow  honeydew  hotpink  indianred  indigo   ivory   khaki  lavender  lavenderblush  lawngreen  lemonchiffon  lightblue    Page 109    Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex           x8B0000      9967    x8FBC8B  x483D8B  x2F4F4F       x00CFED1  x9400D3        1493       xOOBFFF  x696969  xlE90FF  xB22222  xFFFAFO  x228B22  xFFOOFF       xDCDCDC          xF8F8FF       xFFD700          520  x808080  x808080  x008000  xADFF2F                xFOFFFO  xFF69B4  xCD5C5C  x4B0082       xFFFFFO  xFOE68C                  xFFFOF5              00       xFFFACD  xADD8E6          RML User Guide    THES os FILE          
2.                                                                 17  4 1                           a     dele Maradona dab Tale      17  42  Fill and          eter Cuotas          iata ae ef S S        20  4 3s Linesand meMod   sranna ee ot o Et iacet 21  5  Graphics vs HIG Wal les dieere cueste vete Reis A ua SG               aep ded unen              28  6  More about pages and page structures                                                                            29  6 1  More about template and                          29  6 2  Frame and                 co    pp e me UU eam ud 30  6 3  condPageBreak  conditional page                             30  6 4  storyPlace  out of band                 30  6 5  pto  Please Turn Over              3l  6 6  keepInFrame fixed space control    esiti                                3l  6 7  imageAndFlowables tag                         ROI         32  6 8  More about stylesheets        lastiku seek      32                                         35                                                                                                   A      35  edo Headinge    hl h2  h3                a oh                                                               35  7 3  Paragraphs and paragraph                      92                                         36    RML User Guide Document generated on 2014 09 25 13 10 59    7 5  Superscripts and subscripts                                                       36  TOs Pista m sua DP 37  7 
3.                       ee             ruam Fh Cuir    asas  eters rime                              ram  asas            FR  E      Mas            ps  iri ihn        iiai                   amam baie   HBA             Mass        ee         High        paan                                     bizh tas                                    mm                      Mah PAGE LOU                                        inima EEE ren                         peel  BP ce ge      pi epi         F   HSS        Cours         pola      pam  kama cnin           em kanaman          rins bizh  i   Bir                   an irure iue              HA        Pas gh EU Ras ays        as  iar ids          nins be dep        binh       F            ran ae  Dan             Jue         Hs Ua EE Pe pg         lah blah blah blah blah uppercase blah blah right justified  h blab blah flush right blah blah blah  Blah blah blah blah  lah blah spot colour blah Em        Figure 8  Output from EXAMPLE 5    Page 43    RML User Guide Document generated on 2014 09 25 13 10 59    RML supports all of Adobe s Asian Font Packs  You can display text in Japanese  Traditional and Simplified  Chinese and Korean using two different techniques     The most robust technique is to include the standard Asian fonts Adobe specifies for use with Acrobat Reader   These will already be installed on the end user s machine if they have a localized copy of Acrobat Reader  or  may be downloaded in the free  Asian Font Packs  from Adobe s 
4.          atemplate  m astylesheet    astory    The template tells rml2pdf what should be on the page  headers  footers  any graphic elements you use as     background     The stylesheet is where the styles for a document are set  This tells the parser what fonts to use for paragraphs  and paragraph headers  how to format tables and other things of that nature     The story is where the  meat  of the document is  Just like in a newspaper  the story is the bit you want people  to read  as opposed to design elements or page markup  As such  this is where headers  paragraphs and the  actual text is contained      his is the  story   This is the part a   the         document where ycar text is placed   It should be enclosed in    para    and   para  tags  0             indo paragraphs        Figure 2  Output from EXAMPLE 2    EXAMPLE 2      IDOCTYPE document SYSTEM  rml dtd         document filename  example 2 pdf         template     lt pageTemplate id  main  gt     frame id  first  x1  72  yl  72  width  451  height  698   gt      pageTemplate     lt  template gt      lt stylesheet gt      lt  stylesheet gt      lt     The story starts below this comment    gt        Page 13            User Guide Document generated on 2014 09 25 13 10 59     lt story gt     lt para gt   This is the  story   This is the part of the RML document where  your text is placed     lt  para gt     lt para gt   1  should be enclosed in            and             tags to turn it into  paragraphs      lt  
5.        10 4  Translations    In a graphic operation  i e     pageGraphic oranillustration     translate   moves the origin of  the drawing       translate   takes two optional attributes  dx and dy  Both can be given in any unit that RML understands   dx is the distance that the to be moved in the X axis  and dy is the distance it is to be moved in the Y axis   They are optional to allow you to only give one of the pair   so moving the origin in only one direction     Examples       translate dx  55  dy  91   gt       translate dx  lin          translate dy  6 5cm   gt        This is what a translation with a dx of 50 anda dy of 50 looks like     Page 70            User Guide Document generated on 2014 09 25 13 10 59    50 pt    50 pt  Original dx 50 dy 50    Figure 13  An example of the  lt translate gt  tag in use    And this is slightly simplified version of the relevant bit of RML      lt illustration gt    lt lines gt    6 40 116 40   6 40 16 140    56 40 256 40   56 40 156 140    lt  lines gt      setFont name  Times Roman  size  12   gt     fill color  black         drawCentredString x  58  y  12  gt Original lt  drawCentredString gt         lt setFont name  Helvetica Bold  size  50   gt    lt fill color  red   gt      drawString x  16  y  41  gt X lt  drawString gt     translate dx  142          setFont name  Times Roman  size  8   gt     fill color  lightgray       lt drawCentredString x  58  y  18  gt 50 pt lt  drawCentredString gt      lt setFont name  Times Roman 
6.      The level specifies how deep in the outline the entry appears  The default level is 0   closed  if set  hides any children of this outline entry by default  Closed takes Boolean arguments     Example      lt outlineAdd gt First outline entry lt  outlineAdd gt      lt outlineAdd level  1  gt sub entry lt  outlineAdd gt      lt outlineAdd closed  true  gt Second outline entry 2 lt  outlineAdd gt      lt outlineAdd level  1  gt sub entry 2 lt  outlineAdd gt        A note about levels  in order to add a level 3 outline entry  the previous outline entry must be at least level 2   2 3 4      In other words  you can  move back  any number of levels  but you can only  move forward  one  level at a time     8 10  Form field tags    An important class of reports contains lots of fields to be traditionally filled in manually by users  like for  application forms and similar cases  Sometimes though  these fields are already filled in by some computational  process and the user might only need to sign the entire form before leaving it with a bank clerk or sending it off  to some destination  RML supports creating both kind of reports by providing a set of special purpose tags to  create such form elements  or fields  widgets     quite easily  These tags are named  lt checkBox gt    lt textBox gt  and  lt letterBoxes gt  and are described in the rest of this section     All these form elements share a lot of features when it comes to what they look like in the document  They all  appe
7.      width  5cm     height  3cm   round  1 2cm   fill  true     Stroke  false     xS  1in 2     3in                            7 028     21              Ain    Page 135    Document generated on 2014 09 25 13 10 59    measurement required  measurement required  measurement required  truth value   truth value   measurement required  measurement required  measurement required  measurement required  measurement   truth value   truth value   measurements required  measurements required    quadruples of  measurements  representing  line segments            User Guide  curves   lt curves gt   lin lin 235 Zim 21   3in lin       lin 2in 2in 3in 2in 4in lin 4in  lin        2in 4in 2in        lin          lt  curves gt   image   lt image  file  cute jpg   x  lin   y   Tin   width  5cm   height  3cm     gt   place   lt place      1       y   Tin   width  5in   height  3in    gt    lt para gt     lt  para gt    lt illustration gt     lt  illustration gt    lt  place gt   doForm   lt doForm  name  logo     gt              136    Document generated      2014 09 25 13 10 59    string   measurement  measurement  measurement  measurement    measurement  measurement  measurement  measurement    string    octtuples of  measurements  representing  Bezier curves    required  required  required    required  required  required  required     Sequence of    top level  flowables     required    RML User Guide    includePdfPages     lt includePdfPages    filename  path     pages  1 3  6        template 
8.     The   image   tag goes in       lt pageGraphics gt  section at the head of your RML document  It has 5  attributes  3 of which are mandatory and two of which are optional  The file attribute tells rml2pdf the name  of the input file that you want to incorporate into your document  the x and    attributes give the co ordinates  for the bottom left hand corner of where the image will be placed on the page  The optional width and  height attributes allow you to specify how big it should be on the page   this means that you can over ride the  normal size of the file and display it at any size that is appropriate   The x  y  width and height attributes  can all be gives in points  mm  cm or inches      Be very careful when using the width and height attributes  If misused  these attributes can lead to you  having a distorted  ugly and out of proportion picture in your final document  Whenever possible  you should  use a paint application  e g  Paintshop Pro  Photoshop  Graphics Converter  GIMP  to save the file at the correct  size  and use the correct height and width attributes to the  lt image gt  tag  Using larger files and re sizing  inside RML will also lead to the output PDF file being bloated and larger than it needs to be     This example shows how these tags look in action      lt pageGraphics gt     image file  myFile gif      72  y  72   gt     image file  myFile gif  x  369  y  72  width  80  height  80   gt     image file  myFile2 jpg  x  72  y  493   gt    lt im
9.     To set the font that you want a piece of text to be  you need to use the  lt setFont gt  tag  This has two  arguments which are required   you need to give it the name of the font  and the size you want it displayed  at     A setFont tag looks like this        To use all the drawString commands  you need to use a tag called  lt pageGraphics gt   This tag appears at  the start of a RML document  in the pageTemplate section  pageGraphics are the graphics that have to  do with a whole page  rather than just individual illustrations  as we will see later   pageGraphics can be  used to provide a background to a page  to place captions or other textual information on a page  or to provide  logos or other colorful elements  Whatever you use them for  they are always anchored to a spot on the page    they do not wrap or flow with any text you might put into paragraphs     Page 17    RML User Guide Document generated on 2014 09 25 13 10 59    4  Basic figures   lines and shapes    4 1  Rect  circle and ellipse    As well as allowing you to place text on the page  pageGraphics also allows you to place shapes and  graphics on it     The basic types of shape that RML allows you to use are   rect  rectangle   circle  and ellipse        rect needs to have a list of attributes passed to it     the co ordinates for the bottom left hand corner    its width and height     It also has optional   111 and stroke attributes  anda round attribute  which tell it if the corners should  be rounded
10.     i s mai 80  IBID PE 80         CHOSE MOUS                             Sal sa      dat EE cesa      80                  a      onda kaa la a makana    a pest d pM                 81  IH S ARG Perens      81     83         MOERS                                                         qa 83  TNS                                   aha qutuwa q                        83  12 9 2 C MEI COL OT Sasa Ne ae he e M Dr        uy an E 84  12 4  Images in CMYK              Saas bss IAs ERR ROS 85  12 5  Overprint and knockout control                            dann      aaa  85  12 6            s duoi tactics bt                                  u as 86  I2 T  PAST OH                                                 toc a 87  12 8                                                                         87  Part III   Tables 98  13 Usim  tables                           u CQ EON SSL        88  I3 Block TAD                                    88  13 2  Block table attrib  te s tte        ea esc              HO          89  13 3  BoC table Styles d cbr e emo es eed waa em edad etat mbi      90  13 4  More about block tables                                    it                 91  13 5  Using block table styles                               oe eee eT      anes 91  Appendix A   Colors recognized      RMLI                                                                           107  Appendix      Glossary of terms and abbreviations                                                            112  
11.     lt  para gt      lt illustration gt     lt  illustration gt      lt  story gt     pagelnfo      pageInfo  pageSize   8 5in llin     gt     pageDrawing   lt pageDrawing gt      lt drawString             drawString       lt place   gt     lt    1       gt      lt  pageDrawing gt     pageGraphics     lt pageGraphics gt      lt drawString     gt      lt  drawString gt      lt place gt     lt  place gt      lt  pageGraphics gt        pair of lengths    Page 119    optional   any number  of styles      Sequence of  top level  flowables     required     Sequence of  graphical  operations      Sequence of  graphical  operations     RML User Guide    Document generated on 2014 09 25 13 10 59    Generic Flowables  Story Elements     Spacer   lt spacer  length  1 2in                         gt   illustration   lt illustration  height  1 2in   width  5in    gt    lt drawString     gt      lt  drawString gt    lt place   gt     lt    1       gt    lt  illustration gt   pre   lt pre  style  myfavoritestyle    gt     Preformatted Text     lt  pre gt     xpre     lt xpre   style  myfavoritestyle    gt   Paragraph text which may contain     lt  xpre gt     Page 120    measurement required  measurement   measurement required  measurement required     Sequence of  graphical  operations     string paragraph style name    also string forms  getname     string paragraph style name    intraparagraph markup    RML User Guide    pluginFlowable      plugInFlowable  module  mymodule   function  myf
12.    lt tr gt  lt td gt topPadding lt  td gt  lt td topPadding  10  gt 10 lt  td gt  lt  tr gt    lt tr gt  lt td gt topPadding lt  td gt  lt td topPadding  24  gt 24 lt  td gt  lt  tr gt    lt tr gt  lt td gt bottomPadding lt  td gt  lt td bottomPadding  10  gt 10 lt  td gt  lt  tr gt    lt tr gt  lt td gt bottomPadding lt  td gt  lt td bottomPadding  24  gt 24 lt  td gt  lt  tr gt    lt tr gt  lt td gt background lt  td gt  lt td background  pink  gt pink lt  td gt  lt  tr gt            lt tr gt  lt td gt background lt  td gt  lt td background  lightblue  gt lightblue lt  td gt  lt  tr gt     tr    td  align   td    td align  left  gt left lt  td gt  lt  tr gt    lt tr gt  lt td gt align lt  td gt  lt td align  center  gt center lt  td gt  lt  tr gt   Str gt ctd elign lt  tde lt td align  right e righe bd             lt tr gt  lt td gt     vAlign     lt  td gt  lt td vAlign  top  gt top lt  td gt  lt  tr gt        vAlign      td    td vAlign  middle  gt middle lt  td gt  lt  tr gt                          vAlign      td    td vAlign  bottom  gt bottom lt  td gt  lt  tr gt    lt  blockTable gt              produces    fontSize    fontSize  red    fontColor    fontColor       Page 97    RML User Guide    leading    leftPadding  leftPadding  rightPadding  rightPadding  topPadding    topPadding    bottomPadding    bottomPadding    background  background  align  align    align    vAlign    vAlign       Document generated on 2014 09 25 13 10 59    leading  is  16    leading    Figu
13.    m preppyDictionary ifsetto a dictionary indicates that      xm1InputText should be  preprocessed using preppy with the preppyDictionary as argument  If preppyDictionary is not  None and preppyIterations 15  gt 1 then the preppy preprocessing will be repeated  preppyIterations times  max of 3  with the same dict  to generate  e g   table of contents        preppylterations  seepreppyDictionary        dynamicRml is      optional boolean field for whether the RML can be dynamically altered          dynamicRmlNameSpace is      use with dynamicRml  It s a dictionary which you can add  variables to for processing     a encryption ifsetit must be an encryption object  for example   rlextra utils pdfencrypt StandardEncryption  User    Owner    canPrint 0  canModify 0  canCopy 0  canAnnotate 0         Page 7    RML User Guide Document generated on 2014 09 25 13 10 59    m SaveRml is useful for debugging dynamically generated RML  Specify a filename where the          should be saved     a parseOnly if set to True  will only parse the RML        not generate a PDF   It is also possible to call rml2pdf from other programming languages  such      C    by using standard methods    for calling a python callable  See the Python Language Embedding and Extension manuals     NB it is also possible to use      userPass  ownerPass  permissions  amp  encryptionStrength  attributes of the document tag to make rml2pdf create an encrypted PDF     For further information regarding the installation
14.    para textColor  blue  style  pto  gt   See you on next frame   lt  para gt    lt  pto_trailer gt     pto header      para textColor  blue  style  pto  gt   back from the previous frame   lt  para gt    lt  pto_header gt     para style  h1  gt A header lt  para gt    lt para style  bt  gt   Many vast star fields in the plane of our Milky Way Galaxy  are rich in clouds of dust  and gas  First and foremost   visible in the above picture are millions of stars  many  of which are similar to our Sun  Next huge filaments of  dark interstellar dust run across the image and block the    light from millions of more stars yet further across our Galaxy      lt  para gt      lt  pto gt        6 6  keepInFrame fixed space control    The   keepInFrame   tag is    flowable container that holds an arbitrary number of other flowables  The  intention is that the container controls the space allocated to the inner flowables  Errors will be caused by  attempts to use  lt nextFrame  gt  and similar tags inside the  lt keepInFrame gt  container     The   keepInFrame   tag takes several attributes  naxWidth is the maximum width  If zero then the  available width will be used  naxHeight is the maximum height  If zero then the available height will be  used  frame if specified this should be the name or index of the frame in which the contents should be drawn   The framechange takse place before widths etc are evaluated  mergeSpace if   code  1  endcode   then  adjacent pre and post space for the c
15.   10 5in        10             101          1007510    lt  lines gt     lt drawCentredString x  6 in  y  9 75 in  gt   width 15     lt  drawCentredString gt      lt     examples for the  join  attribute to  LineMode     gt    lt lineMode width  5   gt    lt lines gt lin Jin Zin 9in  fin 9215 1 518       Jo Sanm 8 51m Loin 9 2510     lines      fill coler  black   gt     setFont name  Helvetica  size  9   gt    amp drawCentredString x  1 5 in  y  6 25       gt   width 10       Page 24            User Guide Document generated on 2014 09 25 13 10 59     lt  drawCentredString gt    lt     options for  joun  are  round      mitered     or  bevelled     gt      lt lineMode width  5  join  round   gt    lt lines gt 2 5in 9     3 5in 9in  S  Sin           6 518  oan e  Sin        9 251m   lt  lines gt    lt drawCentredString x  3 in  y  8 25 in  gt   width 5  join round     lt  drawCentredString gt      lt lineMode width  5  join  mitered   gt     lines  4in Jin        9in         91m 4 51m 8 5      1 5in 8 5     4 5in 9 25       lt  lines gt    lt drawCentredString x  4 5 in  y  8 25 in  gt   width 5  join mitered     lt  drawCentredString gt      lt lineMode width  5  join  bevelled   gt    lt lines gt 5 5in Gin 6 5in Jin  6 5in Sin        6 51         9 51            9 25in   lt  lines gt    lt drawCentredString x  6 in  y  8 25 in  gt   width 5  join bevelled   lt  drawCentredString gt      lt     examples for the          attribute to  LineMode    lt lineMode width  10   gt    l
16.   90  gt     image file  images replogo gif       0      0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt               10                104            User Guide Document generated on 2014 09 25 13 10 59           Ta 90  141 90 0 90  0090900     lines       illustration      td       tr              lt          style  paddingTableStyle  gt    lt b gt blockLeftPadding lt  b gt  with  lt b gt blockTopPadding   lt  para gt    lt  td gt    lt  td gt            lt          style  paddingTableStyle  gt   just blockTopPadding   lt  para gt    lt  td gt        lt para style  paddingTableStyle  gt    lt b gt blockRightPadding lt  b gt  with  lt b gt blockTopPadding lt  b gt    lt  para gt    lt  td gt    lt  tr gt              L q gt    lt illustration width  141  height  90  gt    lt image file  images replogo gif       0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   0 0 1410           121 90  141 900 90  0900 0   lt  1         gt     illustration     td    stds   lt illustration width  141  height  90  gt    lt image file  images replogo gif       0  y  0   width  141  height  90   gt      lt stroke color  deepskyblue   gt    lt lineMode width  3   gt      lt lines gt              141 0 141 90  Tar o0 090  QUOD      lines       illustratijon      td    stas   lt illustration width  141  height  90  gt     Page 105       RML User Guide     lt imag
17.   Basic HTML is fine     You do not have to be employed as a programmer or have extensive programming skills for this guide to make  sense  We have tried to keep it as simple as possible and to minimise confusion     1 6  Conventions used in this document    It is more technically correct to call the various items in RML  elements   as you do in XML  However  since  we re assuming that more people know basic HTML than XML  we ll call them  tags  rather than elements in  this guide     There are also a couple of typographical conventions we ll be using   constant width    Throughout this User Guide  well be using a constant width typeface to highlight any literal  element of RML  such as tag names or attributes for tags  when they appear in the text     8 point Courier    Page 8    RML User Guide Document generated on 2014 09 25 13 10 59    A smaller constant width font is used for code snippets  short one or two line examples of what RML  commands look like  and code examples  longer examples of RML which usually have an illustration  of the output they produce      Page 9    RML User Guide Document generated on 2014 09 25 13 10 59    Part     The Basics  2  Pages and page structures    2 1  XML syntax and RML    As with every XML dialect  RML requires correct XML syntax  If you are familiar with HTML  you should pay  special attention to the differences between XML syntax and some of the more forgiving constructs allowed in  HTML        Attribute values must be enclosed in q
18.   D8BFD8       RML User Guide              Text 123    Text 123    Text 123    OOO      Text 123     Text 123    OO    Document generated on 2014 09 25 13 10 59    tomato  turquoise  violet   wheat   white  whitesmoke  yellow  yellowgreen    Page 112    Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex           XFF 6347      40               DO    OxEES82EE                                        xF5F5F5                  00    x9ACD32       RML User Guide Document generated on 2014 09 25 13 10 59    Appendix B   Glossary of terms and abbreviations    baseline   In typography  the imaginary line on which characters sit  The x height of a font is measured from the baseline  to the top of a lowercase x  The descender  for those characters that have one  is defined as the portion of the  character that falls below the baseline     Bezier curves   Named after the French mathematician Pierre                  Bezier curves utilize at least three points to define     curve  The endpoints are called the anchor points  while any other point is known as a node  The curves  produced by RML s  lt curves gt  tag are Bezier curves     bitmap   A bitmap is a way of storing an image  In bitmaps  each pixel   picture cell   is stored as one or more bits of  data in a  map  consisting of rows and columns  This means that when you print them out at the size they were  created at they look fine  but shrinking or enlarging them leads to them looking blocky and ragged    JPEG and GIF are both bitmapped
19.   So  the simplest blockTable in RML will look something like this      lt blockTable gt          lt td gt This lt  td gt  lt td gt is lt  td gt                        lt td gt a lt  td gt  lt td gt blockTable  lt  td gt                lt  blockTable gt        This produces a table that looks like this     This is  a blockTable     Figure 19  A very simple blockTable    In this short example  we are just using plain old vanilla text in the table cells  But we can do more    lt blocktable gt  allows you to use paragraphs and the  lt para gt  tag  This means that you can use bold  italics   colors  fonts  greek    anything you can use in a paragraph  And you can use multiple paragraphs inside a table  cell     This is a more complex This is a more complex  blockTable  blockTable     This      more This is  amp  more complex  complex blockTable  blockTafle   Figure 20  A slightly more complex blockTable    The main thing that makes this slightly more complex than a very simple table is the fact that you must give  rowHeights        colWidths tothe  lt blockTable gt  to use paras  This makes sense   paragraphs fit  into the available space on a page  In a table  they must fit into the available space in that cell  If you haven t  defined how high and wide that cell will be  then there is no way for rml2pdf to know how to make it flow in  that cell   If you get an error message saying  Flowables cell can t have auto width   then this is the thing to  check   you have probably omit
20.   first    1  72    1  72  width  451  height  698   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt  stylesheet gt      lt story gt    lt para gt  lt  para gt      lt  story gt      lt  document gt        This example has used the  template stylesheet story  form of document  But the story is empty  and we haven t  used the stylesheet at all  The following example shows how we can use the  pageDrawing  form     EXAMPLE 7b     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt     IDOCTYPE document SYSTEM  rml dtd        lt document filename  example_7b pdf  gt      lt stylesheet gt    lt  stylesheet gt      lt pageDrawing gt   fib color  red        lt stroke color  black   gt      lt path x  247  y  72  fill  yes  stroke  yes  close  yes  gt   247 172    147 172  147 272  247 272  247 372  347 372  347 372  347 272                   69            User Guide Document generated on 2014 09 25 13 10 59    447 272  447 172  347 172               lt moveto gt 267 572 lt  moveto gt     2 612   lt curvesto gt   147 585 147 687 297 192  447 687 447 585 317 612   lt  curvesto gt        SY   lt  path gt      lt  pageDrawing gt      lt  document gt        10 3  grids    The   grid   isa graphics tag  and hence lives in      PageGraphics section of your RML document  It  produces a grid of lines  It takes two arguments   xs which is a list of x co ordinates  separated by commas    and ys which is a comma separated list of y co ordinates     Example 
21.   gt  lt pageNumber  gt  is where    is defined lt  namedString gt     By default            RML2PDF   endcode   will fail in this case also  but it is possible to invoke the main  processing function    code  RML2PDF go   endcode   to allow additional formatting passes  For example as  in     rml2pdf go xmlInputText  passLimit 3     to request that the processor execute a maximum of 3 formatting passes before signalling an error if more  unresolved names remain     WARNING  A document that requires two formatting passes will take about twice as long to generate asa  document that requires only one  For time critical applications it is best to avoid the need for extra formatting  passes if they are not needed     RML documents that do not have references to names before they are defined will not require more than one  formatting pass     9 3  Calculated Page Numbers  evalString    Some documents require the ability to give  relative pagenumbers   To meet this requirement     code   RML2PDF   endcode    includes the    code  JevalString   endcode    tag  For example The following     code   para   endcode         lt para gt  lt font color  crimson  gt    The last page is  lt getName id  LASTPAGENO  default   999      One less than that is     evalString default  XXXX  gt     lt getName id  LASTPAGENO  default   999       1   lt  evalString gt     The current page is  lt pageNumber  gt     And there are    lt evalString default  XXXX  gt     lt getName id  LASTPAGENO  default  
22.   lt              SUE      td  Cell    LIER     lt tr gt      lt td gt Cell    te     lt  gt      lt td gt Cell              Str      td  Cell    qos    SUE      td  Cell             lt tr gt      lt td gt Cell               lt  blockTable gt      lt  story gt      lt  document gt           lWidths  4cm  4cm  4    0 0 lt  td gt  lt td gt Cell    0 1 lt  td gt  lt td gt Cell    0 2 lt  td gt  lt td gt Cell    0 3 lt  td gt  lt td gt Cell    0 4 lt  td gt  lt td gt Cell    0 5 lt  td gt  lt td gt Cell       0 6   td    td  Cell          cm  4cm  gt      0 lt  td gt  lt td gt Cell     i lt  td gt  lt td gt Cell     2 lt  td gt  lt td gt Cell      3 lt  td gt  lt td gt Cell     4 lt  td gt  lt td gt Cell    255      gt  lt      gt               6 lt  td gt  lt td gt Cell    Page 95          2                     2 1 lt  td gt  lt td gt Cell    2 2 lt  td gt  lt td gt Cell    2 3 lt  td gt  lt td gt Cell    2 4 lt  td gt  lt td gt Cell    2 5 lt  td gt  lt td gt Cell    2 6 lt  td gt  lt td gt Cell             0 lt  td gt     3  l lt  td gt                   3  3 lt  tq gt                         3 5   td      Sesto       RML User Guide Document generated on 2014 09 25 13 10 59    Example 10   colors and fonts in tables       Cell 0 1 Cell 1 1 Cell 2 1 Cell 3 1    Cell 0 2 Cell 1 2 Cell 2 2 Cell 3 2       Cell 0 3 Cell 1 3 Cell 2 3   Cell 0 4 Cell 1 4 Cell 2 4 Cell 3 4  Cell 0 5 Cell 1 5 Cell 2 5 Cell 3 5  Cell 0 6 Cell 1 6 Cell 2 6 Cell 3 6    Figure 21  Output table from EXAMPLE
23.   lt  pageGraphics gt     frame id  first        72    1  72  width  451  height  698   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt paraStyle name  style Title   fontName  Courier Bold   fontSize  24   leading  36     gt    lt  stylesheet gt      lt     The story starts below this comment    gt       story      title  Example 9   title      para    This is a page which shows you how illustrations  grids and the place tag work      para      illustration width  90  height  90  gt    lt fill color  red   gt    lt circle x  45  y  45  radius  30  fill  yes   gt    lt setFont name  Times Roman  size  8   gt    lt drawString x  0  y  0  gt This is an illustration lt  drawString gt    lt  illustration gt      lt para gt     The red circle you can see is an  lt i gt illustration lt  i gt   not a  lt i gt pageGraphic lt  i gt       lt  para gt    lt illustration width  75  height  75  gt    lt fill color  teal   gt    lt circle x  30  y  30  radius  30  fill  yes   gt    lt stroke color  darkslategray   gt     grid       15  30 45  ys  5  10  15 20  25 30  35 40 45 50   gt    lt  illustration gt    lt para gt   So is the teal colored one    lt  para gt    lt para gt   These are all flowables in the story      lt  para gt      lt  story gt      lt  document gt        Page 78    RML User Guide Document generated on 2014 09 25 13 10 59    10 13  spacer      spacer   is another tag which does just what the name suggests  A   spacer   inserts an empty element 
24.   required  required    unformatted data    required  required    measurement pairs  representing points  or path operations    RML User Guide     lt barCodeFlowable      gt     figure     lt figure      gt     code  Codell   value  somevalue   fontName  Helvetica   tracking  sometracking   routing  somerouting   barStrokeColor  blue   barFillColor  blue   textColor  plus      barStrokeWidth  lin           1       rataios IZor5   bearers     barHeight  lin   barWidth  lin   fontSize  12   spaceWidth  lin   spaceHeight  lin   widthSize  lin   heightSize  lin   checksum   1   quiet  yes   lquiet 2 yes   rquiet  yes   humanReadable  yes     stop  yes     showBoundary  no   shrinkToFit  no   growToFit  no     scaleFactor  somescaleFactor     Page 139    Document generated on 2014 09 25 13 10 59       2  1     Code128   Standand Biyr  xktended93   Standard39    string required   string font name   string   string   string color name   string color name   string color name   measurement   measurement   string   string   measurement   measurement   stringform font size   measurement   measurement   measurement   measurement    1101112    yes         0   1    yes         0  1    yes   no  0  1    yes   no  0  1    yes   no  0  1      0 1                0 1                0 1               string    RML User Guide    imageFigure     lt imageFigure       imageName  someimageName   imageWidth  lin   imageHeight  lin     imageMask  someimageMask        preserveAspectRatio  yes   showBoun
25.   string color name  measurement  measurement  measurement  measurement   float   string color name  string color name  string color name  measurement   string font name  fontsize measurement    unformatted data    RML User Guide     lt textBox  style  myboxstyle                                 boxWidth  lin   boxHeight  lin     labelFontName  Helvetica     labelFontSize  12   labelTextColor  blue   labelOffsetX  lin   labelOffsetY  lin   boxStrokecColor  blue   boxFillColor  blue   textColor  blue   lineWidth 2 lin   fontName  Helvetica   fontSize  12   align  left   shrinkToFit  false   Lapel  lebel text     gt    box contents goes here     lt  textBox gt     Document generated on 2014 09 25 13 10 59    string box style name    measurement required  measurement required  measurement required  measurement required    string font name  fontsize measurement  string color name  measurement  measurement   string color name  string color name  string color name  measurement   string font name  fontsize measurement   left    right  or  center     Graphical State Change Operations    fill      fill    color  blue       gt     stroke     lt stroke    color  blue       gt     truth value  string  unformatted data  string name required  string name required    RML User Guide    setFont   lt setFont  name  Helvetica   size  l1cm     gt   form   lt form  name  logo    gt    lt drawString     gt      lt  drawString gt    lt place   gt     lt    1       gt    lt  form gt   catchForms   lt
26.  10    Page 96    RML User Guide Document generated on 2014 09 25 13 10 59    1 2 Colors and fonts in table cells    As an alternative to specifying cell properties using block table styles  RML also allows some cell styles to be  specified as attributes of the  lt td gt  tag      lt blockTable colWidths  5cm 5cm  style  myBlockTableStylel      lt tr gt  lt td gt fontName lt  td gt  lt td fontName  Courier  gt Courier lt  td gt  lt  tr gt    lt tr gt  lt td gt fontName lt  td gt  lt td fontName  Helvetica  gt Helvetica lt  td gt  lt  tr gt    lt tr gt  lt td gt fontSize lt  td gt  lt td fontSize  8  gt 8 lt  td gt  lt  tr gt    lt tr gt  lt td gt fontSize lt  td gt  lt td fontSize  14  gt 14 lt  td gt  lt  tr gt     tr    td  fontColor   td    td fontColor  red  gt red lt  td gt  lt  tr gt     tr    td  fontColor   td    td fontColor  blue  gt blue lt  td gt  lt  tr gt    lt tr gt  lt td gt leading lt  td gt  lt td leading  16  gt leading   is    6 lt  td gt  lt   tex        lt tr gt  lt td gt leading lt  td gt  lt td leading  12  gt leadi    is   2 lt  td gt  lt  tr gt     lt tr gt  lt td gt leftPadding lt  td gt  lt td leftPadding  10  gt 10 lt  td gt  lt  tr gt    lt tr gt  lt td gt leftPadding lt  td gt  lt td leftPadding  16  gt 16 lt  td gt  lt  tr gt    lt tr gt  lt td gt rightPadding lt  td gt  lt td rightPadding  10  align  right  gt 10 lt  td gt  lt  tr gt    lt tr gt  lt td gt rightPadding lt  td gt  lt td rightPadding  24  align  right  gt 24 lt  td gt  lt  tr gt 
27.  2  Bleed    Following on from the above  remember that printers often cut the paper to size  In addition  if they are creating  a booklet  they sometimes have to allow for the thickness of inner pages  so they need a little flexibility in where  to make the cut  If you have a design with solid colour  straight to the edge  of the page  cutting can sometimes  leave a very fine white line where the colour runs out  Therefore  when a designer wants an area of colour to go     straight to the edge     they work on a slightly larger page size  and allow the colour to overflow or  bleed out     In  general printers often ask for at least 3mm of bleed  or about 8 points  So  if you needed to draw a blue  background on an A4 sized page  595x842 points   you would be well advised to draw the rectangle from x  10  to x  605   ten points bigger than needed  This will be completely invisible to an end user in a document  created for the web  but when you turn on crop marks and the page is enlarged  it will be visible     There        no features      RML to automatically detect areas of colour near the edge of the page and    add bleed      it s your job to do it     This also applies to bitmap images  If an image runs to the edge of the page  it needs to be sized to very slightly  overflow so that it can be cut without risking a white edge     5 _         12 3  CMYK Colours    For professional presses  colours need to be specified either as CMYK  or as  spot colours  such as those in t
28.  2014 09 25 13 10 59    string font name  string color name  fontsize measurement    RML User Guide    super     lt super gt      lt  super gt     strike     lt strike  gt     sup     lt sup  gt     seq     lt seq  id  SecNum   template     Ch  5 35                s       gt     seqDefault      seqDefault  id  SecNum       gt     seqReset     lt seqReset  id  SecNum       gt     seqChain     lt seqChain  order  id id id id       gt     Page 128    Document generated on 2014 09 25 13 10 59    string  string    string    string    string    RML User Guide    seqFormat    lt seqFormat  1                 value  format char      gt    onDraw    lt onDraw  name  somename   label  somelabel      gt    br    lt br  gt    bullet    lt bullet  bulletColor  blue   bulletFontName     bulletFontSize  lin   bulletIndent  lin   bulletOffsetY  lin      gt    link    lt link  destination  somedestination   color  blue      gt    setLink    lt setLink  destination  somedestination   color  blue      gt     Page 129    Document generated on 2014 09 25 13 10 59    string   1lillla A     string  string    string color name  string  measurement  measurement  measurement    string  string color name    string  string color name    RML User Guide    unichar   lt unichar  name  somename   code  somecode     gt     Page Level Flowables    nextFrame     lt nextFrame  name  frameindex       gt     setNextFrame     lt setNextFrame  name  frameindex       gt     nextPage     lt nextPage  gt     setNextTem
29.  999   gt     lt pageNumber  gt    lt  evalString gt    pages to go     lt  font gt  lt  para gt     Performs arithmetic calculations  subtractions  using the current page number and a forward reference to the     code   LASTPAGENO   endcode    which is presumably defined on the last page  In the context of this  document the paragraph evaluates to the following     The last page is 1 One less than that is 0  The current page is 64  And there are  63 pages to go        RML document can make use of arbitrary arithmetic calculations using the    code   evalString    endcode       tag  but in practice addition                   endcode   and subtraction    code       endcode    over page numbers  are the most useful     9 4  Generated RML    Although the    code              namedString  getName    endcode   and    code   evalString   endcode    tags can  be used to build tables of contents and indices  it is not easy to directly edit RML documents that includes cross  reference structures of this kind     Page 64    RML User Guide Document generated on 2014 09 25 13 10 59    For example to directly add a new section to the this document in RML text it would be necessary to add a new  table of contents entry at the top  something like this      lt para style  contents2  gt     lt getName id  chapterNumber   gt   lt seq id  sectionNumber   gt   Installation    lt  para gt     As well as the text of the section itself     lt condPageBreak height  144   gt     lt h2 gt     lt getNa
30.  API  Since any external program with the ability to print can produce PDF files  this means that a ReportLab  document can include graphical elements created by virtually any program  These imported elements can be  combined freely with text or graphics drawn directly into the document  For example an application can import  pages from a government tax form and draw text in the spaces provided to fill in the form  The resulting  document can then be combined with a cover letter at the beginning and supporting tabular data at the end    all  in a single PDF document     1 2  Installation and Use   To avoid duplication  the full installation instructions are always on ReportLab s web site at this address   http   www reportlab com software installation    RML2PDF is a compiled Python programming language module  It can be used with options from a command   line  and also has a programmable API interface and may be used as a component of a larger Python language   installation  Since Python integrates with a wide variety of other languages  it is also possible to access    RML2PDF from C and C   programs  COM and many other environments     RML2PDF is delivered as part of ReportLab s  rlextra  package and licensed under the name ReportLab PLUS   This package depends on our  reportlab  package and some other open source libraries  all detailed on the above    Page 5    RML User Guide Document generated on 2014 09 25 13 10 59    installation page     RML2PDF requires a license ke
31.  Blah blah bug  report blah blah blah blah blah memory blah blah TeX TCP IP  SMTP    blah             lt  para gt      lt para style  body  gt   Blah blah blah blah blah Em blah letterform blah blah blah  blah blah blah blah blah blah letterform blah blah  Blah blah  blah blah leader blah blah blah blak        para        para style  body  gt           para        para style  body  gt   Blah dingbat blah blah blah blah blah blah blah blah blah blah  blah blah blah blah blah  Blah blah blah blah blah drop cap  blah blah blah blah blah blah blah              para       story         document      Exampin     kezrgytstes and page Templates    Tih Ri ckama Dus   LIT DS LIC                                                    LN    Tics ba          The  TIT II                   m 1    7 10  Asian Fonts    Dats                            binn            orci ma                                         ad I                                 Mns    Pe          Ae Pas                 wars mars kim           KA Mo FRA         piss         Lg                                                                  rain  Hik bsk ars                      ty  binis iini saman bier                        tas P                                        biah          biar binh      mars                                                                                     bisi Pana                          binh bini                                                               an tir                            
32.  This is the case which  lt includePdfPages gt  tag was designed for     Page 52    RML User Guide Document generated on 2014 09 25 13 10 59     lt includePdfPages gt  15    generic flowable  which means that it can appear at any point in the story     In its simplest form  an includePdfPages tag will look like this      lt includePdfPages filename  mypdffile pdf        This will take the PDF file called  mypdffile pdf   use pageCatcher behind the scenes and include every page in  the PDF file in your output  There is also an optional  pages  attribute  This can have either individual pages or  ranges  The following are all valid  providing the PDF file is long enough       lt includePdfPages filename  mypdffile pdf         lt includePdfPages filename  mypdffile pdf  pages  1   gt    lt includePdfPages filename  mypdffile pdf  pages  1 2 3   gt    lt includePdfPages filename  mypdffile pdf  pages  2 1 1 2 2   gt     includePdfPages filename  mypdffile pdf  pages  1 5   gt     includePdfPages filename  mypdffile pdf  pages  1 2 4 5   gt        There are a number of differences between this tag and the other PageCatcher related tags  Unlike the others   includePdfPages doesn t require you to pre pagecatch the file you intend to use  so saving you an additional  step   It also differs in that the imported PDF gets drawn  over the top  of your exiting document  rather than  being used as a background underneath your existing page  So if you have a header or footer in your page  t
33.  User Guide    M                      4     2101019100    O    O    O    618           4 OV OVVU V 6 4 6   0900 000500 000000005060                                    123          123  Text 123  Text 123    Text 123    Text 123    Text 123    Text 123    Text 123  Text 123  Text 123  Text 123  Text 123  Text 123  Text 123  Text 123    Text 123    Text 123  Text 123  Text 123    Text 123  Text 123  Text 123    Text 123    Document generated on 2014 09 25 13 10 59    olivedrab  orange  orangered  orchid  palegoldenrod  palegreen  paleturquoise  palevioletred  papayawhip  peachpuff  peru   pink   plum  powderblue  purple   red  rosybrown  royalblue  saddlebrown  salmon  sandybrown  seagreen  seashell  sienna   silver  skyblue  slateblue  slategray  Snow  springgreen  steelblue   tan   teal   thistle    Page 111    Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex           x6B8E23          500    xFF4500    x          DA70D6    XEEE8AA  x98FB98    XAFEEEE    X       DB7093    xFFEFDS5            xC          xFFC    X    DDA       xBOE    X       800    xFFO       DAB9  D853F            ODD  0  6  080  000                               4169  1    8  4513             72    xF4A460    x2E8B57    xFFF5EE    XA0522D  xCOCOCO       x87CEEB    X6A5DACD  x708090                         xOOFF7F  x4682B4    X    X    X       D2B48C  008080
34.  Using two seqs independently  We have just done a  lt seqReset id  testOne   gt   We have just done     lt seqReset id  testTwo        First seq for testOne  1  Second seq for testOne  2    First seq for testT wo  1  Second seq for testT wo  2    We have just done     lt seqReset id  testOne   gt     First seq after seqReset for testOne  1  second seq after seqReset for testOne  2    First seq after seqReset for testTwo  3  second seq after seqReset for testTwo  4    Notice how resetting testOne doesn t affect testT wo at all   Figure 9  The output from EXAMPLE 6    One more sophisticated use for using these tags is for multiple page counters  If you have a document where  you need different sections numbered separately from the main body of a document  perhaps for introductory  matter such as the contents and preface of a book   this can be done with a named seq tag     The page counter as used by the pageNumber tag is a  unique value  which depends on the actual physical  number of pages  If rather than using a pageNumber tag  you instead use something like   seq  id  pageCounter   gt   you have the ability to use  lt seqReset id  pageCounter   gt  in between  sections so that each chapter has pages numbered from the start of that chapter rather than the start of the  document  If you use a different template for each chapter  this can then give you page numbers in the format  71 12  rather than just  12   where you are on page 12 of the document  which is page 12 of chapt
35.  catchForms  storageFile  storage data     gt   scale   lt scale  sx  0 8             3        translate   lt translate  dx  0 8in   aya 1 3in      gt   rotate   lt rotate  degrees  45     gt     Page 145    Document generated on 2014 09 25 13 10 59    string name  measurement    string name    string name    scale factor  scale factor    measurement  measurement    angle in degrees    required  required    required     Sequence of  graphical  operations     required    required  required    required  required    required    RML User Guide    skew    lt skew  alpha  15   beta  5      gt    transform    lt transform gt    1 00 3    0 2 1 1   10 1 15    lt  transform gt    lineMode    lt lineMode  width  0 2cm   dasHe  lom ccm   join  round   cap  square      gt     Style Elements    initialize   lt initialize gt    lt alias     gt    lt name     gt      lt color     gt      lt  initialize gt     paraStyle    Page 146    Document generated on 2014 09 25 13 10 59    angle in degrees required   angle in degrees required  six number affine  transformation  matrix    measurement   measurements    round    mitered   or  bevelled    default    round   or  square     sequence of  alias  name  or color tags    RML User Guide     lt paraStyle      gt     boxStyle     lt boxStyle      gt     name  mystyle   alias  pretty   parent  oldstyle   fontname  Courier Oblique   fontsize  13   leading  20   leftIndent  1 25in   rightIndent  2 5in   firstLineIndent  0 5in   spaceBefore  0 2in   spa
36.  drawCentredString       lt     options for  dash  are sequences of numbers    gt       lineMode width  2  dash  5 5   gt    lt lines gt 2 5in 4 5     3 5     4 5      3 5in 4 5in        4in         din        4751   lt  lines gt    lt drawCentredString x  3 in  y  3 75 in  gt   width 2  dash 5 5     drawCentredString       lt lineMode width  2  dash  2 10   gt    lt lines gt 4in 4 5in 5in 4 5in         4 5     4 5     Ain  4 5in 4in 4 5     4 75in   lt  lines gt    lt drawCentredString x  4 5 in  y  3 75 in  gt   width 2  dash 2 10   lt  drawCentredString gt      lt lineMode width  2  dash  5 5 2 10   gt    lt lines gt 5 5in 4 5     6 5     4 5      6 5in 4 5            4in  6in 4in        4 75in   lt  lines gt    lt drawCentredString x  6 in  y  3 75 in  gt   width 2  dash 5 5 2 10   lt  drawCentredString gt      lt  pageGraphics gt     frame id  first    1  72    1  72  width  451  height  698   gt    lt  pageTemplate gt      lt  template gt      lt stylesheet gt    lt  stylesheet gt      lt story gt    lt para gt  lt  para gt      lt  story gt        Page 27            User Guide Document generated on 2014 09 25 13 10 59    Lines in RML                         18    and peed       Figure 7  Output from EXAMPLE 4    Page 28    RML User Guide Document generated on 2014 09 25 13 10 59    5  Graphics vs Flowables    Both the basic graphical figures and the basic text operations we have seen so far share some properties  All of  them require you to specifically position them a
37.  forms  annual reports and so on   Extracting the required pages with PageCatcher will most    Page 51    RML User Guide Document generated on 2014 09 25 13 10 59    often be a one off design time step  Once PageCatcher has extracted a page  it archives it in a data file as  formatted form data   The default name for this file is  storage data       If you have full production versions of both RML2PDF and PageCatcher you can use the  lt catchForms gt  tag  to import all forms from a PageCatcher storage file for use in your RML document     Example   This example takes the form called PFO  a page  caught  by PageCatcher and stored in the file storage data  and    draws it into your document as a page backdrop      lt pageDrawing gt      lt catchForms storageFile  storage data   gt      lt doForm name  PF0         lt  pageDrawing gt        The  lt catchForms gt  tag is a drawing operation  and can occur anywhere in your RML document where a   lt doForm gt  tag        occur   For example  you can use a  lt catchForms gt  inside the flow of a story by using it  inside an  lt illustration gt    The  lt catchForms gt  tag has one mandatory argument  storageFile  which  gives the name of the PageCatcher storage file to extract the form from     One small point to remember is that if you are using multiple forms from the same data file  you only need to  use the actual  lt catchForms gt  tag once  To actually put the captured data into your document  you would use  multiple instances
38.  graphics formats  as are BMP  PICT and PNG   You can use gifs and jpegs  in your RML document with the  lt image gt  tag    see also  gif    JPEG    image     Boolean  Named after the nineteenth century mathematician George Boole  Boolean logic is a form of algebra in which  all values are reduced to either TRUE or FALSE  or 0 and 1      CMYK  A way of specifying a color by its Cyan  Magenta  Yellow and Black     Key   components  Usually used when  referring to pigments   such as in printing     DTD  Document Type Definition  A term from XML that refers to the file that defines the legal building blocks of an  XML document  and the permissible ways to structure it     empty elements    Empty  elements are those tags that don t have any content  and are closed with a    gt   at the end of the same  tag rather than having a separate closing tag   e g    getName id  Header Title   gt  doesn t havea  separate  lt  getName gt  tag   the    gt   serves to close it so it doesn t need one   Empty elements are also  sometimes known as  singletons         fill  In RML  the color that a graphic or text item is filled with  as opposed to that of its outline or st roke      flowables   In RML   flowables  are items which appear in a story  such as paragraph  spacer  and tables   Flowables are  positioned in sequence running down a frame until there is no more room left in that frame  when they are  placed in the next frame  or on the next page if necessary   They can not be mixed with g
39.  gt  lt  h3 gt  tags in  the same way     7 3  Paragraphs and paragraph styles    As well as explicitly placing a piece of text into a certain position on a page using the drawSt ring  commands  RML also allows you to use paragraphs of text  Paragraphs are flowables  This means that you don t  need to tell RML exactly where every line is going to go on the page   you let rml2pdf worry about that     To do this you place your text inside the story section of an RML document  and use the   para   and     para   tags to tell the parser where each paragraph starts and ends     As well as delineating where paragraphs begin and end  the   para    tag can also have a number of optional  attributes     style    If you have set up a style in the stylesheet section of a document  you can refer to them by name by using the  style attribute  For example  if you have defined a style called Norma  you can have your paragraph appear  in that style by using   para style  Normal        alignment   How the text is aligned within the paragraph  It can be LEFT  RIGHT  CENTER  or CENTRE  or JUSTIFY                          fontName  fontSize     Page 36    RML User Guide Document generated on 2014 09 25 13 10 59    fontName and fontSize set      name and size of the font that you want this paragraph displayed in   This  can often be better done using       lt paraStyle gt  tag inside      stylesheet    and then using the    style   tag to apply it to that paragraph   Example    para fontName  Hel
40.  how you can use more that one attribute to  lt 11             gt  at      same time     EXAMPLE 4     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt      lt  DOCTYPE document SYSTEM  rzml dtd       lt document filename  example_4 pdf  gt      lt template gt    lt pageTemplate id  main  gt      lt pageGraphics gt        Page            User Guide Document generated on 2014 09 25 13 10 59     lt il                     lt setFont name  Helvetica  size  24   gt    lt drawCentredString x  297 5  y  800  gt   Lines in RML      lt  drawCentredString gt      lt     notice that each of these  empty  tags are teminated        lt 1   with a slash    gt    lt lineMode width  1   gt   slines  lim 10 5in Zin 10 5in  Zin 10 5in 1 5in TOTR          l0in 1 51m      Sar   lt  lines gt     fill coloer  black   gt    lt setFont name  Helvetica  size  9   gt    amp drawCentredString x  1 5 in  y  9 75       gt   width 1   lt  drawCentredString gt      lt lineMode width  5   gt     lt lines gt 2 5in 10 5     3 5in  3 5       10 811        1010         Oam                lt  lines gt     lt drawCentredString x  3 in  y  9 75 in  gt   width 5    lt  drawCentredString gt      lt lineMode width  10   gt     lt lines gt 4in 10 5in        10 5in         10 5in 4 5in 10in  4 5in 1041 4 5in 10 75im    lt  lines gt     lt drawCentredString x  4 5 in  y  9 75 in  gt   width 10    lt  drawCentredString gt      lt lineMode width  15   gt     lt lines gt 5 5in 10 5     6 5     10 5in     51 
41.  in this tutorial can be found as   rml files in the same directory as this tutorial      Hello World        Figure 1  Output from EXAMPLE 1    Page 12            User Guide Document generated on 2014 09 25 13 10 59    This is the most basic RML document you can get  It is the traditional  Hello World   All it does is place the  string of text  Hello World  into the middle of your A4 page  Not very useful in the real world  but enough to  show you how simple RML can be     Notice how it does have a stylesheet  but it is empty  Stylesheets are mandatory  but they don t need to  actually contain anything  Also notice how in the drawCenteredString tag  the co ordinates are enclosed  in quotation marks   they are attributes  and so need to live inside quotes  And if you look at the  drawCenteredString tag  these attributes are inside the tag  actually inside the angle brackets   then the  content of the string comes after it  then the tag is closed by its matching  lt  drawCenteredString gt  tag   All tags with content need their matching closing tag          document   and  lt stylesheet gt  tags are also  parts of matching pairs     One last thing to notice is the DOCTYPE line   for all these examples  we are assuming that the DTD is in the  same directory as the example file itself  This may not always be the case     For a more complex RML document  you can use the more powerful template stylesheet story form of  document  In this  a file contains the following three sections
42.  into the page to force other elements downwards or sideways  The spacer tag has two attributes   length  is mandatory and refers to the length down the page  and width is optional     Example     To produce a spacer 15 points in height and one inch wide  you could do the following        10 14  Form and doForm         form   isa group of graphical operations  stored together and given a name  This allows you to group  complex graphics together and to re use them in more than one place with ease  To do this  you would use the  doForm tag     Your form would appear in the pageGraphics section of your RML document  inside the  pageTemplate    lt doForm gt  also appears in      pageGraphics section     The   form   tag has one attribute   a mandatory one called name which identifies the form     The  lt doForm gt  tag executes the sequence of graphical operations defined with a  lt form gt  tag  It also has  only one mandatory attribute called name     Example      lt pageGraphics gt    lt form name  myForm  gt    lt drawString x  0  y  24  gt   Your graphic operations would go here    lt  drawString gt    lt drawString x  0      12  gt   There would probably be a lot of them to make up something useful    lt  drawString gt    lt  form gt      lt doForm name  myForm   gt      lt  pageGraphics gt        10 15  Why use forms     Why use forms when you can just cut and paste big chunks of text inside your RML document with your  favorite text editor or word processor     The benefi
43.  it any numbers  it defaults to A4  the international standard page size which differs from the  American standard page size of letter  but is a standard in other places such as the UK   While this is a sensible  default  it s usually best to explicitly specify a size  Common sizes are  21cm  29 7cm  or  595  842  for A4    8 5in  11in  for letter  and  8 5in  17in  for legal     rotation sets      angular orientation of the page  This is a float or integer number that should be    multiple  of 90  The default value is zero     leftMargin        rightMargin set the horizontal margins for the page  topMargin and  bottomMargin setthe vertical margins for the page     You can also set the title of the document with the title attribute  which defaults to   untitled    and the  author with the author attribute  which defaults to   unauthored          There are also the optional showBoundary andallowSplitting attributes  which can both be set to  0   or  1   or  true  and  false    The showBoundary attribute is off by default  but when it is set to true  it  shows a black border around any frames on the page       template   allows you to set options for the whole document  The  lt pageTemplate gt  tag allows you to  set options for individual pages  You can have more than one   pageTemplate   inside the template section   This allows you to have different pageTemplates for each page that requires a different structure  For  example  the title page of a report could have a number o
44.  letterBox or checkBox     boxStrokeColor   An optional tag specifying the colour to be used for the lines making up a textBox  letterBox or checkBox     cellWidth   An optional tag  specifying the width of a  cell  in a form element  Must be a measurment  but may  in   cm     mm or  pt    see the section on    Coordinates        measurements  for more details on measurements     cellHeight   An optional tag  specifying the width of a  cell  in a form element  Must be a measurment  but may  in           mm or  pt     Some Examples    As an example of them in use  let s set up two boxStyles  and see what effect they have on letterBoxes   textBoxes and a checkBox     Firstly  the boxStyles       boxStyle name  speciall   labelFontName  Helvetica   fontSize  10   alignment  RIGHT   textColor  regd   fontName  Helvetica   labelFontSize  10   labelAlignment  RIGHT   labelTextColor  blue     boxStrokeColor  red        boxFillColor  pink   gt      lt boxStyle name  special2   parent  speciall     fontName  Courier        Page 60    RML User Guide Document generated on 2014 09 25 13 10 59    fontSize  12   textColor  green   labelFontName  Courier   labelFontSize  12     labelTextColor  green   boxFillColor  yellow     boxStrokeColor  red   gt        With the style  special 1        style  special1   style  special1     F                                      And with      style  special2      style  special2   style  special2     Barcodes    One other tag that may often find use on f
45.  name   outlineText  text   outlineLevel  1   outlineClose  0   leadingFrame  no   isdata  yes     orientation  auto     Bast  9   sy  0 9   ax  2in   dy  2in   degrees  45      gt    textField    lt textField  id  name   value  initial       34        500   width  72   height  12   maxlen  1200   Multi line  0  1     gt     lt  textField gt    textAnnotation    lt textAnnotation gt      lt  textAnnotation gt     Page 137    Document generated on 2014 09 25 13 10 59    string   string   string   string   int   int   bool   bool   string   float   float  measurement  measurement  angle in degrees    name of field  field initial value  x coord   y coord   width   height    maximum  chars  1 for multiline text    required  path to included file  optional    separated page list  optional  pagetemplate name  optional  text for outline entry  optional  outline level default 0  optional  0 for closed outline entry  optional  no if you don t want a pa  optional  true if filename is a           optional  0 90 180 270 auto lands    required  optional    RML User Guide    pluginGraphic      plugInGraphic  module  mymodule   function  myfunction    gt     string data for plug in       plugInGraphic    path    path                     Tin     Glose  rtrue    fill  true    stroke  false    gt     lin 6in  lin Vin     lt  path gt     barCodeFlowable    Page 138    Document generated on 2014 09 25 13 10 59    string  string    measurement  measurement  truth value  truth value  truth value  
46.  no    gt   This line is the XML declaration  This is optional  but recommended     version  1 0   This attribute tells the parser which version of XML it should use   in this case 1 0     standalone  no   This tells the parser that it needs an external Document Type Definition  more on DTDs below      encoding  iso 8859 1   The  encoding  attribute sets the encoding you want the PDF file to use  The ISO 8859 1 encoding  covers the character set known as  US ASCII   plus things like the accented characters used in most  Western European Languages and some control characters and graphical characters  ISO 8859 1 is also  known as  Latin 1  or  Latin Alphabet No 1    Other common encodings are ut    8  same as  US ASCII for  normal  characters like A Z and 0 9  but also covers the whole Unicode character set   and cp1252  a Microsoft Windows variant of ISO 8859 1   You may use any encoding you wish  with RML  as long as the encoding attribute here matches the encoding you actually used to write the  RML file     Page 10    RML User Guide Document generated on 2014 09 25 13 10 59     lt  DOCTYPE     rml dtd  gt   This line tells the parser where the Document Type Definition is located  The DTD formally specifies  the syntax of RML        For documents written in RML  the DTD should always be the current version of rml dtd   The rml  DTD should always be called rml dtd     Unlike other dialects of XML  RML does not allow you to provide relative paths to the DTD  nor a full  URL  I
47.  of how a  lt path gt  looks in action     Page 67            User Guide Document generated on 2014 09 25 13 10 59    The stroke isn t  completed here since       used                           Figure 12  The output from EXAMPLE 7    EXAMPLE 7a     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM  rml dtd         document filename  example 7a pdf         template     lt pageTemplate id  main  gt    lt pageGraphics gt    lt fill color  red   gt    lt stroke color  black   gt    lt path x  247  y  72  fill  yes  stroke  yes  close  yes  gt   247 172  147 172  14971272  241 212  247 372  SNC                        212  447 272  447 172  347 172  347 72     lt     This completes the first shape     red         8   2         moveto  267 572   moveto       lt     This moves the  pen position        Page 68            User Guide Document generated on 2014 09 25 13 10 59     lt     Notice that because we have used a  moveto   the       lt     final line at the base of the cross is not completed  even    gt      lt 1   though the  close  attribute of the  path              set to    gt      lt                   277 612     lt     this acts      the start point for the Bezier curves below     lt curvesto gt   147 585  147 687  207 TOS    447 687 447 585 317 612   lt  curvesto gt                   lt     We don t need to give the last point because close is    gt    lt 1   set to  ves          lt  path gt    lt  pageGraphics gt     frame id
48.  of the  lt doForm gt  tag  Notice how this works in the example below      lt illustration width  451  height  698  gt    lt pageGraphics gt    lt catchForms storageFile  samples data   gt     doForm                    gt    lt  pageGraphics gt      lt  illustration gt      lt illustration width  451  height  698  gt    lt pageGraphics gt      lt doForm name  PF1   gt      lt  pageGraphics gt        illustration        If you do use repeated   cat chForms   tags to point at the same data file  you will get an error message  similar to the one below        ValueError  redefining named object   FormXob PFO0     If this is the case  find the places where you are using the second and subsequent  lt catchForms gt  tags and  delete them  leaving only the  lt doForm gt  tags   Of course  this doesn t apply to any doForms which are  pointing at other data files  They would still need their own initial  lt catchForms gt  tags       Note  For the  lt catchForms gt  tag to work  you must have PageCatcher installed  In addition  your  PageCatcher must be the full version with a  py or  pyc file  The   exe version of PageCatcher will not work  with RML2PDF  If you get the error message  ImportError  catchForms tag requires the PageCatcher product  http   www reportlab com   then you either do not have PageCatcher installed  or have the wrong version      The includePdfPages tag    In some circumstances  you may not know how many pages there will be in the PDF file you need to  pageCatch 
49.  of the cell  for  a block of cells in your table    It has one required attribute  length   It has two optional attributes  start and stop     m blockRightPadding  This sets the padding between the contents of a cell and right hand edge of the cell  for a block of cells  in your table    It has one required attribute  length   It has two optional attributes  start and stop     m blockBottomPadding  This sets the padding between the contents of a cell and bottom edge of the cell  for a block of cells    It has one required attribute  Length   It has two optional attributes  start and stop        blockTopPadding  This sets the padding between the contents of a cell and top edge of the cell  for a block of cells    It has one required attribute  length   It has two optional attributes  start and stop     m blockBackground  This sets the color to be used for the background for a block of cells in your table   It has one required attribute  colorName   It has two optional attributes  start and stop     a lineStyle  This allows you to use lines to border your table   It has two required attributes  kind  with the options of GRID  BOX  OUTLINE  INNERGRID   LINEBELOW  LINEABOVE  LINEBEFORE and LINEAFTER   and colorName  which must be  the name of a color    It has three optional attributes  thickness  start and stop                                            13 4  More about block tables    A few final things to be aware about when using tables  in RML  table cells  as contained by 
50.  of the frame which you wish to switch to  The   lt setNextFrame  gt        15       empty  or  singleton  tag   it doesn t take any content  Put in    setNextFrame name  F5     and your text will flow into the frame specified  It should appear outside  your paragraphs   between one  lt  para gt  and      next   para   tag     If you have defined more than one kind of template  by using   pageTemplate   in      template section at  the head of the RML document   you can also force RML into using a new template for the next page  You do  this by using the   setNextTemplate   tag  This tag has only one attribute   the mandatory one of name    which tells RML which template it should use        In practice  you would usually set the next template and then use a next Frame       setNextTemplate name  yetAnotherTemplate         lt nextFrame  gt        7 8  Preformated text    pre and xpre    One tag that is also a flowable  but that can t be used inside the  lt para gt  lt  para gt  tagsis  lt pre gt   Just as in  HTML  the  lt pre gt  tag denotes pre formatted text  It displays text exactly as you typed it  with the line breaks  exactly where you put them and no line wrapping  If you want to keep any formatting in your text  such as tabs  and extra whitespace   enclose it in  lt pre gt  tags rather than   para   tags     You can also pass a style to the  lt pre gt  tag  If you don t use the optional style attribute  anything between the   lt pre gt  tag andthe  lt  pre gt  tag wi
51.  of your version of RML2PDF please see the release notes and  READMEs that come with the package     1 3  What is RML   RML is the Report Markup Language   a member of the XML family of languages  and the XML dialect used  by rml2pdf to produce documents in Adobe s Portable Document Format  PDF      RML documents can be written automatically by a program or manually using any word processor that can  output text files  e g  using a  Save as Text  option from the save menu   Since RML documents are basic text  files  they can be created on the fly by scripts in Python  Perl  or almost any other language     RML makes creating documents in PDF as simple as creating a basic web page   RML is as easy to write as  HTML  and uses  tags  just like HTML  It is much easier than trying to write PDF programmatically     1 4  What is this document     This document is a user guide and tutorial for RML  It deals with RML as specified in the RML DTD   rml dtd   If your installation of RML uses a later version  you will need a later version of the DTD and of this tutorial   Look on the ReportLab website  http   www reportlab com  for more details     This document has been generated from RML  If you need another example of RML in action  look at the file   rml user guide rml  to see how this file was produced     1 5  Who is this document aimed at   This document is aimed at anyone who needs to write RML  It assumes that you have some experience with    some form of programming or scripting
52.  off     The circle needs the following attributes passed to it     the x and y co ordinates of the point where its center should be     its radius    If you imagine the e11ipse inside a rectangle  the x and y attributes give the co ordinates for the bottom  left hand corner  and the width        height attributes give the co ordinates for the top right hand corner of  the box          shapes also have two optional attributes     fill  which tells the parser if the shape should be filled in or not  and    stroke which tells it if the shape should have its outline displayed     Both these attributes take Boolean values as arguments  You can uses either  1  or  yes  to set them as on  or     0  or  no  to set them as off     The following example shows various combinations of attributes for each of the basic shapes  Notice how this  example starts with the XML definition   you can get away with not using it  but it is still better to make sure it  is there     Page 18            User Guide Document generated on 2014 09 25 13 10 59    Simple Text and Graphics with RML        Figure 3  Output from EXAMPLE 3    EXAMPLE 3     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM  rml dtd         document filename  example 3 pdf         template     lt pageTemplate id  main  gt      lt pageGraphics gt      lt         set the font and fill colour for the title     gt    lt fill color  red   gt    lt setFont name  Helvetica  size  24   gt    l
53.  on   ol   or   ul   tags     Definition lists are not yet implemented     A simple example of nested ordered unordered lists       story      ol bulletColor  red  bulletFontName  Times Roman       li bulletColor  blue  bulletFontName  Helvetica  gt    lt para gt   Welcome to RML 1     lt  para gt      lt  li gt   la     lt ul bulletColor  red  bulletFontName  Times Roman  bulletFontSize  5  rightIndent  10  gt        Page 38    RML User Guide Document generated on 2014 09 25 13 10 59     lt li bulletColor  blue  bulletFontName  Helvetica  gt    lt para gt     unordered 1     lt  para gt       1     lt li gt    lt para gt    unordered 2    lt  para gt    dex      ul     lt  li gt    lt  ol gt      lt  story gt        For more examples of how to use lists see  test 046 lists rml  in   rlextra rml2pdf test         7 7  Using multiple frames    If you have split your page into more than one frame  you can flow text between frames  To do this you use the    nextFrame    tag  This is an  empty  or  singleton  tag   it doesn t take any content  Put in   lt nextFrame  gt  and your text will continue into the next frame  It should appear outside your paragraphs    between one  lt  para gt  and      next   para   tag  An optional name attribute can be used to specify the  name or index of the frame which you wish to switch to     You can control the automatic switch of frames by using       lt setNextFrame  gt  tag  The required name  attribute can be used to specify the name or index
54.  p  lt greek gt r lt  greek gt  P  lt greek gt R lt  greek gt       lt greek gt s lt  greek gt   gt   lt greek gt S lt  greek gt       lt greek gt t lt  greek gt  T  lt greek gt T lt  greek gt   v  lt greek gt u lt  greek gt  Y  lt greek gt U lt  greek gt   w  lt greek gt v lt  greek gt      lt greek gt V lt  greek gt    0   lt greek gt w lt  greek gt  Q  lt greek gt W lt  greek gt       lt greek gt x lt  greek gt     lt greek gt X lt  greek gt       lt greek gt y lt  greek gt      lt greek gt Y lt  greek gt   5  lt greek gt z lt  greek gt  Z  lt greek gt Z lt  greek gt     Page 116    RML User Guide    Appendix D   Command reference    All attributes are optional unless otherwise specified     document    lt document  filename  myfile pdf   compression  0 1 default   invariant  0  1 default   debug  0 1   userPass  uuserpw   ownerPass  ownerpw   encryptionStrength  128 40   permissions  print annotate      gt     lt  document gt     Above is the story based form for the document tag   Encryption will only take place if a userPass is specified     document   lt document   filename  myfile pdf    gt    lt pageInfo gt     lt  pageInfo gt    lt pageDrawing gt     lt  pageDrawing gt    lt  document gt     Above is the PageDrawing based form for the document tag     Document generated on 2014 09 25 13 10 59    string    required    PDF compression  default     PDF invariance  default     Debug document production  0     Encryption user password    Encryption owner password    Encr
55.  pdf   return response    The       function has the following interface     def go xmlInputText  outputFileName None  outDir None  dtdDir None   passLimit 2  permitEvaluations 1  ignoreDefaults 0   pageCallBack None   progressCallBack None   preppyDictionary None  preppyIterations 1   dynamicRml 0  dynamicRmlNameSpace      encryption None   saveRml None   parseOnly False              xmlInputText must      a string which contains the RML specification for the PDF document to be  generated           outputFileName when specified overrides any output file name specified in the xml input text  You  may also pass in    file like object  e g  a StringIO  file object or web request buffer   in which case  nothing is written to disk        outDir  output directory  parameter when present specifies the directory in which to place the output  file     a dtdDir is an optional DTD directory parameter which specifies the directory containing the DTD for  the current version of RML     a passLimit of None means  keep trying until done   of 3 means   try 3 times then quit         permitEvaluations when false disallows the evalString tag for security  e g  web apps         a ignoreDefaults 1 means  do one pass and use the default values where values        not found         pageCallBack isacallback to execute on final formatting of each page   used for counting number  of pages     m progressCallBack is acleverer callback  see the progressCB function in  reportlab platypus doctemplate     
56.  precise layout of a printed document  and RML2PDF  converts this to a finished document in one step  In a dedicated reporting application  other components of our  toolkit handle data acquisition and preparation of the RML document     RML2PDF on its own also fills a key technology gap  Our full toolkit relies heavily on the Python scripting  language  Nevertheless we recognize that IT departments and software houses have their own distinct skill sets  and development tools  A company may already have developed a rich 3 tier architecture with the key business  data in Java or COM objects on an application server  All they need is the formatting component  They can use  exactly the same techniques they use to generate HTML  XSLT  JSP  ASP or anything else  to generate an  RML file  and the program turns this into a finished document  Fast     Unlike a number of other formatting languages  RML aims squarely at corporate needs  Paragraph  table and  page styles are kept in independent  stylesheets   allowing reuse and global changes across a family of  documents  The table model has been designed for efficient rendering of business data  And a plug in  architecture lets you easily develop and add in custom vector graphics or page templates within the same tool  set     RML2PDF can also work in tandem with our PageCatcher product  PageCatcher is a support tool which extracts  graphical elements from PDF files for inclusion in documents generated by RML2PDF or the ReportLab core 
57.  rotate a graphic       rotate   takes one mandatory attributes called degrees  which is the number of degrees to rotate the  object  A positive number for degrees rotates it anti clockwise  a negative number rotates it clockwise     When using   rotate    objects are rotated around the current origin  If you want to rotate a specific element  ofapageGraphic or illustration  you will have to usea translate to move the origin before you    do the rotate     If yu translate to      middle of the page  rotate by 90 degrees and then draw the string  hello   the  hello   will appear starting in the middle of the page going upwards     Examples       rotate degrees  90      lt     ANTI clockwise    gt       rotate degrees   90      lt     clockwise    gt        This is whata   rotate   looks like with degrees set to 45 and  45     Page 72    Document generated on 2014 09 25 13 10 59    RML User Guide  Original degrees 45    Figure 15  A rotate with a positive value for degrees     ple    Original degrees   45    Figure 16  A rotate with a negative value for degrees     10 7  Skew     lt skew gt  isa transform which distorts both axes of a graphic  It is non orthagonal   in other words  it is a  transformation that does not preserve right angles      lt skew gt  has two mandatory attributes  alpha and beta  Both are angles   look at the example below to see    how they work     Example      lt skew alpha  10  beta  10   gt           This is what a skew withan alpha of 10andabeta of 
58.  size  12   gt     fill colors black        drawCentredString x  58  y  12  gt dx 50 dy 50   drawCentredString       lt     This is relative to the origin of the black lines in the illustration     which is why it doesn t match the actual translate performed     it is what the translate would be if the origin was at 15 40    gt       setFont name  Helvetica Bold  size  50   gt      fill color  red   gt    lt translate dx  55  dy  91   gt      lt drawString x  0  y  0  gt X lt  drawString gt        illustration         10 5  scaling     lt scale gt   as its name suggests  allows you to stretch or shrink a graphic     Page 71    RML User Guide Document generated on 2014 09 25 13 10 59    The   scale   tag takes two optional attributes  sx        sy  sx is how much to scale      X axis  and sy   is  how much to scale the Y axis  The scaling does not have to be proportional   omitting one allows you to change  the scaling in one direction only  And you can shrink the shape as well as scale it up   an sx or sy of  2   doubles the size of it  butan sx or sy of  0 5  halves it     Scale factors can also be negative  Using an sx of  1 and an sy of   produces a mirror image     Examples      lt scale sx  2  sy  0 25   gt       scale gx    2   gt        scale          5 5       This is what a scale with a sx of 2             sy of 2 looks like        Original sx 2 sy 2    Figure 14  An example of the  lt scale gt  tag in use    10 6  rotations    The   rotate   tag allows allows you to
59.  size in points to be used  imageHeight  the height of the image  using 0 will cause the pixel size in points to be used  imageMask a transparency  colour or the word  auto   this only works for image types that support transparency  imageLeftPadding  space to be used on the left of the image  imageRightPadding space to be used on the right of the image   imageTopPadding space to be used on the top of the image  imageBottomPadding space to be used on  the bottom of the image  imageSide which side the image should go on   left  or  right      Example      lt imageAndFlowables imageName     doc images replogo gif   imageWidth  141  imageHeight  90  imageSide  left  gt      para style  hl   Test imageAndFlowables tag with paras lt  para gt      para style  stylel  gt   We should have an image on the  lt b gt right lt  b gt   side of the paragraphs here       para       para style  stylel     Summarizing  then  we assume that the fundamental error of regarding  functional notions as categorial may remedy and  at the same time   eliminate the levels of acceptability from fairly high  e g   99a   to  virtual gibberish  e g   98d    This suggests that the theory of    syntactic features developed earlier delimits a descriptive fact  We    have already seen that any associated supporting element is not quite    equivalent to the traditional practice of grammarians  From Cl  it   follows that the theory of syntactic features developed earlier can be   defined in such a way as to impos
60.  something to such a small size that it   shrinks to nothing   Be especially careful when doing scaling with large factors  Something that may  have been a small error without the scaling may put your object off the page entirely once you have  performed the   scale       wm        scaling operation scales everything   including line widths  If you are taking a huge diagram and  scaling it down  the lines may be scaled out of existence  Conversely  if you take something  microscopic and enlarge it  you may end up just getting a blob due to the width of the lines being scaled  up as well     a Another thing to remember is that these transformations are incremental   in a series of transforms   each one will modify the output of the one before it  So the order you carry the operations out in is very  important  The result of the sequence  translate  rotate  scale  is very different to that of   scale  rotate  translate      Page 74    RML User Guide Document generated on 2014 09 25 13 10 59       If performing multiple operations  use the order  translate   gt  rotate   gt  scale or  skew  whenever possible  Using a different order may result in the axes being distorted or other results  that lead to an ugly output that isn t what you were trying to do     10 10  Bitmapped images    RML also allows you to insert pre existing images into your PDF files  If you have a graphic file in either the   gif           format  you can use the   image   tag to insert it into your document 
61.  td gt   LEEF          td                  lt  td gt                  td    5t    td    a RIGHT   lt  td gt   usos  xor    td                  lt  td gt   a                    tes    td    a RIGHT   lt  td gt              lt  blockTable gt      lt spacer length  15   gt     lt para gt a value for  lt i gt blockAlignment lt  i gt  lt  para gt    lt para gt VA value for  lt i gt blockValign lt  i gt  lt  para gt    lt para gt  lt i gt MDLE MIDDLE for VA in cells 3 2 and 3 3 lt  1 gt  lt           gt      lt  Sstory gt      lt  document gt        Page 100    RML User Guide Document generated on 2014 09 25 13 10 59    Example 11   lines and alignment in tables     a LEFT  VA TOP   VA TOP   VA  TOP       a RIGHT  VA TOP         a LEFT  1 1 Cell 2 1     VA MIDDLE      a LEFT  1 2    VA MIDDLE    a LEFT  1 3   a LEFT  1 4 2 4   a LEFT  1 5 2 5   a LEFT  1 6 2 6    Figure 23  Output table from EXAMPLE 11    a value for blockAlignment  VA value for blockValign    MDLE MIDDLE for VA in cells 3 2 and 3 3    Page 101     a RIGHT      VA MDL   a RIGHT      VA MDL   a RIGHT      a RIGHT      a RIGHT      a RIGHT             User Guide Document generated on 2014 09 25 13 10 59    1 4 Example 12   images and padding in tables    This example shows images in a table and the way to use the various padding attributes     For comparison purposes   The cells that contain pictures in this table are all 166 pixels in height and 161 pixels in width   Where padding is used  it has a value of 20 pixel
62.  you to use objects from outside your RML  document     plugInGraphic    AplugInGraphic identifies a function  callable  in a module which takes a canvas and a data string as  arguments and presumably draws something on the canvas using information in the data string     Example      lt plugInGraphic module  mymodule  function  myfunction  gt data string   plugInGraphic         when executed results in effectively the following execution sequence     import mymodule  mymodule myfunction canvas   data string      using the current canvas object      lt PlugInGraphic gt  has two mandatory attributes  module and function  It is used in the   lt pageGraphics gt  section of your document     plugInFlowable    AplugInFlowable identifies a function  callable  in a module which takes a canvas data string as an  argument and returns a flowable object      Example       plugInFlowable module  mymodule  function  myfunction  gt data string lt  plugInFlowable gt     when executed results in effectively the execution sequence     import mymodule  flowable mymodule myfunction  data string    story append flowable     using the current canvas object     plugInFlowable has two mandatory attributes  module and function  It is also used in the   lt pageGraphics gt  section of your document     8 8  Integrating with PageCatcher  catchForms  doForm and includePdfPages    You can use our product PageCatcher to capture individual pages from an external PDF file  e g  application  forms  government
63. 0  stop   1 0   gt    lt blockTopPadding length  40  start  0 2  stop   1 2         lt     set the top and bottom padding for the last row    gt    lt blockBottomPadding length  40  start   1 4  stop   1 4   gt    lt blockTopPadding length  40  start  0 4  stop  0 4   gt            lt  Use of      15       lt lineStyle kind  GRID  colorName  darkblue   gt      lt  blockTableStyle gt      lt paraStyle name  paddingTableStyle   fontName  Helvetica BoldOblique   fontSize  10     textColor  white        Page 102            User Guide Document generated on 2014 09 25 13 10 59    alignment  CENTER   es   lt  stylesheet gt      lt story gt      lt title gt Example 12   images and padding in tables lt  title gt       spacer length  1cm   gt      lt blockTable style  myBlockTableStyle   rowHeights  166 28 166 28 166 28   colWidths  161 161 161    gt   Sie  stas   lt illustration width  141  height  90  gt    lt image file  images replogo gif   x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   Quoc          141 0 141 90  141 90 0 90  0590000     lines     lt  illustration gt    lt  td gt   stas   lt illustration width  141  height  90  gt    lt image file  images replogo gif   x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   0 0 141 0                      90         90 0 90     90 00   lt  11       gt    lt  illustration gt    lt  td gt   
64. 0  stop  3 0   gt         lt     This sets a textColor for all the text in the table    gt      lt blockTextColor colorName  black   gt            lt 1   This sets    textColor for the first row    gt    lt     Since it comes arter the above setting    2    n      ievernrdes dt for this cow          lt blockTextColor colorName  white  start  0 0  stop  3 0   gt         This sets    textGolor    column als overriding    gt      amp     the first textColor setting for this row    gt      lt blockTextColor colorName  blue  start  1 1  stop  1 6   gt              This sets a background color for the first row   gt      lt blockBackground colorName  red  start  0 0  stop  3 0   gt      lt     This sets a background color for the rest of the table    gt            lt blockBackground colorName  cornsilk  start  0 1  stop   1  1                  lt     This sets a background color for an individual cell      lt     This has to go AFTER the above blockBackground              lt     otherwise it would be overpainted by the cornsilk color    gt      lt blockBackground colorName  lightcoral  start  3 3  stop  3 3   gt      lt  blockTableStyle gt    lt  stylesheet gt      lt SEOry          Page 94    RML User Guide    Document generated on 2014 09 25 13 10 59     lt title gt Example 10   colors and fonts in tables lt  title gt       spacer length  1cm   gt      lt blockTable style  myBlockTableStyle     rowHeights  3 5cm 2cm  2cm 2cm 2cm  2cm 2cm     col     lt tr gt      lt td gt Cell   
65. 1  Using multiple                                     RE el are    Poe a RR UR  38  7 8  Preformated text           and xpre                                                                                38                        sat aS Sha ML         u a    s 39                  POMS ia                 ua                             Mes RN 42  Part II   Advanced Features 44  8  Miscellaneous useful features                                                                                           44  Space NUM      ioo sama aa opo dad               RE MEE 44   amp 2                             asnu e                                        44  8 3  Seq  segReset  segChain and                            44  S4  Entities o S ea Ut Mau                                                        48             ILC accra  TETTE 49  8 6  CDATA    unparsed character data                             tn e viso ven               49  8 7  Plug ins  plugInGraphic and                          50  8 8  Integrating with PageCatcher  catchForms  doForm and includePdfPages               50              NNNM                             53  BPO Eormdielq Ag Sues                                    53  8 11  Colorspace Glee king      Sho                                 61  9  About Cross References and Page Numbetrs                                                                   62  9 1  the namedString tag and forward references                                    J  aa    62  92  Multiple pass pdf f
66. 30 looks like     Page 73    RML User Guide Document generated on 2014 09 25 13 10 59    beta    alpha       Original alpha 10 beta 30    Figure 17  An example of the  lt skew gt  tag in use     10 8  Generic affine transforms    A transform allows the coordinate space to be filtered through a general two dimensional affine transform  All  the other coordinate transformations can be defined in terms of a transform  A transform requires 6 numbers a   b  c  d  e  and f to define the transformation     x  ax cy e  y   bx   dy   f    For example to specify a 1  b 1 2  c 1 3  d 1 4  e 1 5 and f 1 6 write     lt stranstorm gt l 1 2 1 5 1 4 2 5 1 6                            NOTE            examples from this section are gathered together in      file example 8 rml      10 9  About scale  rotate  and skew    m  tis very easy to move objects  off the page   If you are doing a   translate   asa   lt pageGraphic gt   it is possible to put the origin off the visible area of the page  If you are doing a    translate            illustration         checks are performed about whether      object is inside  the limits of the   illustration   or not  so it is still possible to put it outside the limits of the page  and lose it  If you expect to see a diagram and all you get is a blank page  this is the most common  cause       Scaling has its own version of the same problem  It is possible to   scale   an object so that most or  all of it is off the page  but it is also possible to   scale  
67. Appendix C   Letters used by the Greek tag                                                                       115  Appendix D   Command reference                                                                                      116    Page 4    RML User Guide Document generated on 2014 09 25 13 10 59    1  Introduction    1 1  ReportLab PLUS    ReportLab s solution solves several central problems that ebusinesses face in creating publishing caliber reports  that are customized  produced in real time  in volume  and platform independent  Existing reporting tools are  limited to database reports  are typically Windows based  have problematic restrictions on layout and graphic  design  and go straight to a printer  More complex publishing systems involve pipelines of applications which  are simply too unwieldy for real time use in large scale environments    ReportLab s product suite allows direct creation of rich PDF reports on web or application servers in real time   The tools run on any platform  can actively acquire data from any source  XML  flat files  databases   COM Corba Java   place no limits on the output  and facilitate electronic delivery and archival  The ReportLab  suite lets you define your own business rules to automatically create custom online reports  catalogs  business  forms  and other documents    RML2PDF is a central component of the toolkit  a translator which converts high level XML markup into PDF  documents  Report Markup Language describes the
68. Bei       RML User Guide    Report Markup Language  Document generated on 2014 09 25 13 10 59       ReportLab Europe Ltd   Thornton House  Thornton Road  Wimbledon   London SW19 4NG  UK    RML User Guide Document generated on 2014 09 25 13 10 59    1  Introducti  n RR eA 4                     S oeste           4  1 2  Installati  n and Ue scs ettet EUR Nm obtu      rout em eb Cb alae 4  13  Whatas R MIS uu seit ntu                              Su            7  1 4  What is this eL ANE RT                           e 7  1 5  Who is this document aimed             p eite           IH                 7  1 6  Conventions used in this               1                                           7  Part I   The Basics 9  2  Pages and pag   SCF  CDUFES oues ceder etri uuu                     9  21 X MI  syntax and RMG             inten      tetas    adel ack                9  2 2  Le DEOLOB n ss anus At                                           9  2 3  Document forms  stylesheet pageDrawing vs template stylesheet story                   11  3  Basic Text Operations                                                                                                       14  3 1  Coordinates and measurements  assa ir RUE Te or RO AS RU nsi tad 14  SUUS MIS                                14  2 9  Berne TOR Son esau l u SS                                        Pr b      14  3 4  Basic text operations   setFont and                  15  4  Basic figures   lines and shapes                        
69. CMYK colour values    SEP    Spot Colors    only   all colour values must define a  spotName  value   SEP_BLACK   spot colors  plus shades of grey only    SEP CMYK   spot colors plus          values only     The use of any color definitions outside the specified type will result in an exception when you try to compile  the document  thereby ensuring that  for instance  a document can be produced for CMYK or spot color printing  without containing any RGB color definitions     Any  named  colours  see appendix    or  reportlab lib colors py   for black or shades of grey are automatically  converted to cmyk rgb as required  So you can use lowercase  black  as a color in all models except           However  any other RML  named  colors such as  aqua  or  hotpink  will not be converted     Page 62    RML User Guide Document generated on 2014 09 25 13 10 59    9  About Cross References and Page Numbers    Many documents  such as this one  require page cross references  For example the table of contents of this user  guide lists the page numbers of the beginnings of each part  chapter  and section     RML provides several features that support cross referencing and page number calculations  The      code   name   endcode   and    code   NamedString   endcode   tags allow forward referencing and the      code   evalString   endcode   tag allows computations of page numbers  or other computations  inside an  RML text  Furthermore these techniques may be combined with preprocessing me
70. O10 018 00 09090 91000 61916016             Text 123      Text 123                      123     Text 123    Text 123      Text 123      Text 123    Text 123                     Text 123    Text 123    Text 123     Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123    Text 123      Text 123      Text 123    Document generated on 2014 09 25 13 10 59    lightcoral  lightcyan  lightgoldenrodyellow  lightgreen  lightgrey   lightpink  lightsalmon  lightseagreen  lightskyblue  lightslategray  lightsteelblue  lightyellow   lime   limegreen   linen   magenta   maroon  mediumaquamarine  mediumblue  mediumorchid  mediumpurple  mediumseagreen  mediumslateblue  mediumspringgreen  mediumturquoise  mediumvioletred  midnightblue  mintcream  mistyrose  moccasin  navajowhite   navy   oldlace    olive    Page 110    Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex     OxFFDEAD  0x000080  OxFDF5E6  0x808000          xF08080  xEOFFFF              2       0  90    90    xD3D3D3                     6                      x20B2AA    Ox87CEFA  0x778899    xBOCADE       xFFFFEO  xOOFFOO0  x32CD32    OxFAFOE6                      x800000  X66CDAA  x0000CD  XBA55D3  x9370DB             0x3CB371    x 7BO8EE                         4 801         0xC71585  0x191970       OxF5FFFA    xFFEAEI  XFFE4B5             RML
71. Size  14     label  horiz  resizing  gt some more text lt  textBox gt      lt textBox x 2 7cm  y  0cm   boxWidth  3cm  boxHeight  lcm   shrinkToFit  1   fontSize  14   label  vert  resizing  gt some text          text lt  textBox gt       textBox x  10 5cm  y  0cm   boxWidth  3cm  boxHeight  lcm   shrinkToFits 1   fontSize  14   label  horiz  vert  resizing  gt some more text  Le  text  text lt  textBox gt        no resizing horiz  resizing vert  resizing horiz  vert  resizing  some text some more text  some text some more text 5222     some text some text       Letterboxes    Letterboxes are intended for single line text fields where each letter is contained in a subcell  clearly seperated  from neighbouring cells  This is often seen on official forms where people are expected to write letters of a  word at predefined positions  RML provides such letterboxes  too  and they behave mostly like textboxes  but  show some significant differences  too     Usually  the overall width of a form field element is defined by the mandatory boxWidth attribute  For  letterboxes  though  this is an optional attribute and specifies the width of a subcell containing one letter  The  resulting width of the entire box is defined as a multiple of that boxWidth attribute with another one named  count  which is a mandatory attribute     The following code creates a row of sample letterboxes showing basic attributes      lt letterBoxes x  0cm  y  7 5cm     count  12  gt letterboxes lt  letterBoxes 
72. Two   gt    lt  para gt    lt para gt   Second seq for testTwo   lt seq id  testTwo   gt    lt  para gt    lt spacer length  6   gt    lt para gt    lt seqReset id  testOne   gt   We have just done a  amp lt seqReset id  testOne   amp gt    lt  para gt     spacer length  6   gt    lt para gt   First seq after seqReset for testOne   lt seq id  testOne   gt    lt  para gt    lt para gt   second seq after seqReset for testOne   lt seq id  testOne   gt    lt  para gt     spacer length  6   gt    lt para gt   First seq after seqReset for testTwo   lt seq id  testTwo   gt    lt  para gt    lt para gt   second seq after seqReset for testTwo   lt seq id  testTwo   gt    lt  para gt     spacer length  15   gt    lt para gt   Notice how resetting testOne doesn t affect testTwo at all      lt  para gt      lt  story gt      lt  document gt        Page 48    RML User Guide Document generated on 2014 09 25 13 10 59    seq in seq  seqDefault and seqReset    copied  1  2  3  Reset  1  2  3   simple use of seq   First seq  1   Second seq  2   We have just done     lt                    gt     First seq after seqReset  1  second seq after seqReset  2    If you are going to use multiple seq tags  you need to use the  id  attribute     Better use of seq  We have just done a  lt seqDefault id  test   gt   We have just done a  lt seqReset id  test   gt     First seq  1  Second seq  2    We have just done a  lt seqReset id  test   gt     First seq after seqReset  1  second seq after seqReset  2   
73. age file  myFile2 jpg  x  369  y  493  width  80  height  80   gt      lt  pageGraphics gt        10 11  Text Fields    To allow the creation of forms we have a graphics tag that allows us to specify that the page should display an  entry box     The  lt textField gt  tag goes in the  lt pageGraphics gt  section at the at the start of the RML document  It  has the following optional attributes  id  the field name   value  the field initial value   x  the field x  coordinate   y  the field y coordinate   width  the field width   height  the field height   maxlen   maximum allowd number of field characters   amp  multiline  whether the field may contain more than one  line     As a convenience the attributes may instead be specified using  lt param gt  tags within the body of the   lt textField gt  tag  The name attribute of the  lt param gt  tag should be one of the above attribute names  If  no value attribute or  lt param gt  is seen then the contents of the  lt textField gt  becomes the initial value of    the field     It is an error to define an attribute more than once    10 12  place and illustration    place    Page 75            User Guide Document generated on 2014 09 25 13 10 59    We have seen how graphics and flowables do not mix      RML  The only exceptions to this are        place    tag  and       lt illustration gt  tag   lt place gt  allows you to put a flowable inside a pageGraphic or  illustration  You can include a paragraph inside a grid  or a table insi
74. ageTemplate gt    lt  template gt      lt stylesheet gt      lt initialize gt      lt name id  FileTitle  value  Example 5   templates and    pageTemplates   gt    lt name id  ColumnOneHeader  value  This is Column One   gt    lt name id  ColumnTwoHeader  value  This is Column Two   gt      lt  initialize gt      lt paraStyle name  titleBox   fontName  Helvetica Bold   fontSize  18   spaceBefore  0 4 cm   alignment  CENTER     gt      lt paraStyle name  body   fontName  Helvetica   fontSize  10   leftIndent  5   spaceAfter  5            lt  stylesheet gt      lt story gt    lt para style  titleBox  gt    lt b gt  lt getName id  FileTitle   gt  lt  b gt      lt  para gt      lt nextFrame  gt      lt condPageBreak height  144   gt  lt h2 gt    lt getName id  ColumnOneHeader   gt      h2        para    This is the contents for   b  column one lt  b gt         para         Page 41            User Guide Document generated on 2014 09 25 13 10 59     lt para gt   It uses the default style for paragraph     lt  para gt     lt para gt   Does it come out OK     lt  para gt     lt para gt   There now follows some random text to see how these paragraphs  look with longer content     lt  para gt     lt para gt   Blah blah morale blah benchmark blah blah blah blah blah blah  communication blah blah blah blah blah blah blah blah blah  blah stretch the envelope blah blah blah     lt  para gt     lt para gt   Blah blah blah blah blah blah blah blah blah blah blah blah   hitect blah inter acti
75. also an optional     density    attribute which allows you to print with a thinner  or half tone  layer of ink  If you set a density lower  than 1 0  you don t need to fiddle with the CMYK values for on screen preview  we do that for you       document filename  test 045 separations pdf  invariant  1  colorSpace  SEP  gt     Soocdmd to    color id  BLACK  CMYK   0 0 0 1            Page 87    RML User Guide Document generated on 2014 09 25 13 10 59     lt color id  BLUE  CMYK   1 0 67 0 0 23   spotName  PANTONE 288 CV   gt     color id  BLUE75              1 0 67 0 0 23   spotName  PANTONE 288 CV  density   75   gt        docinit         If you have access to Adobe Acrobat Professional or other print pre flight tool you will be able to preview each  of the plates separately and the inks that are used     The overprint tag is perhaps even more useful when working with spot colours  for example  we have worked    with pie charts where the overall document was limited to black and a specific Pantone blue  and the designer  was able to create some new tints by stacking the blue and black on top of each other     Composite Black plate Blue plate          12 7  Pagination    A document that is intended to be printed as a bound booklet on a press must always have a page count that is a  multiple of four  Even with a different binding technique  documents laid out for print may make use of left and  right facing pages which  go together   RML documents with dynamic content will in man
76. ar as a rectangular shape with some background and border colour  plus some width for the border itself   They also have some sort of text label attached to this rectangle to describe the field s purpose in the context of    Page 54    RML User Guide Document generated on 2014 09 25 13 10 59    the report to the human reader  The text inside the field as well as the one in the attached label also should have  the usual properties like fontname and size and colour  All form field elements have a boxStyle attribute that  can be used to group attribute names and values and reuse them in many field elements with much less typing  effort     But there are also specific features that distinguish these form elements from each other  A checkbox does not  contain text  but only a cross  when checked   and a textbox contains one or more lines of text with different  possible alignments  while letterboxes are used for single line mono space text with visible subcompartments  for each letter     Checkboxes    By default  checkboxes have a very simple style similar to UK bank application forms   an outer rectangle and a  cross which exactly fills it when checked  The attributes control the appearance     It is also possible to supply your own pair of bitmap images which will be used instead of the default drawing  mechanism   this could be used to provide 3d effects  tick and cross icons or whatever is needed  To make use  of this  set the two attributes graphicOn and graphicOff to point 
77. at deal of information on fonts which needs adding to this manual  including embedded Type 1 fonts and encodings and use of embedded subsetted TrueType fonts    Page 44    RML User Guide Document generated on 2014 09 25 13 10 59    Part Il   Advanced Features  8  Miscellaneous useful features    8 1  pageNumber    As you d expect from the name  this tag adds page numbers to your document  This has nothing tricky to  remember   all you have to do is put the      pageNumber    tag where you want the page number to appear     8 2  name and getName    The  lt name gt  tag allows you to set a variable as you would in a programming language  You can then retrieve  this to put in another place by using       lt getName gt  tag  You can do this as many or as few times as you need    so it is handy for things like headers and footers  or for items that you see changing many times over the life of  your document such as version or revision numbers  If you set them using a   name   tag  you only have to  revise them in one place every time they change  rather than having to plough through the document changing  them manually in each location and inevitably missing one       name   has three attributes  id and value are required  but type is optional   lt getName gt  only has one  attribute  id   and this is required so that it knows which name to  yank      In practice  it would look something like this example      lt stylesheet gt    lt initialize gt    lt name id  YourVariableName   
78. ate tags  completely        The nextFrame tag is used because the includedPdfPages places you at the top of the last included  PDF page  This allows you to flow paragraphs or other flowables down your last page  This may be useful if  you want to place text in a form  or use some other pre prepared background for your text  If all you want to do  is just drop in a pre made page  you need this nextFrame to kick you into the next normal page and continue    Page 53    RML User Guide Document generated on 2014 09 25 13 10 59    with your document normally    Look in section 7 6   Using multiple frames   for more info on the nextFrame and setNextTemplat  tags  Look at the file test  test_016_pagecatcher rml for an example of this tag in use        These attributes control the  lt includePdfPages gt  tag     filename filename to include  pages The page list    template optional page template name  outlineText optional outline text  outlineLevel optional outline level    outlineClosed true for closed outline    leadingFrame  yes        10 1 1   notAtTop        if you don t want a  page throw before the first page    isdata boolean true if the file is a pageCatcher  data file    orientation  0   portrait   90   landscape   1801 270   auto  auto  means use the file implied layout    8 9  Outlines    It can go in either graphics or in a story   Assigning outline levels to parts of your document  such as  paragraphs  allows you to build up a hierarchical structure for your document    
79. basic shapes such as rect and circle   and an additional one called  close  If the close attribute is set to  yes  or  1   then once the path is completed  the stroke is finished  off by painting a line from the last point given to the first point  enclosing the figure     The   path   tag has its paired  lt  path gt  tag  Between these two tags  you                 a number of things     a You        have a list of pairs of X Y co ordinates   If this is the case  a straight line is drawn to each point in turn     m You can have a paired  lt moveto gt  lt  moveto gt  tag   If this is the case  you need to give an x y co ordinate pair between these two tags  The  pen  or   brush  then moves to this point  and any further points or instructions given after this  while still  inside the   path   tag  continue onwards from this new point        You can have a paired  lt curvesto gt  lt  curvesto gt  tag   This is similar to both the   curves   tag and the  lt moveto gt  tag discussed above  Inside the pair of   lt curvesto gt  tags  you need to give rml2pdf sets of 3 pairs of X Y co ordinates at a time  Like   lt curves gt    lt curvesto gt  creates a Bezier curve  However  since it is inside a path object  it  already knows one of the points   the start point is assumed to be the last point in the path before the   lt curvesto gt  tag  In other words  the  pen  or  brush  is already in a position  and this is taken as the  first point for your Bezier curve     Here is an example
80. bleWidth and availableHeight give you the remaining height and width of the current frame   doc frame id returns the id of the current frame    doc pageTemplate id returns the id of the current page template    doc page returns the current page number     11 2  Tags    The   docIf     docElse   and   docWhile   tags allow you to control which content is included and  excluded   while  or if  a condition is true or false        The   docPara   tag allows you to include the value of an expression in the output text  This is useful for  debugging document layouts  e g  temporarily inserting paragraphs like  you are  3  inches down the  left   frame of the  chapter first page  template on page  19     but you can also use it to display facts you stored  earlier  The value can be formatted using Python format strings   see the test case above for details         lt docAssign gt  assigns a value to a variable  and  lt docExec gt  executes a statement or expression   The   docAssert   tag allows you to test an expression and raise an exception if it is not true  This can be a    useful quality assurance technique  As with the docPara example for debugging  you can include assertions like   I should now be at the top of page 3  or  I should now be in the footer frame      11 3  Operators    When using docIf or docWhile tags  you can use the following operators to evaluate your conditions     Page 81    RML User Guide Document generated on 2014 09 25 13 10 59    However  bear in mind 
81. boxWidth  0 75cm  boxHeight  1cm   lineWidth  0 1cm     checked  1   gt      lt checkBox x  6cm  y  0cm     lineWidth  0 1cm   boxFillColor  yellow  boxStrokeColor  green     checked  1   gt      lt checkBox x  7 5cm  y  O0cm   lineWidth  0 1cm   boxFillColor  yellow  boxStrokeColor  green   checkStrokeColor  red     checked  1   gt           Page 55            User Guide Document generated on 2014 09 25 13 10 59     lt checkBox x  9cm  y  0     linel  desc 1   line2  desc 2   checked  1   gt      lt checkBox x  11 5cm  y  0   linel  desc 1   line2  desc 2   line3  desc 3     checked  1   gt           X    B b Dx ces  dese 2 desc 2    desc 3    Textboxes    A textbox contains one  but often more lines of text  like in an address field   Of course  it can also contain no  text at all  like for a signature field   Sometimes it is not clear in advance exactly how much text will go into one  such field  Therefore  textbox fields in RML provide a means for automatically resizing the fontsize to shrink  the contained text by exactly what is needed to make it fit into the box  This is a two step process that first tries  to shrink the fontsize to make the text fit horizontally  If that is not enough  it is further shrinked to make it also  fit vertically  This process is controlled using the attribute shrinkToFit     Because human readers are very sensible to reading text and get quickly irritated when it does not feel  right    there is a default amount of space  1 point  left betw
82. ceAfter  3cm   alignment  justify   bulletFontname  Courier   bulletFontsize  13   bulletIndent  0 2in   textColor  red     backColor  cyan     name  mystyle   alias  pretty   parent  oldstyle   fontname  Courier Oblique   Fontsize  13   alignment  left   textColor  blue   labelFontName  Courier   labelFontSize  13   labelAlignment  left   label TextColor  5lue   boxFillColor  blue   boxStrokecolor  blue   cellWidth  lin   cellHeight  lin     Page 147    Document generated on 2014 09 25 13 10 59    string   string   string   string  measurement  measurement  measurement  measurement  measurement  measurement  measurement   left    right    center  or  justify   string  measurement  measurement  string   string    string   string   string   string   measurement    left    right  or  center   string color name  string   measurement    left    right  or  center   string color name  string color name  string color name  measurement  measurement    required    RML User Guide    blockTableStyle     lt blockTableStyle  id  mytablestyle     gt     lt blockFont     gt     lt blockLeading     gt      lt  blockTableStyle gt     Table Style Block Descriptors    blockFont    lt blockFont  name  TimesRoman   size  8   leading  10   start  4   stop  11      gt    blockLeading    lt blockLeading  length  10   start  4   stop  11      gt    blockTextColor    lt blockTextColor  colorName  pink   start  4   stop  11      gt     Page 148    Document generated on 2014 09 25 13 10 59    string    
83. ced figures  section later in this manual      For example  this draws a simple line      lt lines gt     250m TO oam Soden  DE SONT     lt  lines gt        And this starts with the same line  then draws an extra couple of lines below it      lt lines gt   2 10 510 3 51m 10 51m  292m 10 251m 3 5148 10 254  2 odm      3511              lines         It doesn t matter how you arrange the sets of co ordinates  but it helps to keep it human readable if you keep  co ordinates to do with the same line on the same line of RML  This second example could have been written  like this  but it would be much harder to follow        lines      2 099m TO Sim S Sum TO Sim 2  Sam RO  rar y Sum    osoin Oin       lines         One more thing to notice before we move on is that these co ordinates are separated by spaces  They are not  separated by commas as you might expect     As well as just drawing lines  there are a number of attributes you can modify to change the appearance of lines   This is done with the  lt LineMode gt  tag     The most obvious attribute to  lt lineMode gt  is width  You        give   1                 a number for the width  attribute to change the line width to that number of points     Page 22    RML User Guide Document generated on 2014 09 25 13 10 59    width   1 width  5 width   10 width   15    Figure 4  Example of lineMode attribute  width     The join attribute to  lt 11              gt  adjusts how what happens when lines meet  They can either come to     poi
84. change it in one alias  rather than in every individual paragraph that uses that style     8 6  CDATA    unparsed character data    CDATA is    standard XML tag which indicates to the parser  in this case rml2pdf  to ignore anything inside the  CDATA section  It shouldn t parse it or process it in any way   just display it        CDATA section is started with the characters   lt    CDATA    and is closed off with the characters       gt    It  can appear inside any flowable   though it is most useful inside a   pre   tag     CDATA may be useful in places where you have large quantities of      and   gt   characters that you want to  display in your PDF  and that you would rather not have to convert them all to   amp 1t             amp gt     entities   Quoting sections of RML  XML  or HTML code is an example of a good place to use CDATA   if you needed  to revise the code example at a later date  you would have to convert the characters in every tag into entities   CDATA saves you having to do this     However  you should only use CDATA when necessary  If you are using other XML tools  they will also ignore  anything inside a CDATA section     Example     Page 50    RML User Guide Document generated on 2014 09 25 13 10 59     lt xpre gt    lt    CDATA     Anything could go here   lt non_existant_tags  gt     amp   signs     Whatever you want  RML ignores it   rm       xpre         8 7  Plug ins  pluginGraphic and pluginFlowable    Both plugInGraphics and plugInFlowables allow
85. dary  yes   pdfBoxType  MediaBox   pdfPageNumber  4   showBoundary  no   shrinkToFit  no   growToFit  no   caption  sSomecaption   CaptionFont  12   captionSize  lin   captionGap  sSomecaptionGap   captionColor  blue   spaceAfter  4     spaceBefore  4        Document generated on 2014 09 25 13 10 59    string   measurement  measurement   string    yes   no  0   1    yes   no   0  1    MediaBox   CropBox   TrimBox   BleedBox   ArtBox   integer    011  yes no     011  yes no     011  yes no    string   stringform font name  measurement   string   string color name  integer   integer    align  center centre left   right  cermemcerdtryteftirigati CEN TERIOBNTRE LEFTIRIGHT       gt    img    lt img  src  somesrc   width  lin   height  lin   valign  top      gt     Path Operations    moveto   lt moveto gt   5in 3in     lt  moveto gt     Page 140    string   measurement  measurement   top middle bottom      measurement pair    RML User Guide    curvesto     lt curvesto gt   lin lin lin 4in 4in 4in    2in 2in 2in 5in 5in 5in     lt  curvesto gt     Form Field Elements    barCode   lt barCode                              code  Code 11    gt   01234545634563   lt  barCode gt   checkBox    Page 141    Document generated on 2014 09 25 13 10 59    sextuples of  measurements for    bezier curves  measurement required  measurement required                       Code11   required   Code128     2015     Standard39   Standard93     Extended39    Extended93    MSI    FIM    POSTNET     unformat
86. dding  float        imageSide  left    gt      lt para gt     lt  para gt      lt table gt     lt  table gt      lt  imageAndFlowables gt     pto     lt pto gt    lt pto_trailer gt     lt  pto_trailer gt    lt pto_header gt     lt  pto_header gt      lt para gt     lt  para gt      lt table gt     lt  table gt    lt  pto gt     pto_trailer   lt pto_trailer gt    lt para gt     lt  para gt      lt table gt     lt  table gt      lt  pto_trailer gt   pto_header   lt pto_header gt    lt para gt     lt  para gt      lt table gt     lt  table gt    lt  pto_header gt     Page 132    Document generated on 2014 09 25 13 10 59    path to image file or url   image width or 0   image height or 0   image transparency color or  auto   space on left of image   space on right of image   space on top of image   space on bottom of image  hrizontal image location left right     Sequence of  top level  flowables     optional  optional   Sequence of  top level  flowables     Only in PTO   Sequence of  top level  flowables     Only in PTO   Sequence of  top level  flowables     RML User Guide    indent   lt indent  left  lin   right  1cm    gt    lt para gt     lt  para gt      lt table gt     lt  table gt      lt  indent gt    frameBackground    lt frameBackground  color  pink                    right  1cm   start  1      gt    fixedSize    lt fixedSize  width  lin   height  1cem     gt     lt para gt     lt  para gt      lt table gt     lt  table gt      lt  fixedSize gt     Document generated o
87. de a path      lt place gt  takes 4 attributes  all of which are required  x  and y are the x and y co ordinates for where you  want the flowable placed  width and height are the width and height of the flowable     Example      lt pageGraphics gt       place x  10 5cm  y  10 5cm  width  9cm  height  9cm  gt    lt para gt Your flowables would go here  lt  para gt    lt  place gt      lt  pageGraphics gt        illustration    You can think of an   illustration   as like one of the illustrations in a book  It is a  box  of space on the  page which can contain any of the graphics that you would normally expect to find ina  lt pageGraphics gt   tag  The position of this box depends purely on its place in the story  which means that it can appear anywhere  on the page depending on the paragraphs and other flowables around it  This is in contrast to the  pageGraphics which are always placed in a specific place  measured from the origin      Example      lt illustration width  90  height  90  gt    lt fill color  red   gt    lt circle x  45  y  45  radius  30  fill  yes   gt     setFont name  Times Roman  size  8   gt    lt drawString x  0      0  gt     Any graphics could go here      lt  drawString gt      lt  illustration gt        Page 76            User Guide Document generated on 2014 09 25 13 10 59    illustrations in    the story    a place inside a  grid       Figure 18  Output from EXAMPLE 9    Notice the symmetry         place   tag lets you use flowables within a  lt pa
88. e  them  make sure they are on the appropriate path and then register them in the  lt docinit gt  section at the top  of the RML file     Use the  lt registerTTFont gt  and   registerFont   tags to register them  To use a common set of fonts  together as bold  italic etc   you need to put them into a common grouping using the   lt registerFontFamily gt  tag     An example of how to use these tags with different font types and styles can be found in the file  rml2pdf test test 005 fonts rml    3 4  Basic text operations   setFont and drawString    The simplest way to put text on a page is using       lt drawString gt  tag  This places the  string  of text on the  page at the co ordinates you give it  The only attributes you can give it are a pair of X and Y co ordinates  After  the tag itself comes the string of text you want put on the page  and then you need the closing     drawString   tag     DrawString has    pair of companions  DrawRightString        drawCentredString both work in  the same way  but right justify the string and center it  respectively     This is how they look in practice     drawString x  523  y  800  gt   This is a drawString example     lt  drawString gt      lt drawRightString x  523  y  800  gt   This is a drawRightString example     lt  drawRight String gt      lt drawCentredString x  523  y  800  gt        Page 16            User Guide Document generated on 2014 09 25 13 10 59    This is a drawCentredString example     lt  drawCentredString gt    
89. e 156    Document generated on 2014 09 25 13 10 59    font name string  measurement  integer    measurement  integer     DEBUG   INFO   WARNING   ERROR   CRITICAL     RML User Guide Document generated on 2014 09 25 13 10 59    info     lt info gt    lt  info gt   warning   lt warning gt    lt  warning gt   error   lt error gt      lt  error gt     critical     lt critical gt        critical      logConfig      logConfig  level  DEBUG   DEBUG   INFO   WARNING   ERROR   CRITICAL   format  The value of    is     efgrmatstring       filename  somefilename  string  filemode  WRITE   WRITE   APPEND   datefmt  somedatefmt  string               gt     Not implemented    The following tags are allowed for in the DTD but are not implemented by the current version of RML2PDF     li  ol  u  ul  dd  dl  dt    Page 157    
90. e file  images replogo gif     x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   0 0 1410  141 0 141 90  141 90 0 90  o 9000   lt  lines gt      illustratiomn      td    seo       lt t q gt    lt          style  paddingTableStyle  gt   blockLeftPadding with blockTopPadding   lt  para gt    lt  td gt   stas   lt para style  paddingTableStyle  gt   no padding   lt  para gt    lt  td gt          lt          style  paddingTableStyle  gt   blockRightPadding with blockBottomPadding   lt  para gt    lt  td gt    lt  tr gt    lt  blockTable gt      lt  story gt      lt  document gt     Page 106    Document generated on 2014 09 25 13 10 59               User Guide Document generated on 2014 09 25 13 10 59    Example 12   images and padding in tables    blockLeftPadding with  blockBottomPadding    blockRightPadding with    just blockBottomPadding blockBottomPadding    blockLeftPadding with  blockTopPadding    blockRightPadding with    just blockTopPadding blockTopPadding    blockLeftPadding with  blockTopPadding    blockRightPadding with    no padding blockBottomPadding       Figure 24  Output from EXAMPLE 12    Page 107    RML User Guide    Appendix A   Colors recognized by RML    Document generated on 2014 09 25 13 10 59    In this table  the  Color  column gives the name of the color  as recognised in the HTML standard and RML  The hexadecimal number in    the  Hex Value  column corresponds to the red  green a
91. e irrelevant intervening contexts in   selectional rules  So far  a descriptively adequate grammar is rather   different from a general convention regarding the forms of the grammar      para         imageAndFlowables         6 8  More about stylesheets  Page 33    RML User Guide Document generated on 2014 09 25 13 10 59    Just like in a word processor  RML allows you to define a stylesheet at the start of your document  and then  apply it to paragraphs later on  This means that you can define a complicated mixture of settings that you want  to apply to paragraphs  only define it in one place  and refer to it with a simple name at the start of each  paragraph rather than having to type or cut and paste large blocks of text over and over for each paragraph     Each stylesheet starts with the  lt stylesheet gt  tag  There may then be an optional initialisation section where  aliases can be set  bounded by the pair of tags  lt initialize gt  lt  initialize gt    After that come a number  of  lt paraStyle gt  tags   each one defining a style that you want to use for paragraphs  The  lt paraStyle gt   tag must have an attribute name  and then may have as many optional attributes as you want  each one setting  one feature of the appearance of a paragraph        Each one of these  lt paraStyle gt  tags is an empty element  i e  it is closed with       gt   rather than a separate  closing tag   but you might want to indent the tag so that each of the options is on a separate line  T
92. e two endpoints   or  anchor points   and two  nodes         Figure 11  A Bezier Curve    In RML  if you give a curve 4 control points  which we shall call  x1 y 1    x2 y2    x3 y3   and  x4  y4    the  start point of the curve will be specified by  x1 y1  and the endpoint specified by  x4 y4   The line segment  from  x1 y1  to  x2 y2  forms a tangent to the curve  The line segment from  x3 y3  to  x4 y4  also forms a  tangent to the curve  If you look at an illustration of a Bezier curve  you will see that the curve is entirely  contained within the convex figure with its vertices at the control points     Example       template     lt pageTemplate id  main  gt    lt pageGraphics gt                   198 560  198 280  396 280  396 560                66    RML User Guide Document generated on 2014 09 25 13 10 59     lt  curves gt    lt  pageGraphics gt     frame id  first  x1  0 5in    1  0 5      width  20cm  height  28cm   gt    lt  pageTemplate gt      lt  template gt        10 2  paths    To connect lines and curves you need to use the  lt path gt  tag  This allows you to make complex figures     Like the other graphics      RML    path   lives            lt pageGraphics gt  section at the start of the  document     Initially  you must give a   path   tag x and y attributes to tell it the co ordinates for the point where this  path is going to start  You may also at the same time give it attributes called stroke and fill  which do the  same as their counterparts for the 
93. ea   lt illustration width  141  height  90  gt    lt image file  images replogo gif   x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   o O MALY  141 0 141 90         9070790  0 50 0 0   lt  lines gt      illustration      td         Page 103            User Guide Document generated on 2014 09 25 13 10 59     lt  tr gt                 lt t q gt    lt          style  paddingTableStyle  gt    lt b gt blockLeftPadding lt  b gt  with  lt b gt blockBottomPadding   lt  para gt    lt  td gt   clos   lt          style  paddingTableStyle     just blockBottomPadding     para     lt  td gt   stas   lt para style  paddingTableStyle  gt    lt b gt blockRightPadding lt  b gt  with  lt b gt blockBottomPadding lt  b gt    lt  para gt    lt  td gt     rc       lt a gt    lt illustration width  141  height  90  gt    lt image file  images replogo gif   x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   0 0 141 0  141 0 141 90         900 90         lt  11       gt    lt  illustration gt              lt td gt    lt illustration width  141  height  90  gt    lt image file  images replogo gif   x  0  y  0   width  141  height  90   gt    lt stroke color  deepskyblue   gt    lt lineMode width  3   gt    lt lines gt   0 0 141 0  141 0 141 90  141 90 0 90     9000   lt  lines gt    lt  Lilustratien gt    lt  td gt   xtd    illustration width  141  height
94. een the text and any of the borders of the box  which will be  respected by the resizing mechanism  This is hardcoded now  but might become another attribute in the future     The following code creates a row of sample textboxes illustrating different values for the most relevant  attributes  as well as the auto resizing text feature       textBox x  0cm  y  0cm   boxWidth  3cm  boxHeight  1cm     label  labeled textbox  gt some text lt  textBox gt       textBox x  3 5cm  y  0cm   boxWidth  3cm  boxHeight  lcm   boxFillColor  yellow  boxStrokeColor  blue     label  colorful textbox  gt some text lt  textBox gt      lt textBox x 2 7cm  y  0cm   lineWidth  0 1cm     boxWidth  3cm  boxHeight  1cm   boxFillColor  yellow  boxStrokeColor  blue   label  bold textbox  gt some text lt  textBox gt          textBox x  10 5cm  y  0cm   boxWidth  3cm  boxHeight  lcm   lineWidth  0 1cm   boxFillColor  yellow  boxStrokeColor  blue   fontName  Times Bold   fontSize  14     label  textfancy textbox  gt some text lt  textBox gt        Page 56    RML User Guide Document generated on 2014 09 25 13 10 59    labeled textbox colorful textbox bold textbox textfancy textbox                       F gt  7     The following code creates a row of sample textboxes illustrating the auto resizing text feature       textBox             y  0cm   boxWidth  3cm  boxHeight  1cm   fontSize  14     label  no resizing  gt some text lt  textBox gt       textBox x  3 5cm  y  0cm   boxWidth  3cm  boxHeight  lcm   font
95. emplate  the included PDF page will overwrite it     How includePdfPages works with templates    When you have an includePdfPages tag in your RML file  RML outputs a page break before the first new page   leaving you on the same page as the last imported one  This allows you to do template switching      lt setNextTemplate gt      lt setNextTemplate name  myIncludePagesTemplate   gt    lt includePdfPages filename  mypdffile pdf  pages  1 2 3   gt    lt setNextTemplate name  myNormalTemplate   gt      lt nextFrame  gt      lt para gt   This text appears on the next normal  non included  page of your    document      lt  para gt        This snippet switches to a new page template for use with your included pages  adds in the first three pages from  your PDF file  switches back to what is presumably the template you have been using throughout the rest of the  document  and outputs a line of text into the next  normal  page of your document  If you don t want any  headers or footers behind your PDF pages  define a page template called something like  blank   in the  template section at the head pf your document  with a single frame and no decoration on it and use that  If  you are content for your included pages to appear over the template you have been using on the previous pages  Gif the included pages don t have any headers and footers and have large enough margins not clash with the ones  you are using in your document  for example   then you can skip both of the secNextTempl
96. er 1         8 4  Entities  Page 49    RML User Guide Document generated on 2014 09 25 13 10 59    Wom mow    In example 6  we saw our first use of entities  In RML  you can t use the characters   lt      gt   or   amp   inside any  display elements such as drawString or para  If you do  rmD2pdf will assume that they are tags and attempt  to interpret them  Since they won t be valid RML tags  you will just end up getting an error message along the  lines of  Error  Start tag for undeclared element  lt YourNonValidTag gt             To get around this  you should use  entities      When you need to use   lt    replace it with   amp lt     when you need to use        replace it with   amp gt     and when you need to use   amp    replace it with   amp  amp       8 5  Aliases    Aliases allow you to assign more than one name to a paragraph style   The alias tag has two required attributes   id and value     Example     alias id  alreadyDefinedStyleName  value  myNewStyleName        This can be useful in a number of ways     You can give a more descriptive name to a style  So you can define a number of paragraph styles called things  like  ItalicBold  or DesignerOneParagraphStyleTwo  inthe stylesheet for your document   You can then assign aliases to these styles using names that describe the role they fill in your document such as   pictureCaption   abstract    acknowledgement  and so         If at any point you decide to change the style for that kind of paragraph  you can then 
97. ess   top line colour   top cap  butt   round   square   top line count   top line spacing   left line thickness   left line color   left line cap  butt   round   square   left line count   left line spacing   right line thickness   right line color   right line cap  butt   round   square   right line count  right line spacing            User Guide Document generated on 2014 09 25 13 10 59          docAssert    lt docAssert  cond  i  3  condition string required  format  The value of i is 5  __efgrmatstring     gt    docAssign    lt docAssign              string  expr  availableWidth  expression string     gt    docElse    lt docElse  gt                 lt docIf  cond  i  3  condition string   7  gt    docExec    lt                 stmt  i  1  statement string   J gt    docPara    lt docPara  expr  availableWidth  expression string  format  The value of i is   __                       style    string  escape  yes   yes          0   1      gt     Page 123    RML User Guide    docWhile      docWhile  cond  i  3       gt     drawing     lt drawing          module  python_module     baseDir       function  module_function     hAlign  CENTER        showBoundary  no       gt    widget    lt widget  baseDir        module  python_module   function  module_function   name  somename   initargs  someinitargs      gt     Paragraph like Elements    para     lt para    style  myfavoritstyle      lt  para gt     Page 124    Document generated on 2014 09 25 13 10 59    condition string    pa
98. f graphics on it while the rest of the pages are more  text orientated     Each   pageTemplate   tag must have the mandatory attribute id  This gives the template a name  and  allows both rml2pdf and you to refer to it by name     The  lt pageTemplate gt  tag also allows you to override the rotation and pageSize set by        lt template gt  tag     As well as these attributes  you can put any number of  lt pageGraphics gt  intoa  lt pageTemplate gt     lt pageGraphics gt  are      containers for the  lt drawString gt  and shape drawing commands we saw  earlier      In practice  you may have two  lt pageGraphics gt  sections inside a   pageTemplate    The way this is  interperted by RML2PDF is that the first one is carried out before the contents of the story for that page  and the  second one is carried out after the story  This may be of use when you need some elements to overlap others   and particularly useful when you are using the  lt includePdfPages gt  tag  IncludePdfPages places a number  of pages imported from another PDF file into your document  placing them over the content you already have   including any header and footers you have designed   This may mean it obscures headers  footers or something  else you need on very page  The way around this is to place your headers and footers in a second pageGraphics  section  which ensures that it will appear over anything in your story  Provided you have sensibly defined  frames it won t appear over the main content of y
99. few pages show a number of examples of blockTables  Each one shows a page with      RML  listing  followed by a separate page with the result of that table  Each listing contains comments to point out  what each tag involved with the blockTable is doing     Page 93            User Guide Document generated on 2014 09 25 13 10 59    1 1 Example 10   Colors and fonts in tables    This example show various ways of setting the text color  ob lockTextColor   font  blockFont          background color  01                             for regions ina blockTable     Notice the various ways of specifying a region within the table  Also notice the way we have defined heights for  the rows and widths for the columns in the blocktable tag     EXAMPLE 10     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM     rml dtd  gt      lt document filename  example_10 pdf  gt      lt template gt    lt pageTemplate id  main  gt      lt pageGraphics gt      lt  pageGraphics gt     frame id  first    1  72    1  72  width  451  height  698   gt      pageTemplate       template       lt stylesheet gt    lt blockTableStyle id  myBlockTableStyle  gt    lt     This sets a font for every cell from the start of the    gt    lt     second row down to the bottom right hand corner    gt    lt blockFont name  Courier Bold  start  0 1  stop   1  1   gt    lt 1   This sets a font for the first                lt blockFont name  Helvetica BoldOblique  size  24  start  0 
100. ficult layout cases  The  tags documented here have the potential to cause hard to understand exceptions if not used correctly     Conditional formatting allows you to include expressions in your RML text which are evaluated or executed  when the pdf is actually being built  This means that you can vary the content of your document depending on  conditions  such as where you are on the page  which you do not know in advance    For instance  you may be including dynamic content in your document which is likely to be of variable length   You could use the value of one of the document s internal formatting variables to include or exclude certain  content  based on the remaining height of a page or the current page number  One common use is in the case of  creating documents for printing  these could be  padded      with optional content  to make sure that they are  always a 4 page spread  Another useful application would be deciding whether there is space to include a large  image or diagram in the present location    A working example using all of these tags        be found in rlextra rml2pdf test test 039 doc programming rml   Basic programming primitives  assignment  loop  if  while etc   have been made available as tags  These can be  given expressions which can use your own variables  as well as built in ones available during rendering        expressions must be valid python literal expressions    The following internal variables are available to use as conditions    availa
101. geGraphic gt   the    illustration   tag lets you do graphics operations in a box within the flow of the   story    or         story like context such as a table cell      The following example shows the use of both place and illustration     EXAMPLE 9     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM                  gt      lt document filename  example_9 pdf  gt      lt template gt    lt pageTemplate id  main  gt    lt pageGraphics gt      grid xs  lem  Zem  Jem  Acem  5cm  10cm  20cm                Zem  Jem  4cm  5cm  10cm  20cm   gt     place x  10 5cm  y  10 5cm  width  9cm  height  9cm  gt    lt title gt This is a use of  lt i gt place lt  i gt  lt  title gt    lt spacer length  15   gt    lt para gt   This 18    flowable  In this case  it is in a  amp lt para amp gt   tag  but it could be any flowable  It has been placed  inside    grid  but you could put it inside any graphic or  pageGraphics  Using the place tag  you can have complete    control over where you want your flowables to appear        para        spacer length  12   gt        Page 77            User Guide Document generated on 2014 09 25 13 10 59     lt para gt   You can include Greek   lt greek gt abgd lt  greek gt     lt  para gt     spacer length  12   gt    lt blockTable gt    lt tr gt    lt td gt Or lt  td gt  lt td gt even lt  td gt    lt  tr gt    E r    lt td gt a lt  td gt  lt td gt blockTable  lt  td gt   xn   lt  blockTable gt    lt  place gt  
102. gt            lt                expr    format    style       creates a paragraph containing the value of               format  is an optional attribute which can contain the value of  expr  using the Python string formatting  conventions  eg     expr Js      The  style  attribute is optional     eg    docPara expr  i  format  The value of    is                   style  style txt        So if i 2  this results in the text  The value of i is 2       docAssert cond    format       raises an error containing the value of  format  if  cond  is false  eg     eg    docAssert cond  val   format  val is false    gt       docWhile cond    gt    lt docIf cond         Page 82    RML User Guide Document generated on 2014 09 25 13 10 59         docElse    these tags allow flow control while or if the  cond  attribute evaluates to true  See the example above     Page 83    RML User Guide Document generated on 2014 09 25 13 10 59    12  Printing    This chapter covers things you will need to know when creating documents for professional printing  Many  development projects start off targeting an electronic document  which users will either keep on disk  or print  out on an office or home printer  Once you start targeting professional printing presses  things get more  complicated  We have tried to write this in a manner accessible to developers with little prior knowledge of  print  apologies to professional printers for anything we have    glossed over  too lightly  The topics covered in  
103. gt        Page 57    RML User Guide Document generated on 2014 09 25 13 10 59     lt letterBoxes x  0cm                  count  12  gt more letterboxes lt  letterBoxes gt      lt letterBoxes             y  4 5cm   boxWidth  0 75cm     count  12  gt letterboxes lt  letterBoxes gt      lt letterBoxes x  0cm  y  3cm   lineWidth  0 1cm   boxFillColor  yellow  boxStrokeColor  blue   label  some label     count  12  gt letterboxes lt  letterBoxes gt      lt letterBoxes x  0cm  y  1 5cm   lineWidth  0 1cm   boxFillColor  yellow  boxStrokeColor  blue   label  some label   fontName  Courier Bold   fontSize  14     count  12  gt letterboxes lt  letterBoxes gt      lt letterBoxes             y  0cm   lineWidth  0 1cm   boxWidth  0 75cm  boxHeight  0 75cm   boxFillColor  yellow  boxStrokeColor  blue   label  some label   fontName  Times Bold   fontSize  14     count  12  gt letterboxes lt  letterBoxes gt                                           Fb                       808    some label    some label    some label    There may also be instances where you want obvious dividers between each subcell  but you don t want entirely  separate boxes  Letterboxes have something that allows for this   the optional combHeight attribute     In a  standard  letterBoxes element  ie one where the combHeight isn t specified   the divider between each  individual subcell is a line which fills the whole height of the letterBoxes box  If you specify the combHeight   you can vary the height of this line  Th
104. he  Pantone Color Matching System  The CMYK process is a method of printing colour by using four inks   cyan   magenta  yellow  and black  White is the absence of any colour  The Pantone system is a popular  spot colour   system which describes a set of completely standardized colours  allowing different manufacturers in different  locations to ensure that their colours match     The majority of printed material is produced using the CMYK process  Many Pantone colours have good   well known CMYK equivalents     RML allows you to specify colours as CMYK or by spot name  and also provides a mechanism for ensuring that  your document sticks to a particular set of colour definition types     Starting in ReportLab 2 5  a colorSpace attribute can be defined in the  lt document gt  tag  This is a declaration  of your intent  and it lets us carry out some useful checks on your behalf  It will raise an error if you accidentally  use a colour that is not allowed in your colorSpace  Then  to declare a CMYK colour  use the  lt color gt  tag   within the  lt docinit gt  section at the top      lt document filename  test_045_separations pdf  invariant  1  colorSpace  CMYK  gt                         color id  BLUE  CMYK   1 0 67 0 0 23        lt color id  CYAN  CMYRSUDTLOLOLO S       Page 85    RML User Guide Document generated on 2014 09 25 13 10 59    Note that each colour component ranges from 0 to 1  not 0 to 100  you can use any floating point number in  between  Designers tend to thi
105. his is the case  then rml2pdf will count backwards from the end of the last cell  So    1  1  is the bottom right hand cell in a table    2  2  is the one up and to the left of that  and so on     The tags that blockTableStyle can contain are        blockFont  blockfont sets      font to be used in a block of your table   It has one mandatory attribute  name   It has four optional attributes  size  leading  start and stop        blockTextColor  This sets the color that will be used for the text in a block of your table   It has one required attribute  colorName   It has two optional attributes  start and stop     a blockLeading  This sets the leading that will be used for the text in a block of your table   It has one required attribute  Length   It has two optional attributes  start and stop     m blockAlignment  This sets the alignment of the text in a block of your table   It has one required attribute  value   This can be LEFT  RIGHT  CENTER  or CENTRE    It has two optional attributes  start and stop                          m blockValign  This sets how the contents of a block of cells in your table are aligned in the vertical direction   It has one required attribute  value   This can be TOP  MIDDLE  or BOTTOM  and defaults to  BOTTOM    It has two optional attributes  start and stop     Page 91       RML User Guide Document generated on 2014 09 25 13 10 59       blockLeftPadding  This sets the padding  i e  blank space  between the contents of a cell and left hand edge
106. his makes it  easier to see what each style is defining  see the example below for how this looks      One attribute for   paraStyle   that isn t the same as those used by   para   15      parent attribute  Once  you have defined a style using a lt paraStyle gt  tag  you can use those settings as a basis for other styles   parent allows one style to inherit from another     The other attribute that isn t shared by        para   tag is backColor  As you can probably guess  this  attribute sets a background color for the paragraph it is describing     The following optional attributes for   paraStyle          the same as those for the   para   tag   you can find  more description of them in the  Advanced text  section below    fontName  fontSize  leading  leftIndent  rightIndent  firstLineIndent   alignment  spaceBefore  spaceAfter  bulletFontName  bulletFontSize   bulletIndent  textColor        Here is an example of how the  lt stylesheet gt  tag might look in use      lt stylesheet gt    lt initialize gt    lt alias id  style normal  value  style Normal   gt    lt  initialize gt    lt paraStyle name  h1   fontName  Courier Bold   fontSize  12        spaceBefore  0 5 cm     55     lt paraStyle name 2 stylel   fontName  Courier   fontSize  10          lt paraStyle name  style2   parent  stylel   leftIndent  lin          lt paraStyle name  style7   parent  stylel   leading  15   leftIndent  lin   rightIndent  lin            lt  stylesheet gt        Page 34    RML User Guide Docu
107. how the document would appear when printed  The default for is  usually to for the topmost colour to knock out the colour underneath       overprint mode  overprint    turns on overprint for the drawing operations that follow  You can    then set this property to its original value with  lt overprint mode  knockout  gt  when you want to go  back into the default knock out mode     Page 86            User Guide Document generated on 2014 09 25 13 10 59       The sample first example above shows cyan  magenta and yellow circles overlapping one another  set to  overprint and rendered in Acrobat Professional  Without overprint set in the second example  the inks do not  mix on top of each other  Instead  the circles on top knock out the areas that they cover underneath     12 6  Colour separations    When a PDF document is printed professionally  layers of coloured ink  plates  will be printed one at a time on  top of each other  laying down microscopic dots on different angled paths so that more than one colour can be  visible  The process colours  CMYK  will normally have a plate each for full colour printing  but you can  define your own spot colour plates to be printed with a specialist  bucket of ink   One common use is for  companies to have completely standardised colours in their corporate literature  and to be able to print with just  3 plates instead of the usual 4  which saves money and increases consistency  Another case is using metallic  foils or fluorescent paints 
108. ibute which allows you to refer to your style by another name     parent   If this is supplied  it must refer to the name of another style  This style with then inherit from the style named     fontName   An optional attribute  this refers to the font to be used for the main contents of letterboxes or a textbox   it is  ignored for checkBoxes     fontSize   This optional attribute sets the size for the main contents of letterboxes or a textbox   it is ignored for  checkBoxes     Page 59    RML User Guide Document generated on 2014 09 25 13 10 59    alignment   For letterboxes or a textbox  this optional attribute sets the alignment of the contents of the box  It may be either  LEFT  RIGHT  CENTER or CENTRE  It is ignored for checkBoxes                    textColor   An optional attribute that sets the colour for the main contents in the letterboxes or textbox     labelFontName   The  optional  tag specifying the font to be used for the label of the letterboxes  textbox or checkBox     labelFontSize   The  optional  tag specifying the size of the font to be used for the label of the letterboxes  textbox or checkBox     labelAlignment   The  optional  specifying the alignment of the label   may be LEFT  RIGHT  CENTER or CENTRE                   labelTextColor   An optional attribute specifying the colour to be used for the text of the label of an textBox  letterBox or  checkBox     boxFillColor   An optional tag specifying the colour to be used for the background for a textBox 
109. id  someid   type  sometype   default  somedefault     gt     Page 154    Document generated on 2014 09 25 13 10 59    string  measurement  measurement    string   XYZ Fit FitH FitV FitR   measurement  measurement  measurement  measurement   string    string    string  integer    string  string  string    RML User Guide    param   lt param  name  somename     gt   registerCidFont   lt registerCidFont  faceName  VeraBold   encName  WinAnsiEncoding     gt   registerFont   lt registerFont  name  somename   faceName  VeraBold   encName  WinAnsiEncoding     gt   registerFontFamily     lt registerFontFamily  normal  VeraBold   bolda  yeraBold   italic  VeraBold     boldItalic  VeraBold          gt   registerTTFont    registerTTFont  faceName  VeraBold   fileName  somefileName     gt   registerType1Face     lt registerTypelFace  afmFile  DarkGardenMK afm   pfbFile  DarkGardenMK pfb     gt     Page 155    Document generated on 2014 09 25 13 10 59    string    font name string  string    string  font name string  string    font name string  font name string  font name string  font name string    font name string  string    string  string    RML User Guide    restoreState     lt restoreState  gt     saveState     lt saveState  gt     setFont     lt setFont  name  somename     size  lin     leading  4     gt   setFontSize   lt setFontSize   size  lin    leading  4     gt     Log tags  log     lt log                           lt  log gt     debug     lt debug gt      lt  debug gt     Pag
110. ion although you cannot separate an illustration from its frame as you can with  lt storyPlace gt        storyPlace   takes 4 required attributes and one optional one  x  and y are the x and y co ordinates for  where you want the flowables placed  width and height are the width and height of the flowable  Finally    Page 31    RML User Guide Document generated on 2014 09 25 13 10 59    the origin canbe one of pagelframellocal  If not specified local is assumed  The origin attribute  specifies where the x and y attributes are based     Examples      lt storyPlace x  0  width  18cm  height  1cm  origin  page  gt      lt para gt This is at the bottom of the page lt  para gt      lt  storyPlace gt      lt storyPlace x  0  width  18cm  height  l1cm  origin  frame  gt     para  Ihis is at the bottom of the current frame lt  para gt      lt  storyPlace gt                  lt storyPlace x  0  width  18cm  height  1cm  origin  local           lt para gt This is at the current frame position  lt  para gt            lt  storyPlace gt        6 5  pto  Please Turn Over Control    The  lt pto gt  tag is a flowable container that holds an arbitrary number of other flowables  The first two may be  special   pto trailer   or  pto header   tags each of which may contain arbitrary flowables  The idea  is that the trailer flowables are issued at the bottom of the page whenever the main container flowables split  the  header flowables appear at the top of the next frame      pto    pto trailer   
111. ipse x  417  y  382 25  width  507  height  552 25   fill  yes  stroke  yes   gt             color  black   gt     lt drawCentredString x  127 5  y  357  gt   Ellipse   with stroke  but      fill     lt  drawCentredString gt     lt drawCentredString x  297 5  y  357  gt   Ellipse   with fill  but no stroke       drawCentredString       drawCentredString x  467 5  y  357  gt   Ellipse   with both stroke and fill     lt  drawCentredString gt               lt rect x  84 5  y  214 3  width  1 in  height  1 15 in   fill  no  stroke  yes   gt     lt fill color  green   gt     lt stroke color  black   gt      rect     254 5  yc 214 3  wadth  1 an    herzght  1 15 in   fill  yes  stroke  no   gt     lt fill color  blue   gt     lt stroke color  black   gt      rect     424 5  yc 214 3  wudth  l an    herzght  1 15 in     fill  yes  stroke  yes   gt           fill color  black   gt    lt drawCentredString x  127 5      199 1  gt   Rect   with stroke  dut me Eili     lt  drawCentredString gt    lt drawCentredString x  297 5  y  199 1  gt   Rect   with 51 11  but      stroke        drawCentredString         Page 20            User Guide Document generated on 2014 09 25 13 10 59     lt drawCentredString x  467 5      199 1  gt   Rect   with both stroke and fill      lt  drawCentredString gt       rect     84 5      56 5  width  1 in  height  1 15        fill  no  stroke  yes  round  0 15 in   gt      lt fill color  green   gt      lt stroke color  black   gt     rect     254 5  y  56 5  
112. is attribute must be a number between zero and one  where  0  means no    Page 58    RML User Guide Document generated on 2014 09 25 13 10 59    divider at all and  1  means one that is the whole height of the letterboxes element  and therefore  0 25  is a  quarter of the height and so on      The following code creates a row of sample letterboxes showing the combHeight attribute in use      lt letterBoxes             y  0cm   combHeight  0     count  4  gt comb lt  letterBoxes gt      lt letterBoxes x  3 75cm               combHeight  0 25     count  4  gt comb lt  letterBoxes gt      lt letterBoxes x  7 5cm               combHeight  1     count  4  gt comb lt  letterBoxes gt      lt letterBoxes x  11 25cm               lineWidth  0 1cm   boxWidth  0 75cm  boxHeight  0 75cm   boxFillColor  yellow  boxStrokeColor  blue   label  combHeight     fontName  Times Bold   fontSize  14   combHeight  0 5     count  4  gt comb lt  letterBoxes gt        combHeight    Using styles with form field elements    As we ve already mentioned  checkBox  textBox and letterBoxes all allow you to re use styles ina  similar way to the way you can re use styles with paragraphs with the boxStyle tag  Like the other style tags   paraStyle and blockTableStyle   boxStyle lives           stylesheet section  near the start of  your document     boxStyle style can have the following attributes     name   This is the required attribute which allows you to refer this style by name     alias   An optional attr
113. ll appear in the default style for pre formatted text  This uses a fixed width   typewriter  font  such as courier   and is useful for things such as program listings  but may not be what you  want for your quotation or whatever  If you have already defined a style  in the stylesheet section of your          document   then you can make the  lt pre gt  tag use this for your pre formatted text     Page 39            User Guide Document generated on 2014 09 25 13 10 59    Example      lt xpre style  myStyle  gt     this is pre formatted text      lt  xpre gt        The    code               endcode   is similar to         code  pre   endcode   tag in that it preserves line breaks  where they are placed in the text  but    code               endcode   also permits paragraph annotations such as  bold face and italics and font changes  For example  the following mark up     lt xpre gt    this is an  lt i gt xpre lt  i gt   lt b gt example lt  b gt     lt font color  red  gt including red text  lt  font gt    lt  xpre gt     generates the following text    this is an xpre example  including red text     7 9  Greek letters    The  lt greek gt  tag is used for producing Greek letters in RML  This is of most use for equations and formulae   Example   In physics  Planck s formula for black body radiation can be expressed as    RA  c 4   8x X        hc A  1 e T       In RML  this is expressed as     R  greek  l   greek    c 4   8 lt greek gt p lt  greek gt   lt greek gt 1 lt  greek gt  
114. lt super gt 4 lt  super gt          hc   greek  l   greek    1 e lt super gt hc  lt greek gt 1 lt  greek gt kT lt  super gt  1         For a table of the Greek letters used by the  lt greek gt  tag and their representations in RML  look in Appendix  C at the end of this manual     This next example show features from several of the commands describes in the previous sections  such as the  use of frames  the options to the template tag  stylesheets  and so on  See the next section for  information on using the  lt name gt           getName   tags     EXAMPLE 5     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCIYPE  document SYSTEM  rml dtd  gt      lt document filename  example_5 pdf  gt       template pageSize   21cm  29 7cm    leftMargin  2 5cm     rightMargin  2 5cm     topMargin  2 5cm   bottomMargin  2 5cm        Page 40            User Guide Document generated on 2014 09 25 13 10 59    title  Example 5   templates and pageTemplates   author  Reportlab Inc  Documentation Team    showBoundary  1   allowSplitting  20    gt     lt     showBoundary means that we will be able to see the     lt     limits of frames     lt pageTemplate id  main  gt    lt pageGraphics gt    lt  pageGraphics gt     frame id  titleBox  x1  2 5cm    1  27 7        width  16cm   height  1cem   gt     frame id  columnOne    1  2  5      yl  2 5cm  width  7 5cm   height  24 7cm   gt     frame id  columnTwo    1  11      yl  2 5cm  width  7 5cm   height  24 7cm   gt    lt  p
115. me id  chapterNumber   gt   lt seq id  sectionNumber   gt   Installation and Use      h2        para      RML2PDF is available in several formats   etcetera         para      And unless the creator takes great care it may be necessary to adjust various section or chapter numbers in other  entries as well     To avoid this complexity this document is not directly written in RML per se  but is written using a text  preprocessor called    code                   endcode    which automatically builds the table of contents and inserts    the appropriate entries at the top  while keeping track of chapter and section numbers      For very complex documents using a preprocessor of some sort may be advisable     Page 65    RML User Guide Document generated on 2014 09 25 13 10 59    10  More graphics    10 1  curves    We have seen how you can use the  lt lines gt  tag to create a number of straight lines with one command  Not  all the lines you want to draw will be straight  which is why we have the  lt curves gt  tag     Like  lt lines gt   lt curves gt  must appear inthe pageGraphics section of your template  Unlike  lines  you need to specify 4 points as X Y co ordinate pairs  i e  you need to feed curves sequences of 8  numbers at a time  rather than the 4 you need for 1ines      The curves tag produces a Bezier curve  Bezier curves are named after the French mathematician  Pierre                 and are curves that utilize at least three points to define a curve  RML curves use th
116. ment generated on 2014 09 25 13 10 59    stylesheets also allow you to define styles for other tags   you can define styles for blockTables with  the  lt blockTableStyle gt  tag  or the various form creation elements  checkBoxes  let terBoxes and  textBoxes  with the boxStyle tag  Refer to the sections on blockTables and Form Field Tags later in  this document for details on how to use these     Page 35    RML User Guide Document generated on 2014 09 25 13 10 59    7  Advanced text    7 1  Title    The  lt title gt  tag sets the title for a document  or a section of a document  and displays it on the page  By  default  this is set in a larger typeface than the body text  in a similar way that headers are   You can change the  way    title is set by setting a style called style Title  inthe stylesheet section of your document       Note  This tag does not affect what is displayed in the  title bar  at the top of a document       Example      lt stylesheet gt    lt paraStyle name  style Title   fontName  Courier Bold   fontSize  36   leading  44   Wes   lt  stylesheet gt                    lt title gt This is the Title lt  title gt    lt para gt   And it should be set in 36 pt Courier Bold      lt  para gt      lt  story gt        7 2  Headings    h1  h2  h3    Headings are also handled in the same way as in HTML  The most important heading level has its text enclosed  by  lt   1 gt  and  lt    1 gt  tags  and less important sub headings use the  lt h2 gt  lt  h2 gt  and  lt h3
117. n 2014 09 25 13 10 59    measurement  measurement    color  measurement  measurement  boolean    measurement  measurement    Graphical Drawing Operations    drawString   lt drawString  x  lin   ge  Tin    gt    lt  drawString gt     measurement  measurement    Page 133    optional  optional     Sequence of  top level  flowables     optional  optional  optional  optional    optional  optional     Sequence of  top level  flowables     required  required    RML User Guide    drawRightString     lt drawRightString      1         ye rn       drawRightString      drawCentredString     lt drawCentredString                                   lt  drawCentredString gt     drawCenteredString     lt drawCenteredString                 Ape            lt  drawCenteredString gt     ellipse    lt ellipse        1 2d    y    E in    width  5cm   height  3cm   fill  true   stroke  false      gt     Document generated on 2014 09 25 13 10 59    measurement  measurement    measurement  measurement    measurement  measurement    measurement  measurement  measurement  measurement  truth value  truth value    Page 134    required  required    required  required    required  required    required  required  required  required    RML User Guide    circle     lt circle      gt     rect     lt rect      gt     grid     lt grid      gt     lines   lt lines gt    lin lin 2in  lin Zan  zum    lin 3in 2in     lt  lines gt     x               y   Din   radius  3cm   fill  true     stroke  false         11      
118. n referring to lights    such as on a computer screen     RML  Report Markup Language  An XML dialect  created by ReportLab  Inc  and and used by their software rml2pdf  to produce documents in PDF     singletons  See  empty elements      story    The part of an RML document where the main content of a document goes  if it uses the   template stylesheet story  form   This is where text   split into paragraphs by   para   tags   is put     Page 114    RML User Guide Document generated on 2014 09 25 13 10 59    stroke  In RML  the color of the outline of a graphic or text item  as opposed to that of its inside or   111      stylesheet  This is an obligatory part of an RML document  It is where the styles for paragraphs and blockTables are  defined  though it can be empty      template  In those RML documents that use       template stylesheet story  form  this is the part of the document where  any headers  footers  or background graphic elements are defined     vanilla   Plain  ordinary  or standard  from the default flavor of ice cream in the U S     In RML  you can put in letters  numbers  and punctuation in places which allow you to use  vanilla text   but  tags such as   para   or  lt b gt  are not allowed     whitespace   For programmers  whitespace refers to all the characters that appear as blanks on your screen  This includes the  space and tab characters  linefeeds  carriage returns  and other more specialised characters    For designers  whitespace is any areas on a 
119. nd blue  RGB  components in the color   the first two digits represent red  the next    two green and the last two the blue   The  0x  just shows it s a hexadecimal number      Text 123  Text 123    OO                             Text 123    Text 123  Text 123  Text 123  Text 123  Text 123  Text 123  Text 123  Text 123  Text 123    Text 123  Text 123  Text 123  Text 123  Text 123    Text 123  Text 123  Text 123  Text 123  Text 123  Text 123                                                                                   0000090000050 000005000       aliceblue  antiquewhite  aqua  aquamarine  azure   beige   bisque   black  blanchedalmond  blue  blueviolet  brown  burlywood  cadetblue  chartreuse  chocolate  coral  cornflower  cornsilk  crimson   cyan  darkblue  darkcyan  darkgoldenrod  darkgray  darkgreen  darkkhaki  darkmagenta  darkolivegreen  darkorange  darkorchid    Page 108    Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex   Hex           xFOFSFF                       xOOFFFF  x FFFDA       xFOFFFF       xF5F5DC          4  4  x000000       xFFEBCD  x0000FF  x8A2BE2      52  2                        x5F9FA0    7            xD2691E  xFF7F50          x6495ED                       xDC143C  xOOFFFF  x00008B  x008B8B  xB8860B  XA9A9A9  x006400          xBDB76B  x8B008B  x556B2F        8  00  x9932CC    RML User Guide                             
120. nk in terms of 0 100  but we have chosen to follow the PDF specification     The 14 is a string you specify  You will then be able to refer to these colours      name elsewhere      a document    for example  you can then set a table cell background or paragraph style to be  BLUE      The colorSpace attribute is particularly important when dealing with blacks  Many objects in our framework  have    default colour of black  and this is an RGB black    under the hood   If you set the colorSpace  our  framework will  auto convert  blacks for you  thus if a table s gridlines or a chart axis is normally drawn in black  or a shade of grey  implemented originally as RGB   it will be autoconverted to CMYK black or grey  Many  printing presses are able to handle RGB and autoconvert blacks these days  but printers will appreciate it if the  PDFs are pure CMYK as it won t raise alarms in their proofing tools     12 4  Images in CMYK documents    Most bitmap images use an RGB colour model  We do NOT yet have safeguards to check images that you  include in a CMYK document   the colorSpace checks won t warn you  We might add this checking in a future  version  If you are working with a limited number of images  the best approach is to use a professional tool like  Photoshop to create CMYK versions of those images  and check you are happy with the colours when printed     Printers can often handle RGB images in a print job  but it s best to check with them first    12 5  Overprint and knock
121. nt  or the vertex can be rounded or squared off into a bevelled join  The possible values for join are round   mitered  or bevelled        The cap attribute to   1ineMode   adjusts how the ends of lines appear  The end of a line can have a square  end exactly at the vertex  a square end that is extended so it is over the vertex  or a half circle   a rounded cap   These possible values for cap are default  square or round       P  Y    cap   default cap   round cap   square    Figure 5  Example of lineMode attribute  cap     Both the join and cap attributes for  lt lineMode gt  are only really visible if the line you are applying them  to is thick     Another attribute to  lt lineMode gt  is dash  This allows you to specify if the line is dotted or dashed  You  supply it a series of numbers  separated by commas   and it takes them as a pattern for how many pixels the line  is on for  and then how many pixels the line is off  i e  not displayed  for  This can be a simple pattern such as   1 2   which gives you a plain dotted line  or  5 5   which makes the lines sections equal with the spaces   or as  complex as  1 1 3 3 1 4 4 1   a complex pattern of dots and dashes                                                              QU  i       3         4     i    wv  dash z 55 dash z 2 10 dash   5 5 2 10    Figure 6  Example of lineMode attribute  dash     The following example shows examples of most of the attributes that you can use with  lt 11       gt  and    lineMode    Notice
122. ode    attribute must be present  In order to prevent possible formatting anomalies the  default value should be approximately the same size as the expected final value     9 2  Multiple pass pdf formatting  RML2PDF resolves names that are referenced before they have been defined by making  by default  at most    two passes through the text  If the first pass does not define all names before they have been referenced then  RML2PDF formats the document twice    On the first pass the default value for any undefined name is used for formatting the document  and it may  under some circumstances effect the placement of the page breaks   On the second the program uses the    resolved value determined on the first pass where the name is referenced     It is possible to create a chain of references that cannot be resolved  such as       namedString id  a  gt  lt name id  b  default  XXX       namedString      namedString id  b  gt  lt name id  a  default  XXX       namedString      In this case    code  RML2PDF   endcode   will signal an error and fail     It is also possible to have a chain of references which requires more than one pass to resolve  such as     Page 63    RML User Guide Document generated on 2014 09 25 13 10 59      namedString id  a  gt  lt pageNumber  gt  is where    is defined  and   name id  b  default  XXX       namedStrinc    namedString id  b  gt  lt pageNumber  gt  is where B is defined  and   name id  c  default  XXX       namedStrinc      namedString id  c
123. ontent elements will be merged  onOverflow this specifies the action to  be taken if the contents is too large  Allowed values are    code  Jerror   endcode    ie raise an error     Page 32            User Guide Document generated on 2014 09 25 13 10 59       code   overflow   endcode   just scrawl all over the page     code  shrink   endcode   shrink the contents to  fit the allowed space   amp     code   overflow   endcode   truncate the contents at the borders of the allowed  space     The example below shows how to cram star fields into a one inch square     XkeepInFrame maxWidth  72  maxHeight  72  gt       para style  h1  gt A header lt  para gt    lt para style  bt  gt    Many vast star fields in the plane of our Milky Way Galaxy   are rich in clouds of dust  and gas  First and foremost    visible in the above picture are millions of stars  many   of which are similar to our Sun  Next huge filaments of   dark interstellar dust run across the image and block the   light from millions of more stars yet further across our Galaxy    lt  para gt      lt  keepInFrame gt        6 7  imageAndFlowables tag    The  lt imageAndFlowables gt  tag allows flowables to flow around an image  Errors will be caused by  attempts to use  lt nextFrame  gt  and similar tags inside the  lt imageAndFlowables gt  container     The  lt imageAndFlowables gt  tag takes several attributes  imageName the name of the image file or path   imageWidth the width of the image  using 0 will cause the pixel
124. ormatting                              rtis ese tbe eH OP de            62  9 3  Calculated Page Numbers  evalString               63  9 4  Generated RM    sioe pt        cbe toi nitidi dirt ae 63  10  More graphics                  65  TIO TAG Be oed deine                                           65  102                 pc M E M EE M acc RE 66           pri sta onte da    beds            tease aaa  uae eet a late 69     y alaq aqu NL eo DA en bdo    69  TO    SCALING na a h us luu e Rete tote Pao etse fO s 70                              quinua an                          eie                     71                                                  ou              12  10 8  Generic affine transforms                                   ei rs os 73  10 9  About scale  rotate  and skew                                                                           73  10 10  Bitmapped images                                    aes           e t 74  TOT Test              ema o dU abt tib UM M dE 74  10 12  placeand        a                                            74    RML User Guide Document generated on 2014 09 25 13 10 59                                      edel ata 76  10 14 Formand                     ined      78  10 15  W Sc Se TOTS                  ate             t               76  11  Conditional Formattinsg                                                                                                   80  T3  Introeduetioliaya                 a D          S SS yu        
125. orms is the barCode tag  As its name implies  this creates a barcode  in one of a number of different symbologies     The three attributes you need to supply for this tag are x and y to position it on the page and code to inform  rml2pdf which form of barcode you require     This is a brief example of what a barcode tag looks like in use  and what it actually produces                                       0  code  Codell   123456   barCode      Figure 10  The          11  barcode                         This table shows you the allowed names for the code attribute  along with an example of the barcode    produced     come  7o mmo    CU  CU  idi             Page 61            User Guide Document generated on 2014 09 25 13 10 59    i  EVER                                             USPS FIM                 8 11  Colorspace Checking              2 5 supports a way to ensure the consistent enforcement of color models within a document  For more  information on this topic  and examples of when you might want to use different scenarios  please refer to the     Printing    chapter later in this document     RGB  CMYK and the use of  spot colors  such as Pantone can be allowed or disallowed using the  colorSpace   parameter to the document tag  which can be set to the following values     MIXED   The default  As in RML versions before 2 5  rgb  cmyk  spot colors and  named  colors can  all be used     RGB   Permits only the use of RGB colour values    CMYK   Permits only the use of 
126. our page  but it will appear over the top of your included PDFs    Page 30    RML User Guide Document generated on 2014 09 25 13 10 59    allowing you to have the same look and feel for these pages as you do for the rest of your document      See section 8 8   Integrating with PageCatcher  catchForms  doForm and includePdfPages   for more info on  the  lt includePdfPages gt  tag      6 2  Frame and nextFrame    As well as containing  lt pageGraphics gt   each   pageTemplate          also contain frames  These  frames can split the page into more than one region  For each frame        pageTemplate    you must  supply an id  the X and Y co ordinates of the bottom left hand corner  as well as the width andheight of  the frame  You can have one frame ina page  or use two or more to split it into    multi column layout   Frames really come into their own when you use paragraphs and flowables  see the section on  Advanced text   below      This is how it looks in practice         When you are using text in  lt          gt  lt           gt  tags  you can use the  lt nextFrame  gt  tag to force it into the  next frame on the page  Look at the section on  Advanced text  later in this document for more details on  this   An additional attribute overlapAttachedSpace canbesetto 0 or1 to force the frame to overlap  space that is implicitly attached to flowables by their styles  See section 6 5 on styles  The default value for this  attribute is set using the site wide configuration for re
127. out control    When you create a document with two colours layered on top of one another  there are different ways to  combine them  The two alternatives are known as  overprint  and  knockout   Non primary CMYK colours are   of course  already implemented with a mix of up to four inks     problem arises when you decide to stack two  colours on top of each other  Imagine you have a red and a blue CMYK colour which are each made up of  say   6096 black  the K in CMYK   and you want to draw one on top of the other  Should the software  merge the  colours   It can t achieve 120  coverage with the black  So  a decision is needed  Either the topmost colour   knocks out  and replaces anything drawn underneath it  or it  overprints   allowing the colours to mix  in a  manner similar to transparency     When working with separated colours  see below   the printing mechanics are a little different as each colour is  really a bottle of ink  but again  a statement of intent is needed when they overlap   does the top colour replace  what s underneath  or allow both to be laid down on the page     The overprint versus knockout choice is rarely used  and works in slightly different ways for CMYK and for  separated colours   see the section below  Designers will know when they need it  and the developer merely  needs to set a flag     Some PDF viewing software can simulate this effect on screen  Adobe Reader is one of them   it s necessary to  go into the preferences and check a box to see 
128. own as JFIF  JFI  and JPG as well as JPEG     You can use JPEG files in your RML document with the image tag    see also  bitmap    cif    image     jpg  See JPEG     leading   Leading  pronounced  ledding   is the amount of vertical space allotted for a line of type   the distance between  the baseline of one line to the baseline of the next  The name comes from the way that printers used to use thin  strips of lead or brass to separate the lines of metal type    In RML  leading can be supplied as an attribute for the para and paraStyle tags  It is expressed as the  height of the line plus the space between lines  So  for example  using a 12 point font with a leading of 18 gives  you a space between lines of 6 points    You can also have negative leading  By giving a number smaller than the size of font you are using  you can  arrange it so that the lines overlap each other     orthogonal   An adjective from mathematics meaning  relating to or composed of right angles     A non orthogonal transformation is one which does not preserve right angles  skew is a non orthogonal  transformation     PDF   The Portable Document Format     format created by Adobe  this is a standard for electronic documents which  is platform independent due to the freely available Acrobat reader  The PDF file format is a complex indexed  binary format  with a specification 600 pages long   RML is much easier      RGB  A way of specifying a color by its Red  Green and Blue components  Usually used whe
129. page that aren t the content   the bits that are free of text or artwork     XML    The Extensible Markup Language   a document processing standard set by the World Wide Web Consortium   W3C    the people who defined the standard for HTML     Page 115            User Guide Document generated on 2014 09 25 13 10 59    Appendix C   Letters used by the Greek tag    Greek Letter RML Representation Greek Letter RML Representation      lt greek gt a lt  greek gt  A  lt greek gt A lt  greek gt       lt greek gt b lt  greek gt  B  lt greek gt B lt  greek gt   7   lt greek gt c lt  greek gt  x  lt greek gt C lt  greek gt       lt greek gt d lt  greek gt  A  lt greek gt D lt  greek gt       lt greek gt e lt  greek gt      lt greek gt E lt  greek gt       lt greek gt f lt  greek gt      lt greek gt F lt  greek gt   Y  lt greek gt g lt  greek gt      lt greek gt G lt  greek gt   n  lt greek gt h lt  greek gt  H  lt greek gt H lt  greek gt   1  lt greek gt i lt  greek gt  I  lt greek gt I lt  greek gt       lt greek gt j lt  greek gt  9  lt greek gt J lt  greek gt   K  lt greek gt k lt  greek gt  K  lt greek gt K lt  greek gt       lt greek gt l lt  greek gt      lt greek gt L lt  greek gt   H  lt greek gt m lt  greek gt  M  lt greek gt M lt  greek gt       lt greek gt n lt  greek gt  N  lt greek gt N lt  greek gt   o  lt greek gt o lt  greek gt  O  lt greek gt O lt  greek gt   T   greek  p   greek   II   greek   P   greek    0  lt greek gt q lt  greek gt      lt greek gt Q lt  greek gt  
130. para      spacer length  6   gt     para    If you are going to use multiple seq tags   you need to use the  id  attribute      lt           gt      lt h2 gt    lt i gt Better use of seq lt  i gt     hao    para      seqDefault id  test   gt   We have just done     amp lt seqDefault id  test    gt      para      para      seqReset id  test      We have just done a  amp lt seqReset id  test   amp gt      para      spacer length  6   gt     para    First seq    seq id  test         para      para    Second seq    seq id  test         para      spacer length  6   gt     para      seqReset id  test      We have just done a  amp lt seqReset id  test   amp gt      para      spacer length  6   gt     para    First seq after seqReset    seq id  test   gt      para      para    second seq after seqReset    seq id  test           para       lt h2 gt    lt i gt Using two seqs independently lt  i gt    lt  h2 gt    lt para gt    lt seqReset id  testOne   gt   We have just done     amp lt seqReset id  testOne   amp gt      para      para     lt seqReset id  testTwo   gt     We have just done     amp lt seqReset id  testTwo   amp gt        para         Page 47            User Guide Document generated on 2014 09 25 13 10 59     lt spacer length  6   gt    lt para gt   First seq for testOne   lt seq id  testOne   gt    lt  para gt    lt para gt   Second seq for testOne   lt seq id  testOne   gt    lt  para gt    lt spacer length  6   gt    lt para gt   First seq for testTwo   lt seq id  test
131. para gt      lt  story gt      lt  document gt        The  lt pageTemplate gt    lt pageGraphics gt   lt frame gt  and lt paraStyle gt  tags will all be covered in  more detail later on in this guide     Paragraphs start with a   para   tag and are closed witha  lt  para gt  tag  Their appearance can be controlled  with the  lt paraStyle gt  tag     RML allows you to use comments in the RML code  These are not displayed in the output PDF file  Just like in    HTML  they start with a   lt           and are terminated with a         gt    Unlike other tags  comments cannot be  nested  In fact  you can t even have the characters      inside the  lt           gt  section     Page 14    RML User Guide Document generated on 2014 09 25 13 10 59    3  Basic Text Operations    3 1  Coordinates and measurements    In RML  the page origin is in the bottom left hand corner  0 0   Any point on the page can be specified by a pair  of numbers   a pair of X Y co ordinates  The X co ordinate states how far to the right the point is and the Y  co ordinate states how far up it is     When an RML element has co ordinates  the co ordinate origin is the lower left corner  In the case of elements  in a pageGraphic  the origin of the lower left corner of the page  For elements within an   lt illustration gt   the origin is the lower left corner of the bounding box declared by the   lt illustration gt      These co ordinates  and any other measurements in an RML document  can be given in one of four 
132. plate        lt setNextTemplat    name  indextemplate          gt     condPageBreak     lt condPageBreak  height  10cm     gt     Page 130    Document generated on 2014 09 25 13 10 59    string  string    int or string frame index    int or string frame index required  string template name required  measurement required    RML User Guide    storyPlace   lt storyPlace  x          y   Tin                      height  3in   origin  page    gt      lt para gt     lt  para gt      lt table gt     lt  table gt      lt  storyPlace gt                                                         maxWidth  int   maxHeight  int   frame  frameindex   mergeSpace  1 0   onOverflow  error overflow           shrink truncate    id  name     gt      lt para gt     lt  para gt      lt table gt     lt  table gt      lt  keepInFrame gt     imageAndFlowables    Page 131    Document generated on 2014 09 25 13 10 59    measurement required  measurement required  measurement required  measurement required     page    frame   or  local  optional     Sequence of  top level  flowables     maximum width or 0   maximum height or 0   optional frameindex to start in  whether padding space is merged    over flow behaviour  name for identification purposes     Sequence of  top level  flowables     RML User Guide     lt imageAndFlowables  imageName  path   imageWidth  float   imageHeight  float   imageMask  color     imageLeftPadding  float           imageRightPadding  float   imageTopPadding  float   imageBottomPa
133. portlab  in reportlab rl config py      6 3  condPageBreak  conditional page breaks    The   condPageBreak    isa  CONDitional Page Break   To use it  you give it a height in any units that  RML can handle  It then compares this height with the remaining available space on a page  If the space is  sufficient  then the next elements are placed on the current page  but if there is less space than the height you  have given it anything following the  lt condPageBreak  gt  tag is continued on the next page     That is what happens on pages with only one frame  On pages that have multiple frames  this tag acts as a  conditional frame break  If the space in the current frame isn t enough  it will break and place what follows in  the next frame rather than on the next page  The tag and its syntax still remain the same    This tag is particularly useful with large tables  where you want the whole table to be presented on one page  rather than split between two  It can also be used where you have a collection of images  and you want them all  to be on the same page      condPageBreak    has only one attribute   the mandatory one of height     Examples       condPageBreak height  lin   gt       condPageBreak height  72   gt        6 4  storyPlace  out of band flowables    The  lt storyPlace gt  container is a  flowable story that s placed   This allows for dynamically specified  frames to be constructed in the story  This tag is like having an   illustration    amp    place    combinat
134. r        row    gt    lt blockValign value  TOP  start  0 0  stop   1 0   gt      lt     This sets the vertical alignment for        cell    gt    lt blockValign value  MIDDLE  start  2 2  stop  2 2   gt             1   Use of linestyles   gt     lt lineStyle kind  GRID  colorName  silver   gt     lt lineStyle kind  LINEBELOW  colorName  orangered  start  0 0    stop   1 0  thickness  5   gt     lt lineStyle kind  LINEAFTER  colorName  maroon  start  1 1   stop  1 6  thickness  1   gt         lt  blockTableStyle gt    lt  stylesheet gt     Sg y    lt title gt Example 11   lines and alignment      tables lt  title gt       spacer length  1cm   gt        Page 99            User Guide Document generated on 2014 09 25 13 10 59     lt blockTable style  myBlockTableStyle   rowHeights  2cm  2cm  2cm  2cm  2cm  2cm  2cm   colWidths  4cm  3cm  3cm  4cm    gt      lt td gt   a LEFT   VA TOP   lt  td gt     td    VA TOP   lt  td gt     td    VA  TOP    lt  td gt    lt td gt   a RIGHT   VA TOP   lt  td gt                td                  lt  td gt                            2 1 lt  td gt      td    a RIGHT   lt  td gt    lt                    td                  lt  td gt     dd ode ic     td    VA MIDDLE   lt  td gt     td    a RIGHT   lt  td gt               td                  lt  td gt    lt a             td    VA MIDDLE   lt  td gt     td    VA MDL   a RIGHT   lt  td gt    lt            xor    td                  lt  td gt     clc ds ta                     lt td gt   a RIGHT   lt 
135. rString     gt   color   lt color  id  footerString   RGB  77aa00     gt   pageNumber   lt pageNumber  countingFrom  2     gt     Page 152    Document generated on 2014 09 25 13 10 59    string required  string required  string required  string required  string required  string required    hexidecimal red green blue values    integer    RML User Guide    outlineAdd    lt outlineAdd  level  1   closed  true     gt    Chapter 1  section 2    lt  outlineAdd gt    cropMarks    lt cropMarks  borderWidth  36   markWidth  0 5               1                    markLength  18      gt    startindex    lt startIndex  name  somename   offset  0   format  ABC      gt    index    lt index  name  somename   offset  0   format  ABC      gt    showlndex    lt showIndex  name  somename                style  somestyle   tableStyle  sometablestyle      gt     Page 153    Document generated on 2014 09 25 13 10 59    integer  truth value    outline entry text    integer  float  color  integer    string  integer  123                      string  integer  123                      string  string  string  string    RML User Guide    bookmark     lt bookmark    name  somename            11          lin     gt   bookmarkPage   lt bookmarkPage  name  somename   fare XYE IPIEtDIEPITEHIFAEV ERZEB T   tope   115   bottom  lin   left  lin               lan     zoom  somezoom     gt   join   lt join  type  sometype     gt   length   lt length  id  someid   value  4     gt                     lt namedString  
136. raphics    Flowables include the following tags   para blockTable title hl h2 h3 spacer illustration pre andplugInFlowable   see also  graphics     GIF   GIF  Graphics Interchange Format  is a bit mapped graphics file format created by CompuServe in 1987  It is  still in common use on the World Wide Web and many other places today    You can use gifs in your RML document with the image tag    see also  bitmap    JPEG    image     graphics  In RML   graphics  are items which can appear inside the pageGraphics andillustration tags   Unlike flowables  graphics are explicitly positioned on the page by co ordinates  They can not be mixed with    Page 113    RML User Guide Document generated on 2014 09 25 13 10 59    flowables   see also  flowables     HTML  The Hyper Text Markup Language  The language used for writing pages on the World Wide Web     image   In RML  the  image  tag allows you to use existing graphics files in your document  Currently image supports  the GIF and JPEG formats   the two most common formats on the World Wide Web  Most paint applications  support both the GIF and JPEG standards    see also  bitmap    GIF    JPEG     JPEG   A lossy compression technique for color images created by the Joint Photographic Experts Group  JPEG    Better for photos than the GIF format  it can use up to 24 bit color and reduce file sizes to about 5  of their  normal size  JPEG files are widely used on the World Wide Web and many other places     The JPEG format is sometimes kn
137. re 22  Output table from EXAMPLE 10    Page 98            User Guide Document generated on 2014 09 25 13 10 59    1 3 Example 11   lines and alignment in tables    This example shows the various vertical and horizontal alignments you can give text in a table  as well as a few  ways to use lines     EXAMPLE 11     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM       rml dta  gt       document filename  example_11 pdf  gt      lt template gt    lt pageTemplate id  main  gt      lt pageGraphics gt      lt  pageGraphics gt     frame id  first    1  72  yl  72  width  451  height  698   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt blockTableStyle id  myBlockTableStyle  gt    lt   Set fonts   2   lt blockFont name  Courier Bold  size  10  start  0 1  stop   1  1   gt      lt blockFont name  Helvetica BoldOblique  size  10  start  0 0  stop  3 0   gt      lt     This sets a textColor for all the text in the table    gt      lt blockTextColor colorName  black   gt      lt         Another example of blockTextColor    gt      lt blockTextColor colorName  green  start  2 2  stop  3 3   gt      lt         This sets a blockAlignment for the whole table    gt    lt blockAlignment value  CENTER   gt      lt     These overrides the above    gt    lt blockAlignment value  RIGHT  start  3 0  stop  3  1   gt    lt blockAlignment value  LEFT  start  0 1  stop  0  1   gt         lt     This sets the vertical alignment fo
138. ree other attributes  compression specifies whether the produced PDF should  be compressed if at all possible  It can take the values 0   1   default for off  on or use the site wide  default  as specified in reportlab rl config   invariant determines whether the produced PDF should be  invariant with respect to the date and the exact contents  It can take the values 0   1   default foroff on  or use the site wide default  as specified in reportlab rl config   debug determines whether  debugging logging mode should be used during document production  It can take the values O   1 foroffor  on     Page 11            User Guide Document generated on 2014 09 25 13 10 59    2 3  Document forms  stylesheet pageDrawing vs template stylesheet story    There are two possible valid structures for your document to have  depending on how simple you want it to be     For very simple documents  you need the prolog  followed by a stylesheet and any number of pageDrawings   A pageDrawing isa graphical element on the page  or simple text string  i e  it is just placed onto the page in  the location you specify  and no attempt is made to check if it flows off the page      EXAMPLE 1     lt  DOCTYPE document SYSTEM  rml dtd       document filename  example_1 pdf  gt      lt stylesheet gt      lt  stylesheet gt      lt pageDrawing gt    draw Cent redstring x  4 lin    ya s           Hello World    lt  drawCentredString gt    lt  pageDrawing gt      lt  document gt              the examples given
139. rent working directory     Calling RML2PDF from Python  RML2PDF can also be called directly from your own Python program using the rml2pdf go      entry point     There are two main ways the  go  function can be used   either to generate the resulting PDF file on disk in the  file system  or to generate it in memory  useful for web applications returning the PDF directly to the user      This example uses the  go  function to create the output PDF file on disk     from rlextra rml2pdf import rml2pdf    rml   getRML     Use your favorite templating laguage here to create the RML string  output     tmp output pdf     rml2pdf go rml  outputFileName output     This is an example Django web application view generating a PDF in memory and returning it as the result of  an HTTP request     from django http import HttpResponse  from rlextra rml2pdf import rml2pdf  import cStringIO    def getPDF  request       Returns PDF as a binary stream        Use your favourite templating language here to create the RML string     The generated document might depend on the web request parameters     database lookups and so on   we ll leave that up to you     Page 6    RML User Guide Document generated on 2014 09 25 13 10 59    rml getRML  request     buf   cStringIO StringIO      rml2pdf go rml  outputFileName buf   buf reset    pdfData   buf read      response   HttpResponse  mimetype  application pdf     response write  pdfData    response  Content Disposition        attachment  filename output
140. roducing a muddy brown   so  to get black printers use a direct black ink rather than use the CMY pigments     The name CMYK comes from the name of the four colors used  Cyan  Magenta  Yellow and  Key    a term  sometimes used by printers to refer to black     Because CMYK maps more directly to the way printer hardware works it may be the case that colors specified  in CMYK will provide better fidelity and better control when printed     The color names which RML recognizes are mostly drawn from the HTML specification   For a list of these  color names recognized by RML  see Appendix A       NOTE  Currently  while RML supports specifying colors by CMYK value  rml2pdf hasn t yet implemented it   If you try  you well get a ValueError and the error message  cmyk not implemented yet       Page 15    RML User Guide Document generated on 2014 09 25 13 10 59    3 3  Using fonts    Font names are given in the following format     Fontname style    where fontname is the name of the font  e g  Courier   and the style is its appearance  eg  Oblique   BoldOblique      The only fonts supplied with Adobe s Acrobat Reader are the  14 standard fonts   These 14 standard fonts are     Courier  Courier Bold  Courier BoldOblique  Courier Oblique  Helvetica  Helvetica Bold  Helvetica BoldOblique  Helvetica Oblique  Symbol   Times Bold  Times Boldltalic  Times Italic  Times Roman  ZapfDingbats    Custom fonts can also be used in your document  RML supports TrueType and Type 1 fonts  In order to us
141. s horizontally or 40 pixels vertically     EXAMPLE     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt    lt  DOCTYPE document SYSTEM  rml dtd         document filename  example 12 pdf         template     lt pageTemplate id  main  gt    lt pageGraphics gt    lt  pageGraphics gt     frame id  first    1  72    1  72  width  451  height  698   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt blockTableStyle id  myBlockTableStyle  gt     lt blockBackground colorName  silver  start  0 0  stop   1 0   gt    lt blockBackground colorName  darkslategray  start  0 1  stop   1 1   gt    lt blockBackground colorName  silver  start  0 2  stop   1 2   gt    lt blockBackground colorName  darkslategray  start  0 3  stop   1 3   gt    lt blockBackground colorName  silver  start  0 4  stop   1 4   gt    lt blockBackground colorName  darkslategray  start  0 5  stop   1 5   gt    lt blockAlignment value  CENTER   gt    lt blockValign value  MIDDLE   gt       1   Set fonts    gt            lt blockFont name  Helvetica BoldOblique  size  10   gt      lt          the left and right padding tor cells      first and        lt     third columns remember  cell numbering starts from ZERO  not ONE    gt    lt blockLeftPadding length  20  start  0 0  stop  0  1   gt     lt blockRightPadding length  20  start  2 0  stop  2  1   gt      lt  s        the top and bottom padding for cells in first        third rows     gt    lt blockBottomPadding length  40  start  0 
142. sed paragraphs  Therefore  if you want to get normal typography  it s very  important to define a  lt listStyle gt  with font names  size and spacing matching that of the  lt paraStyle gt  you use for  the enclosed text     You should also be aware that RML s  lt para gt  tag already has a flexible feature named the  bullet  which can  provide bulleted  numbered and definition lists which match the corresponding text  In general lists should only  be used when you are transforming in a mapping from HTML  or when you need to place arbitrary flowables  such as tables or images in the body of a list     Lists and list items can be styled using tag attributes or with  lt listStyle gt  tags in the stylesheet section  See the  rml dtd for the full list of attributes on the  lt ul gt   lt ol gt  and  lt li gt  tags using LIST MAIN  ATTRS     In ordered lists  you can use the following types of enumeration in the bulletT ype attribute         Roman numerals  capitals   1  Roman numerals  lower case    1   Arabic numerals        Capital letters         Lowercase letters    For unordered lists  bulletType must be set to    bullet      Unordered lists can use bullet types of the following shapes by setting the  value  attribute in  lt ul gt  or  lt li gt  tags     square  disc  diamond  arrowhead    The size  colour and position  indenting  space before after etc   of bullets and enumerations can be adjusted  with the relevant tag attributes  List item attributes override the attributes
143. site  In these cases there is no need to embed  any fonts or to have any special software on the server  The first stage is to declare the fonts you need in the  optional  docinit  tag at the beginning of the document as follows       document filename  test 015 japanese pdf                        registerCidFont faceName  HeiseiMin W3         lt  docinit gt      lt template                     Note  The encName attribute of registerCidFont is deprecated  you should not use it with new  documents     You may then declare paragraph styles  use string drawing operations or blockTable fonts referring to the font  you have defined      lt paraStyle name  jtext   fontName  HeiseiMin   fontSize  12   leading  14     spaceBefore  12    gt        The test directory includes a file test_015_japanese rml containing a working simplified example in Japanese     Warning  You will need to have a number of CMap files available on your system  These are files provided by  Adobe which contain information on the encodings of all the glyphs in the font  RML2PDF looks for these in  locations defined in         code   CMapSearchPath   endcode   variable in the file      code   reportlab rl_config py   endcode    which knows where to find Acrobat Reader on most Windows and  Unix systems  If you wish to use Asian fonts on another system  you can copy these files  which may be  redistributed freely  from a machine with Acrobat Reader on to your server     Editor s note at 28 12 2002   there is a gre
144. string  measurement  measurement  integer  integer    measurement  integer  integer    string  integer  integer    table style  block descriptors    required    required    required    RML User Guide    blockAlignment    lt blockAlignment  value  left   start  4   stop  11      gt    blockLeftPadding    lt blockLeftPadding  length  0 2in   start  4   stop  11      gt    blockRightPadding    lt blockRightPadding  length  0 2in   start  4               11          blockBottomPadding    lt blockBottomPadding  length  0 2in   start  4   stop  11     gt    blockTopPadding    lt blockTopPadding  length  0 2in   start  4             11      gt     Document generated      2014 09 25 13 10 59     left    right   or  center   integer  integer    measurement required  integer  integer    measurement required  integer  integer    measurement required  integer  integer    measurement required  integer  integer    RML User Guide    blockBackground    lt blockBackground  colorName  indigo   start  4   stop  11      gt    blockValign    lt blockValign  value  left   start  4   st  p    11      gt    blockSpan    lt blockSpan  start  4   stop  4      gt    lineStyle    lt lineStyle  kind  BOX   thickness  4   colorName  magenta   start  4   stop  11                           2              2 2      gt     Document generated on 2014 09 25 13 10 59    string required  integer  integer     top    middle   or  bottom   integer  integer    integer  integer    line command required  measurement req
145. t     Use drawCentredString to place a title on the page    gt     drawCentredString x  297 5  y  800  gt   Simple Text and Graphics with RML      lt  drawCentredString gt       till color  red  y   lt 1             the output     though a full color rs set  tede     lt     is produced  since fill is set to  no  for the circle    gt     circle x  127 5  y  672 75  yadius  l in  fill  no   Stroke   west    fill color  green   gt     stroke color  black   gt     circle x  297 5  y  672 75  radius  1 in  fill  yes     stroke  no           Page 19            User Guide Document generated on 2014 09 25 13 10 59     lt fill color  blue   gt    lt stroke color  black   gt    lt circle     467 5  y  672 75  radius  1 in  fill  yes     Stroke   vest      fiblocolors blackt     setFont name  Helvetica  size  9   gt      drawCentredString x  127 5  y  567 5  gt   Circle   with stroke  but      fill       drawCentredString       drawCentredString x  297 5  y  567 5  gt   Circle   with Eill  but no stroke     lt  drawCentredString gt     lt drawCentredString x  467 5  y  567 5  gt   Circle   with both stroke and fill       drawCentredString         Still colors  red    lt   111           77  y  382 25  width  177  height  552 25     fill  no  stroke  yes   gt         lt fill color  green   gt     lt stroke color  black   gt     lt   11         x  247      382 25  width  347  height  552 25   fill  yes  stroke  no   gt     lt fill color  blue   gt     lt stroke color  black   gt     lt ell
146. t a certain point on a page  or inside a frame  using co ordinates     In RML  operations which position elements explicitly on the page using X Y co ordinates and other geometric  parameters are called  graphics operations   or just  graphics    The other major group of tags in RML are the   flowables      Flowables  like paragraphs  spacers  and tables  can appear ina story  orinthe   place   tag   Graphics  appear in  lt pageGraphics gt  and   illustration    These two categories cannot be mixed  flowables are  positioned in sequence running down a frame until the frame has no more room and then placed on the next  frame  on the next page if necessary   graphics are explicitly positioned by co ordinates     Page 29    RML User Guide Document generated on 2014 09 25 13 10 59    6  More about pages and page structures    6 1  More about template and pageTemplate    We have already seen that the   template   has to appear at the start of an RML document  after the prolog    This section sets out to explain it more fully     A   template   15      section where the layout of a document is set out   both for the whole document and for  individual pages within it     Up to now  we have just been using   template   without any options  But the   template   tag has     number of optional attributes that you can use to set settings for the whole document     pageSize sets the size of the page  This takes a pair of numbers for the width and the height of the page  If  you don t give
147. t drawCentredString x  1 5 in  y  5 25       gt   width 5  join mitered     lt  drawCentredString gt      lt lineMode width  5  join  mitered  miterLimit  10   gt    lt lines gt 2 5in        3 5                                5 518         5 5     Sin 6 2520   lt  lines gt    lt drawCentredString x  3 in  y  5 25 in  gt   width 5  join mitered   lt  drawCentredString gt    lt drawCentredString x  3 in  y  5 1       gt   miterLimit 10       drawCentredString       lt lineMode width  10  join  mitered   gt    lt lines gt 4in 6in 5in 6in  Sin        4 5im 5 510  4        5  oan 4r oan 6 2 bu   lt  lines gt    lt drawCentredString x  4 5       y  5 25 in  gt   width 10  join mitered   lt  drawCentredString gt      lt lineMode width  10  join  mitered  miterLimit  20   gt    lt lines gt 5 5in        6 5                             Gam 5  DOTT         5 5            6 25       lt  lines gt    lt drawCentredString x  6 in  y  5 25 in  gt     width 10  join mitered       drawCentredString         Page 26            User Guide Document generated on 2014 09 25 13 10 59     lt drawCentredString x  6 in  y  5 1 in  gt   miterLimit 20     lt  drawCentredString gt      lt     examples for the  dash  attribute to  LineMode     gt    lt lineMode width  2   gt    lt lines gt lin 4 5in 2in 4 5in  Zin 4 5in 1 5in         1 5     Ain 1 5in 4 75in   lt  lines gt    lt fill color  black   gt    lt setFont name  Helvetica  size  9   gt    lt drawCentredString x  1 5 in  y  3 75 in  gt   width 2    
148. t id  myID  value  i   gt  is used to associate a numbering format to my ID  The  allowed values for the value attribute are given in the table below         pe           7         Uppercase Roman         Lowercase Alphabetic         Uppercase Alphabetic    Here is an example that shows  lt seq  gt    lt seqReset gt  and lt seqDefault gt  inuse        EXAMPLE 6     lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt     IDOCTYPE document SYSTEM  rml dtd         document filename  example 6 pdf         template     lt pageTemplate id  main  gt     frame id  first        72    1  72  width  451  height  698   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt  stylesheet gt      lt story gt   dx  seq in seq  seqDefault and seqReset     h1       lt para gt copied    seq id  spam        seq id  spam   gt     seq id  spam   gt      Reset  seqReset id  spam   gt     seq id  spam        seq id  spam   gt       seq id  spam   gt   lt  para gt               lt i gt simple use      seq lt  i gt    lt  h2 gt    lt para gt    First seq   lt seq  gt    lt  para gt    lt para gt    Second          lt seq  gt    lt  para gt    lt spacer length  6   gt      lt para gt        Page 46            User Guide Document generated on 2014 09 25 13 10 59      seqReset     We have just done     amp lt seqReset   gt      para      spacer length  6   gt     para    First seq after seqReset   lt seq  gt      para      para    second seq after seqReset   lt seq  gt      
149. t lines gt  lin 7 Sim 2in 7 5in  Zin 2 53m 1 510 7320                   1 518 7 1510   lt  lines gt     fill coler  black   gt    lt setFont name  Helvetica  size  9   gt    lt drawCentredString x  1 5 in  y  6 75 in  gt   width 10   lt  drawCentredString gt      lt     options for            are    detauli      round   or    square       gt      lt lineMode width  10  cap  default   gt     lines22 bi1m 7 5     3 5i1m 7 5in  S Sir        3im                            721518   lt  lines gt    lt drawCentredString x  3 in  y  6 75 in  gt   width 10  cap default       drawCentredString       lt lineMode width  10  cap  round   gt    lt liness4in    Sim Sam  50g                  4 SIn              Page 25            User Guide Document generated on 2014 09 25 13 10 59    4        Tin 4 5  m 7 75   lt  lines gt    lt drawCentredString x  4 5 in  y  6 75 in  gt   width 10  cap round   lt  drawCentredString gt      lt lineMode width  10  cap  square   gt    lt lines gt 5 51m 7 5in 6 5in 7 5in  56 5im T 5  m                                     7 751m   lt  lines gt    lt drawCentredString x  6 in  y  6 75 in  gt   width 10  cap square     drawCentredString       lt lineMode width  5  cap  default   gt    lt     examples for the  miterLimit  attribute to  LineMode     gt    lt lineMode width  5  join  mitered   gt   Alines gt lin        2im         2in        l 5im Sesin  JT Sun         Ge 251m   lt  lines gt     fill color  black   gt    lt setFont name  Helvetica  size  9   gt    l
150. t must always be the name of the DTD  which must live in the same directory as the exe or  python program rml2pdf     This makes it easy to predict where the RML DTD will be and prevents you using an old DTD that  happens to be sitting around your disk somewhere  It also allows us to make sure that when you create  a file with RML  the PDF document will be created in the same directory as the RML file  and to allow  relative pathnames in the document tag     The prolog section is common to all XML documents  In addition to this  RML requires another line following  the prolog       lt document filename  outfile pdf      This line gives the name that you want the output PDF file created with  This line also starts the  document proper   and must be matched by a  lt  document gt  tag as the last line in the document  in  the same way that an HTML file is bracketed by  lt HTML gt  and  lt  HTML gt      The filename you give        just be a simple filename  a relative path  eg       myDoc pdf_ will  create it in the directory two levels up from the one your RML document is in   or a full pathname  eg  C  output_files pdf myProject myDocument pdf        tmp userl myScratchFile pdf_   If you just supply a filename  the output file will be  created in the same directory as your RML file   The same principle works with anywhere else you  may need to give a filename   they are relative to where the document lives on your disk  not to where  rml2pdf is      The   document   tag has th
151. t there s    lot more to blockTables than that  The actual   blockTable   tag                     number of optional attributes        Style  blockTables can have a style set in the stylesheet in the same way as paragraphs can  If you have  set a style for your                        you can refer to it by name with this attribute and apply it to your  table   More details on how to do it appear in the section on the  lt blockTableStyle gt  tag below      a colWidths  If you use this attribute  it takes a comma separated list of the width of each column in your  blockTable  This allows you to vary the widths to match the width of the content of each column  If  you do use it  you should be careful to make sure that there is one width given for every column in your  table       rowHeights    Page 90    RML User Guide Document generated on 2014 09 25 13 10 59    As colWidths is to columns  rowHeights is to rows  It also takes a comma separated list  in this case for  the heights of the rows in your table     m repeatRows  If you have a large table that splits over multiple pages  you may well want certain information  appearing on all of them  Column headers are one example of this sort of information  The  repeatRows attribute allows you to do this     repeatRows takes one single number as an argument  All the rows up to and including this row are  repeated as  headers  on each section of the table that appears on a new page     13 3  Block table styles    blockTables area flo
152. ted barcode data    RML User Guide     lt checkBox      gt     letterBoxes    style  myboxstyle       11                     labelFontName  Helvetica   labelFontSize  12   labelTextColor  blue   boxWidth  lin   boxHeight  lin   checkStrokeColor  blue   boxStrokeColor  blue   boxFillColor  blue   lineWidth  1   linel  label text 1   line2  label text 2   line3  label text 3   checked  talse     bold  false   graphicOn  cute_on  jpg     graphicOff  oute off jpg     Page 142    Document generated on 2014 09 25 13 10 59    string box style name  measurement  measurement   string font name  fontsize measurement  string color name  measurement  measurement   string color name  string color name  string color name  measurement   string   string   string   truth value   truth value   string file name  string file name    required  required    RML User Guide     lt letterBoxes     gt     style  myboxstyle       11                count  10   label  label text   labelFontName  Helvetica   labelFontSize  12   labelTextColor  blue   labelOffsetX  lin   labelOffsetY  lin   DoxWidth  1in   boxHeight  1in   combHeight  0 25   boxStrokeColor  blue   boxFillColor  blue   btextoolor  blue   lineWidth  lin   fontName  Helvetica   fontSize  12     box contents goes here     lt  letterBoxes gt     textBox    Page 143    Document generated on 2014 09 25 13 10 59    string box style name    measurement required  measurement required  integer required  string    string font name  fontsize measurement
153. ted the rowHeights orcolWidths      When you are using paragraphs inside a table  you must not put any text outside the  lt para gt     lt  para gt   tags  The only exception to this rule is whitespace   you can put spaces and tabs outside the   para   tag  but    Page 89    RML User Guide Document generated on 2014 09 25 13 10 59    nothing else     One other thing to be aware of is that if you use a para inside a table  it will ignore the text attributes you have  used for that table and instead use the attributes for paragraphs  This can be a plus   since it allows you to use  already defined paragraph styles  but can take you by surprise if weren t expecting it     As an example  here is the RML that generated the above table      lt blockTable  rowHeights  1 25cm 1 25em   colWidths  4cm  4cm             lt td gt    lt para gt   This is a  lt b gt more lt  b gt  complex  lt font color  red  gt blocktable lt  font gt     lt  para gt    lt  td gt    lt td gt    lt para gt   This is a more  lt i gt complex lt  i gt  blocktable    lt  para gt    lt  td gt   sp         lt td gt    lt para gt    lt font face  Helvetica  gt This is a more complex blockTable  lt  font gt    lt  para gt            lt td gt    lt para gt   This is  lt greek gt a lt  greek gt  more  lt font color  blue  gt  lt i gt complex lt  i gt  lt  font gt     blockta lt greek gt b lt  greek gt le      lt  para gt   pda   lt  tr gt      lt  blockTable gt        13 2  Block table attributes    This is useful  bu
154. th string   string   string   center centre left right  CENTER CENTRE LEFT RIGHT   0 1 yes no     path string  string  string  string  string    string paragraph style name    RML User Guide    title     lt title  style  myfavoritstyle      lt  title gt     style  myfavoritstyle        h1      h2     lt h2    style  myfavoritstyle        h2      h3     lt h3  style  myfavoritstyle      lt  h3 gt     h4     lt h4  style  myfavoritstyle        h4      Page 125    Document generated on 2014 09 25 13 10 59    string paragraph style name    string paragraph style name    string paragraph style name    string paragraph style name    string paragraph style name       RML User Guide   h5    lt h5  style  myfavoritstyle     gt       h5     h6     h6  style  myfavoritstyle     gt       h6     a     a  color  blue   fontSize  12   fontName  Helvetica   name  somename   backColor  cyan   href  someurl     gt     lt     gt    evalString    lt evalString  imports  someimports   default  somedefault      gt     Intra Paragraph Markup    Document generated on 2014 09 25 13 10 59    string paragraph style name    string paragraph style name    string color name  stringform font size  string font name  string   string color string  string    string  string    RML User Guide     lt b gt      lt  b gt    font    lt font  face  Helvetica   color  blue   size  34      lt  font gt     greek     lt greek gt      lt  greek gt     sub     lt sub gt      lt  sub gt     Page 127    Document generated on
155. that the    greater than    and less than    operators must be written in RML as  amp gt  and  amp lt     11 4  Examples    Some sample code demonstrating several of the conditional formatting tags      lt docAssign var  i  expr  3   gt       doclf icond  i16  9t 2   gt    lt para style  normal  gt The value of i is greater than 2 lt  para gt    lt docElse  gt    lt para style  normal  gt The value of i is less than or equal to 2 lt  para gt                gt    lt docWhile cond  i  gt    lt docPara expr  i  format  The value of i is   __expr__ d   gt    lt                stmt  i  1         lt  docWhile gt        results in the output     The value of i is greater than 2  The value of i      3  The value of i is 2  The value of i is 1    As an example of a practical use of conditional formatting  supposing you wanted all your documents to be a  certain number of pages  You could use the value of doc page to decide whether to include or exclude an  external  filler  pdf in your output  and so pad the size of your document       docIf cond  doc page    3         includePdfPages filename  fillerpage pdf              1  leadingFrame  yes                       11 5  Reference  Conditional formatting is implemented with the following tags    lt docAssign var                gt   assigns the value of  expr to         eg to make 1 3    lt docAssign var  i  expr  3         lt docExec stmt       executes the statement  stmt   eg to subtract 1 from the value of i    docExec stmt  i  1   
156. the   td   and     td   tags  can only contain one of two different sets of data  Either a table cell can contain string forms  text  andthe   getName   and   pageNumber   tags or it can contain a sequence of flowables  tags such as   lt        gt    lt          gt  and      various heading tags   It is not possible to mix both of these forms in the same cell   though you can mix them in the same table      Putting strings into table cells is quicker than using paragraphs  Paragraphs need to work out when to  wrap  text   strings don t  So you should avoid using paragraphs inside tables unless you really need to  or you don t mind  things slowing down      When you are doing a big database report  wherever possible use separate smaller tables to contain parts of your  data rather than one huge table  If you don t use many  mini tables  to contain small groups of rows but instead  decide to do a big 1 000 row table  you will notice a significant loss of speed in the generation of your output  PDF     This also makes it much easier to design complex grouped reports  for each group header  footer or detail block  you can design one table style and keep them all independent of each other     13 5  Using block table styles    Now that we have seen what the blockTable s attributes are  and seen a summary of    blockTableStyle   here are some examples that show you how they can be used together     Page 92    RML User Guide Document generated on 2014 09 25 13 10 59    The following 
157. there are      fill or stroke tags      a document  both the fill and the stroke for all shapes default to black  If  youhavea fill tag before a shape  it allows you to change the color that that shape is filled with  Similarly  a  stroke tag before a shape allows you to set the color that the outline of that shape will be drawn in  If there is       fill or stroke tag in front of a shape  it will be filled and stroked with the most recently defined   111  orstroke  or failing that  the default black     Page 21            User Guide Document generated on 2014 09 25 13 10 59    This means that you can use one fill tag to refer to many shapes  while changing the stroke for each of  them  Or vice versa     Another brief example      how the   111 and stroke tags look       fill color  olivedrab   gt      lt stroke color  khaki   gt        4 3  Lines and lineMode    The other basic drawing element is the line  To draw a simple line  you use the  lt 11       gt  tag  For each line  you want to draw  you pass  lt lines gt  two pairs of X Y co ordinates   one pair of co ordinates for the start  point of the line  the other for the end point     If you want to draw more than one line  you can keep passing   1ines   more sets of 4 co ordinates     lines   then draws those other separate lines on the page  The lines ina  lt lines gt  command are just  lumped together in one  lt lines gt  tag for your convenience   If you want lines that follow      from each other   look at the  Advan
158. this chapter are       Crop Marks   Bleed   CMYK colours  Overprint knockout control  Colour separations    Pagination    12 1  Crop Marks    The first difference is the size of the page  Let s say you are in Europe or Asia and have been creating A4  electronic documents from a web site using ReportLab  You then need to produce a different version of the  same document for professional printing  The printer wants to be given a slightly larger document  with lines  pointing at the corners of the A4 area  They will often be printing on a much larger sheet or roll of paper  and  cutting it afterwards     To automatically create crop marks  use the  useCropMarks  attribute of the  lt docinit gt  tab  This will enlarge  the underlying page and draw the needed marks      lt docinit useCropMarks  1   gt     The intent is that it s reasonable easy now to have a single template which generates print and web versions of  the same document  wrapping       lt   if   gt  statement around the extra attribute in your favourite templating  system  without needing to recalculate all the frame and graphics positions for every element on the page     There is also a separate  lt cropMarks gt  tag which you can use within the  lt docinit gt  tag  if you wish to  modify the page size increase  colour  length  dash pattern and so on for the crop marks  however  we ve found  the defaults to work fine                       Page 84            User Guide Document generated on 2014 09 25 13 10 59    12
159. thods  such as XSL  the C   preprocessor  or the Preppy preprocessor to allow the convenient construction of structures such as tables of   contents  indices or bibliographies     9 1  the namedString tag and forward references    The    code   namedString   endcode   tag is similar to         code   name   endcode   tag    it associates     name to a string of text  The    code   namedString    endcode   tag is more general than the      code   name   endcode    tag in the sense that it allows other string constructs such as      code    getName    endcode   in the named text  For example  the following snippet associates the name      code   Introduction   endcode    with the current page number at the time of formatting       namedString id  Introduction  gt The Introduction starts at  lt pageNumber  gt  lt  namedString gt     The    code                endcode    tag does not permit other tags inside the string it names in this manner     Elsewhere  the RML text may substitute the page number for the introduction using the construct      name id  Introduction   default  this is a default placeholder  used if Introduction is undefined            and this reference to         code   Introduction   endcode   name may occur before the      code                         endcode    name is defined  For example the reference may occur at the beginning of  the document in the Table of Contents  Whenever a name is referenced before it has been defined the      code   default   endc
160. to enhance areas of your publication  so you might use extra spot colours as well as  the CMYK ones  Bear in mind that spot colour inks are usually opaque     We mentioned above that a colorSpace attribute can be defined in the  lt document gt  tag  There are two more  of these  color spaces  which will be useful for those who are going to use spot colours         will only let you  use spot colours you define  and                   will let you define spot colours to use along with the normal  CMYK process colours        If using SEP_CMYK  our framework will again  auto convert  blacks for you  thus if a table s gridlines or a  chart axis is normally drawn in black or a shade of grey  implemented originally as RGB   it will be  autoconverted to CMYK black or grey     An equivalent CMYK colour value needs to be supplied along with a spot name for each printing plate  The  CMYK values are usually just to provide an on screen representation and do not need to be accurate  more  important is the spot name which is a string that printers can identify the ink such as  PANTONE 288       or   PMS 288  Your printer may advise you on what spot names to use     You will need to define your spot colours in the  lt docinit gt  section of your document  The 14 is what you will  use later in the document to refer to that colour            allows you to see an approximation of your colour in a  PDF reader   spotName  is how the printer will identify which ink to use for the plate  There is 
161. to two bitmap files on the disk  these  will be used in preference to the default appearance  Note that they will be stretched to the box Width and  boxHeight stated  so it is important to set the same aspect ratio as the underlying image  Also  remember the  printing intent   a 24 pixel bitmap drawn to occupy a 12 point space on a form will be visibly grainy on a good  quality printer  but may be fine on an inkjet     Because checkboxes do not contain text it can be argued that when they are to be displayed as checked the cross   colour should be the same as the border colour  Equally well it can be argued that it should be the same colour  used for text in textboxes  To provide both options checkboxes have an additional colour attribute named  checkStrokeColor which will be used for the cross instead of the border colour if the former is provided     Note that the label attached to a checkbox is limited to three lines of text now and always appears at the right  margin of the box  but this might be generalised in future versions  The label is expected to be vertically  centered with the box no matter how many lines it is composed of     The following code creates a row of sample checkboxes providing different values for the most relevant  attributes      lt checkBox             y  0cm  checked  0   gt     checkBox x  1 5cm  y  Ocm  checked  1   gt      lt checkBox             y  0cm   boxWidth  0 75cm  boxHeight  1cm   checked  1   gt      lt checkBox     4 5      y  0cm   
162. ts are dramatically cut file sizes  reduced production time and apparently even speeding things up on  the printer  If you are going to be using PDF files in any situation where people will be downloading them   massively reduced file sizes will be appreciated by your users  These advantages become even more obvious  with multiple similar documents  If you are dealing with a run of 5000 repetitive forms   perhaps payslips or  single page invoices   you only need to store the backdrop once and simply draw the changing text on each    page     Page 79    RML User Guide Document generated on 2014 09 25 13 10 59    forms should be used whenever you have a graphic that is used repeatedly  It may be something as small as  your company logo or some sort of symbol you want to flag interesting bits of text with  or something as large  as a whole page backdrop  As long as you use it repeatedly  it s worth using a form to do it     forms don t even have to be created in RML  You can use another application  such as Adobe Illustrator       Word  and distil the output to PDF  You can then use our PageCatcher product to generate the forms  which can    then be used from RML     Look on our web site for more information on PageCatcher  http   www reportlab com pageCatcher index html    Page 80    RML User Guide Document generated on 2014 09 25 13 10 59    11  Conditional Formatting    11 1  Introduction    WARNING   this is an advanced topic  intended for programmers trying to deal with dif
163. uired  string required  integer   integer   integer   integer   integer  integer    The line command names are  GRID  BOX  OUTLINE  INNERGRID  LINEBELOW  LINEABOVE   LINEBEFORE and LINEAFTER  BOX and OUTLINE are equivalent  and GRID is the equivalent of applying    both BOX and INNERGRID     RML User Guide    bulkData     lt bulkData  stripBlock  yes   stripLines  yes   stripFields  yes   fieldDelim        recordDelim                gt    excelData    lt excelData  fileName  somefileName   sheetName  somesheetName   ranges Al B7   rangeName  somerangeName      gt     Page Layout Tags    pageTemplate     lt pageTemplate  id  frontpage   pageSize   8 5in  llin      rotation  270      gt    lt pageGraphics gt     lt  pageGraphics gt       lt frame     gt    lt  pageTemplate gt   frame   lt frame  id  left     1    E               width  50cm   height  90cm     gt     Page 151    Document generated on 2014 09 25 13 10 59     yes   no    yes   no    yes   no   string  string    string  string  string  string    string    required    override template page size  override template page angular orientation    string   measurement  measurement  measurement  measurement    optional 1 or 2  one or more    required  required  required  required  required    RML User Guide    pageGraphics     lt pageGraphics  gt     Special Tags    name   lt name  id  chapterName   value  Introduction     gt   alias   lt alias  id  footerString   value  chapterName     gt   getName   lt getName  id  foote
164. unction    gt   string data for plug in     plugInFlowable      Table Elements    blockTable    lt blockTable  style  mytablestyle   rowHeights    23  20  30  10    ecolWidthge 50  90  35  119    gt     lt tr gt                tr        tr        blockTable     tr    lt tr gt     lt  tr gt    td    Page 121    Document generated on 2014 09 25 13 10 59    string required  string required  unformatted data    string style name  sequence of measurement  sequence of measurement     rows of  same length     RML User Guide     lt td  fontName  Helvetica   fontSize  12   fontColor  red   leading  12   leftPadding  3   raightPagddinge s    topPadding  3   bottomPadding  3   background  pink   align  right   vAlign  bottom   lineBelowThickness  lineBelowColor  lineBelowCap  lineBelowCount  lineBelowSpace  lineAboveThickness  lineAboveColor  lineAboveCap  lineAboveCount  lineAboveSpace  lineLeftThickness  lineLeftColor  lineLeftCap  lineLeftCount  lineLeftSpace    lineRightThickness       lineRightColor  lineRightCap   lineRightCount  lineRightSpace       td      Page 122    Document generated on 2014 09 25 13 10 59    stringform font name  stringform font size  stringform font color  stringform line spacing   cell left padding   cell right padding   cell top padding   cell bottom padding  background color   cell horizontal alignment  vertical alignment  bottom line thickness  bottom line color  bottom cap  butt   round   square   bottom line count  bottom line spacing   topline thickn
165. units  Inches  use the term  in   centimetres use the term          and millimetres use the term  mm   If no unit is specified           will assume that you are giving a measurement in points   one point is 1 72 of an inch  You can also explicitly  use points with the term  pt      As an example  the following pairs of co ordinates all refer to the same point  Notice that there is no space  between the number and any unit that follows it      4 5in  lin    11 43cm  2 54cm    324  72     You can mix and match these units within RML  though it generally isn t a good idea to do so  The co ordinate  pair  3 5in  3 5cm  is valid  and won t confuse the RML parser   but it may well confuse you     3 2  Using Colors    There are three ways to specify colors in RML     a      red green blue value  e g    ff0000         0 0 0 0 1 0     a      cyan magenta yellow black value  e g    ff99001f  or   1 0 0 6 0 0 0 1     m  by color name using standard HTML names  The RGB or additive color specification follows the way a computer screen adds different levels of the red     green  or blue light to make any color  White is formed by turning all three lights on full  1 1 1      The CMYK or subtractive method follows the way a printer mixes three pigments  cyan  magenta  and yellow   to form colors  Because mixing chemicals is more difficult than combining light there is a fourth parameter for  darkness  A chemical combination of the CMY pigments almost never makes a perfect black   instead  p
166. uotation marks   e g  you would have to use  lt document  filename  outfile pdf  gt   since you couldn t get away with  lt document  filename outfile pdf gt               non empty element must have both an opening and a closing tag   e g       document   tag must be  matched by a matching  lt  document gt  tag    Empty  elements are those that don t have any content   and are closed with a       at the end of the same tag rather than having a separate closing tag   e g    lt getName id  Header Title   gt         a Tags must be nested correctly   i e    lt b gt  lt i gt text lt  b gt  lt  i gt   isn t valid  but    lt b gt  lt i gt text lt  i gt  lt  b gt   is              the whole  whitespace is ignored in RML  Except inside strings  you can format and indent your  RML documents in whatever way you consider most readable   Inside text strings  whitespace is seen  as equivalent to a single space and line breaks are added automatically as needed during formatting   Other than that  what you type is what is displayed on the page      a RML is case sensitive   Upper Case  is different from  upper case    UPPER CASE  and  UpPeR  CaSe   The capitalization in the tag names is important     2 2  The prolog    Every RML document must start with a number of lines      lt  xml version  1 0  encoding  iso 8859 1  standalone  no    gt      lt  DOCTYPE document SYSTEM  rml dtd          This is called the prolog   you can think of it as the document    header       lt  xml     standalone 
167. value  Type anything you want between these quotes      gt      lt  initialize gt      lt  stylesheet gt     sstoryv gt    lt para gt    lt b gt  lt getName id  YourVariableName   gt  lt  b gt    lt  para gt     story       You can also use the  lt name gt  tag inside the story of a document  In this case  as well as setting the value for  the variable  it is also displayed on the page  i e  the name has a  textual value       8 3  Seq  seqReset  seqChain and SeqFormat    The  seq  in   seq     lt seqDefault gt  and  lt seqReset gt  stands for sequence  These tags are all used for  paragraph numbering  or indeed anything that requires numbering items in a sequence  such as list items or  figures and illustrations      This is how they look in use      lt seq  gt      lt seqDefault id  myID   gt      lt seqReset  gt  or  lt seqReset id  myID   gt      lt seqChain             190 idl id2   idn   gt      lt seqFormat id  myID  value  i   gt        Page 45    RML User Guide Document generated on 2014 09 25 13 10 59    Each time you call  lt seq  gt   its value is automatically incremented    With  lt seqReset gt   the id is an optional attribute  However  it is still best to use it to save confusion    The  lt seqChain order  id0 191 id2   gt  tag is used to make multi sequence use easier  When  sequence 140 is changed sequence 141 is reset  likewise when sequence 191 is changed sequence 192 is    reset and so on for the identifiers in the order attribute     The tag  lt seqForma
168. ve backward compatible blah blah blah  blah blah  Blah blah blah blah value added     lt  para gt     lt para gt   Blah blah blah blah blah blah blah blah blah re factoring  phase blah knowledge management blah blah  Blah blah blah blah    interactive blah vision statement blah            lt  para gt     lt para gt   Blah blah blah blah blah blah conceptualize blah downsize blah  blah bleh blah  Blah blah blah blah blah blah blah blah bilan  blah blah blah synergy client centered vision statement       para       para    Blah blah dysfunctional blah blah blah blah blah blah blah  appropriate blah blah blah blah blah blah blah blah  re factoring go the extra mile blah blah blah blah        para        nextFrame         condPageBreak height  144   gt               lt getName id  ColumnTwoHeader   gt    lt  h2 gt      lt para style  body  gt    This is the contents for  lt i gt column two lt  i gt     lt  para gt    lt para style  body  gt    It uses the paragraph style we have called  body     lt  para gt    lt para style  body  gt    Does it come out OK      lt  para gt         lt para style  body  gt   There now follows some random text to see how these paragraphs    look with longer content      lt  para gt      lt para style  body  gt   Blah OS 2 blah blah blah blah coffee blah blah blah blah    Page 42       RML User Guide    Document generated on 2014 09 25 13 10 59    Windows blah blah blah blah blah blah blah  Blah blah blah  blah blah blah blah Modula 3 blah blah blah 
169. vetica   fontSize  12  gt     leading    leading is used is used to alter the space between lines  In RML  it is expressed as the height of a line PLUS  the space between lines  So if you are using 10 point font  a leading of 15 will give you a space between lines of  5 points  If you use a number that is smaller than the size of font you are using  the lines will overlap     leftIndent  rightIndent   leftIndent and rightIndent apply space to the left or right of a paragraph which is in addition to any  margin you have set     firstLineIndent   firstLineIndent 15 used when you want your paragraph to have an additional indent on the first line   on  top of anything set with left Indent     spaceBefore  spaceAfter   spaceBefore and spaceAfter  as you would expect  set the spacing before a paragraph or after it     textColor   This sets the color to be used in displaying a paragraph     bulletText  bulletColor  bulletFontName  bulletFontSize  bulletIndent   These are all used to set the characteristics for any bullets to be used in the paragraph     Inside the story  you can also do a number of things that you can t do with the drawString commands  Fora  start  you can use bold  italics and underlining  If you are familiar with HTML  you will recognize these tags      i   and  lt  i gt  start and stop italics   lt b gt  and  lt  b gt  start and stop the text being set as bold  and  lt u gt             u   start and stop underlining     7 4  The font tag    You can also explicitl
170. wable  so the actual  lt blockTable gt  tag will appear in the story section of your  RML document  You can use the  lt blockTableStyle gt  tag to set the appearance of your blockTable   This appears in the stylesheet section of your document  and can be used for more than one table  You can set  up how all the blockTables in your document will look in one blockTableStyle tag if you want     The  lt blockTableStyle gt  tag is    container for a number of other tags  and needs to be paired with a  terminal  lt  blockTableStyle gt  tag  This works in the same way as   styleSheet     styleSheet      lt pageGraphics gt  lt  pageGraphics gt   and other tags of that sort     For all of the attributes in blockTableStyle  they refer to a square or rectangular  block  inside the table   This can be as many or as few cells as you want   not necessarily a single cell  This  block  aspect to the  attributes is reflected in their names  and gave the table style its name for consistency   It was felt that since  most of these attributes started with  block      the table tag should itself be called blockTable to keep  things simple      The way the block is described may seem unusual to you if you are not used to programming  The x and y  co ordinates are still given as X Y  or if you like  Row Column   rather than the spreadsheet         model   but  the numbering starts from 0 rather than 1  This makes the top left hand cell  0 0   As well as this  the numbers  may also be negative  If t
171. width   an    height  1 15 in     fill  yes  stroke  no  round  0 15 in   gt      lt fill color  blue   gt    lt stroke color  black   gt     rect x  424 5  y  56 5  width  1       height  1 15 in     fill  yes  stroke  yes  round  0 15 in   gt          fill color  black    gt     lt drawCentredString x  127 5  y  41 25  gt    Rect   with stroke and round  but              lt  drawCentredString gt    lt drawCentredString x  297 5  y  41 25  gt    Rect   with fill and round  but no stroke      drawCentredString      drawCentredString x  467 5      41 25  gt              Rect   with stroke  fill and round              drawCentredString       lt  pageGraphics gt     frame id  first    1  0 5      yl  0 5in  width  20cm   height  28cm   gt    lt  pageTemplate gt    lt  template gt      lt stylesheet gt    lt  stylesheet gt      s oy y gt    lt para gt  lt  para gt      lt  story gt      lt  document gt        4 2  Fill and stroke    If you look at the example 3  you will see that as well as having   111 and stroke attributes for the shapes   there are separate   8111   and   stroke   tags     Inside the tag for a shape  such as rect   fill and stroke simply tell rml2pdf whether those qualities  should be turned on  Should there be a   111  or not  Should there be a st roke  or not  That is why the  argument is Boolean    yes  or  no   though  1  or  0  are also allowed      The fill and stroke tags do a different job  The only argument that these tags are allowed is a color  If  
172. y cases be of highly           variable length  and not guided by      designer s  common sense      It is possible to use the conditional formatting tags in RML to add extra pages and pad out your document to the  required length as necessary  For example  we maintain one solution which has a number of optional half page  and full page advertisements which can be used to ensure the right pagination occurs  See the  Conditional  Formatting    chapter of this guide for more information on this technique     12 8  More information    We manage a number of solutions which generate documents for professional printing  and have helped clients  achieve some interesting effects  but we have limited space here to discuss all of the techniques used  If you are  a commercial customer and are seeking to achieve something not documented here  please contact us and we  will be happy to assist further     Page 88    RML User Guide Document generated on 2014 09 25 13 10 59    Part Ill   Tables    13  Using tables    13 1  Block tables    If you are familiar with HTML  you will understand the basic tags for use with tables in RML  Just as in HTML   you use a tag to tell rml2pdf that a table is on the way  in this case   blockTable    rather than  lt table gt    and  another one to end it  Within the   blockTable   and lt  blockTable gt  tags    tr   and    tr   enclose  the rows  from Table Row   and within each table row    td   and    td   enclose each individual cell  from  Table Data    
173. y file to work in production mode  Without the license key each page produced  by RML2PDF will be visibly marked as an  evaluation  copy  and the file will be annotated invisibly as  produced for evaluation purposes as well  With a valid license key file present  RML2PDF will run in  production mode and the PDF file generated will contain the licensing information  You can purchase a  ReportLab PLUS license using your user account on our website http   www reportlab com  Once we issue you              license file you will need to install it somewhere on your PYTHONPATH so that       2       can find it     Running RML2PDF from the command line    RML2PDF can be run from the command line  provided that you place it on your path  We normally ship this  module in compiled   pyc  format  so you need a Python interpreter of the correct version to run it  and need to  know where it was installed  The installation process does not currently register a script for you  On Unix  you  may wish to add the directory to your path  or create a wrapper script in your bin directory     python  path to rlextra rml2pdf rml2pdf pyc filename rml    On Windows   pyc files are normally associated with      most recently installed Python interpreter  so you  could execute this           Ntemp   c  python26 lib site packages rlextra rml2pdf rml2pdf pyc filename rml    After completing successfully      rml2pdf program will return to a command prompt  The output PDF file  should be created in the cur
174. y set the font using the  lt font gt  tag  This has the optional attributes of face  color   and size which are all pretty self explanatory  You need to            lt  font gt  tag to close this before the end  of the paragraph  Example        That example produces this line of text   This is courier in crimson     7 5  Superscripts and subscripts    Another thing you can do inside the story is using superscripts and subscripts  You do this with the   lt super gt  lt  super gt  and  lt sub gt  lt  sub gt  tags   Superscript is where the text is raised up on the line such as  in the mathematical symbol for squared or cubed  and subscript is where it is lowered relative to the rest of the  line in the same way   Example       para     lt sub gt This      subscript    sub      This is normal text       super  This is superscript  lt  super gt        para         Page 37    RML User Guide Document generated on 2014 09 25 13 10 59    That example produces this          This i ipt   T _ This is normal text  518 9UPerserp  This is subscript     7 6  Lists    RML supports ordered and unordered lists  using the tags  lt ol gt   lt ul gt  and  lt li gt   They work in a similar way to  their HTML equivalents  A list item can be any normal flowable element but there can be only one such item  within a pair of list item tags  Lists can be nested     WARNING  The contents of a list are flowable objects  and the list itself does not know what font sizes or  spacing you will use in the enclo
175. yption strength  defaults to 128      Encryption permissions    optional    optional    allowed are print copy modify annotate    default is print    string    required    optional  one or more    The document tag is the root tag for RML docuoments  Every RML document must contain on and only one  document tag  There are two forms for a document  the story form and the pageDrawing form     Page 117    RML User Guide    docinit    lt docinit  pageMode  pageLayout  useCropMarks    gt     lt  docinit gt    template    lt template  pageSize   8 5in  1111    rotation  270   firstPageTemplate  main   leftMargin  lin   rightMargin  lin   topMargin  1 5in   bottomMargin  1 5in   showBoundary  false   allowSplitting  true   title  my title   author  yours truly     gt     lt pageTemplate    gt      lt  pageTemplate gt     lt  template gt     Page 118    Document generated on 2014 09 25 13 10 59    UseNone UseOutlines UseThumbs FullScreen  SinglePage OneColumn TwoColumnLeft TwoColumnRight   yes          0   1   true   false     pair of lengths  page angular orientation  multiple of 90  default 0   page template id  length   length   length   length   truth value   truth value   string   string    1 or more    RML User Guide    stylesheet     lt stylesheet gt    lt initialize gt     lt  initialize gt      lt paraStyle       gt     Document generated on 2014 09 25 13 10 59     lt blockTableStyle gt     lt  blockTableStyle gt      lt  stylesheet gt     story   lt story gt      lt para gt 
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
クラリオンが創るのは 安心して利用できる 路線バスの未来です。  ATENÇÃO CERTIFICADO DE GARANTIA  OpenVPN Application Note, V1.0 for firmware V2.4  Sharp LC40LE820UN  Samsung 24" SyncMaster FX2490HD LS24F9DSM/XE Käyttöopas    "取扱説明書"  システムキッチン  Curtis RCD 310 User's Manual  取扱説明書(基本編)|カメラ付 お留守番チェッカー    Copyright © All rights reserved. 
   Failed to retrieve file