"Fossies" - the Fresh Open Source Software Archive

Member "xhtml2pdf-0.2.5/xhtml2pdf/default.py" (8 Oct 2020, 13224 Bytes) of package /linux/www/xhtml2pdf-0.2.5.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "default.py" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 0.2.4_vs_0.2.5.

    1 # -*- coding: utf-8 -*-
    2 from reportlab.lib.pagesizes import (A0, A1, A2, A3, A4, A5, A6, B0, B1, B2, B3,
    3                                      B4, B5, B6, LETTER, LEGAL, ELEVENSEVENTEEN)
    4 
    5 from xhtml2pdf import util
    6 
    7 # Copyright 2010 Dirk Holtwick, holtwick.it
    8 #
    9 # Licensed under the Apache License, Version 2.0 (the "License");
   10 # you may not use this file except in compliance with the License.
   11 # You may obtain a copy of the License at
   12 #
   13 #     http://www.apache.org/licenses/LICENSE-2.0
   14 #
   15 # Unless required by applicable law or agreed to in writing, software
   16 # distributed under the License is distributed on an "AS IS" BASIS,
   17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   18 # See the License for the specific language governing permissions and
   19 # limitations under the License.
   20 
   21 PML_WARNING = "warning"
   22 PML_ERROR = "error"
   23 PML_EXCEPTION = "PML Exception"
   24 PML_PREFIX = "pdf:"
   25 
   26 #CLASS   = 1
   27 BOOL = 2
   28 FONT = 3
   29 COLOR = 4
   30 FILE = 5
   31 SIZE = 6
   32 INT = 7
   33 STRING = 8
   34 BOX = 9
   35 POS = 10
   36 #STYLE   = 11
   37 MUST = 23
   38 
   39 """
   40 Definition of all known tags. Also used for building the reference
   41 """
   42 
   43 TAGS = {
   44 
   45     # FORMAT
   46 
   47     #"document": (1, {
   48     #    "format":               (["a0", "a1", "a2", "a3", "a4", "a5", "a6",
   49     #                              "b0", "b1", "b2", "b3", "b4", "b5", "b6",
   50     #                              "letter", "legal", "elevenseventeen"], "a4"),
   51     #    "orientation":          ["portrait", "landscape"],
   52     #    "fullscreen":           (BOOL, "0"),
   53     #    "author":               (STRING, ""),
   54     #    "subject":              (STRING, ""),
   55     #    "title":                (STRING, ""),
   56     #    "duration":             INT,
   57     #    "showoutline":          (BOOL, "0"),
   58     #    "outline":              INT,
   59     #    }),
   60 
   61     "pdftemplate": (1, {
   62         "name": (STRING, "body"),
   63         "format": (["a0", "a1", "a2", "a3", "a4", "a5", "a6",
   64                     "b0", "b1", "b2", "b3", "b4", "b5", "b6",
   65                     "letter", "legal", "elevenseventeen"], "a4"),
   66         "orientation": ["portrait", "landscape"],
   67         "background": FILE,
   68     }),
   69 
   70     "pdfframe": (0, {
   71         "name": (STRING, ""),
   72         "box": (BOX, MUST),
   73         "border": (BOOL, "0"),
   74         "static": (BOOL, "0"),
   75     }),
   76 
   77     #"static": (1, {
   78     #    "name":                 STRING,
   79     #    "box":                  (BOX, MUST),
   80     #    "border":               (BOOL, "0"),
   81     #    }),
   82 
   83     "pdfnexttemplate": (0, {
   84         "name": (STRING, "body"),
   85     }),
   86 
   87     "pdfnextpage": (0, {
   88         "name": (STRING, ""),
   89         # "background":           FILE,
   90     }),
   91 
   92     "pdfnextframe": (0, {}),
   93 
   94     "pdffont": (0, {
   95         "src": (FILE, MUST),
   96         "name": (STRING, MUST),
   97         # "print":                (BOOL, "0"),
   98         "encoding": (STRING, "WinAnsiEncoding"),
   99     }),
  100 
  101     "pdflanguage": (0, {
  102         "name": (STRING, ""),
  103     }),
  104 
  105     "pdfdrawline": (0, {
  106         "from": (POS, MUST),
  107         "to": (POS, MUST),
  108         "color": (COLOR, "#000000"),
  109         "width": (SIZE, 1),
  110     }),
  111 
  112     "drawpoint": (0, {
  113         "pos": (POS, MUST),
  114         "color": (COLOR, "#000000"),
  115         "width": (SIZE, 1),
  116     }),
  117 
  118     "pdfdrawlines": (0, {
  119         "coords": (STRING, MUST),
  120         "color": (COLOR, "#000000"),
  121         "width": (SIZE, 1),
  122     }),
  123 
  124     "pdfdrawstring": (0, {
  125         "pos": (POS, MUST),
  126         "text": (STRING, MUST),
  127         "color": (COLOR, "#000000"),
  128         "align": (["left", "center", "right"], "right"),
  129         "valign": (["top", "middle", "bottom"], "bottom"),
  130         # "class":                CLASS,
  131         "rotate": (INT, "0"),
  132     }),
  133 
  134     "pdfdrawimg": (0, {
  135         "pos": (POS, MUST),
  136         "src": (FILE, MUST),
  137         "width": SIZE,
  138         "height": SIZE,
  139         "align": (["left", "center", "right"], "right"),
  140         "valign": (["top", "middle", "bottom"], "bottom"),
  141     }),
  142 
  143     "pdfspacer": (0, {
  144         "height": (SIZE, MUST),
  145     }),
  146 
  147     "pdfpagenumber": (0, {
  148         "example": (STRING, "0"),
  149     }),
  150 
  151     "pdfpagecount": (0, {
  152     }),
  153 
  154     "pdftoc": (0, {
  155     }),
  156 
  157     "pdfversion": (0, {
  158     }),
  159 
  160     "pdfkeeptogether": (1, {
  161     }),
  162 
  163     "pdfkeepinframe": (1, {
  164         "maxwidth": SIZE,
  165         "maxheight": SIZE,
  166         "mergespace": (INT, 1),
  167         "mode": (["error", "overflow", "shrink", "truncate"], "shrink"),
  168         "name": (STRING, "")
  169     }),
  170 
  171     # The chart example, see pml_charts
  172     "pdfchart": (1, {
  173         "type": (["spider", "bar"], "bar"),
  174         "strokecolor": (COLOR, "#000000"),
  175         "width": (SIZE, MUST),
  176         "height": (SIZE, MUST),
  177     }),
  178 
  179     "pdfchartdata": (0, {
  180         "set": (STRING, MUST),
  181         "value": (STRING),
  182         # "label":                (STRING),
  183         "strokecolor": (COLOR),
  184         "fillcolor": (COLOR),
  185         "strokewidth": (SIZE),
  186     }),
  187 
  188     "pdfchartlabel": (0, {
  189         "value": (STRING, MUST),
  190     }),
  191 
  192     "pdfbarcode": (0, {
  193         "value": (STRING, MUST),
  194         "type": (["i2of5", "itf",
  195                   "code39", "extendedcode39",
  196                   "code93", "extendedcode93",
  197                   "msi",
  198                   "codabar", "nw7",
  199                   "code11",
  200                   "fim",
  201                   "postnet",
  202                   "usps4s",
  203                   "code128",
  204                   "ean13", "ean8",
  205                   "qr",
  206                  ], "code128"),
  207         "humanreadable": (STRING, "0"),
  208         "vertical": (STRING, "0"),
  209         "checksum": (STRING, "1"),
  210         "barwidth": SIZE,
  211         "barheight": SIZE,
  212         "fontsize": SIZE,
  213         "align": (["baseline", "top", "middle", "bottom"], "baseline"),
  214     }),
  215 
  216     # ========================================================
  217 
  218     "link": (0, {
  219         "href": (STRING, MUST),
  220         "rel": (STRING, ""),
  221         "type": (STRING, ""),
  222         "media": (STRING, "all"),
  223         "charset": (STRING, "latin1"), # XXX Must be something else...
  224     }),
  225 
  226     "meta": (0, {
  227         "name": (STRING, ""),
  228         "content": (STRING, ""),
  229     }),
  230 
  231     "style": (0, {
  232         "type": (STRING, ""),
  233         "media": (STRING, "all"),
  234     }),
  235 
  236     "img": (0, {
  237         "src": (FILE, MUST),
  238         "width": SIZE,
  239         "height": SIZE,
  240         "align": ["top", "middle", "bottom", "left", "right",
  241                   "texttop", "absmiddle", "absbottom", "baseline"],
  242     }),
  243 
  244     "table": (1, {
  245         "align": (["left", "center", "right"], "left"),
  246         "valign": (["top", "bottom", "middle"], "middle"),
  247         "border": (SIZE, "0"),
  248         "bordercolor": (COLOR, "#000000"),
  249         "bgcolor": COLOR,
  250         "cellpadding": (SIZE, "0"),
  251         "cellspacing": (SIZE, "0"),
  252         "repeat": (INT, "0"), # XXX Remove this! Set to 0
  253         "width": STRING,
  254         #"keepmaxwidth":         SIZE,
  255         #"keepmaxheight":        SIZE,
  256         #"keepmergespace":       (INT, 1),
  257         #"keepmode":             (["error", "overflow", "shrink", "truncate"], "shrink"),
  258     }),
  259 
  260     "tr": (1, {
  261         "bgcolor": COLOR,
  262         "valign": ["top", "bottom", "middle"],
  263         "border": SIZE,
  264         "bordercolor": (COLOR, "#000000"),
  265     }),
  266 
  267     "td": (1, {
  268         "align": ["left", "center", "right", "justify"],
  269         "valign": ["top", "bottom", "middle"],
  270         "width": STRING,
  271         "bgcolor": COLOR,
  272         "border": SIZE,
  273         "bordercolor": (COLOR, "#000000"),
  274         "colspan": INT,
  275         "rowspan": INT,
  276     }),
  277 
  278     "th": (1, {
  279         "align": ["left", "center", "right", "justify"],
  280         "valign": ["top", "bottom", "middle"],
  281         "width": STRING,
  282         "bgcolor": COLOR,
  283         "border": SIZE,
  284         "bordercolor": (COLOR, "#000000"),
  285         "colspan": INT,
  286         "rowspan": INT,
  287     }),
  288 
  289     "dl": (1, {
  290     }),
  291 
  292     "dd": (1, {
  293     }),
  294 
  295     "dt": (1, {
  296     }),
  297 
  298     "ol": (1, {
  299         "type": (["1", "a", "A", "i", "I"], "1"),
  300     }),
  301 
  302     "ul": (1, {
  303         "type": (["circle", "disk", "square"], "disk"),
  304     }),
  305 
  306     "li": (1, {
  307     }),
  308 
  309     "hr": (0, {
  310         "color": (COLOR, "#000000"),
  311         "size": (SIZE, "1"),
  312         "width": STRING,
  313         "align": ["left", "center", "right", "justify"],
  314     }),
  315 
  316     "div": (1, {
  317         "align": ["left", "center", "right", "justify"],
  318     }),
  319 
  320     "p": (1, {
  321         "align": ["left", "center", "right", "justify"],
  322     }),
  323 
  324     "br": (0, {
  325     }),
  326 
  327     "h1": (1, {
  328         "outline": STRING,
  329         "closed": (INT, 0),
  330         "align": ["left", "center", "right", "justify"],
  331     }),
  332 
  333     "h2": (1, {
  334         "outline": STRING,
  335         "closed": (INT, 0),
  336         "align": ["left", "center", "right", "justify"],
  337     }),
  338 
  339     "h3": (1, {
  340         "outline": STRING,
  341         "closed": (INT, 0),
  342         "align": ["left", "center", "right", "justify"],
  343     }),
  344 
  345     "h4": (1, {
  346         "outline": STRING,
  347         "closed": (INT, 0),
  348         "align": ["left", "center", "right", "justify"],
  349     }),
  350 
  351     "h5": (1, {
  352         "outline": STRING,
  353         "closed": (INT, 0),
  354         "align": ["left", "center", "right", "justify"],
  355     }),
  356 
  357     "h6": (1, {
  358         "outline": STRING,
  359         "closed": (INT, 0),
  360         "align": ["left", "center", "right", "justify"],
  361     }),
  362 
  363     "font": (1, {
  364         "face": FONT,
  365         "color": COLOR,
  366         "size": STRING,
  367     }),
  368 
  369     "a": (1, {
  370         "href": STRING,
  371         "name": STRING,
  372     }),
  373 
  374     "input": (0, {
  375         "name": STRING,
  376         "value": STRING,
  377         "type": (["text", "hidden", "checkbox"], "text"),
  378     }),
  379 
  380     "textarea": (1, {
  381         "name": STRING,
  382     }),
  383 
  384     "select": (1, {
  385         "name": STRING,
  386         "value": STRING,
  387     }),
  388 
  389     "option": (0, {
  390         "value": STRING,
  391     }),
  392 }
  393 
  394 # XXX use "html" not "*" as default!
  395 DEFAULT_CSS = """
  396 html {
  397     font-family: Helvetica;
  398     font-size: 10px;
  399     font-weight: normal;
  400     color: #000000;
  401     background-color: transparent;
  402     margin: 0;
  403     padding: 0;
  404     line-height: 150%;
  405     border: 1px none;
  406     display: inline;
  407     width: auto;
  408     height: auto;
  409     white-space: normal;
  410 }
  411 
  412 b,
  413 strong {
  414     font-weight: bold;
  415 }
  416 
  417 i,
  418 em {
  419     font-style: italic;
  420 }
  421 
  422 u {
  423     text-decoration: underline;
  424 }
  425 
  426 s,
  427 strike {
  428     text-decoration: line-through;
  429 }
  430 
  431 a {
  432     text-decoration: underline;
  433     color: blue;
  434 }
  435 
  436 ins {
  437     color: green;
  438     text-decoration: underline;
  439 }
  440 del {
  441     color: red;
  442     text-decoration: line-through;
  443 }
  444 
  445 pre,
  446 code,
  447 kbd,
  448 samp,
  449 tt {
  450     font-family: "Courier New";
  451 }
  452 
  453 h1,
  454 h2,
  455 h3,
  456 h4,
  457 h5,
  458 h6 {
  459     font-weight:bold;
  460     -pdf-outline: true;
  461     -pdf-outline-open: false;
  462 }
  463 
  464 h1 {
  465     /*18px via YUI Fonts CSS foundation*/
  466     font-size:138.5%;
  467     -pdf-outline-level: 0;
  468 }
  469 
  470 h2 {
  471     /*16px via YUI Fonts CSS foundation*/
  472     font-size:123.1%;
  473     -pdf-outline-level: 1;
  474 }
  475 
  476 h3 {
  477     /*14px via YUI Fonts CSS foundation*/
  478     font-size:108%;
  479     -pdf-outline-level: 2;
  480 }
  481 
  482 h4 {
  483     -pdf-outline-level: 3;
  484 }
  485 
  486 h5 {
  487     -pdf-outline-level: 4;
  488 }
  489 
  490 h6 {
  491     -pdf-outline-level: 5;
  492 }
  493 
  494 h1,
  495 h2,
  496 h3,
  497 h4,
  498 h5,
  499 h6,
  500 p,
  501 pre,
  502 hr {
  503     margin:1em 0;
  504 }
  505 
  506 address,
  507 blockquote,
  508 body,
  509 center,
  510 dl,
  511 dir,
  512 div,
  513 fieldset,
  514 form,
  515 h1,
  516 h2,
  517 h3,
  518 h4,
  519 h5,
  520 h6,
  521 hr,
  522 isindex,
  523 menu,
  524 noframes,
  525 noscript,
  526 ol,
  527 p,
  528 pre,
  529 table,
  530 th,
  531 tr,
  532 td,
  533 ul,
  534 li,
  535 dd,
  536 dt,
  537 pdftoc {
  538     display: block;
  539 }
  540 
  541 table {
  542 }
  543 
  544 tr,
  545 th,
  546 td {
  547 
  548     vertical-align: middle;
  549     width: auto;
  550 }
  551 
  552 th {
  553     text-align: center;
  554     font-weight: bold;
  555 }
  556 
  557 center {
  558     text-align: center;
  559 }
  560 
  561 big {
  562     font-size: 125%;
  563 }
  564 
  565 small {
  566     font-size: 75%;
  567 }
  568 
  569 
  570 ul {
  571     margin-left: 1.5em;
  572     list-style-type: disc;
  573 }
  574 
  575 ul ul {
  576     list-style-type: circle;
  577 }
  578 
  579 ul ul ul {
  580     list-style-type: square;
  581 }
  582 
  583 ol {
  584     list-style-type: decimal;
  585     margin-left: 1.5em;
  586 }
  587 
  588 pre {
  589     white-space: pre;
  590 }
  591 
  592 blockquote {
  593     margin-left: 1.5em;
  594     margin-right: 1.5em;
  595 }
  596 
  597 noscript {
  598     display: none;
  599 }
  600 """
  601 
  602 DEFAULT_LANGUAGE_LIST = {
  603     "arabic": "arabic",
  604     "hebrew": "hebrew",
  605     "persian": "persian",
  606     "urdu": "urdu",
  607     "pashto": "pashto",
  608     "sindhi": "sindhi"
  609 }
  610 
  611 DEFAULT_ASIAN_FONT = util.get_default_asian_font()
  612 
  613 DEFAULT_FONT = {
  614     "courier": "Courier",
  615     "courier-bold": "Courier-Bold",
  616     "courier-boldoblique": "Courier-BoldOblique",
  617     "courier-oblique": "Courier-Oblique",
  618     "helvetica": "Helvetica",
  619     "helvetica-bold": "Helvetica-Bold",
  620     "helvetica-boldoblique": "Helvetica-BoldOblique",
  621     "helvetica-oblique": "Helvetica-Oblique",
  622     "times": "Times-Roman",
  623     "times-roman": "Times-Roman",
  624     "times-bold": "Times-Bold",
  625     "times-boldoblique": "Times-BoldOblique",
  626     "times-oblique": "Times-Oblique",
  627     "symbol": "Symbol",
  628     "zapfdingbats": "ZapfDingbats",
  629     "zapf-dingbats": "ZapfDingbats",
  630 
  631     # Alias
  632     "arial": "Helvetica",
  633     "times new roman": "Times-Roman",
  634     "georgia": "Times-Roman",
  635     'serif': 'Times-Roman',
  636     'sansserif': 'Helvetica',
  637     'sans': 'Helvetica',
  638     'monospaced': 'Courier',
  639     'monospace': 'Courier',
  640     'mono': 'Courier',
  641     'courier new': 'Courier',
  642     'verdana': 'Helvetica',
  643     'geneva': 'Helvetica',
  644 }
  645 
  646 PML_PAGESIZES = {
  647     "a0": A0,
  648     "a1": A1,
  649     "a2": A2,
  650     "a3": A3,
  651     "a4": A4,
  652     "a5": A5,
  653     "a6": A6,
  654     "b0": B0,
  655     "b1": B1,
  656     "b2": B2,
  657     "b3": B3,
  658     "b4": B4,
  659     "b5": B5,
  660     "b6": B6,
  661     "letter": LETTER,
  662     "legal": LEGAL,
  663     "ledger": ELEVENSEVENTEEN,
  664     "elevenseventeen": ELEVENSEVENTEEN,
  665 }