Ald*_*jal 5 c# pdf-generation itext itext7
我正在开发一个 asp.net mvc 项目,我正在使用一个 html 模板来生成一个带有动态数据的发票文档,这些数据是我通过车把填充的。html 结果正在使用 iText 7 转换为 PDF,因为这是公司使用所需的工具,但是我在将其转换为 PDF 时遇到问题,因为有时会显示数据的 html 表格有足够的数据可以容纳在一页中,但在其他情况下,有许多行会形成分页符,从而在两页上打印数据。每当数据不适合一页时,我需要将整个表块移动到下一页。
\n这是模板(Mytemplate.html):
\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset="utf-8">\n <title></title>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style type="text/css">\n <!-- Removed inline styles for space reasons -->\n </style>\n</head>\n<body>\n<div style="width: 100%; margin: 0 auto; text-align: center; display: flex; justify-content: center;">\n <div style="max-width: 700px; background-color: white; width: 100%">\n <table style="width:100%">\n <tbody>\n <tr>\n <td>\n <table class="table-header table-information m-0 border-zero">\n <tr>\n <td class="text-al" style="vertical-align: top">\n <img src="{{baseUrl}}\\images\\clear_purple.png" style="width: 150px; height: 50px;">\n </td>\n <td class="text-al" style="vertical-align: top">\n <table class="table-information m-0 border-zero">\n <tbody>\n <tr>\n <td class="td-information p-0">\n <p class="text p-0">Insured: {{insured}}</p>\n </td>\n </tr>\n <tr>\n <td class="td-information p-0">\n <p class="text p-0">{{facilityName}}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class="text-al vertical-ab">\n <table class="table-information m-0 border-zero">\n <tbody>\n <tr>\n <td class="td-information p-0">\n <p class="text p-0">Invoice Period: {{invoicePeriod}}</p>\n </td>\n </tr>\n <tr>\n <td class="td-information p-0">\n <p class="text p-0">Date sent to LCTI: {{invoiceDateLTCI}}</p>\n </td>\n </tr>\n <tr>\n <td class="td-information p-0">\n <p class="text p-0">LTCI Rep: {{clientReferrer}}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table class="table-information">\n <tbody>\n <tr class="tr-information">\n <th class="td-background" colspan="3">\n <p class="text-title">Residency Information</p>\n </th>\n </tr>\n <tr>\n <td class="td-information p-0 vertical-ab" colspan="3">\n <table class="table-information border-zero mb-0"">\n <tbody>\n <tr>\n <td class="td-information w-35">\n <p class="text text-bold">Facility Type</p>\n <p class="text text-bold">Room/Unit Number</p>\n <p class="text text-bold">Insurance Provider</p>\n <p class="text text-bold">Insured\xe2\x80\x99s Policy Number</p>\n <p class="text text-bold">Invoice Number</p>\n </td>\n <td class="td-information w-65">\n <p class="text-light">{{residencyInfo.facilityType}}</p>\n <p class="text-light">{{residencyInfo.roomNumberChangeTo}}{{#if residencyInfo.roomNumberChange}} - {{residencyInfo.roomNumberChangeReason}}{{/if}}</p>\n <p class="text-light">{{residencyInfo.insurerProvider}}</p>\n <p class="text-light">{{residencyInfo.policyNumber}}</p>\n <p class="text-light">{{residencyInfo.invoiceNumber}}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td class="td-information td-border-top br-1 w-45">\n <table class="w-full">\n <tbody>\n {{#if residencyInfo.haveDaysOutOfFacility}}\n <tr>\n <td>\n <p class="text text-bold">Total Days in Facility</p>\n </td>\n <td>\n <p class="text-light">{{residencyInfo.totalDaysInFacility}}</p>\n </td>\n </tr>\n <tr>\n <td>\n <p class="text text-bold">Total Days out of Facility</p>\n </td>\n <td>\n <p class="text-light">{{residencyInfo.totalDaysOutOfFacility}}</p>\n </td>\n </tr>\n {{/if}}\n {{#if residencyInfo.haveBedHoldDays}}\n <tr>\n <td>\n <p class="text text-bold">Bedhold Days</p>\n </td>\n <td>\n <p class="text-light">{{residencyInfo.bedHoldDays}}</p>\n </td>\n </tr>\n {{/if}}\n </tbody>\n </table>\n </td>\n <td class="td-information bl td-border-top">\n <table class="w-full">\n <tbody>\n <tr>\n <td class="td-information-width">\n <p class="text-light-2">Reason for Absence</p>\n </td>\n <td class="td-information-width">\n <p class="text-light-2 text-ar">Dates of Absence</p>\n </td>\n </tr>\n {{#each residencyInfo.absenceReasons}}\n <tr>\n <td>\n <p class="text-light">{{reason}}</p>\n </td>\n <td>\n <p class="text-light text-ar">{{from}}th{{#if hasTo}} - {{to}}th{{/if}}</p>\n </td>\n </tr>\n {{/each}}\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table class="table-information">\n <tbody>\n <tr class="tr-information">\n <th class="td-background" colspan="3">\n <p class="text-title">Care Provided</p>\n </th>\n </tr>\n <tr>\n <td class="td-information p-0" style="width: 50%;">\n <table class="table-information border-zero mb-0">\n <tbody>\n <tr>\n <th class="td-information w-58 th-activity td-border-bottom">\n <p class="text text-bold">Activities of Daily Living (ADLS)</p>\n </th>\n <th class="td-information p-0 w-14 td-border-bottom vertical-ab">\n <div class="rotate-315">\n <p class="text-s10 text-ac text-gray-500">Standby</p>\n </div>\n </th>\n <th class="td-information p-0 w-14 td-border-bottom vertical-ab">\n <div class="rotate-315">\n <p class="text-s10 text-ac text-gray-500">Hands On</p>\n </div>\n </th>\n <th class="td-information p-0 w-14 td-border-bottom vertical-ab">\n <div class="rotate-315">\n <p class="text-s10 text-ac text-gray-500">Provided</p>\n </div>\n </th>\n </tr>\n\n {{#each careProvided.adls}}\n <tr>\n <td class="td-information th-activity br-1 vertical-ac td-border-bottom">\n <p class="text text-light">{{name}}</p>\n </td>\n <td class="td-information p-4 br-1 text-ac vertical-ac td-border-bottom">\n {{#if standBy}}\n <img src="{{../baseUrl}}\\images\\clear_check.png" style="width: 14px; height: 14px;">\n {{/if}}\n </td>\n <td class="td-information p-4 br-1 text-ac vertical-ac td-border-bottom">\n {{#if handsOn}}\n <img src="{{../baseUrl}}\\images\\clear_check.png" style="width: 14px; height: 14px;">\n {{/if}}\n </td>\n <td class="td-information p-4 br-1 text-ac vertical-ac td-border-bottom">\n {{#if provided}}\n <img src="{{../baseUrl}}\\images\\clear_check.png" style="width: 14px; height: 14px;">\n {{/if}}\n </td>\n </tr>\n {{/each}}\n </tbody>\n </table>\n </td>\n <td class="td-information p-0" rowspan="3" style="width: 50%; padding-top: 7px;">\n <table class="table-information m-0 border-zero mb-0">\n <tbody>\n <tr>\n <th class="td-information td-border-bottom">\n <p class="text text-bold pl-10">Instrumental Activities of Daily Living (IADLS)</p>\n </th>\n </tr>\n {{#each careProvided.iadls}}\n <tr>\n <td class="td-information pt-0 pb-0">\n <p class="text text-light pl-10 ">{{name}}</p>\n </td>\n </tr>\n {{/each}}\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table class="table-information">\n <tbody>\n <tr class="tr-information">\n <th class="td-background" colspan="4">\n <p class="text-title">Invoice Totals</p>\n </th>\n </tr>\n <tr>\n <td style="width: 58%;">\n <table class="table-information border-zero m-0">\n <tbody>\n {{#each invoiceTotals.charges}}\n <tr>\n <td class="td-information pt-0-10" style="width:60%">\n <p class="text text-bold" style="font-size:15px">{{name}}</p>\n </td>\n <td class="td-information pt-0-10" style="width:15%">\n <p class="text text-light text-ar">{{amount}}</p>\n </td>\n <td class="td-information p-4" style="width:25%">\n {{#if includedRnB}}\n <p class="text-small">Included in R&B</p>\n {{/if}}\n </td>\n </tr>\n {{/each}}\n <tr>\n <td class="td-information text-ar" style="padding-right: 10px" colspan="2">\n <p class="text-title-35 text-green-500 text-ar">${{invoiceTotals.totalAmount}}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n <td class="td-information pt-0" rowspan="2" style="width: 48%;">\n <table class="table-information p-0 m-0 border-zero">\n <tbody>\n <tr>\n <th class="td-information pl-0 pt-0-10"><p class="text text-bold">Other Payment sources:</p></th&
CSS 属性page-break-inside由 iText 7 的 HTML 到 PDF 转换进行处理,以避免元素内分页。在您不想分成两页的表格上:
<table style="page-break-inside: avoid;">
<!-- table content -->
</table>
Run Code Online (Sandbox Code Playgroud)
当然,如果表格增长到比一页还大的高度,那么分割它是不可避免的。
或者,当首先使用 转换为Elements时,您可以在生成的实例上ConvertToElements使用。SetKeepTogether(true)Table
| 归档时间: |
|
| 查看次数: |
12755 次 |
| 最近记录: |