C# Drukowanie - wielkość kartki papieru

0

Hej

Mam problem z robieniem wydruku.
Chcę wykonać etykietę w formie PDF, o rozmiarze 8 na 40cm.
O ile samo drukowanie nie stanowi żadnego problemu dla mnie, to problem jest wybór wielkości papieru.
Mam taki kod programu:

    public static class TestPrint
    { 
        public static void Print() {
             
            var prtdoc = new System.Drawing.Printing.PrintDocument(); 
            //Wybór drukarki PDF
            foreach (String strPrinter in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
            {
                if (strPrinter.Contains("PDF"))
                {
                    prtdoc.PrinterSettings.PrinterName = strPrinter;
                    Console.WriteLine(strPrinter);
                }
            } 
            //Stworzenie własnego papieru
            prtdoc.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom", 80, 400);
            Console.WriteLine(prtdoc.DefaultPageSettings.PaperSize.ToString()); 
            prtdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintTextFileHandler);
            //Drukowanie
            prtdoc.Print(); 
             
        } 
        private static void PrintTextFileHandler(object sender, System.Drawing.Printing.PrintPageEventArgs ppeArgs)
        { 
            var g = ppeArgs.Graphics;
           g.DrawString("Tekst. Jakiś tekst.", 
               new System.Drawing.Font("Verdana", 10), 
               System.Drawing.Brushes.Black,
               10, 10, 
               new System.Drawing.StringFormat());
            ppeArgs.HasMorePages = false;
        }
    }

Platforma .NET 6.0

Zawsze jest papier A4. Jako drukarkę system widzi "Microsoft Print to PDF".

Próbowałem na różne sposoby, niestety, zawsze jest kartka A4.

Czy miał ktoś podobny problem i może mi z tym pomóc?

0

Czy próbowałeś zmieniać DefaultPageSettings.PaperSize? Przykład:
https://stackoverflow.com/a/32723641

0

Próbowałem,
udało mi się np. wydrukować na A3, ale to są papiery już zdefiniowane w systemie.

var ps = new System.Drawing.Printing.PrinterSettings();
            var paperSizes = ps.PaperSizes.Cast<System.Drawing.Printing.PaperSize>();
            var sizeA3 = paperSizes.FirstOrDefault<System.Drawing.Printing.PaperSize>
                (size => size.Kind == System.Drawing.Printing.PaperKind.A3); 
            //jest papier A3
            if (sizeA3 != null)
            { 
                prtdoc.DefaultPageSettings.PaperSize = sizeA3;
            }

jednak to nie rozwiązuje mojego problemu, ponieważ ja muszę mieć niestandardowy papier ;/

0

Zastanawiam się jak jest tworzony dokument do wydrukowania, czy masz wpływ na jego format, albo znasz jego format, czy jest to po prostu string? A jeśli string, czy gdybyś zawczasu sformatował dokument, czy miałoby to wpływ na wydruk?

0

Tworzę tak jak w kodzie który na początku udostępniłem (jest to w pełni działający kod co możesz uruchomić)
Podczas rysowania (PrintTextFileHandler) mogę się dowiedzieć jakie są wymiary obszaru do rysowania, ale nie mogę ich zmienić ;/

0

Ja zawsze używam do takich rzeczy biblioteki PDFSharp. Za pierwszym razy trzeba ogarnąć kilka rzeczy jak np. jak ogarnąć custom owe czcionki, ale w moim przypadku zawsze był niezawodny.

Pytanie czy w "podglądzie wydruku" czyli w tym oknie systemowym gdzie wybierasz drukarkę masz wybraną opcję coś w stylu dopasuj do rozmiaru strony

1 użytkowników online, w tym zalogowanych: 0, gości: 1