Могу ли я указать разные размеры страниц для каждой страницы при программной печати? - PullRequest
3 голосов
/ 01 февраля 2012

Я печатаю несколько страниц на виртуальном принтере 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);

Это позволяет мне выбрать размер страницы только один раз.Чтобы иметь разные размеры страниц для каждой страницы, мне нужно каким-то образом обновлять контекст устройства печати с помощью нового DEVMODE перед каждым новым StartPage.Можно ли это сделать?

1 Ответ

3 голосов
/ 01 февраля 2012

Да, измените ваш DevMode с нужным размером страницы и вызовите ResetDC (hPrinterDC, DevMode);

РЕДАКТИРОВАТЬ: Да, и сделать это после EndPage, но до StartPage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...