Ich drucke auf einen Impact-Drucker, geladen mit 8,5 x 8,5 Zoll Papier. Wenn ich drucke, stößt der Drucker 11 Zoll statt 8,5 aus.Drucken von benutzerdefinierten Papiergröße zu einem Impact-Drucker in 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);
Mit „How do I convert Twips to Pixels in .NET?“ Ich habe festgestellt, dass 8,5 Zoll 816 Pixel ist, die die Größe meines element.Width
und element.Height
ist. Ich setze eine neue PageMediaSize
, aber das scheint keine Wirkung zu haben, dialog.PrintableAreaHeight
ist immer noch bei 1056 endet, wenn ich die Warteschlange auf den Dialog setzen.
Wenn ich dialog.ShowDialog()
tun, manuell meinen Drucker auswählen und manuell finden, und das Papierformat in der erweiterten Einstellungen meines Druckers ändern, dann dialog.PrintableAreaHeight
spiegelt richtig die Änderung.
Diese Seite http://go4answers.webhost4life.com/Example/set-printdialogs-default-page-size-168976.aspx schlägt vor, dass ich nur einen von meinem Drucker unterstützten PageMediaSize
setzen kann. Unter Verwendung der GetPrintCapabilities
Funktion auf meiner PrintQueue
, sehe ich eine Liste von 10 oder so Seitengrößen, von denen keine 8,5 x 8,5 sind. Dies ist die gleiche Liste, die ich sehe, wenn ich in den erweiterten Einstellungen meines Druckers in Windows gehe.