Изменение размера бумаги при печати этикетки на принтере Brother в C # - PullRequest
0 голосов
/ 04 октября 2018

У меня есть Brother PT9800PCN, который использует ленты (от 6 мм до 36 мм) для печати этикеток.

В приложении Windows Form у меня есть различные кнопки, которые при нажатии должны печатать определенный файл (pdf) напринтер.В зависимости от файла требуются разные ленты.Размеры берутся с использованием значений из текстовых полей, где я указываю нужный размер.

Моя проблема в том, что когда я задаю размер страницы, он печатает на том, что когда-либо установлено в настройках принтера по умолчанию.

Я установил настройки принтера для ленты размером 18 мм и длиной 50 мм.

Я установил ленту размером 24 мм в принтере и в коде я устанавливаю размер страницы 24x50мм.

Когда я нажимаю на печать, принтер мигает красным, что у меня установлена ​​лента неправильного размера.

В настройках принтера я также сохранил некоторый нестандартный размер под разными именами.

Попытка установить RawKind равным 0 и значением выше 119, не повезло.

        PdfiumViewer.PdfDocument pdfiumDoc = PdfiumViewer.PdfDocument.Load(file);
        PrintDocument pd = pdfiumDoc.CreatePrintDocument(PdfiumViewer.PdfPrintMode.CutMargin);
        pd.PrinterSettings.PrinterName = comboPrinters.SelectedItem.ToString();
        pd.PrinterSettings.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0);
        pd.PrinterSettings.DefaultPageSettings.Landscape = true;
        pd.PrinterSettings.DefaultPageSettings.PaperSize.RawKind = 0;
        //pd.PrinterSettings.DefaultPageSettings.PaperSize.PaperName = "customSize";
        pd.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("customSize", (int)Math.Round((double)Convert.ToInt32(textBox1.Text) * 500 / 127), (int)Math.Round((double)Convert.ToInt32(textBox2.Text) * 500 / 127));
        pd.Print();
...