Как настроить и печатать на бумаге нестандартного размера в C# документ печати? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь использовать PrintDocument и настроить размер бумаги для печати или термопринтер штрих-кода. Поскольку рядом нет принтера, я использую опцию Microsoft Print To PDF, которая появилась в Win10.

Во время инициализации у меня есть такой код: exception during setting custom paper size

Как вы видите, здесь я пытаюсь настроить нестандартный размер бумаги для формата бумаги по умолчанию. Но я не могу указать свойство 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);

не удалось решить вопрос.

Вот результат:

preview is nice and small but printed document is large and has not proper page size

Предварительный просмотр приятный и маленький, но напечатанный документ большой и неверный размер страницы

1 Ответ

1 голос
/ 15 января 2020

Вы можете попробовать инициализировать класс PaperSize в System.Drawing.Printing, а затем указать нестандартный размер

printDoc.DefaultPageSettings.PaperSize = new PaperSize("MyPaper", 600, 800);
...