Esempio n. 1
0
def makertf():
    import gluon.contrib.pyrtf as q
    doc = q.Document()
    section = q.Section()
    doc.Sections.append(section)
    section.append('Section Title')
    section.append('web2py is great. ' * 100)
    response.headers['Content-Type'] = 'text/rtf'
    return q.dumps(doc)
Esempio n. 2
0
def series_export_word(widget_list, lang_dict, title, logo):
    """
        Export a Series in RTF Format
        @ToDo: rewrite as S3Method handler
    """

    import gluon.contrib.pyrtf as pyrtf
    from io import BytesIO

    output = BytesIO()
    doc = pyrtf.Document(default_language=pyrtf.Languages.EnglishUK)
    section = pyrtf.Section()
    ss = doc.StyleSheet
    ps = ss.ParagraphStyles.Normal.Copy()
    ps.SetName("NormalGrey")
    ps.SetShadingPropertySet(
        pyrtf.ShadingPropertySet(pattern=1,
                                 background=pyrtf.Colour(
                                     "grey light", 224, 224, 224)))
    ss.ParagraphStyles.append(ps)
    ps = ss.ParagraphStyles.Normal.Copy()
    ps.SetName("NormalCentre")
    ps.SetParagraphPropertySet(pyrtf.ParagraphPropertySet(alignment=3))
    ss.ParagraphStyles.append(ps)

    doc.Sections.append(section)
    heading = pyrtf.Paragraph(ss.ParagraphStyles.Heading1)

    if logo:
        image = pyrtf.Image(logo)
        heading.append(image)
    heading.append(title)
    section.append(heading)

    col = [2800, 6500]
    table = pyrtf.Table(*col)
    AddRow = table.AddRow
    sorted_widget_list = sorted(widget_list.values(),
                                key=lambda widget: widget.question.posn)
    for widget in sorted_widget_list:
        line = widget.writeQuestionToRTF(ss, lang_dict)
        try:
            AddRow(*line)
        except:
            if settings.base.debug:
                raise
            pass

    section.append(table)
    renderer = pyrtf.Renderer()
    renderer.Write(doc, output)
    return output