1. 程式人生 > >RDLC報表列印時出現方向問題

RDLC報表列印時出現方向問題

【印表機紙張設定】

 Z-Desinger 888 TT  預設設定的紙張格式是Portrait


【報表紙張設定】

RDLC紙張設定是橫向

 

【列印結果】

  出現縱向多頁錯亂問題,方向和設定的不一樣,原因是本身印表機的問題,報表設定的方向沒有辦法修改,如果修改方西后寬度和高度會發生改變,系統預設當寬度大於高度時會自動橫向列印,那麼可以通過以下方式解決

private static void PrintSetting(short copies)
        {
            if (m_streams == null || m_streams.Count == 0)
            {
                //MessageBox.Show("錯誤:沒有檢測到列印資料流");
                _falg = false;
                //return;
                throw new PrintException("沒有檢測到列印資料流");
            }
            //宣告PrintDocument物件用於資料的列印
            PrintDocument printDoc = new PrintDocument();
            //獲取配置檔案的清單印表機名稱
            System.Configuration.AppSettingsReader appSettings = new System.Configuration.AppSettingsReader();
            printDoc.PrinterSettings.PrinterName = (new System.Drawing.Printing.PrintDocument()).PrinterSettings.PrinterName;
            //printDoc.PrinterSettings.PrinterName = "1";
            printDoc.PrintController = new System.Drawing.Printing.StandardPrintController();//指定印表機不顯示頁碼 
            //判斷指定的印表機是否可用
            if (!printDoc.PrinterSettings.IsValid)
            {
                //throw new Exception("錯誤:找不到印表機");
                //MessageBox.Show("錯誤:找不到印表機");
                throw new PrintException("沒有檢測到列印資料流");
                _falg = false;
                return;
            }
            else
            {
                //ZDesinger 888 TT預設的列印方向是 Portrait 因此不需要設定Landscape屬性值
                //printDoc.DefaultPageSettings.Landscape = isLandSapces;
                //宣告PrintDocument物件的PrintPage事件,具體的列印操作需要在這個事件中處理。
                printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                m_currentPageIndex = 0;
                //設定印表機列印份數
                /*if (paperSize != null)
                {
                    printDoc.DefaultPageSettings.PaperSize = paperSize;
                }*/
                printDoc.PrinterSettings.Copies = copies;
                //printDoc.PrinterSettings.
                //執行列印操作,Print方法將觸發PrintPage事件。
                printDoc.Print();
            }
        }

ZDesinger 888 TT預設的列印方向是 Portrait, 需要將Landscape強制設為false

printDoc.DefaultPageSettings.Landscape = false;