我正在开发一个ASP.Net web应用程序,它必须在标准的埃弗里风格的标签页上动态打印创建的标签(一个特定的大小,所以只有一个整体布局)。标签有可变的行数(3-6行),可以包含文本行或图形条形码图像。
我们的第一次剪裁,我继承了,使用单间隙字体减少格式化问题,但这不允许足够的文本适合标签和客户是不满意的。基本上它是格式化的文本。
我的下一个版本使用表、DIVs、CSS和一些JavaScript计算来使用比例字体格式化标签。它仍然需要一些调整(用户必须正确设置打印页边距并关闭打印页眉和页脚),但它似乎有效。
然而,不同的打印机呈现文本的方式似乎有一些不同(WYS不是WYG),所以即使我们使用至少两种不同的打印机(喷墨机和激光打印机)在不同的浏览器上进行测试,一些用户的标签还是没有排列起来。可以通过调整页面设置对话框中的页边距来调整轻微的边距变化,但更困难的问题是标签间的间距可以减少一小部分英寸,因此如果第一个标签很好地居中,到页面的末尾标签文本和图像已经从标签的顶部或底部爬行。
我们即将切换到生成Word、Excel或PDF输出,这将花费相当长的开发时间,并可能在打印过程中增加额外的步骤。
那么,有没有人对如何在不同类型的打印机上精确呈现HTML/CSS布局有任何建议?我并不关心行/单词的断续是否有一点不同,但我需要能够预测地定位每个标签区域的左上角。
现在标签在表格中向下流动,我们一直在调整单元格和内部DIVs的盒子模型,以使它们的高度保持一致。我怀疑使用每个元素的绝对位置可能是最好的答案,但由于标签元素的ASP.Net生成,这也将是一个棘手的问题。如果我确信这是可行的,我宁愿尝试它,也不愿抛弃我们必须采用不同的生成方法的一切。
轻微更新:现在我正在做一些测试,只设置包含块元素的顶部和左侧坐标的绝对定位。到目前为止,在页面上的偏移量有很小的变化(边距、纸张对齐等),但是所有被测试的浏览器和打印机都将中的元素放在中相对于彼此的正确位置。我很欣赏PDF的技巧,但是有没有人知道用这种方式使用绝对定位的额外“陷阱”呢?
更新:为了记录,我用iTextSharp重写了标签打印部分,它工作得很完美--肯定是将来这样做的方法.
发布于 2008-10-02 19:48:13
忘记HTML并创建一个PDF。HTML打印是非常可变的-不仅是在不同的浏览器之间,而且在不同版本的同一浏览器。PDF要容易得多。
即使你在月球的一个浏览器/字体设置/打印机/相位上完全正确,它也将是你曾经维护过的最脆弱的东西。不管您认为制作PDF需要多长时间(而且并不是很难,因为有一些免费的库),HTML最终将花费更多的时间。PDF阅读器是广泛部署和打印比甚至比Word文件更一致。
发布于 2008-10-02 19:48:53
网络并不是一种保证得到一致的打印结果的格式。考虑到MS对标签打印的标准支持,以及相对容易的自动化和生成,我强烈建议走这条路。
在使用web内容时,我不知道有什么方法可以在所有类型的浏览器、操作系统和打印机上实现感知打印。
发布于 2008-10-02 19:51:00
“精确”和“打印”这两个词并不是真的能很好地结合在一起。大约一年前,我做了一个OCR/OMR应用程序,甚至在构建PDF时,我也看到了不同打印驱动程序之间的显著差异。正因为如此,我的直觉就是告诉你,你可能没有百分之百的成功。
如果CSS和布局问题不适合您,您可能需要使用GDI+将标签构建为图像--至少可以使用GetFontMetrics()之类的方式。
祝好运!
https://stackoverflow.com/questions/164197
复制相似问题