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.