Изменить HardMarginX для печати PDF-файла с помощью PdfiumViewer - PullRequest
0 голосов
/ 15 февраля 2020

Я использовал pdfiumViewer для печати этикетки, созданной itextshape, я нашел этот код в stackoverflow, он хорошо работает для бумаги формата A4, но для пользовательской бумаги, такой как моя этикетка, проблема будет происходить. Это код:

public static void PrintPDF(string printer, string paperName, string filename, int copies, bool isduplex = false, bool isHorizontal = false, bool printLabel = false)
    {
        try
        {    // Create the printer settings for our printer
            var printerSettings = new PrinterSettings
            {
                PrinterName = printer,
                Copies = (short)copies,
                Duplex = Duplex.Simplex,

            };

            if (isduplex && printerSettings.CanDuplex && isHorizontal)
            {
                printerSettings.Duplex = Duplex.Horizontal;
            }

            if (isduplex && printerSettings.CanDuplex && isHorizontal == false)
            {
                printerSettings.Duplex = Duplex.Vertical;
            }
            // Create our page settings for the paper size selected
            var pageSettings = new PageSettings(printerSettings)
            {
            };


            if (printLabel == true)
            {
                PaperSize paper = new PaperSize("label", 460, 260);
                pageSettings.PaperSize = paper;
                pageSettings.Margins = new Margins(0, 0, 0, 0);
            }
            else
            {
                foreach (PaperSize paperSize in printerSettings.PaperSizes)
                {
                    if (paperSize.PaperName == paperName)
                    {
                        pageSettings.PaperSize = paperSize;
                        break;
                    }
                }

            }

            // Now print the PDF document
            if (printerSettings.IsValid)
            {
                using (var document = PdfiumViewer.PdfDocument.Load(filename))
                {
                    using (var printDocument = document.CreatePrintDocument(PdfiumViewer.PdfPrintMode.CutMargin))
                    {
                        printDocument.PrintController = new StandardPrintController();
                        printDocument.OriginAtMargins = true;
                        printDocument.PrinterSettings = printerSettings;
                        printDocument.DefaultPageSettings = pageSettings;
                        printDocument.Print();
                    }
                }
            }
        }
        catch 
        {
            throw;
        }
    }

Проблема в том, что HardMarginX всегда равен 20. Это свойства только для чтения, поэтому я не могу изменить. Поэтому, когда я печатаю, бумага всегда оставляла поле. Так или иначе я могу сделать, чтобы решить эту проблему. Спасибо за чтение

1 Ответ

1 голос
/ 15 февраля 2020
        PaperSize paperSize = new PaperSize("Test", 315, 300);
        paperSize.RawKind = (int)PaperKind.Custom;

Использование этого кода

...