Html 使用CSS在预先格式化的纸张上打印发票

Html 使用CSS在预先格式化的纸张上打印发票,html,css,printing,Html,Css,Printing,我有一张html格式的发票,可以很好地显示在屏幕上。我想把它打印到预先格式化的纸上。论文分为三个部分 页眉(距页面顶部的固定高度) 正文(由1-N行组成的表格) 页脚(距页面底部的固定高度) 我尝试过使用CSS,并使用#InvFooter和CSS创建了一个div <link rel="stylesheet" href="print.css" type="text/css" media="print" /> 我有两个问题无法解决 如何将页脚定位到打印页面的底部 如何将正文限制在页面的

我有一张html格式的发票,可以很好地显示在屏幕上。我想把它打印到预先格式化的纸上。论文分为三个部分

页眉(距页面顶部的固定高度)

正文(由1-N行组成的表格)

页脚(距页面底部的固定高度)

我尝试过使用CSS,并使用#InvFooter和CSS创建了一个div

<link rel="stylesheet" href="print.css" type="text/css" media="print" />
我有两个问题无法解决

  • 如何将页脚定位到打印页面的底部
  • 如何将正文限制在页面的固定部分,并在表中有太多行时溢出到另一个页面

  • 答案很简单:不要,html/css从来就不是用来打印的。即使您可以“修改”绝对尺寸以适合当前打印机,也不能保证它们适合下一台(或客户的)

    正是因为这个原因,PDF被发明出来,以提供您想要的打印格式(以及高便携性)

    通过使用PDF,您可以保证获得固定(纸张)大小


    您将能够找到免费的pdf解决方案(开源)以及商业解决方案(例如,还有许多其他解决方案)这使您能够从基于服务器的应用程序动态地从.Net生成PDF,而不依赖Adobe产品。

    这是我遇到的CSS打印技术的最佳编译。它有到W3标准的深层链接、优秀的示例、第三方推荐的HTML->PDF软件和一个方便的JPEG,可以访问16个不同的页边距选择器。这让我开始了,现在我可以打印100多个不同长度的项目摘要,以供执行官审查

  • 该条:

  • 方便的精美页边距JPEG:

  • 演示HTML手册:

  • 演示打印CSS:

  • 希望这有帮助

    编辑 这些可能是您正在寻找的:

    .invoice {
       page-break-before: always;
    }
    
    .invoice h1.title {
       page-break-after: avoid;
    }
    
    .invoice .line-item {
       page-break-inside: avoid;
       page-break-after: auto;
    }
    
    编辑
    格式化纸张如何容纳多页发票?您必须单独打印每张发票。。。呃

    你说的“预格式化纸”是什么意思?物理纸张是否已部分打印?是的,完全正确。发票背景的颜色元素都是预先打印好的,还有一个穿孔。啊哈,我明白了。我想你很难用CSS来达到完美。我建议你使用类似PDF的东西。CSS和HTML更适合作为浏览器如何显示文档的指南。。不适合打印-对不起。我不能回答每一句话,但我很确定你不能“锚定页脚”到页面底部。如果你需要额外的空间将fotter推到底,你将不得不使用沙袋div或内容和页脚之间的计算边距。祝你好运。查找PDF库并在后端使用它。使用HTML/CSS将是一场噩梦,因为它不是为此而设计的。(NodeJS有一个很棒的名为PDFkit的库)谢谢,在这种情况下,预打印的表单仅用于我们发送发票时。如果用户自行开票并打印自己的发票,则表单不会预打印,因此一切正常。PDF解决方案是否以编程方式工作(也就是说,我可以告诉他们哪个div是的,它是编程的。设置发票等东西非常简单。我用过它,还有更复杂的东西,结果文件通常非常小,除非嵌入图像等。是的,我的服务器env是Apache over FreeBSD,带有perl、python、PHP等。我需要一个不是.net的解决方案