2013-03-15 27 views
5

Drukuję na drukarce udarowej, załadowanej z użyciem papieru o rozmiarze 8,5 x 8,5. Po wydrukowaniu drukarka wysuwa 11 cali zamiast 8,5.Drukowanie niestandardowego rozmiaru papieru na drukarce udarowej w trybie WPF

PageMediaSize pageSize = new PageMediaSize(PageMediaSizeName.Unknown, element.Width, element.Height); 

PrintDialog dialog = new PrintDialog(); 
dialog.PrintTicket.PageMediaSize = pageSize; 
Console.WriteLine(dialog.PrintableAreaHeight); // 816, good! 
dialog.PrintQueue = myQueue;     // selected from a combobox 
Console.WriteLine(dialog.PrintableAreaHeight); // 1056 :(

dialog.PrintVisual(element, description); 

Używanie „How do I convert Twips to Pixels in .NET?” Mam stwierdziła, że ​​8,5 cala to 816 pikseli, który jest wielkości moich element.Width i element.Height. Ustawiam nową PageMediaSize, ale wydaje się, że nie ma to żadnego skutku, dialog.PrintableAreaHeight wciąż kończy się na 1056, kiedy ustawiam kolejkę w oknie dialogowym.

Jeśli wykonam dialog.ShowDialog(), ręcznie wybierz moją drukarkę i ręcznie znajdź i zmień Rozmiar Papieru w ustawieniach zaawansowanych mojej drukarki, a następnie dialog.PrintableAreaHeight prawidłowo odzwierciedli zmianę.

Ta strona http://go4answers.webhost4life.com/Example/set-printdialogs-default-page-size-168976.aspx sugeruje, że mogę ustawić tylko PageMediaSize obsługiwaną przez moją drukarkę. Używając funkcji GetPrintCapabilities na mojej PrintQueue, widzę listę około 10 stron, z których żadna nie ma wymiarów 8,5 x 8,5. Jest to ta sama lista, którą widzę po przejściu do zaawansowanych ustawień drukarki w oknach.

Odpowiedz

2

Proszę znaleźć kod poniżej, ustawia rozmiar papieru zgodnie z wymogami

 var printerSettings = new PrinterSettings(); 
     var labelPaperSize = new PaperSize { RawKind = (int)PaperKind.A6, Height = 148, Width = 105 }; 
     printerSettings.DefaultPageSettings.PaperSize = labelPaperSize; 
     var labelPaperSource = new PaperSource { RawKind = (int)PaperSourceKind.Manual }; 
     printerSettings.DefaultPageSettings.PaperSource = labelPaperSource; 
     if (printerSettings.CanDuplex) 
     { 
      printerSettings.Duplex = Duplex.Default; 
     } 
Powiązane problemy