我正在将多个页面打印到虚拟PDF打印机。并非所有页面都具有相同的纸张尺寸。这是我的代码的概要:
DEVMODE DevMode;
InitDevMode(&DevMode);
SetThePageSize(&DevMode);
HDC hPrinterDC = CreateDC("WINSPOOL", "MyPrinter", NULL, &DevMode);
DOCINFO DocInfo;
memset( &DocInfo, 0, sizeof(DocInfo) );
DocInfo.cbSize = sizeof(DocInfo);
StartDoc(hPrinterDC, &DocInfo);
for (int i = 0; i < nPagesCount; i++)
{
StartPage(hPrinterDC);
DoTheDrawing();
EndPage(hPrinterDC);
}
EndDoc(hPrinterDC);
这使我只能选择一次页面大小。为了使每个页面具有不同的页面大小,我需要以某种方式在每个新的StartPage之前使用新的DEVMODE更新打印设备上下文。能做到吗?
最佳答案
是的,将您的DevMode更改为所需的页面大小,然后调用ResetDC(hPrinterDC,DevMode);
编辑:哦,在EndPage之后但在StartPage之前执行此操作。