【问题标题】:.net print html table with page-break-before.net 使用 page-break-before 打印 html 表
【发布时间】:2014-10-21 11:44:53
【问题描述】:

我试图在打印动态表格时放置分页符,该表格是在 .Net 4.0 框架 C# 控制台程序中生成的电子邮件正文的一部分:

<table>
    <div style='page-break-before: always'>
    <tr><td> header data </td></tr> </div>

    <tr><td> data </td></tr>
    '' multiple rows
</table>

当程序运行时,我可以看到数据和格式,但它显示的页数是 Outlook 打印预览中的 4 倍,因此例如,最多 20 页应该有 80 多页!!

我已经在调试器中运行它并且电子邮件正文没问题,但我无法找出在 Outlook 中查看和打印预览时页数关闭的原因。我相信 div 标签可能是问题所在。我把它拿出来显示没问题,但没有分页符。我必须使用内联 CSS,因为使用通常的“样式”标签在 .Net 电子邮件类中不起作用。

还请注意,我尝试在 page-break-before 的行上使用“样式”标签,但它不起作用。

【问题讨论】:

  • 我刚刚看到您的编辑。添加style 时是否删除了div 标签?您能否也发布一些您的真实 HTML 来尝试找出问题所在?

标签: html .net html-email


【解决方案1】:

嗯,很明显在table 标签中使用div 在语法上是不正确的,将它们全部废弃并在table 标签之前添加以下内容:

表 { page-break-inside:auto } tr { page-break-inside:避免;分页后:自动 }

你有没有这样尝试过:(确保删除table之后的div

<table style="page-break-before:always; page-break-after:always;"> <tr style="page-break-inside: avoid;"> . . . .

【讨论】:

  • 我刚看到你的编辑,你添加style时是否删除了div标签?
  • 你不明白,邮件正文是用'out'作为字符串构建的。字符串只能使用内联 CSS 进行样式设置。这是 Microsoft 对填充电子邮件正文的限制。并且已经尝试使用样式标签来表格和 tr 行。之前从关于 stackoverflow 的另一个问题中研究过的运气不佳:stackoverflow.com/questions/8712677/…
  • 不。没有删除“div”标签。
  • 我以前用过,但不记得怎么用了,你试过用 /* / ... / ]]> * /
  • 我使用您发布的答案作为部分解决方案。 MS Outlook 显然不喜欢它,所以我添加了页面的 HTML 版本作为附件,用户可以使用您的解决方案单击和打印。
猜你喜欢
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
相关资源
最近更新 更多