【发布时间】:2010-09-14 22:03:33
【问题描述】:
我正在开发一个 ASP.Net Web 应用程序,该应用程序必须在标准 Avery 样式的标签纸上打印动态创建的标签(一种特定的尺寸,因此只有一种整体布局)。标签的行数不定 (3-6),可能包含文本行或图形条形码图像。
我继承的第一个剪辑使用等宽字体来减少格式问题,但这样就没有足够的文字适合标签,客户不满意。基本上是格式化文本。
我的下一个版本使用 TABLE、DIV、CSS 和一些 JavaScript 计算来使用比例字体格式化标签。它仍然需要一些调整(用户必须正确设置打印边距并关闭打印页眉和页脚),但它似乎工作。
但是,不同的打印机呈现文本的方式似乎存在一些差异(WYS 不是 WYG),因此即使我们使用至少两种不同的打印机(喷墨打印机和激光打印机)在不同的浏览器上进行了测试,一些用户的标签不对齐。可以通过调整页面设置对话框上的边距来调整轻微的边距变化,但更难的问题是标签间的间距可以偏离一英寸的一小部分,所以如果第一个标签很好地居中,通过标签文本和图像已从标签顶部或底部爬出的页面末尾。
我们即将切换到生成 Word、Excel 或 PDF 输出,这将需要相当长的开发时间,并且可能会在打印过程中添加额外的步骤。
那么,对于如何在不同类型的打印机上精确呈现的 HTML/CSS 布局,有人有什么建议吗?我真的不在乎换行/分词是否有点不同,但我需要能够可预测地定位每个标签区域的左上角。
现在标签在表格中顺着页面向下流动,我们一直在调整单元格和内部 DIV 的框模型以使它们具有统一的高度。我怀疑使用每个元素的绝对定位可能是最好的答案,但由于标签元素的 ASP.Net 生成,这也会很棘手。如果我确定这会起作用,我宁愿尝试它,也不愿放弃我们必须使用不同的生成方法的所有东西。
轻微更新: 现在我正在做一些绝对定位的测试——只设置包含块元素的顶部和左侧坐标。到目前为止,页面上的偏移量(页边距、纸张对齐方式等)存在细微变化,但所有测试的浏览器和打印机都将元素完全放在正确的位置相对于彼此。我很欣赏 PDF 提示,但有人知道以这种方式使用绝对定位的其他“陷阱”吗?
更新: 作为记录,我使用 iTextSharp 重写了标签打印部分,它运行良好 - 绝对是将来这样做的方式......
【问题讨论】: