我们最初使用等宽字体来减少格式问题,但是这样无法容纳足够的文本以适合标签,客户不满意。基本上是格式化文本。
我的下一个版本使用了TABLE、DIV、CSS和一些JavaScript计算来使用比例字体格式化标签。它仍然需要一些调整(用户必须正确设置打印页边距并关闭打印标题和页脚),但似乎可以工作。
然而,看起来有一些不同的打印机如何呈现文本的变化(所见即所得并非所想),因此即使我们在至少两种不同的打印机(喷墨和激光打印机)上使用不同的浏览器进行测试,某些用户的标签也不对齐。微小的边距变化可以通过在页面设置对话框中调整边距来调整,但更困难的问题是标签之间的间距可能偏差很小,因此如果第一个标签相当居中,则到页面结束时标签文本和图像会爬出标签的顶部或底部。
我们即将切换到生成Word、Excel或PDF输出的阶段,这将需要相当多的开发时间,并可能在打印过程中添加额外的步骤。
因此,有没有人有任何建议,可以进行HTML/CSS布局,在不同类型的打印机上精确呈现?我并不真正关心行/单词断点是否稍有不同,但我需要能够可预测地定位每个标签区域的左上角。
目前,标签在表格中依次排列,并且我们一直在调整单元格和内部DIV的盒模型,使它们具有统一的高度。我怀疑每个元素使用绝对定位可能是最好的答案,但由于ASP.Net生成标签元素而变得棘手。如果我确定这样做可行,我宁愿尝试它,也不愿抛弃我们已经拥有的一切来采用不同的生成方法。
轻微更新: 目前,我正在进行一些使用绝对定位的测试-仅设置包含块元素的顶部和左侧坐标。到目前为止,页面上的偏移(边距,纸张对齐等)有轻微变化,但所有测试的浏览器和打印机将元素放置在彼此之间的完全相同的位置。我感谢PDF提示,但是否有人知道以这种方式使用绝对定位的其他技巧?
更新: 值得一提的是,我使用iTextSharp重新编写了标签打印部分,它运行完美-绝对是未来要做的事情...