Я пытаюсь использовать PrintDocument и настроить размер бумаги для печати или термопринтер штрих-кода. Поскольку рядом нет принтера, я использую опцию Microsoft Print To PDF, которая появилась в Win10.
Во время инициализации у меня есть такой код:
Как вы видите, здесь я пытаюсь настроить нестандартный размер бумаги для формата бумаги по умолчанию. Но я не могу указать свойство Kind, потому что оно доступно только для чтения! Не помогает свойство RawKind.
Как альтернатива у меня есть такое событие. Это тоже не помогает. Он правильно отображает макет страницы при предварительном просмотре, но в документе PDF я наблюдаю страницы, напечатанные в формате A4, как по умолчанию.
private void PrintDoc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
{
PageSettings nSettings = new PageSettings();
int properWidthInHundretsOfInches = (int)(handlingClassRef.newconfig.labelParameters.barcodeLabelWidthMM * (1.0 / 25.4) * 100.0);
int properHeightInHundretsOfInches = (int)(handlingClassRef.newconfig.labelParameters.barcodeLabelHeightMM * (1.0 / 25.4) * 100.0);
nSettings.PaperSize = new PaperSize("label", (int)properWidthInHundretsOfInches, (int)properHeightInHundretsOfInches);
e.PageSettings = nSettings;
}
Мне известен вопрос Как печатать на бумаге нестандартного размера в winforms , но я на самом деле не понимаю ответа. Должен ли я перенастроить принтер с помощью диалогового окна свойств принтера ОС? Я бы предпочел не требовать от пользователя изменения настроек принтера тем или иным способом. Кроме того, я хотел бы добиться соответствующего результата во время печати в фазе исследования PDF.
Как настроить и печатать на бумаге нестандартного формата в C# printdocument?
Редактировать: используя строку:
printDoc.DefaultPageSettings.PaperSize = new PaperSize("label", properWidthInHundretsOfInches, properHeightInHundretsOfInches);
не удалось решить вопрос.
Вот результат:
Предварительный просмотр приятный и маленький, но напечатанный документ большой и неверный размер страницы