关于一次打印若干种不同的纸张解决办法

关于一次打印若干种不同的纸张
一台HP LASERJET P4015n打印机,有四个纸盒,支持4种不同类型的纸张:A4,A5,A6,B6。

如何在一次打印作业中,如何使第一张使用A4横向打印,第二张使用A4纵向打印,第三张使用A5,第四张使用A6,第五张使用B6?

光用SetPrinter::PRINTER_INFO_2::DEVMODE的dmOrientation和dmPaperSize能解决吗?

另外,有没有办法在打印前就获取到打印机的状态?(提交打印作业前)

------解决方案--------------------
从来没接触过打印机。。。
------解决方案--------------------
头一回接触到有4个纸盒的打印机,高档货啊,这个不具备通用信,你应该尝试下联系你们的供应商,让他们提供解决方法,这里恐怕接触这个的人不多,很难找到答案。
------解决方案--------------------
可以的,每打完一张重新设置格式!

------解决方案--------------------
调用打印机对话框,这是操作系统自带的,在这个对话框里设纸张大小及纵横向.
BOOL CSingleBattView::OnPreparePrinting(CPrintInfo* pInfo)
{
if(DoPreparePrinting(pInfo))
return CView::OnPreparePrinting(pInfo);
else
return FALSE;
}
这就是弹出打印机对话框的函数
------解决方案--------------------
重载如下函数:
OnPrepareDC(CDC* pDC, CPrintInfo* pInfo);
OnPreparePrinting(CPrintInfo* pInfo);
OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
OnPrint(CDC* pDC, CPrintInfo* pInfo);
用这四个函数,就不用关心打印机了,打印机的操作由操作系统来做,只要操作系统有这个打印机就可以打印,大大的方便,就是不能了解打印的细节了
------解决方案--------------------
先找一个字处理软件,看看能不能字处理软件能不能自动选择纸盒,如果能,是自动选择还是通过打印对话框让用户手动选择,如果是手动选择,就得找这个打印机的接口资料了,不然无法控制打印机选择相应的纸盒
------解决方案--------------------
第一次听说这种高档打印机,不知道楼主要打印的是自己绘制的东西还是什么?
楼主已经用DEVMODE设置了CPrintDC的大小和纸张方向吧。
我以前的做法是,默认的CPaintDC可以得到宽度和高度,并根据这个宽高度动态的绘制内容。
打印的时候,计算CPrintDC和CPaintDC的宽高比,将原有绘制内容的坐标和文字大小动态的进行缩放,再进行一次绘制即可,随便设置的纸张是多大都可以适应。