首页 > 解决方案 > laravel-dompdf 生成多页

问题描述

我使用 laravel-dompdf 生成收据,它应该只生成一页,但它会生成 5 页以我的 CSS 样式,信息会变得一团糟。这是我生成的示例https://imgur.com/a/diyVaRJ。我还包括我的控制器和 dompdf 视图

控制器

public function downloadReceiptPDF($id)
{

    $campaigns = DB::table('bill')
        ->select('bill.b_id', 'c_code', 'c_name', 'b_fee', 'b_date', 'total_month')
        ->join('campaign', 'campaign.c_id', '=', 'bill.c_id')
        ->where('bill.b_id', $id)
        ->get();

    $pdf = PDF::loadView('campaign.receiptpdf', compact('campaigns'))->setPaper('a4', 'potrait');
    return $pdf->download('receipt.pdf');

}

查看:receiptpdf.blade.php

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Invoice</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css" media="all">
        .invoice-box {
            max-width: 800px;
            margin: auto;
            padding: 30px;
            border: 1px solid #eee;
            box-shadow: 0 0 10px rgba(0, 0, 0, .15);
            font-size: 16px;
            line-height: 24px;
            font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
            color: #555;
        }

        .invoice-box table {
            width: 100%;
            line-height: inherit;
            text-align: left;
        }

        .invoice-box table td {
            padding: 5px;
            vertical-align: top;
        }

        .invoice-box table tr td:nth-child(2) {
            text-align: right;
        }

        .invoice-box table tr.top table td {
            padding-bottom: 20px;
        }

        .invoice-box table tr.top table td.title {
            font-size: 45px;
            line-height: 45px;
            color: #333;
        }

        .invoice-box table tr.information table td {
            padding-bottom: 40px;
        }

        .invoice-box table tr.heading td {
            background: #eee;
            border-bottom: 1px solid #ddd;
            font-weight: bold;
        }

        .invoice-box table tr.details td {
            padding-bottom: 20px;
        }

        .invoice-box table tr.item td {
            border-bottom: 1px solid #eee;
        }

        .invoice-box table tr.item.last td {
            border-bottom: none;
        }

        .invoice-box table tr.total td:nth-child(2) {
            border-top: 2px solid #eee;
            font-weight: bold;
        }

        @media only screen and (max-width: 600px) {
            .invoice-box table tr.top table td {
                width: 100%;
                display: block;
                text-align: center;
            }

            .invoice-box table tr.information table td {
                width: 100%;
                display: block;
                text-align: center;
            }
        }

        /** RTL **/

        .rtl {
            direction: rtl;
            font-family: Tahoma, 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;
        }

        .rtl table {
            text-align: right;
        }

        .rtl table tr td:nth-child(2) {
            text-align: left;
        }
    </style>
</head>

<body>
    <div class="invoice-box">
        <table cellpadding="0" cellspacing="0">
            <tr class="top">
                <td colspan="2">
                    <table>
                        <tr>
                            <td class="title">

                            </td>

                            <td>
                                Receipt #: {{ $campaigns[0]->b_id }}
                                <br> Date: {{ \Carbon\Carbon::parse($campaigns[0]->b_date)->format('d/m/Y') }}
                                <br>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>

            <tr class="information">
                <td colspan="2">
                    <table>
                        <tr>
                            <td>

                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr class="heading">
                <td>
                    Campaign Code
                </td>

                <td>
                    Price
                </td>
            </tr>

            <tr class="item last">
                <td>
                    {{ $campaigns[0]->c_code }} ({{ $campaigns[0]->total_month }} months)
                </td>

                <td>
                    {{ $campaigns[0]->b_fee }}
                </td>
            </tr>

            <tr class="total">
                <td></td>

                <td>
                    Total: RM {{ $campaigns[0]->b_fee }}
                </td>
            </tr>
        </table>
    </div>
</body>

</html>

标签: phplaravellaravel-bladedompdf

解决方案


推荐阅读