用程序打印时,我可以为每页指定不同的页面大小吗

Can I specify different page sizes for each page when printing programatically?

本文关键字:打印 我可以 程序      更新时间:2023-10-16

我正在将多个页面打印到虚拟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之前这样做。