2013-03-15 9 views
5

8.5 x 8.5 인치 용지가 적재 된 임팩트 프린터에 인쇄하고 있습니다. 인쇄 할 때 프린터가 8.5 대신 11 인치를 배출합니다. 사용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); 

"How do I convert Twips to Pixels in .NET?은"나는 8.5 인치 element.Widthelement.Height 내의 크기 인 816 개 픽셀 것으로 확인되었습니다. 새 PageMediaSize을 설정 중이지만 효과가없는 것 같습니다. 대화 상자에서 대기열을 설정하면 dialog.PrintableAreaHeight은 여전히 ​​1056으로 끝납니다.

dialog.ShowDialog()을 수동으로 선택하고 수동으로 프린터의 고급 설정에서 용지 크기를 찾아 변경하면 dialog.PrintableAreaHeight에 변경 사항이 올바르게 반영됩니다.

이 페이지 http://go4answers.webhost4life.com/Example/set-printdialogs-default-page-size-168976.aspx은 내 프린터에서만 PageMediaSize을 설정할 수 있음을 나타냅니다. 내 PrintQueueGetPrintCapabilities 기능을 사용하면 10 페이지 정도의 페이지 크기 목록을 볼 수 있으며 그 중 8.5x8.5는 없습니다. 이것은 Windows에서 프린터의 고급 설정으로 이동했을 때 표시되는 것과 동일한 목록입니다.

답변

2

코드를 검색, 그것은 필요에 따라 용지 크기를 설정

 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; 
     }