pdfmake案例

1,120 阅读11分钟

pdfmake引入

pdfMake.fonts = {
    Roboto: {
        normal: 'Roboto-Regular.ttf',
        bold: 'Roboto-Regular.ttf',
        italics: 'Roboto-Regular.ttf',
        bolditalics: 'Roboto-Regular.ttf',
    },
    fangzhen: {
        normal: 'fzhei-jt.TTF',
        bold: 'fzhei-jt.TTF',
        italics: 'fzhei-jt.TTF',
        bolditalics: 'fzhei-jt.TTF',
    },
};

整体样式

getDocDefinition(data, list) {
        const logoBase64Data = this.logoFunction();
        // 列表
        const rows = [];
        rows.push([
            { text: '订单编号', bold: true, color: 'black' },
            { text: '订单总金额', alignment: 'right', bold: true, color: 'black' },
            { text: '关联商品', alignment: 'right', bold: true, color: 'black' },
            { text: '数量', alignment: 'right', bold: true, color: 'black' },
            { text: '交易时间', alignment: 'right', bold: true, color: 'black' },
        ]);
        list.forEach(res => {
            rows.push([
                { text: res.OrderNumber, alignment: 'right' },
                { text: '¥' + res.AmountOfConsumption, alignment: 'right' },
                { text: res.SolutionName, alignment: 'right' },
                { text: res.Quantity, alignment: 'right' },
                { text: res.TransactionHour, alignment: 'right' }
            ]);
        });
        // 汇总
        const sumD = data.AmountsStaticstics.TotalQuantity;
        // 总额
        const sumBill = [];
        data.AmountsStaticstics.PayableAmounts.forEach(res => {
            sumBill.push(
                res.Symbol + res.Amounts
            );
        });
        const str = sumBill.join(',');


        return {
            pageSize: 'A4',
            pageOrientation: 'landscape',
            pageMargins: [40, 140, 40, 100],
            header: {
                margin: [40, 20],
                columns: [
                    {
                        image: logoBase64Data,
                        alignment: 'left',
                        marginTop: 10,
                    },
                    [
                        { text: 'AggreSmart账单', bold: true, fontSize: 28, alignment: 'right' },
                        { text: '账单打印时间:  ' + this.datePipe.transform(data.PrintTime, 'yyyy-MM-dd'), alignment: 'right' },
                        { text: '账单编号:' + data.BillingNumber, alignment: 'right' },
                        { text: '¥' + str, bold: true, fontSize: 16, marginTop: 5, alignment: 'right' }
                    ]
                ],
            },
            content: [
                {
                    style: 'headInfo',
                    table: {
                        headerRows: 1,
                        widths: ['*', '*', '*'],
                        body: [
                            [
                                { text: '接受方:', style: 'tableHeader' },
                                { text: '付款方:', style: 'tableHeader' },
                                { text: '联系人:', style: 'tableHeader' }
                            ],
                            [data.CompanyName, data.Payer.ChnCompanyName, data.Payer.Email],
                        ]
                    },
                    layout: 'noBorders'
                },
                {
                    marginBottom: 30,
                    table: {
                        headerRows: 1,
                        widths: ['*', '*'],
                        height: 50,
                        body: [
                            [
                                { text: '账单统计', style: 'listHeader', border: [false, false, true, false] },
                                { text: '', style: 'listHeader', border: [false, false, true, false] }
                            ],
                            [{
                                table: {
                                    widths: [200, 'auto'],
                                    body: [
                                        ['方案提供商:', { text: data.ProviderInfo.SolutionProvider, alignment: 'right' }],
                                        ['实体负责人:', { text: data.ProviderInfo.EntityCharger, alignment: 'right' }],
                                        ['等级:', { text: data.ProviderInfo.Level, alignment: 'right' }],
                                        ['业务负责人:', { text: data.ProviderInfo.BusinessCharger, alignment: 'right' }],
                                        [' 地址:', { text: data.ProviderInfo.Address, alignment: 'right' }],
                                    ]
                                },
                                layout: 'noBorders',
                                border: [false, false, true, false]
                            }, {
                                table: {
                                    widths: ['*', '*'],
                                    body: [
                                        ['账单周期:', { text: data.Period, alignment: 'right' }],
                                        ['账单金额:', { text: '¥' + str, alignment: 'right' }],
                                        ['订单总数:', { text: data.OrderQuantity, alignment: 'right' }],
                                        ['产品总数:', { text: data.SolutionTotal, alignment: 'right' }],
                                        ['销售额:', { text: '¥' + str, alignment: 'right' }],
                                    ],
                                },
                                layout: 'noBorders',
                            }],
                        ]
                    },
                    layout: {
                        fillColor: '#f2f2f2',
                        defaultBorder: false,
                        vLineColor: '#fff',
                    }
                },
                {
                    table: {
                        widths: ['*'],
                        headerRows: 1,
                        height: 50,
                        body: [
                            [{ text: '账单明细', style: 'listHeader', border: [false, false, true, false] }],
                        ]
                    },
                    layout: {
                        fillColor: '#f2f2f2',
                        defaultBorder: false,
                        vLineColor: '#fff',
                    }
                },
                {
                    table: {
                        widths: ['*', '*', 200, '*', '*'],
                        body: rows
                    },
                    layout: {
                        fillColor: '#f2f2f2',
                        defaultBorder: true,
                        vLineColor: '#fff',
                        hLineColor: '#fff',
                        padding: 0
                    },
                },
                {
                    margin: [40, 20],
                    columns: [
                        {
                        },
                        [
                            { text: '订单总金额:' + '¥' + str, alignment: 'right' },
                            { text: '汇总:' + sumD + '单', alignment: 'right' },
                        ]
                    ],
                },
            ],
            footer: (currentPage, pageCount) => ({
                marginTop: 50,
                columns: [
                    {},
                    { fontSize: 8, width: 520, text: '', alignment: 'center' },
                    { fontSize: 8, text: `Page ${currentPage} of ${pageCount}`, alignment: 'center', width: 120 }
                ],
                style: 'footer'
            }),
            styles: {
                header: {
                    fontSize: 18,
                    alignment: 'right',
                },
                footer: {
                    fontSize: 8,
                    color: '#333',
                    alignment: 'center',
                },
                headInfo: {
                    marginBottom: 20
                },
                tableHeader: {
                    color: 'black',
                    fontSize: 12,
                    bold: true
                },
                listHeader: {
                    fillColor: '#dae9ff',
                    color: '#333',
                    fontSize: 12,
                    bold: true,
                },
            },
            defaultStyle: {
                fontSize: 10,
                font: 'fangzhen',
                fontSmooth: 'auto',
                color: '#333',
                columnGap: 20,
            },
        };
    }

