none
VB6 印表機列印偏移問題 RRS feed

  • 問題

  • 各位先進們好

    我公司目前使用VB6系統驅動點陣印表機做列印,幾個月後時出現了列印起始點偏移的情況

    狀況如下:

    原程式設Printer.CurrentY = 100 這是我的需求位置

    列印幾個月後列印起始點就偏高,依照使用手冊將點陣印表機列印起始點歸0也沒用

    程式要將Printer.CurrentY = 120 才會符合我的需求位置

    Q1:早年印表機有Buffer殘留問題,導致前次列印設定未清除,請教先進們VB6有沒有清除印表機Buffer的指令?

    Q2:列印起始點偏移需要重新改程式列印位置,是印表機本身的問題嗎?


    • 已編輯 GISK 2015年10月26日 上午 04:06
    2015年10月26日 上午 04:06

解答

  • 印表機驅動程式的解析度與 Windows 解析度必然存在誤差。

    一般雷射或噴墨印表機以紙張為單位比較沒問題,從出血後就把誤差吃掉了。

    點陣式印表機因為允許連續模式,因此,點陣式印表機都會有定位指令,但定位指定依照印表機型號不同而改變,且須直接開啟 PRN 來傳送。http://support.microsoft.com/  網站以前找得到 VB6 用的,現在只找得到 VBNET 直接送指令的範例。

    Buffer 指的是緩衝記憶體,並非紙張誤差用的指令。


    T.L. Cheng

    2015年11月7日 上午 07:20
    版主

所有回覆

  • 印表機驅動程式的解析度與 Windows 解析度必然存在誤差。

    一般雷射或噴墨印表機以紙張為單位比較沒問題,從出血後就把誤差吃掉了。

    點陣式印表機因為允許連續模式,因此,點陣式印表機都會有定位指令,但定位指定依照印表機型號不同而改變,且須直接開啟 PRN 來傳送。http://support.microsoft.com/  網站以前找得到 VB6 用的,現在只找得到 VBNET 直接送指令的範例。

    Buffer 指的是緩衝記憶體,並非紙張誤差用的指令。


    T.L. Cheng

    2015年11月7日 上午 07:20
    版主
  • 璉璉 先進您好

    我知道Buffer是緩衝區,跟紙張設定無關

    所以我的文章指的是Buffer殘留前次列印的"設定",指列印字型、大小、起始點等等

    想請教VB6 or VB.NET有沒有清除印表機Buffer的指令

    如早年倚天驅動點陣印表機  有「~I」這個指令可以清除印表機Buffer


    定位點問題就只能遇到時改程式了

    謝謝您的回覆

    2015年11月13日 上午 07:39
  • 你需要先向印表機廠商索取控制指令,才能自己送。

    Windows 沒有定義硬體處理方式,所以對硬體溝通的部分都要靠廠商的文件。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年11月13日 下午 03:36