diff options
Diffstat (limited to 'sandbox/grubert/rlpdf')
-rw-r--r-- | sandbox/grubert/rlpdf/README.txt | 2 | ||||
-rw-r--r-- | sandbox/grubert/rlpdf/__init__.py | 5 | ||||
-rw-r--r-- | sandbox/grubert/rlpdf/rlpdf.py | 671 | ||||
-rw-r--r-- | sandbox/grubert/rlpdf/rltemplate.py | 143 | ||||
-rw-r--r-- | sandbox/grubert/rlpdf/stylesheet.py | 158 |
5 files changed, 0 insertions, 979 deletions
diff --git a/sandbox/grubert/rlpdf/README.txt b/sandbox/grubert/rlpdf/README.txt deleted file mode 100644 index 62e31f1ef..000000000 --- a/sandbox/grubert/rlpdf/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -modules from reportlab tools - diff --git a/sandbox/grubert/rlpdf/__init__.py b/sandbox/grubert/rlpdf/__init__.py deleted file mode 100644 index 274814120..000000000 --- a/sandbox/grubert/rlpdf/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# rlpdf subpackage - -from rlpdf import Writer -from stylesheet import getStyleSheet -from rltemplate import RLDocTemplate diff --git a/sandbox/grubert/rlpdf/rlpdf.py b/sandbox/grubert/rlpdf/rlpdf.py deleted file mode 100644 index 781aa0e70..000000000 --- a/sandbox/grubert/rlpdf/rlpdf.py +++ /dev/null @@ -1,671 +0,0 @@ -#! /usr/bin/env python - -""" -:Author: Engelbert Gruber -:Contact: goodger@users.sourceforge.net -:Revision: $Revision$ -:Date: $Date$ -:Copyright: This module has been placed in the public domain. - -Simple pdf writer. - -The output uses reportlabs module. - -Some stylesheet is needed. -""" - -__docformat__ = 'reStructuredText' - - -import time -from types import ListType -from docutils import writers, nodes, languages - -from stylesheet import getStyleSheet -from rltemplate import RLDocTemplate - -from reportlab.lib.styles import ParagraphStyle -from reportlab.lib.enums import * -from reportlab.lib.pagesizes import A4 -from reportlab.platypus import * -from reportlab.lib import colors -from reportlab.lib.units import inch - -class Writer(writers.Writer): - - output = None - """Final translated form of `document`.""" - - def translate(self): - visitor = PDFTranslator(self.document) - self.document.walkabout(visitor) - self.story = visitor.as_what() - - def record(self): - doc = RLDocTemplate(self.destination, pagesize=A4) - doc.build(self.story) - - def lower(self): - return 'pdf' - -class PDFTranslator(nodes.NodeVisitor): - - def __init__(self, doctree): - self.styleSheet = getStyleSheet() - nodes.NodeVisitor.__init__(self, doctree) - self.language = languages.get_language(doctree.settings.language_code) - self.head = [] - self.body = [] - self.foot = [] - self.sectionlevel = 0 - self.context = [] - self.topic_class = '' - self.story = [] - self.bulletText = '\xb7' # maybe move this into stylesheet. - - def as_what(self): - return self.story - - def encode(self, text): - """Encode special characters in `text` & return.""" - text = text.replace("&", "&") - #text = text.replace("<", "(lt)") - #text = text.replace('"', "(quot)") - #text = text.replace(">", "(gt)") - # footnotes have character values above 128 ? - for i in range(len(text)): - if (ord(text[i])>128): - return "ATT" - print "warning: %d %x" % (i,ord(text[i])) - text.replace(text[i],"?") - return text - - def append_styled(self,text,in_style='Normal'): - if self.styleSheet.has_key(in_style): - style = self.styleSheet[in_style] - self.story.append(Paragraph(self.encode(text), style, bulletText=None)) - - def append_normal(self,text): - style = self.styleSheet['Normal'] - self.story.append(Paragraph(self.encode(text), style, bulletText=None)) - - def starttag(self, node, tagname, suffix='\n', **attributes): - atts = {} - for (name, value) in attributes.items(): - atts[name.lower()] = value - for att in ('class',): # append to node attribute - if node.has_key(att): - if atts.has_key(att): - atts[att] = node[att] + ' ' + atts[att] - for att in ('id',): # node attribute overrides - if node.has_key(att): - atts[att] = node[att] - attlist = atts.items() - attlist.sort() - parts = [tagname.upper()] - for name, value in attlist: - if value is None: # boolean attribute - parts.append(name.upper()) - elif isinstance(value, ListType): - values = [str(v) for v in value] - parts.append('%s="%s"' % (name.upper(), - self.encode(' '.join(values)))) - else: - parts.append('%s="%s"' % (name.upper(), - self.encode(str(value)))) - return '<%s>%s' % (' '.join(parts), suffix) - - def visit_Text(self, node): - #self.body.append(self.encode(node.astext())) - # Text is visited for every element ? - #self.append_normal("Text:"+node.astext()) - pass - - def depart_Text(self, node): - pass - - def visit_admonition(self, node, name): - self.body.append(self.starttag(node, 'div', CLASS=name)) - self.body.append('<P CLASS="admonition-title">' + self.language.labels[name] + '</P>\n') - - def depart_admonition(self): - self.body.append('</DIV>\n') - - def visit_attention(self, node): - self.visit_admonition(node, 'attention') - - def depart_attention(self, node): - self.depart_admonition() - - def visit_author(self, node): - self.visit_docinfo_item(node, 'author') - - def depart_author(self, node): - self.depart_docinfo_item() - - def visit_authors(self, node): - pass - - def depart_authors(self, node): - pass - - def visit_block_quote(self, node): - self.body.append(self.starttag(node, 'blockquote')) - - def depart_block_quote(self, node): - self.body.append('</BLOCKQUOTE>\n') - - def visit_bullet_list(self, node): - if self.topic_class == 'contents': - self.body.append(self.starttag(node, 'ul', compact=None)) - else: - style = self.styleSheet['Normal'] - self.story.append(Paragraph(self.encode(node.astext()), - style, bulletText=self.bulletText)) - - def depart_bullet_list(self, node): - pass - - def visit_caption(self, node): - self.body.append(self.starttag(node, 'p', '', CLASS='caption')) - - def depart_caption(self, node): - self.body.append('</P>\n') - - def visit_caution(self, node): - self.visit_admonition(node, 'caution') - - def depart_caution(self, node): - self.depart_admonition() - - def visit_citation(self, node): - self.body.append(self.starttag(node, 'table', CLASS='citation', - frame="void", rules="none")) - self.body.append('<COL CLASS="label">\n' - '<COL>\n' - '<TBODY VALIGN="top">\n' - '<TR><TD>\n') - - def depart_citation(self, node): - self.body.append('</TD></TR>\n' - '</TBODY>\n</TABLE>\n') - - def visit_citation_reference(self, node): - href = '' - if node.has_key('refid'): - href = '#' + node['refid'] - elif node.has_key('refname'): - href = '#' + self.doctree.nameids[node['refname']] - self.body.append(self.starttag(node, 'a', '[', href=href, #node['refid'], - CLASS='citation-reference')) - - def depart_citation_reference(self, node): - self.body.append(']</A>') - - def visit_classifier(self, node): - self.body.append(' <SPAN CLASS="classifier-delimiter">:</SPAN> ') - self.body.append(self.starttag(node, 'span', '', CLASS='classifier')) - - def depart_classifier(self, node): - self.body.append('</SPAN>') - - def visit_colspec(self, node): - atts = {} - #if node.has_key('colwidth'): - # atts['width'] = str(node['colwidth']) + '*' - self.body.append(self.starttag(node, 'col', **atts)) - - def depart_colspec(self, node): - pass - - def visit_comment(self, node): - self.body.append('<!-- ') - - def depart_comment(self, node): - self.body.append(' -->\n') - - def visit_contact(self, node): - self.visit_docinfo_item(node, 'contact') - - def depart_contact(self, node): - self.depart_docinfo_item() - - def visit_copyright(self, node): - self.visit_docinfo_item(node, 'copyright') - - def depart_copyright(self, node): - self.depart_docinfo_item() - - def visit_danger(self, node): - self.visit_admonition(node, 'danger') - - def depart_danger(self, node): - self.depart_admonition() - - def visit_date(self, node): - self.visit_docinfo_item(node, 'date') - - def depart_date(self, node): - self.depart_docinfo_item() - - def visit_definition(self, node): - self.body.append('</DT>\n') - self.body.append(self.starttag(node, 'dd')) - - def depart_definition(self, node): - self.body.append('</DD>\n') - - def visit_definition_list(self, node): - self.body.append(self.starttag(node, 'dl')) - - def depart_definition_list(self, node): - self.body.append('</DL>\n') - - def visit_definition_list_item(self, node): - pass - - def depart_definition_list_item(self, node): - pass - - def visit_description(self, node): - self.body.append('<TD>\n') - - def depart_description(self, node): - self.body.append('</TD>') - - def visit_docinfo(self, node): - self.body.append(self.starttag(node, 'table', CLASS='docinfo', - frame="void", rules="none")) - self.body.append('<COL CLASS="docinfo-name">\n' - '<COL CLASS="docinfo-content">\n' - '<TBODY VALIGN="top">\n') - - def depart_docinfo(self, node): - self.body.append('</TBODY>\n</TABLE>\n') - - def visit_docinfo_item(self, node, name): - self.head.append('<META NAME="%s" CONTENT="%s">\n' - % (name, self.encode(node.astext()))) - self.body.append(self.starttag(node, 'tr', '')) - self.body.append('<TD>\n' - '<P CLASS="docinfo-name">%s:</P>\n' - '</TD><TD>\n' - '<P>' % self.language.labels[name]) - - def depart_docinfo_item(self): - self.body.append('</P>\n</TD></TR>') - - def visit_doctest_block(self, node): - self.body.append(self.starttag(node, 'pre', CLASS='doctest-block')) - - def depart_doctest_block(self, node): - self.body.append('</PRE>\n') - - def visit_document(self, node): - self.body.append(self.starttag(node, 'div', CLASS='document')) - - def depart_document(self, node): - self.body.append('</DIV>\n') - #self.body.append( - # '<P CLASS="credits">HTML generated from <CODE>%s</CODE> on %s ' - # 'by <A HREF="http://docutils.sourceforge.net/">Docutils</A>.' - # '</P>\n' % (node['source'], time.strftime('%Y-%m-%d'))) - - def visit_emphasis(self, node): - self.append_styled(node.astext(),'Italic') - - def depart_emphasis(self, node): - pass - - def visit_entry(self, node): - if isinstance(node.parent.parent, nodes.thead): - tagname = 'th' - else: - tagname = 'td' - atts = {} - if node.has_key('morerows'): - atts['rowspan'] = node['morerows'] + 1 - if node.has_key('morecols'): - atts['colspan'] = node['morecols'] + 1 - self.body.append(self.starttag(node, tagname, **atts)) - self.context.append('</%s>' % tagname.upper()) - if len(node) == 0: # empty cell - self.body.append(' ') - - def depart_entry(self, node): - self.body.append(self.context.pop()) - - def visit_enumerated_list(self, node): - """ - The 'start' attribute does not conform to HTML 4.01's strict.dtd, but - CSS1 doesn't help. CSS2 isn't widely enough supported yet to be - usable. - """ - atts = {} - if node.has_key('start'): - atts['start'] = node['start'] - if node.has_key('enumtype'): - atts['class'] = node['enumtype'] - # @@@ To do: prefix, suffix. How? Change prefix/suffix to a - # single "format" attribute? Use CSS2? - self.body.append(self.starttag(node, 'ol', **atts)) - - def depart_enumerated_list(self, node): - self.body.append('</OL>\n') - - def visit_error(self, node): - self.visit_admonition(node, 'error') - - def depart_error(self, node): - self.depart_admonition() - - def visit_field(self, node): - self.body.append(self.starttag(node, 'tr', CLASS='field')) - - def depart_field(self, node): - self.body.append('</TR>\n') - - def visit_field_argument(self, node): - self.body.append(' ') - self.body.append(self.starttag(node, 'span', '', - CLASS='field-argument')) - - def depart_field_argument(self, node): - self.body.append('</SPAN>') - - def visit_field_body(self, node): - self.body.append(':</P>\n</TD><TD>') - self.body.append(self.starttag(node, 'div', CLASS='field-body')) - - def depart_field_body(self, node): - self.body.append('</DIV></TD>\n') - - def visit_field_list(self, node): - self.body.append(self.starttag(node, 'table', frame='void', - rules='none')) - self.body.append('<COL CLASS="field-name">\n' - '<COL CLASS="field-body">\n' - '<TBODY VALIGN="top">\n') - - def depart_field_list(self, node): - self.body.append('</TBODY>\n</TABLE>\n') - - def visit_field_name(self, node): - self.body.append('<TD>\n') - self.body.append(self.starttag(node, 'p', '', CLASS='field-name')) - - def depart_field_name(self, node): - """ - Leave the end tag to `self.visit_field_body()`, in case there are any - field_arguments. - """ - pass - - def visit_figure(self, node): - self.body.append(self.starttag(node, 'div', CLASS='figure')) - - def depart_figure(self, node): - self.body.append('</DIV>\n') - - def visit_footnote(self, node): - self.body.append(self.starttag(node, 'table', CLASS='footnote', - frame="void", rules="none")) - self.body.append('<COL CLASS="label">\n' - '<COL>\n' - '<TBODY VALIGN="top">\n' - '<TR><TD>\n') - - def depart_footnote(self, node): - self.body.append('</TD></TR>\n' - '</TBODY>\n</TABLE>\n') - - def visit_footnote_reference(self, node): - href = '' - if node.has_key('refid'): - href = '#' + node['refid'] - elif node.has_key('refname'): - href = '#' + self.doctree.nameids[node['refname']] - self.body.append(self.starttag(node, 'a', '', href=href, #node['refid'], - CLASS='footnote-reference')) - - def depart_footnote_reference(self, node): - self.body.append('</A>') - - def visit_hint(self, node): - self.visit_admonition(node, 'hint') - - def depart_hint(self, node): - self.depart_admonition() - - def visit_image(self, node): - atts = node.attributes.copy() - atts['src'] = atts['uri'] - del atts['uri'] - if not atts.has_key('alt'): - atts['alt'] = atts['src'] - self.body.append(self.starttag(node, 'img', '', **atts)) - - def depart_image(self, node): - pass - - def visit_important(self, node): - self.visit_admonition(node, 'important') - - def depart_important(self, node): - self.depart_admonition() - - def visit_interpreted(self, node): - self.body.append('<SPAN class="interpreted">') - - def depart_interpreted(self, node): - self.body.append('</SPAN>') - - def visit_label(self, node): - self.body.append(self.starttag(node, 'p', '[', CLASS='label')) - - def depart_label(self, node): - self.body.append(']</P>\n' - '</TD><TD>\n') - - def visit_legend(self, node): - self.body.append(self.starttag(node, 'div', CLASS='legend')) - - def depart_legend(self, node): - self.body.append('</DIV>\n') - - def visit_list_item(self, node): - self.body.append(self.starttag(node, 'li')) - - def depart_list_item(self, node): - self.body.append('</LI>\n') - - def visit_literal(self, node): - self.body.append('<CODE>') - - def depart_literal(self, node): - self.body.append('</CODE>') - - def visit_literal_block(self, node): - self.body.append(self.starttag(node, 'pre', CLASS='literal-block')) - - def depart_literal_block(self, node): - self.body.append('</PRE>\n') - - def visit_meta(self, node): - self.head.append(self.starttag(node, 'meta', **node.attributes)) - - def depart_meta(self, node): - pass - - def visit_note(self, node): - self.visit_admonition(node, 'note') - - def depart_note(self, node): - self.depart_admonition() - - def visit_option(self, node): - if self.context[-1]: - self.body.append(', ') - - def depart_option(self, node): - self.context[-1] += 1 - - def visit_option_argument(self, node): - self.body.append(node.get('delimiter', ' ')) - self.body.append(self.starttag(node, 'span', '', - CLASS='option-argument')) - - def depart_option_argument(self, node): - self.body.append('</SPAN>') - - def visit_option_group(self, node): - atts = {} - if len(node.astext()) > 14: - atts['colspan'] = 2 - self.context.append('</TR>\n<TR><TD> </TD>') - else: - self.context.append('') - self.body.append(self.starttag(node, 'td', **atts)) - self.body.append('<P><CODE>') - self.context.append(0) - - def depart_option_group(self, node): - self.context.pop() - self.body.append('</CODE></P>\n</TD>') - self.body.append(self.context.pop()) - - def visit_option_list(self, node): - self.body.append( - self.starttag(node, 'table', CLASS='option-list', - frame="void", rules="none", cellspacing=12)) - self.body.append('<COL CLASS="option">\n' - '<COL CLASS="description">\n' - '<TBODY VALIGN="top">\n') - - def depart_option_list(self, node): - self.body.append('</TBODY>\n</TABLE>\n') - - def visit_option_list_item(self, node): - self.body.append(self.starttag(node, 'tr', '')) - - def depart_option_list_item(self, node): - self.body.append('</TR>\n') - - def visit_option_string(self, node): - self.body.append(self.starttag(node, 'span', '', CLASS='option')) - - def depart_option_string(self, node): - self.body.append('</SPAN>') - - def visit_organization(self, node): - self.visit_docinfo_item(node, 'organization') - - def depart_organization(self, node): - self.depart_docinfo_item() - - def visit_paragraph(self, node): - if not self.topic_class == 'contents': - self.append_normal(node.astext()) - - def depart_paragraph(self, node): - if self.topic_class == 'contents': - self.append_normal('\n') - else: - self.append_normal('\n') - - def visit_problematic(self, node): - if node.hasattr('refid'): - self.body.append('<A HREF="#%s">' % node['refid']) - self.context.append('</A>') - else: - self.context.append('') - self.body.append(self.starttag(node, 'span', '', CLASS='problematic')) - - def depart_problematic(self, node): - self.body.append('</SPAN>') - self.body.append(self.context.pop()) - - def visit_raw(self, node): - if node.has_key('format') and node['format'] == 'html': - self.body.append(node.astext()) - raise nodes.SkipNode - - def visit_reference(self, node): - if node.has_key('refuri'): - href = node['refuri'] - elif node.has_key('refid'): - #else: - href = '#' + node['refid'] - elif node.has_key('refname'): - # @@@ Check for non-existent mappings. Here or in a transform? - href = '#' + self.doctree.nameids[node['refname']] - self.body.append(self.starttag(node, 'a', '', href=href, - CLASS='reference')) - - def depart_reference(self, node): - self.body.append('</A>') - - def visit_revision(self, node): - self.visit_docinfo_item(node, 'revision') - - def depart_revision(self, node): - self.depart_docinfo_item() - - def visit_row(self, node): - self.body.append(self.starttag(node, 'tr', '')) - - def depart_row(self, node): - self.body.append('</TR>\n') - - def visit_section(self, node): - self.sectionlevel += 1 - self.body.append(self.starttag(node, 'div', CLASS='section')) - - def depart_section(self, node): - self.sectionlevel -= 1 - self.body.append('</DIV>\n') - - def visit_status(self, node): - self.visit_docinfo_item(node, 'status') - - def depart_status(self, node): - self.depart_docinfo_item() - - def visit_strong(self, node): - self.body.append('<STRONG>') - - def depart_strong(self, node): - self.body.append('</STRONG>') - - def visit_subtitle(self, node): - self.append_styled(node.astext(),'h2') - - def depart_subtitle(self, node): - pass - - def visit_title(self, node): - """Only 6 section levels are supported by HTML.""" - if isinstance(node.parent, nodes.topic): - self.body.append( - self.starttag(node, 'P', '', CLASS='topic-title')) - self.context.append('</P>\n') - elif self.sectionlevel == 0: - self.head.append('<TITLE>%s</TITLE>\n' - % self.encode(node.astext())) - self.body.append(self.starttag(node, 'H1', '', CLASS='title')) - self.context.append('</H1>\n') - self.append_styled(node.astext(),'h1') - else: - self.append_styled(node.astext(), "h%s" % self.sectionlevel ) - context = '' - if node.hasattr('refid'): - self.body.append('<A HREF="#%s">' % node['refid']) - context = '</A>' - self.context.append('%s</H%s>\n' % (context, self.sectionlevel)) - - def depart_title(self, node): - self.body.append(self.context.pop()) - - def unimplemented_visit(self, node): - raise NotImplementedError('visiting unimplemented node type: %s' - % node.__class__.__name__) diff --git a/sandbox/grubert/rlpdf/rltemplate.py b/sandbox/grubert/rlpdf/rltemplate.py deleted file mode 100644 index dc462430f..000000000 --- a/sandbox/grubert/rlpdf/rltemplate.py +++ /dev/null @@ -1,143 +0,0 @@ -#copyright ReportLab Inc. 2000 -#see rllicense.txt for license details -#history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/docs/tools/rltemplate.py?cvsroot=reportlab -#$Header$ -# doc template for RL manuals. Currently YAML is hard-coded -#to use this, which is wrong. - - -from reportlab.platypus import PageTemplate, \ - BaseDocTemplate, SimpleDocTemplate, Frame, Paragraph -from reportlab.lib.units import inch, cm -from reportlab.rl_config import defaultPageSize - - -class FrontCoverTemplate(PageTemplate): - def __init__(self, id, pageSize=defaultPageSize): - self.pageWidth = pageSize[0] - self.pageHeight = pageSize[1] - frame1 = Frame(inch, - 3*inch, - self.pageWidth - 2*inch, - self.pageHeight - 518, id='cover') - PageTemplate.__init__(self, id, [frame1]) # note lack of onPage - - def afterDrawPage(self, canvas, doc): - canvas.saveState() - #canvas.drawImage('../images/replogo.gif',2*inch, 8*inch) - - - canvas.setFont('Times-Roman', 10) - canvas.line(inch, 120, self.pageWidth - inch, 120) - - #canvas.drawString(inch, 100, 'Lombard Business Park') - #canvas.drawString(inch, 88, '8 Lombard Road') - #canvas.drawString(inch, 76, 'Wimbledon') - #canvas.drawString(inch, 64, 'London, ENGLAND SW19 3TZ') - - #canvas.drawRightString(self.pageWidth - inch, 100, '103 Bayard Street') - #canvas.drawRightString(self.pageWidth - inch, 88, 'New Brunswick') - #canvas.drawRightString(self.pageWidth - inch, 76, 'New Jersey, 08904)') - #canvas.drawRightString(self.pageWidth - inch, 64, 'USA') - - canvas.restoreState() - - -class OneColumnTemplate(PageTemplate): - def __init__(self, id, pageSize=defaultPageSize): - self.pageWidth = pageSize[0] - self.pageHeight = pageSize[1] - frame1 = Frame(inch, - inch, - self.pageWidth - 2*inch, - self.pageHeight - 2*inch, - id='normal') - PageTemplate.__init__(self, id, [frame1]) # note lack of onPage - - def afterDrawPage(self, canvas, doc): - y = self.pageHeight - 50 - canvas.saveState() - canvas.setFont('Times-Roman', 10) - canvas.drawString(inch, y+8, doc.title) - canvas.drawRightString(self.pageWidth - inch, y+8, doc.chapter) - canvas.line(inch, y, self.pageWidth - inch, y) - canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) - canvas.restoreState() - -class TwoColumnTemplate(PageTemplate): - def __init__(self, id, pageSize=defaultPageSize): - self.pageWidth = pageSize[0] - self.pageHeight = pageSize[1] - colWidth = 0.5 * (self.pageWidth - 2.25*inch) - frame1 = Frame(inch, - inch, - colWidth, - self.pageHeight - 2*inch, - id='leftCol') - frame2 = Frame(0.5 * self.pageWidth + 0.125, - inch, - colWidth, - self.pageHeight - 2*inch, - id='rightCol') - PageTemplate.__init__(self, id, [frame1, frame2]) # note lack of onPage - - def afterDrawPage(self, canvas, doc): - y = self.pageHeight - 50 - canvas.saveState() - canvas.setFont('Times-Roman', 10) - canvas.drawString(inch, y+8, doc.title) - canvas.drawRightString(self.pageWidth - inch, y+8, doc.chapter) - canvas.line(inch, y, self.pageWidth - inch, y*inch) - canvas.drawCentredString(doc.pagesize[0] / 2, 0.75*inch, 'Page %d' % canvas.getPageNumber()) - canvas.restoreState() - - -# class RLDocTemplate(BaseDocTemplate): -class RLDocTemplate(SimpleDocTemplate): - def afterInit(self): - self.addPageTemplates(FrontCoverTemplate('Cover', self.pagesize)) - self.addPageTemplates(OneColumnTemplate('Normal', self.pagesize)) - self.addPageTemplates(TwoColumnTemplate('TwoColumn', self.pagesize)) - self.addPageTemplates(OneColumnTemplate('Cover', self.pagesize)) - - #just playing - self.title = "(Document Title Goes Here)" - self.chapter = "(No chapter yet)" - self.chapterNo = 1 #unique keys - self.sectionNo = 1 # unique keys - -## # AR hack -## self.counter = 1 - def beforeDocument(self): - self.canv.showOutline() - - def afterFlowable(self, flowable): - """Detect Level 1 and 2 headings, build outline, - and track chapter title.""" - if isinstance(flowable, Paragraph): - style = flowable.style.name - -## #AR debug text -## try: -## print '%d: %s...' % (self.counter, flowable.getPlainText()[0:40]) -## except AttributeError: -## print '%d: (something with ABag)' % self.counter -## self.counter = self.counter + 1 - - if style == 'Title': - self.title = flowable.getPlainText() - elif style == 'Heading1': - self.chapter = flowable.getPlainText() - key = 'ch%d' % self.chapterNo - self.canv.bookmarkPage(key) - self.canv.addOutlineEntry(flowable.getPlainText(), - key, 0, 0) - self.chapterNo = self.chapterNo + 1 - self.sectionNo = 1 - elif style == 'Heading2': - self.section = flowable.text - key = 'ch%ds%d' % (self.chapterNo, self.sectionNo) - self.canv.bookmarkPage(key) - self.canv.addOutlineEntry(flowable.getPlainText(), - key, 1, 0) - self.sectionNo = self.sectionNo + 1 diff --git a/sandbox/grubert/rlpdf/stylesheet.py b/sandbox/grubert/rlpdf/stylesheet.py deleted file mode 100644 index 3b7749935..000000000 --- a/sandbox/grubert/rlpdf/stylesheet.py +++ /dev/null @@ -1,158 +0,0 @@ -#copyright ReportLab Inc. 2000 -#see rllicense.txt for license details -#history http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/docs/tools/stylesheet.py?cvsroot=reportlab -#$Header$ -#standard stylesheet for our manuals -from reportlab.lib.styles import StyleSheet1, ParagraphStyle -from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_RIGHT, TA_JUSTIFY -from reportlab.lib import colors - - -def getStyleSheet(): - """Returns a stylesheet object""" - stylesheet = StyleSheet1() - - stylesheet.add(ParagraphStyle(name='Normal', - fontName='Times-Roman', - fontSize=10, - leading=12, - spaceBefore=6) - ) - - stylesheet.add(ParagraphStyle(name='Comment', - fontName='Times-Italic') - ) - - stylesheet.add(ParagraphStyle(name='Indent1', - leftIndent=36, - firstLineIndent=0) - ) - - stylesheet.add(ParagraphStyle(name='BodyText', - parent=stylesheet['Normal'], - spaceBefore=6) - ) - stylesheet.add(ParagraphStyle(name='Italic', - parent=stylesheet['BodyText'], - fontName = 'Times-Italic') - ) - - stylesheet.add(ParagraphStyle(name='Heading1', - parent=stylesheet['Normal'], - fontName = 'Times-Bold', - alignment=TA_CENTER, - fontSize=18, - leading=22, - spaceAfter=6), - alias='h1') - - stylesheet.add(ParagraphStyle(name='Heading2', - parent=stylesheet['Normal'], - fontName = 'Times-Bold', - fontSize=14, - leading=17, - spaceBefore=12, - spaceAfter=6), - alias='h2') - - stylesheet.add(ParagraphStyle(name='Heading3', - parent=stylesheet['Normal'], - fontName = 'Times-BoldItalic', - fontSize=12, - leading=14, - spaceBefore=12, - spaceAfter=6), - alias='h3') - - stylesheet.add(ParagraphStyle(name='Heading4', - parent=stylesheet['Normal'], - fontName = 'Times-BoldItalic', - spaceBefore=10, - spaceAfter=4), - alias='h4') - - stylesheet.add(ParagraphStyle(name='Title', - parent=stylesheet['Normal'], - fontName = 'Times-Bold', - fontSize=48, - leading=56, - spaceAfter=72, - alignment=TA_CENTER - ), - alias='t') - - stylesheet.add(ParagraphStyle(name='Subtitle', - parent=stylesheet['Normal'], - fontName = 'Times-Bold', - fontSize=32, - leading=56, - spaceAfter=72, - alignment=TA_CENTER - ), - alias='subtitle') - - stylesheet.add(ParagraphStyle(name='Bullet', - parent=stylesheet['Normal'], - firstLineIndent=0, - leftIndent=36, - bulletIndent=18, - spaceBefore=0, - bulletFontName='Symbol'), - alias='bu') - - stylesheet.add(ParagraphStyle(name='Definition', - parent=stylesheet['Normal'], - firstLineIndent=0, - leftIndent=36, - bulletIndent=0, - spaceBefore=6, - bulletFontName='Times-BoldItalic'), - alias='df') - - stylesheet.add(ParagraphStyle(name='Code', - parent=stylesheet['Normal'], - fontName='Courier', - textColor=colors.navy, - fontSize=8, - leading=8.8, - leftIndent=36, - firstLineIndent=0)) - - stylesheet.add(ParagraphStyle(name='FunctionHeader', - parent=stylesheet['Normal'], - fontName='Courier-Bold', - fontSize=8, - leading=8.8)) - - stylesheet.add(ParagraphStyle(name='DocString', - parent=stylesheet['Normal'], - fontName='Courier', - fontSize=8, - leftIndent=18, - leading=8.8)) - - stylesheet.add(ParagraphStyle(name='DocStringIndent', - parent=stylesheet['Normal'], - fontName='Courier', - fontSize=8, - leftIndent=36, - leading=8.8)) - - stylesheet.add(ParagraphStyle(name='URL', - parent=stylesheet['Normal'], - fontName='Courier', - textColor=colors.navy, - alignment=TA_CENTER), - alias='u') - - stylesheet.add(ParagraphStyle(name='Centred', - parent=stylesheet['Normal'], - alignment=TA_CENTER - )) - - stylesheet.add(ParagraphStyle(name='Caption', - parent=stylesheet['Centred'], - fontName='Times-Italic' - )) - - return stylesheet |