base64图片

logoFunction() {
        return `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA
        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
        RV/R5MsLq+uAuf3RB9FmlDo4ni9cy8
        Blg8AAYAk6TLX1UtyHqMbY+yexpqK5zIm/Fn+4VkL6tLle8s5pEWM4ZZkNJQVkgxo6gqhvdUPg1kr65cfmlyE60f1Zq+Sr
        8SRFj+e3OHG7w40Y/+pTsAgYJhFT2dDD/1yumtJLACpzE62BYCuEEYPMuL
        +iUWYO6EAY22ZH/xb9jRhfa0bb53yIeT1ofiz7eBN7YAhgdlqTN+tP8pzj
        Bu5RbvSs3re8XTncrrqW2+qHsZCPH489GyWjemtducLDLgz2jfj/MrGrZUf
        RP+22avnAjz9ZzFnc8StFc+crjl90+2eXaB+7jlNqTh+Djgje+zpScEcMS8gfjnUGcLgwrCxCN3M00rMimm6o64TT+5049l9zXA3+6
        DL0aEkN8zPptBK9dlHb5XZBUPNeGCyFQumFCHXoNzENL6TZm8IT+/1YM1ONz470SG7eg62maEPBuB982Pw1g6wRKCONkKqMUkCdNoAzzGtk
        XJ1zqb182oVE+s0VRx8Q/WgkIYfAyCfSBys1u2qIKEXbHYnmcreF+1aEPjlDa9XxnT01rLq2xnjL6Y9NM7vE7dWnnHBV9rjzPCDswLUQ1cesLF
        QcCGT+GKw5CqOWDACemIHQhg/JAcPTi6S/ytJg19+7VCLDOZtX7bC1xmEJV+PAgMJvzLnl4n+2VCZ9V7HL5p8WLlDxDN7m3HU
        3SULxobl6eRXBNdqIfn88L2lANTRhg
        nYwbDuWzLqXue55qqmzfNcGe6ffn/WP1D3VjXxXwkCXpQk9mH3wPjPeUj
        7tEYXLJL/TRKY1x/a3/bWkpQur2GpN4jt+2YLkw6LNZUkGFZUvlFQj1i+Z2II/GEWJlzS9zLxy96ghEYSfgkMV43I
        w9wJhZifJBhBopl7AxKe3dskO1e8S8YidBPk62HuL7+cJZVZ7zF/eKwdG3c34bn9TbJe3ZinQ7G55yuC6TIAdbSjKN8tCOAm48ewmKrcXbp
        nlehtFe0shZX6B+reNzV/VHRVPmkrd74PjitpCAz4c6PLcanC4fSoZrM7/
        wfADzP5NsvfNIkuR/hQUlC+EVCXOnddDQiPgXfzS73HGtUvE7/c1uqHxqjFrWMtWDjVhrJzlfPL9e0B+VYmM86DdZ2AXoMhFj3ZnvS
        bXyZ77v6qzHrP+/f7m7F6lxs1X7TKXl35Fj3yDYml7v0CdQ9wk2y
        JA0b9cW42On055tXt62Y3Ktg//a5ScNsTBVqfoT76/AawR3Q5JlH
        DVnvVGgb2cLQTAeyKBldF7Ba2lVffBM5fjU2F4RfuGse/FJdVXcEZ+2Pc4HYxjXBX42uLD6UzYGtZ9T8yxv8znW9OU93tostxgdK2zyioS
        52
        188DlRbom2QCjkuL6jiD87QEMKjLg7vPDKqnpw5Q7V3x2qlM2FHnhQ
        DNOiF1Z5ZfDKjO//IzNVGUWP/92fwgbdnnwzL5mfHCkVZa6x3t1JaVVf
        27qRI2SOoxOKr2ujecY14byTOua1967U+lmyqSe7ZY1eQj4mskmJPL9IdHlkP3bbXbnKwBujmt3huhyvBf921rm
        nMcYYiGZGeO/bKyp/HHk2ycAkJNHtEjgWAuwTyUWeN3jejylsLDY7vwlB/4hk3ll+ZtG0eX
        oYdfeV/unHdTkXKEHFjLIYXWTGgPEJMWRYASjB4WDEdDNPMyiXL/81pdtWLVTxEsHW+DvDCInXw+rkW66zI1FiIDkktkWCMETUZldPSJPDmGUjsqs90Icbw1L3clS7XN6R
        Rg1GGrRK7ZSy8pNnRDc5EQSArRacLPhRZafs0xcP+fdLG9U4PsrdbZBIdKjdwOX4U2xxjEzkRWXlrNRdVsrvqJxDLKvPFdC
        aAeAWNgZDvaY21WxPDpOm91JEu6vhabijD3grqlIGZ/dWuZ8kAGPQUByVSAnwxgucb
        CLI/3S4dQOYC/inE7A5S04OBLAktojY8IjjIGEhGG730SFcwGM7RdrHPcrpf9pA3Xpi
        r1jEeKVACfpZXGyAcX4ZQKzxHH5yDw8ONmKe8cXyA4MSookcfl5Tf+9
        daRdvkEp3FA2+OV4lZkxojJ7YHIRZqahMus9h49PdGDNLjdePtSCBo8P+lwdbGZtTLmqZM5U57SBOjqAOL4bJsOHPMe80v303JRgUDp+3P2c
        3tYubgBwb3eX/E731soXbeXOR8CxMu4Gf1t0Oa6L3dKzqsYzib
        0GYHT033x+ydZbAFZcXvU3nLN/6ymzYfNEV0XWglBYy6ocjLFlUVB
        zhn9y1zi+9mwvsf+2OAhtQ5wufUc6z2qldM06qMm5QlZJcZ70ZInyy
        61+Cc3NZDShwfUj8/DoVCtuT8O5QuwMYvNujwyQWnKu0DKUWPTQa/pvLEJWY6ciKrOSmMrMhqklmeuXXYdbsHqnBy8fbkHIF5L9tv0hCT
        4v3YoMoLhJAs1BB70QDqjQVzntoO4NbvrbaDgs5Zqc3GJcm63gDUV25y
        UCsJmDfeZ2VdwdP2er3bmVMZwn1jhi4O3xe7nzx4xjsQS+0OOqfCMZvYj/ZoAdXBoLsCcaXY7sSPzDrw3y2e4OVCdphorbFp1KNB
        ZbmfNtsG72k3Pc797qSF/X3sfGyBqoS5ftvhMCHgNkv9aEJWosIltWtQeQn6/H7PML5JC66fDLexu9WLPTIwcjOOH2QTBpMDRXJztu9Fe/HJA4TrUE5A
        gk40tyMH9KkcwGpKMyi5+8P8ixodaNtbUe/PlYu8wDFFl08HQEZXfNKcNyMGdCIaYWm1DfGcCz+5ux9fNW+bVRaNHDY
        tAglATdZwzU8ROK8t0GfTNMhvUsV+9sXD83LQFUfHNkUWYWOjVBpp3JJaleEJhbCgl6MIlzCXUaxkZyDYYLXP
        NxSJLCgdSjRSu1cSnUxqC5FiHtJ2DS1yWoTOI6CI2CTmjoCvqKWMiQ637j0QNKHDmU3Iw2u5MEclfE6nJsErc6kkbXsdmdhI8erIyGhabU1zyWNZu
        BfoF6zG8PWbwa3wIGkD325D5vFVlFKKCuS8JoE8O8CYW4b2IRxhQlZyd6t/eHL1plE87Xv2iTJeI5Fj2K+ghGoGRRqE7YxFSCu9UnC6muHZWHh
        yZbcc+EQugTxO9W0u6xFr/sCPL8/mbsI37ZoEGBUYPm9oD8+fWjLbIP
        9+zxhdDTLR1X3v2qTRbyPbe/GR3tgaTz/EZAHR1n1JhFKzuRvIAcU7V
        7031vK6FNgpv2PwCQHyt5ZPUMaBCuTL/1ZVVEbqdKpahfiC7HuemOM1F9cjjhYLf3OPMCmoKmNxf1GX6q2O7cxo
        F476tWCcKlHtfirGRyyQjUw5ftHyoJIUfEU6rn6ZmEWgEOdLT78I8XD8JPrilVTFMKOEDBCEj49daXYX65KF8v89vJbjAljUdZAE/ExNRo1qF8N
        NmL22Afo1xl1ruvnfX0inBjy74miE0+GHJ1sObocLLJB5NOQNloi5y540YFark98ouEwiM142T0RZKnk3lvep
        F8o6COTpxeEXR7C3Lwhne5ybDcs0W5E0mxveonHOwXStYsS3X6DeqIbp0
        s0q7tOaawnjzVOCNqPOKt4yXAPjB2l1hTQXKCfpW0QT1s+Z7rGOOv9ymxSzAkrtfD19iEKfv34vqLR+KeW6Zh9PDkwQnc3iDW76JI
        nG7UnvLKVgQlBXpFvGZfFImqzE61BxHsCKC40CA/f4kFmDIoc3655nArVu
        0IR0Hp6gzHOSs0amWjGdr0P5pxDh6bVtDTOVjh0jV2BGVHk/W73dgdlR1QIEODDsGuNC3KFPaZdjXi/4NBejVDsua94n7+4YQJBHu3W1z
        m/GfO8PO0+8v8g12iy5E0xFWqZiNOJKQu67F5GUdV
        41YHmTcrKsXly6/iXIip52IfMb5SE+z8gZIwS8k6SgvUQ1d+ahaCRhIApH2VCUY9p
        NZ2HH/hXeCYB+ZzrLh35jg8NGsirrxgeGx8xC9v3tOETXuacKzRC8GsxZDcsFlkKsFRX
        9SMqcxIJeUPYcLQHNlenCKfpKMyi++jKyDJz+t1tW68Q1ZqEoc134AcX
        begzq83gB89hYWGVsy7ZSrGT1b+Suk9H3qZ0EG3ea8H75CUX9CAXMM1732CUEsK229FWy0LlegF4fMjWGK
        rbNoyz5mqxUTBBcHZHAjscPiEAHlsxey/5ac4Z7MgMFIbATxUDbAL4/rZxzmnlElyYYw9DWBM9+/sM9FVQcEX0i7JVGTg+LW41fGDdBssKl8xU+
        ASqfR6R+s4JkjCzQ3bFmdkI5AWqMNqKulguoOXiWvQI9TSBt9bn0ATD
        KLZF4K/rhUw6XHTVaNx9+3fxw5NLlZ9UoeONj9MEbPI/uqXCczeIA+bmHLgsnPy8PBUqyz8ypRfbugIYM0ONzbs8eBAnVcOjZTMSk2bZ4bvy
        Cmc2rAN0Otx2SUjsei2qbh/1kQwGlyGheQLq/e24MXaRgSffROCnsM6KF9+l/dHWJjhcOIwwwB/gFw+XxJfXdSD30zU
        diIDj1yvyRT1d7bZq/4NYP8SAyngbnQ5bNG/v8afcrwjbnXEnsW2cueOXsEnPxZdjkvSnacshQdu7PXdQTD2g/48mW
        0zlw2FVkPmqPEHF3UTgKQ5J5kUva/xpwXqkeu+NAY7O472pXdO1lk8qBktuk4rb2pfIITWQ6eAyWOB6y9BEQLI1aZW
        5/Q1qSi/3OKT0NLih84UzndFKXJuP195PLLefWyvC1up0e1MVmraiFdX
        lMdNNCaWY0LoeD38732KIBia69uAriAmXTAc990wTo50UmJTnrandx+fnuzA+mc/xZbXdsJztAmw5sBmzY3w3ZmGc0h3y8fVJzMMfwCh0uJHPJvmr
        knVktV
        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
        ooKD
        cizmND1/mcIHjoKlpsC1N1J+Tg3GzZIeea1TevnpCWBVboOar3sU+C
        0gzp+yEOf2H5b1/t//VuhteMqMEGWmMo2w3GgZl4f2v3BSDACAdeO
        zJOjcN43KfNNnoxsb33Vhp9/UIf3yHsqkuAuX6+RgZatkgjU9Jzu8ofQSql2ghImThmGhbdOxvxbJsOSq9zBJX6M7b
        5wji9iJb6WE5
        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
        T9TFarLOQzXXARhiC0c3ji90gCOFdAEVx2vm
        EaWUmpRKdBvCqigjiNh0fwtl7FW7wLW4X0IgZAg89x98d2Zg3o7OJwBb2
        hL/Y+mkhOBWlQKZI0CKqgTkDL//udGaQNdD7P2zkfQ5S9JynenD+qXGRP
        WH3NMeClrK6g2pFKgFwVUUPexJUrvfs7k1XofYe1di+H1T5C9QeL5bsWg
        ZmsFFnIedUz5q7oDVQqcbgqooFZIYev9m+9Ah28xa++cCUo1Q3y3nJIzK
        U9dB45VgiBtOOqY8oXCbtRqKgX6TQEV1GmSsPD+p6/QdHgrEdZ3y54hhuunQxhWDN7RRX/uY4xVSxrvmpOLLkzpmJ9m92p1lQIpKaCCOiWJElcoeGjLSG1
        r58PM579Ed8UFBs3goq9CXt8LJysnvZphk+pnKgWyQgEV1Fkho9qISoGzhwIqqM+etVBHolIgKxRQQZ0VMqqNqBQ4eyiggvrsWQt1JCoFskIBFdRZIaPaiE
        qBs4cCKqjPnrVQR6JSICsUUEGdFTKqjagUOHsooIL67FkLdSQqBbJC
        ARXUWSGj2ohKgbOHAlFQT2VygDa1qBRQKfBtpwDnfBjjnN8OYJ+cTVQtKgVUCnybKUB5Kob9f3CqmBwsXT/JAAAAAElFTkSuQmCC`;
    }