0

我正在使用xhtml2pdf 版本。0.0.6reportlab 版本。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>

请回复您宝贵的提示/建议。提前致谢。

4

0 回答 0