★高手别潜水,高分悬赏!请教针打链式进纸连续打印问题★ ( 积分: 300 )

  • 主题发起人 主题发起人 inforum
  • 开始时间 开始时间
I

inforum

Unregistered / Unconfirmed
GUEST, unregistred user!
本人要自己写一个通用的精确定位的套打工具,即能控制输出位置的坐标,做到与打印机型号无关。(1)不采用第三方控件。(2)不用打印机的手册上的打印控制码解决。(3)也不想向打印机端口写数据解决。
使用的网络打印机是Epson-LQ 1600KII。在Windows平台下,目前用Printer.canvas直接画,连续打印的时候,从第二页开始总比前一页往后走了17毫米的偏差。
我知道FastReport可以精确解决此问题,做到了与具体的打印机无关。由于我手头的FR_Class.pas不完整,所以不知道作者是怎么实现的。
特向高手请教如何在不采用第三方控件的情况下解决连续打印的问题。或者能够获得第二页与前一页的偏差值也可得分。希望熟悉连续打印的高手不吝指教!能解答此问题的给予200分!答非所问者不得分。对FastReport源码有研究的朋友也不妨交流交流。
当然,基于Windows的打印实现起来有难度,分不够另外开帖。
 
本人要自己写一个通用的精确定位的套打工具,即能控制输出位置的坐标,做到与打印机型号无关。(1)不采用第三方控件。(2)不用打印机的手册上的打印控制码解决。(3)也不想向打印机端口写数据解决。
使用的网络打印机是Epson-LQ 1600KII。在Windows平台下,目前用Printer.canvas直接画,连续打印的时候,从第二页开始总比前一页往后走了17毫米的偏差。
我知道FastReport可以精确解决此问题,做到了与具体的打印机无关。由于我手头的FR_Class.pas不完整,所以不知道作者是怎么实现的。
特向高手请教如何在不采用第三方控件的情况下解决连续打印的问题。或者能够获得第二页与前一页的偏差值也可得分。希望熟悉连续打印的高手不吝指教!能解答此问题的给予200分!答非所问者不得分。对FastReport源码有研究的朋友也不妨交流交流。
当然,基于Windows的打印实现起来有难度,分不够另外开帖。
 
正确设置打印纸高度后就不会出现偏差。
 
17毫米?应该是页边距的关系,你应该先得到页边距,然后再减去偏移(因为修改页边距很难修改,很容易得到),再用Canvas打印,我以前经常这样作,偏差不会超过1毫米。
 
计算打印区域前,先去掉页边距,再结合纸张计算页数
 
我从第二页开始每一页纵坐标都往前多减去了偏差
pos*25.4/GetDeviceCaps(Printer.Handle, LOGPIXELSY)
但是 第二页比第一页下移了3毫米 第三页比第二页下移了1毫米
其中:pos := GetDeviceCaps (Printer.Handle, PHYSICALOFFSETY) ;
不知道何故?
 

Similar threads

后退
顶部