基于HTML的报告被分页撕成碎片

时间:2009-12-30 16:48:11

标签: .net html css printing c#-2.0

我创建了一个基于HTML的报告,它可以是C#中的可变长度和段数(这就是为什么不使用Crystal Reports),我不能使用精彩的http://www.printfriendly.com/作为报告基于Intranet(boooo,hiss)。

我创建了一个media = print CSS文件,用于尽可能使纸张和墨水格式化,但我遇到了问题。报告中有一个非常长的表,大约有50个表行,每个表都围绕高度:200px。不幸的是,由于自动分页,一些表行被切片,一部分表行在一页上,其余部分在下一页上。无论如何(希望通过CSS),将分页符选项设置为不分离表格元素(或类似元素)?

谢谢, 亚历

3 个答案:

答案 0 :(得分:1)

page-break-inside: avoid属性应该控制它,但看起来大多数浏览器都不支持trtd元素。在我的测试中,Opera是唯一一个尊重这个属性的人,如下面的测试中所用:

<!DOCTYPE html>
<title>Page Break Test</title>
<style>tr, td { page-break-inside: avoid }</style>
<table border=1>
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
  <tr height=200><td>This is a test. This should be tall.<td>Another column.
</table>

如果你可以使用Opera,这可能就足够了。另一个选择是调查Prince打印报告,因为它往往比浏览器更好地支持打印样式表功能(虽然我没有特别测试过这个功能)。

答案 1 :(得分:1)

如果你的行高确实是固定的,你可以弄清楚页面上有多少行,然后在每第n行使用page-break-after: always来强制在适当的位置分页。这有点像黑客,但它可能是你最好的选择。

答案 2 :(得分:1)

不幸的是,用HTML可靠地完成你想要的东西是不可能的。

如果您希望对打印内容进行高级别控制,我建议您使用报告生成器输出PDF或XPS而不是HTML(或者像Brian Campbell建议的那样,通过使用像Prince这样可以采用HTML和转换的工具它是PDF)。