def styleFromList(styleName, specArray, spacing, showAllLevels): bullet = "" numPrefix = "" numSuffix = "" numberFormat = "" cssLengthNum = 0 cssLengthUnits = "" numbered = False displayLevels = 0 listStyle = ListStyle(name=styleName) numFormatPattern = re.compile("([1IiAa])") cssLengthPattern = re.compile("([^a-z]+)\\s*([a-z]+)?") m = cssLengthPattern.search(spacing) if (m != None): cssLengthNum = float(m.group(1)) if (m.lastindex == 2): cssLengthUnits = m.group(2) i = 0 while i < len(specArray): specification = specArray[i] m = numFormatPattern.search(specification) if (m != None): numberFormat = m.group(1) numPrefix = specification[0:m.start(1)] numSuffix = specification[m.end(1):] bullet = "" numbered = True if (showAllLevels): displayLevels = i + 1 else: displayLevels = 1 else: # it's a bullet style bullet = specification numPrefix = "" numSuffix = "" numberFormat = "" displayLevels = 1 numbered = False if (numbered): lls = ListLevelStyleNumber(level=(i + 1)) if (numPrefix != ''): lls.setAttribute('numprefix', numPrefix) if (numSuffix != ''): lls.setAttribute('numsuffix', numSuffix) lls.setAttribute('displaylevels', displayLevels) else: lls = ListLevelStyleBullet(level=(i + 1), bulletchar=bullet[0]) llp = ListLevelProperties() llp.setAttribute('spacebefore', str(cssLengthNum * (i + 1)) + cssLengthUnits) llp.setAttribute('minlabelwidth', str(cssLengthNum) + cssLengthUnits) lls.addElement(llp) listStyle.addElement(lls) i += 1 return listStyle
def __init__(self, filename): self.filename = filename self.doc = OpenDocumentText() # font self.doc.fontfacedecls.addElement((FontFace(name="Arial", fontfamily="Arial", fontsize="10", fontpitch="variable", fontfamilygeneric="swiss"))) # styles style_standard = Style(name="Standard", family="paragraph", attributes={"class": "text"}) style_standard.addElement( ParagraphProperties(punctuationwrap="hanging", writingmode="page", linebreak="strict")) style_standard.addElement(TextProperties(fontname="Arial", fontsize="10pt", fontsizecomplex="10pt", fontsizeasian="10pt")) self.doc.styles.addElement(style_standard) # automatic styles style_normal = Style(name="ResumeText", parentstylename="Standard", family="paragraph") self.doc.automaticstyles.addElement(style_normal) style_bold_text = Style( name="ResumeBoldText", parentstylename="Standard", family="text") style_bold_text.addElement(TextProperties(fontweight="bold", fontweightasian="bold", fontweightcomplex="bold")) self.doc.automaticstyles.addElement(style_bold_text) style_list_text = ListStyle(name="ResumeListText") style_list_bullet = ListLevelStyleBullet(level="1", stylename="ResumeListTextBullet", numsuffix=".", bulletchar=u'\u2022') style_list_bullet.addElement(ListLevelProperties(spacebefore="0.1in", minlabelwidth="0.2in")) style_list_text.addElement(style_list_bullet) self.doc.automaticstyles.addElement(style_list_text) style_bold_para = Style(name="ResumeH2", parentstylename="Standard", family="paragraph") style_bold_para.addElement(TextProperties(fontweight="bold", fontweightasian="bold", fontweightcomplex="bold")) self.doc.automaticstyles.addElement(style_bold_para) style_bold_center = Style(name="ResumeH1", parentstylename="Standard", family="paragraph") style_bold_center.addElement(TextProperties(fontweight="bold", fontweightasian="bold", fontweightcomplex="bold")) style_bold_center.addElement(ParagraphProperties(textalign="center")) self.doc.automaticstyles.addElement(style_bold_center)
# L1 """ <text:list-style style:name="L1"> <text:list-level-style-bullet text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="." text:bullet-char="•"> <style:list-level-properties text:space-before="0.25in" text:min-label-width="0.25in"/> <style:text-properties style:font-name="StarSymbol"/> </text:list-level-style-bullet> </text:list-style> """ L1style=ListStyle(name="L1") # u'\u2022' is the bullet character (http://www.unicode.org/charts/PDF/U2000.pdf) bullet1 = ListLevelStyleBullet(level="1", stylename="Numbering_20_Symbols", numsuffix=".", bulletchar=u'\u2022') L1prop1 = ListLevelProperties(spacebefore="0.25in", minlabelwidth="0.25in") bullet1.addElement(L1prop1) L1style.addElement(bullet1) textdoc.automaticstyles.addElement(L1style) # P6 """ <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="L5"/> """ P6style = Style(name="P6", family="paragraph", parentstylename="Standard", liststylename="L5") textdoc.automaticstyles.addElement(P6style)
def generate(self): self._textdoc = OpenDocumentText() # Creating different style used in the document s = self._textdoc.styles # For Level-1 Headings that are centerd h1style = Style(name="BsHeading 1", family="paragraph") h1style.addElement( ParagraphProperties(attributes={"textalign": "center"})) h1style.addElement( TextProperties(attributes={ "fontsize": "18pt", "fontweight": "bold" })) # For Level-2 Headings that are centered self._h2style = Style(name="BsHeading 2", family="paragraph") self._h2style.addElement( ParagraphProperties(attributes={"textalign": "left"})) self._h2style.addElement( TextProperties(attributes={ "fontsize": "15pt", "fontweight": "bold" })) # For Level-3 Headings that are centered self._h3style = Style(name="BsHeading 3", family="paragraph") self._h3style.addElement( ParagraphProperties(attributes={"textalign": "left"})) self._h3style.addElement( TextProperties(attributes={ "fontsize": "14pt", "fontweight": "bold" })) # For bold text boldstyle = Style(name="Bold", family="text") boldstyle.addElement(TextProperties(attributes={"fontweight": "bold"})) # For numbered list numberedliststyle = ListStyle(name="NumberedList") level = 1 numberedlistproperty = ListLevelStyleNumber(level=str(level), numsuffix=".", startvalue=1) numberedlistproperty.setAttribute('numsuffix', ".") numberedlistproperty.addElement( ListLevelProperties(minlabelwidth="%fcm" % (level - .2))) numberedliststyle.addElement(numberedlistproperty) # For Bulleted list bulletedliststyle = ListStyle(name="BulletList") level = 1 bulletlistproperty = ListLevelStyleBullet(level=str(level), bulletchar=u"•") bulletlistproperty.addElement( ListLevelProperties(minlabelwidth="%fcm" % level)) bulletedliststyle.addElement(bulletlistproperty) # Justified style self._justifystyle = Style(name="justified", family="paragraph") self._justifystyle.addElement( ParagraphProperties(attributes={"textalign": "justify"})) # Creating a tabstop at 10cm tabstops_style = TabStops() tabstop_style = TabStop(position="10cm") tabstops_style.addElement(tabstop_style) tabstoppar = ParagraphProperties() tabstoppar.addElement(tabstops_style) tabparagraphstyle = Style(name="Question", family="paragraph") tabparagraphstyle.addElement(tabstoppar) s.addElement(tabparagraphstyle) # Register created styles to styleset s.addElement(h1style) s.addElement(self._h2style) s.addElement(boldstyle) s.addElement(numberedliststyle) s.addElement(bulletedliststyle) s.addElement(self._justifystyle) s.addElement(tabparagraphstyle) # Adding main heading mymainheading_element = H(outlinelevel=1, stylename=h1style) mymainheading_text = "Save the Cat Beat Sheet" teletype.addTextToElement(mymainheading_element, mymainheading_text) self._textdoc.text.addElement(mymainheading_element) self._addSubSection('Name', self._data['movie']['name']) self._addSubSection('LogLine', self._data['movie']['logline']) self._addSubSection('Theme', self._data['movie']['theme']) self._addSubSection('Genre', self._data['movie']['genre']) self._addSubSection('Author', '') self._addParagraph('Nome: ' + self._data['author']['name']) self._addParagraph('e-mail: ' + self._data['author']['email']) self._addParagraph('Institute: ' + self._data['author']['institute']) self._addSubSection('Synopsis', self._data['synopsis']) self._addSubSection('Beat Sheet', '') for card in self._data[1]['beat-sheet']: self._addSubSubSection(card['title'], card['text']) self._addSubSection('Plot', self._data['plot']) self._addSubSection('Argumento', self._data['argumento']) self._addSubSection('Escaleta', self._data['escaleta']) # Adding bulleted list # bulletlist = List(stylename=bulletedliststyle) # listitemelement1 = ListItem() # listitemelement1_paragraph = P() # listitemelement1_content = "My first item" # teletype.addTextToElement(listitemelement1_paragraph, listitemelement1_content) # listitemelement1.addElement(listitemelement1_paragraph) # bulletlist.addElement(listitemelement1) # listitemelement2 = ListItem() # listitemelement2_paragraph = P() # listitemelement2_content = "My second item" # teletype.addTextToElement(listitemelement2_paragraph, listitemelement2_content) # listitemelement2.addElement(listitemelement2_paragraph) # bulletlist.addElement(listitemelement2) # # self._textdoc.text.addElement(bulletlist) # # # Adding numbered list # numberlist = List(stylename=numberedliststyle) # listitemelement1 = ListItem() # listitemelement1_paragraph = P() # listitemelement1_content = "My first item" # teletype.addTextToElement(listitemelement1_paragraph, listitemelement1_content) # listitemelement1.addElement(listitemelement1_paragraph) # numberlist.addElement(listitemelement1) # listitemelement2 = ListItem() # listitemelement2_paragraph = P() # listitemelement2_content = "My second item" # teletype.addTextToElement(listitemelement2_paragraph, listitemelement2_content) # listitemelement2.addElement(listitemelement2_paragraph) ## numberlist.addElement(listitemelement2) ## # self._textdoc.text.addElement(numberlist) # Adding a tabbed sentence to check tabstop # newtext = "Testing\tTabstops" # tabp = P(stylename=tabparagraphstyle) # teletype.addTextToElement(tabp, newtext) # self._textdoc.text.addElement(tabp) self._textdoc.save(u"/tmp/save-the-cat.odt")