Это все возможно, но для конкретного принтера на конкретном компьютере. По сути, вы запрашиваете у драйвера принтера свои пользовательские данные конфигурации и сохраняете их точно так же, как есть. Затем вы можете передать его позже для печати с помощью.
Проверьте следующие функции Windows API. Если вы хотите C-код для этого, спросите в комментарии. На самом деле, я скопирую фрагмент кода, который я использую, извините, он не переведен на Delphi! Это из реально работающего кода, хотя, тяжело боролся. Надеюсь, это даст вам некоторые подсказки.
bGood = OpenPrinter(pcDeviceName, &hPrinter, NULL);
int sBuffSize = DocumentProperties(hDlg, hPrinter, pcDeviceName, NULL, NULL, 0);
PDEVMODE pxDevMode = (PDEVMODE)malloc(sBuffSize);
gl_memset(pxDevMode, '\0', sBuffSize);
pxDevMode->dmSize = sBuffSize;
DocumentProperties(hDlg, hPrinter, pcDeviceName, pxDevMode, pxDevMode, DM_PROMPT | DM_COPY);
DocumentProperties(hDlg, hPrinter, pcDeviceName, pxDevMode, NULL, DM_COPY);
DocumentProperties(hDlg, hPrinter, pcDeviceName, pxDevMode, pxDevMode, DM_PROMPT | DM_COPY);
DocumentProperties(hDlg, hPrinter, pcDeviceName, pxDevMode, pxDevMode, DM_UPDATE | DM_MODIFY);
ClosePrinter(hPrinter);