在c#中打印时,发现如果将左边距和右边距的值设成一样的,再在左边距的位置画条竖线,再在右边距的位置画条竖线,用打印机打出来会发现两条竖线离两边的距离不一样,用尺子量一下,大约左边比右边多25,但用Microsoft Office Document Image Writer打印出来左右距离是一样的。这是为什么呢?

解决方案 »

  1.   

    楼上的意思是说,打印机不支持左边距太小?可是为什么我用word打印时左边距可以更小?
      

  2.   

    因为打印机本身有一个边距(不可打印到的范围),也就是打印机针头的起始点,这也就是左边比右边要宽一点的原因,用api可以得到
      

  3.   

    可是为什么我用word打印时,将页边距调到很小,都能正常输出?
    那个api是哪个?
      

  4.   

    int offx = WINAPI.GetDeviceCaps(dc, WINAPI.PHYSICALOFFSETX); int offy = WINAPI.GetDeviceCaps(dc, WINAPI.PHYSICALOFFSETY); int resx = WINAPI.GetDeviceCaps(dc, WINAPI.HORZRES); int resy = WINAPI.GetDeviceCaps(dc, WINAPI.VERTRES); float hsz = Convert.ToSingle(WINAPI.GetDeviceCaps(dc, WINAPI.HORZSIZE)) / 25.4f; float vsz = Convert.ToSingle(WINAPI.GetDeviceCaps(dc,WINAPI.VERTSIZE)) / 25.4f; float ppix = resx/hsz; float ppiy = resy/vsz; int leftMargin  = offx; int topMargin   = offy;
      

  5.   

     http://210.21.115.122/ocx/Crystal9.2.zip