RDLC報表橫向放紙不能橫向打印問題解決

這兩天爲RDLC報表橫向放紙不能橫向打印問題解決搞得焦頭爛額。現在做個總結,給欠缺這方面經驗的博友們提供點有益的參考,希望大家能少走彎路。

問題由來

這次做了一個醫院的住院發票打印。發票大小跟普通發票一樣,尺寸是21cm×14cm 跟A5(21cm×14.5cm)很接近。 由於這種發票橫着放比較方便,也便於通過兩側的小洞進行滾動進紙打印,所以一般是橫着放來打印的。
按照實際大小,這裏將寬度設爲21cm,高度設爲14cm。設置完成後,紙張方向自動(“自動”是這裏的核心關注點)變成了橫向。

1. RDLC設計

在這裏插入圖片描述

2. 創建打印機紙張類型

設置辦法:(Win10) 設置》打印機和掃描儀》打印服務器屬性(最下方的相關設置裏面)》創建新規格
在這裏插入圖片描述

3. 設置打印首選項的打印紙

(Win10) 設置》打印機和掃描儀》選擇對象發票打印機的“管理”
在這裏插入圖片描述
點擊“打印首選項”,
在這裏插入圖片描述
在這裏插入圖片描述
選擇上一步創建的“住院發票”。
在這裏插入圖片描述

但是,極爲悲催的是,不論是將打印紙設成21cm×14cm。還是14×21cm,不論是將打印首選項的紙張設置成橫向還是縱向,都無法橫向(從第一行打印到最後一行)的方式打印發票。實際的效果是縱向打印:從最後一列打印到第一列。在程序裏面設置landscape爲true或者false也是沒有任何影響。

原因

微軟在開發rdlc規格的時候,使用了一個很“聰明”的辦法:自動識別縱向橫向。即:寬大於高即爲橫向,反之爲縱向。這種聰明被玩過了頭,變成了bug,使得打印無法按需設置打印方向。
Windows的默認進紙方向爲縱向,導致了本次的悲劇。

解決辦法

1. 遵守RDLC的縱橫向強制規則(本次採用辦法)

爲了強制橫向打印,

  1. 在RDLC設計時,將紙張設置爲21cmx29cm(A4)
  2. 打印首選項也將默認打印紙設爲A4紙。
    可能有人會擔心多打出一張空白紙(發票)。只要打印的範圍不超過定製紙張(發票)的高度(如14cm),這種情況不會出現的。

2. 逆轉RDLC的縱橫向強制規則:旋轉打印

參考這篇文章:C#將縱向內容打印到橫向紙張上(打印旋轉)

3. 放棄RDLC打印方案(略。。。)

如果以上方案均不滿意,建議直接放棄RDLC打印方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章