我的任务是开发一个在线表格,然后将其打印成预先印制的表格。此表格稍后将被扫描并进行OCR编辑,并且规格要求与印刷表格上的字段的偏移小于1毫米。
我花了几个小时在CSS中设置排版和边距以实现完美对齐,但却发现在不同品牌的打印机上,结果差不多5毫米。然后我尝试在打印前将整个表单渲染为PDF,但结果显示各种打印机的可打印区域边距不同。
所以我考虑创建一个可执行文件,从打印机驱动程序中读取这些值并相应地对齐PDF /图像。我也有一个想法,这个信息也许可以通过浏览器插件/插件获得,但在开始工作之前,我想问一下你认为什么是解决这个对齐问题的最佳方法,最好这样做跨平台工作(win,linux,mac)和跨浏览器(IE,FF,chrome)?
答案 0 :(得分:6)
简短的回答是,不可能使用html进行可靠的排版。网页的设计无关于在页面上放置文本的任何问题。
忘记浏览器插件,重新解决已解决问题的解决方案是一个巨大的麻烦。
你应该做什么,是提交表格,然后专门生成一个PDF以适合表格(或者只是生成整个表格然后在那里)。不要尝试将网页呈现为PDF,而是使用众多可用的PDF生成库之一直接生成PDF,然后将其发送给用户。是的,基本上维护2块代码,一个用于网页,一个用于表单,可能有点令人讨厌,但是它会比你提出的要求更加麻烦。< / p>
这个建议当然是忽略了生成打印输出的完全荒谬,只是稍后被OCR打。如果你可以消除这种情况,你可以绕过所有这些废话。
答案 1 :(得分:2)
首先尝试使用CSS @media打印,然后使用标准单位的精确缩放,例如英寸,em和点而不是像素。 您仍然需要尝试使用不同的Web浏览器(例如至少IE 10 +,Firefox 28 +,Chrome 21+),然后尝试使用不同类型的打印机进行打印:激光,热敏和喷墨。
对于某些打印机,有些情况下,它们并不尊重标准的正常打印单位,但这可能是使用的打印机驱动程序错误的主题。
对于各种打印机和网络浏览器的组合,没有单一的锤子。因此,经验和实验尤其是真正的打印机是常见的。