我有一个从数据库动态生成的报告,该报告的某个部分应该打印在一个表中。我想以横向轮廓打印此表,将报告的其余部分正常打印为“纵向”。
那么,有什么想法可以实现吗?
我有一个从数据库动态生成的报告,该报告的某个部分应该打印在一个表中。我想以横向轮廓打印此表,将报告的其余部分正常打印为“纵向”。
那么,有什么想法可以实现吗?
您可以在 CSS 中设置@page
属性,请参见下面的代码:
@media print{@page {size: landscape}}
如果您创建一个表格并将其视为相对于页面的 100% 宽度,则打印机应自动打印到整个页面宽度。是横向还是纵向取决于您在实际打印时在打印设置中选择哪一个。您能够干净利落地完成此任务的唯一方法是制作两个单独的 html 文档——一个包含纵向部分,另一个包含横向部分。然后分别打印每个文档。
只有另外两种完成任务的理论方法:1)某种浏览器插件,它会为您发送单独的打印作业,确定文档的哪些部分应该以哪种方式打印。
2) 使用 CSS3 变换。生成要打印的表格的静态图像,然后在页面上将其转换(旋转)90 度,使其在屏幕上看起来是横向的。如果您旋转文档的某些部分,那么理论上您可以在一项工作中完成整个工作。但不要浪费你的时间。这将是一场彻头彻尾的噩梦。特别是如果你不得不问怎么做。
您可以这样将桌子旋转 90 度:
<div style="display: block; margin: 0; break-before: page; width: 297mm; height: 210mm; transform: rotate(270deg) translate(-296mm, 0);
transform-origin: 0 0;" >
<table style="word-wrap: break-word; table-layout: fixed; width: 100%;">
<tr><td>A row</td></tr>
</table>
</div>
word-wrap 和 table-layout 样式对于将表格保留在页面内而不覆盖自身是必要的。您可能需要摆弄 div 中的宽度、高度和平移值,但这些值对我来说适用于 A4 页面。它在 Chrome 中对我有用,没有检查过其他人。