以编程方式打印时,是否可以为每个页面指定不同的页面大小?

时间:2012-02-01 16:08:59

标签: c++ winapi printing

我正在打印多个页面到虚拟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以某种方式更新打印设备上下文。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

是的,使用所需的页面大小更改您的DevMode并调用ResetDC(hPrinterDC,DevMode);

编辑:哦,在EndPage之后但在StartPage之前执行此操作。