none
打印机 物理边距问题 RRS feed

  • 问题

  • 打印机设置了边距后,都有一个物理边距,如0边距打印机,XX边距打印机

    如何取得这个边距呢
    2009年11月20日 2:49

答案

  • [DllImport("gdi32")] public static extern int GetDeviceCaps(int hDC, int nIndex)

    然后通过这个方法来获取

    其中,hdc用来指定设备环境句柄,nIndex用来指定要获取的参量索引,对于打印机而言,它常常需要下列的预定义值:  
       
         LOGPIXELSX     打印机水平分辨率  
       
         LOGPIXELSY     打印机垂直分辨率  
       
         PHYSICALWIDTH    打印纸的实际宽度  
       
         PHYSICALHEIGHT   打印纸的实际高度  
       
         PHYSICALOFFSETX   实际可打印区域的物理左边距  
       
         PHYSICALOFFSETY   实际可打印区域的物理上边距   
       
    其中 PHYSICALWIDTH   =   110   
      PHYSICALHEIGHT   =   111   
        PHYSICALOFFSETX   =   112   
        PHYSICALOFFSETY   =   113  

    http://msdn.microsoft.com/en-us/library/dd144877(VS.85).aspx
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年11月20日 4:54
    版主

全部回复

  • [DllImport("gdi32")] public static extern int GetDeviceCaps(int hDC, int nIndex)

    然后通过这个方法来获取

    其中,hdc用来指定设备环境句柄,nIndex用来指定要获取的参量索引,对于打印机而言,它常常需要下列的预定义值:  
       
         LOGPIXELSX     打印机水平分辨率  
       
         LOGPIXELSY     打印机垂直分辨率  
       
         PHYSICALWIDTH    打印纸的实际宽度  
       
         PHYSICALHEIGHT   打印纸的实际高度  
       
         PHYSICALOFFSETX   实际可打印区域的物理左边距  
       
         PHYSICALOFFSETY   实际可打印区域的物理上边距   
       
    其中 PHYSICALWIDTH   =   110   
      PHYSICALHEIGHT   =   111   
        PHYSICALOFFSETX   =   112   
        PHYSICALOFFSETY   =   113  

    http://msdn.microsoft.com/en-us/library/dd144877(VS.85).aspx
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    2009年11月20日 4:54
    版主
  • tang版主的方法挺好,你可以试试看啊!
    周雪峰
    2009年11月20日 5:11
    版主
  • 可以取到但是不准确
    2009年11月20日 8:42
  • 用document.DefaultPageSettings.HardMarginX  也可以取到

    两种方法都试过了,明明是顶边距 却成了左边距,明明是左边距却成了顶边距

    平推的针式票据机
    2009年11月20日 8:47
  • 你检查一下打印机的打印方向设置!
    周雪峰
    2009年11月20日 9:05
    版主