WPF:如何在横向模式下打印?

Posted

技术标签:

【中文标题】WPF:如何在横向模式下打印?【英文标题】:WPF: How do you print in Landscape mode? 【发布时间】:2011-03-14 15:35:34 【问题描述】:

在网上找到了this function,效果很好……除了我不知道如何将其默认为横向打印。

private void PrintClick(object sender, RoutedEventArgs e)

  PrintDialog dialog = new PrintDialog();
  if (dialog.ShowDialog() == true)
   dialog.PrintVisual(_PrintCanvas, "My Canvas"); 

如何将我的 wpf 内容的默认设置设置为横向模式?

【问题讨论】:

【参考方案1】:

编辑:固定变量名,@SHIN JaeGuk 提到

private void PrintClick(object sender, RoutedEventArgs e)

    PrintDialog dialog = new PrintDialog();
    if (dialog.ShowDialog() == true)
     
        //Set PageOrientation to Landscape
        dialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
        dialog.PrintVisual(_PrintCanvas, "My Canvas"); 
    

【讨论】:

【参考方案2】:

原答案 这已经回答了: Setting PageOrientation for the Wpf DocumentViewer PrintDialog

结束原始答案

编辑:

PrintTicket 和打印视觉效果似乎存在问题,请查看: Same question on MSDN

MSDN 论坛上的原始发帖人在上一篇文章中说他们使用的解决方法是基本上捕获视觉并转换为 xps 文档进行打印,这将允许使用 PrintTicket 设置打印文档的方向.

【讨论】:

我不是要打印文档,而是要打印一段内容。例如,现在我将(Visual)mytabs.SelectedContent 传递到我的print.printVisual() 方法中。在您指出的答案中,我究竟会将mytabs.SelectedContent 贴在哪里?【参考方案3】:
private void PrintClick(object sender, RoutedEventArgs e)

   PrintDialog dialog = new PrintDialog();
   if (dialog.ShowDialog() == true)
       
         dialog.PrintTicket.PageOrientation=System.Printing.PageOrientation.Landscape;
         dialog.PrintVisual(this, "First LandScape"); 
      
 

您需要分别添加对 ReachFramework.dll 和 System.Printing.dll 的引用。

【讨论】:

以上是关于WPF:如何在横向模式下打印?的主要内容,如果未能解决你的问题,请参考以下文章

如何以横向模式打印 PDF

如何以横向显示 WPF DocumentViewer?

如何使用 javascript/Extjs 进行默认横向打印?

在双面模式下使用 Java 打印横向文档

如何在横向模式下获取图像

如何在横向模式下显示 MPMoviePlayerController