Python比萨多对齐问题

时间:2015-02-11 05:15:55

标签: python django reportlab pisa xhtml2pdf

我正在使用 xhtml2pdf ver。 0.0.6 reportlab ver。 2.7 在我的应用中使用 django 1.6.6 ,用于我的pdf生成。我需要生成年度报告,其中包含从数据库中获取的数据。我在xhtml2pdf 模块中使用 pisa 0.3.3,并且当数据长达一页时可以正确生成pdf。但 数据超过一页时,我在第一页中的表格标题和下一页的后续数据行中出现对齐问题 。我用于pdf生成的代码如下:

<head>
<style type="text/css">
    @page {
        size: a4 portrait;
        margin: 1cm 2cm;
        margin-bottom: 1.5cm;
        padding:0;

        @frame footer {
                   -pdf-frame-content: footer-content;
                   bottom: 0.5cm;
                   margin-left: 2cm;
                   margin-right: 2cm;
                   height: 0.5cm;
        }
    }

    h1, h2, h3, h4, h5, h6 {
        -pdf-outline: false;
    }

    img {
        zoom: 80%;
    }

    .logo {
        font-weight: bold;
        font-size: 20px;
    }
</style>
</head>

    <table class="table-bordered" style="width: 100%;">
    <thead>
    <tr>
        <th style="width: 30%; font-size: 12px; text-align: left;">Col1</th>
        <th style="width: 20%; font-size: 12px; text-align: right">Col2</th>
        <th style="width: 30%;font-size: 12px; text-align: left;">Col3</th>
        <th style="width: 20%;font-size: 12px; text-align: right;">Col4</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td colspan="2" style="vertical-align:top">
                <table class="table-no-border" style="width:100%;">
                    <tbody>

                    {% for obj in objects %}
                            <tr>
                                <td style="text-align: left;">{{ obj.account__name }}</td>
                                <td style="text-align: right">{{ balance|floatformat:2|comma_sep_num }}</td>
                            </tr>
                    {% endfor %}
                        <tr>
                            <td style="text-align: left;">Profit/Loss</td>
                            <td style="text-align: right">{{ object.profit_loss|floatformat:2|comma_sep_num }}</td>
                        </tr>
                    </tbody>
                </table>
        </td>
        <td  colspan="2"  style="vertical-align:top">
                <table  class="table-no-border" style="width:100%;">
                    <tbody>
                    {% for obj in inc_objects %}
                        {% if obj.credit_amount__sum > obj.debit_amount__sum %}
                          {% math obj.credit_amount__sum obj.debit_amount__sum "$1 - $2" as balance %}
                        {% else %}
                          {% math obj.debit_amount__sum obj.credit_amount__sum "$1 - $2" as balance %}
                        {% endif %}
                        {% if balance %}
                            <tr>
                                <td style="text-align: left;">{{ obj.account__name }}</td>
                                <td style="text-align: right">{{ balance|floatformat:2|comma_sep_num }}</td>
                            </tr>
                        {% endif %}
                    {% endfor %}
                    {% if  profit_loss < 0 %}
                        {% math profit_loss "-1 * $1" as profit_loss %}
                        <tr>
                            <td style="text-align: left;">Excess of expense over income</td>
                            <td style="text-align: right">{{ profit_loss|abs|floatformat:2|comma_sep_num }}</td>
                        </tr>
                        {% math inc_total profit_loss|abs "$1 + $2" as inc_total %}
                    {% endif %}
                    </tbody>
                </table>
        </td>
    </tr>
    <tr>
        <td colspan="2" style="text-align: right;font-weight: bold;">{{ exp_total|floatformat:2|comma_sep_num }}</td>
        <td colspan="2" style="text-align: right;font-weight: bold;">{{ inc_total|floatformat:2|comma_sep_num }}</td>

</tr>
</tbody>
</table>

请回复您宝贵的点击/建议。提前谢谢。

0 个答案:

没有答案