设置打印机首选项 - 页面方向为横向

时间:2012-11-02 14:51:39

标签: c# winforms printing landscape-portrait

我想将Page orientation设置为LandScape,以便从我的excel Vsto项目中打印excel工作表。手动页面方向是从“打印”窗体弹出的打印机首选项窗口设置的。

我需要一些自动化,每当用户给出打印命令时,它就会将方向设置为LandScape。

enter image description here

我注意到如果我从我的Excel应用程序中将方向设置为 LandScape ,如果我想从MS-word应用程序中提供打印,则它保持相同。反之亦然。因此必须有某种标志,可以从任何简单的winform应用程序中进行更改。

我有什么方法可以操纵这些属性吗?

2 个答案:

答案 0 :(得分:4)

我找不到任何方法可以自定义任何单个打印机的打印机设置。这是我为EXCEL应用程序工作的代码。

CommonData._WORKBOO K是一个静态工作簿对象

Worksheet ws = CommonData._WORKBOOK.Application.ActiveSheet as Worksheet;

var _with1 = ws.PageSetup;

_with1.Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape;
CommonData._WORKBOOK.Application.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                            Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

答案 1 :(得分:0)

您可以尝试下面的内容,以适合您

public void CustPrinting() 
{
   try 
     {
       strPrint = new StreamReader (filePath);
     try 
       {
         printFont = new Font("Arial", 10);
         PrintDocument pd = new PrintDocument(); 
         pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
         pd.PrinterSettings.PrinterName = printer;
         // Set the page orientation to landscape.
         pd.DefaultPageSettings.Landscape = true;
         pd.Print();
       } 
     finally 
     {
       strPrint.Close() ;
     }
   } 
   catch(Exception ex)
   { 
     MessageBox.Show(ex.Message);
   }
 }