Python使用cStringIO和pisa,有序列表(<ol type =“A”>)显示数字而不是字母</ol>

时间:2013-11-25 22:55:47

标签: python pdf pisa cstringio

我正在运行Django网站,并编写一份报告,使用Pisa和cStringIO将带有视图代码的模板呈现为内联PDF文件。这一切都很好,工作得很好。我在render_to_response()的HTML中看到的内容很好地以PDF格式显示。现在,我有一系列HTML <ol></ol>列表。我希望外部列表是数字(<ol type="1">),内部列表是字母(<ol type="A">)。我尝试使用type标记的内联<ol>属性以及list-style-type: upper-alpha,但都没有使用OL的字母呈现PDF。相反,他们总是数字。

这是我的render_to_pdf方法:

def render_to_pdf(template_src, context_dict, extra_html=None):
    template = get_template(template_src)
    context = Context(context_dict)
    html = template.render(context)
    result = StringIO.StringIO()

    if extra_html:
        html += extra_html

    pdf = pisa.pisaDocument(
        StringIO.StringIO(html.encode("UTF-8")),
        dest=result,
        encoding='UTF-8',
        link_callback=fetch_resources
    )

    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')

    return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))

这是我的模板:

<ol type="1">
    <li>1</li>
    <li>2</li>
    <li>
        3
        <ol type="A">
            <li>A</li>
            <li>B</li>
            <li>C</li>
        </ol>
    </li>
    <li>4</li>
</ol>

render_to_response中显示:

1. 1
2. 2
3. 3
    A. A
    B. B
    C. C
4. 4

render_to_pdf中显示:

1. 1
2. 2
3. 3
    1. A
    2. B
    3. C
4. 4

有没有办法让一些有序列表显示字母?

0 个答案:

没有答案