我继承的第一个剪辑使用均匀字体来减少格式化问题,但是这并不足以使文本符合标签,客户不满意.基本上是格式化的文字.
我的下一个版本使用TABLE,DIV,CSS和一些JavaScript计算,以使用比例字体格式化标签.它仍然需要一些调整(用户必须正确设置打印边距,并关闭打印头和页脚),但它似乎工作.
然而,似乎有不同的打印机渲染文本(WYS不是WYG)的一些变化,所以即使我们使用至少两个不同的打印机(喷墨和激光打印机)在不同的浏览器上测试,一些用户的标签不排队可以通过调整页面设置对话框的边距来调整微小的边距变化,但更难的问题是标签间距可以关闭几分之一英寸,因此如果第一个标签的中心位置很好,页面的结尾标签文字和图片已经从标签的顶部或底部爬行.
我们即将切换到生成Word,Excel或PDF输出,这将需要相当多的开发时间,并可能在打印过程中增加额外的步骤.
那么,有没有人有任何建议,如何做一个HTML / CSS布局,将精确渲染在不同类型的打印机?我不太在意,如果行/单词中断有点不同,但是我需要能够预测每个标签区域的左上角的位置.
现在,标签在表中向下流动,我们已经调整了单元格和内部DIV的框模型,使其成为均匀的高度.我怀疑使用每个元素的绝对定位可能是最好的答案,但是由于ASP.Net生成标签元素,这也是棘手的.如果我确实知道这将会起作用,我宁愿尝试一下,而不是把我们必须去做的一切都放在另外一代.
稍微更新:
现在我正在做绝对定位测试 – 只设置包含块元素的顶和左坐标.到目前为止,在页面上的偏移量(边距,纸张对齐等)上有很小的变化,但是所有的浏览器和打印机都将元素放在正确的位置上.我欣赏PDF提示,但是有没有人知道使用绝对定位这种方式的其他“陷阱”?
更新:
为了记录,我用iTextSharp重写了标签打印部分,它的工作原理完美 – 绝对是将来这样做的方式…
解决方法
即使你用一个浏览器/字体设置/打印机/阶段的月亮来得到它,这将是你一直不得不维护的最脆弱的事情.不管你认为需要多长时间才能制作一个PDF(并不是真的那么难,因为有一些免费的图书馆),HTML将最终需要更多的时间. PDF阅读器被广泛部署和打印比甚至Word文件更一致.