將套表的CrystalReport由VS2005升級到VS2010遇到的問題

解決了伴隨著升級VS2010一起升級的CrystalReport相關問題後,沒想到又來了個問題,印統一發票的套表程式列印出來的格式竟然跑掉了!程式沒動,報表檔也沒動,真是見鬼了!

解決了伴隨著升級VS2010一起升級的CrystalReport相關問題(請參考這裡)後,沒想到又來了個問題,印統一發票的套表程式列印出來的格式竟然跑掉了!程式沒動,報表檔也沒動,真是見鬼了!

經過一連串的交叉測試及Debug後,觀察到以下現象:

1. 預覽列印正常,但透過印表機時,內容會被縮小(10號字大概會變9號字),因此內容全跑掉了。

2. 轉成PDF,再用PDF Reader印出,正常。

因此得出以下的假設:

CrystalReport 2010會在列印到印表機時,抓取印表機的預設邊界值來套用,並且很聰明的怕會印不下去,而自動縮小再送到印表機。

有了假設當然要來做一下實驗啊,將原本的報表檔邊界值由 0,0,0,0 (當初為了方便套表可直接與報表檔對照)改為印表機預設值(每一台不同,故要以使用者實際列印的為主),並依據預設的左邊界大小將報表內的欄位都向左移動相同的距離,印出,Bingo!!!位置只剩上下的部份有一點位移,左右基本上都是對的了。上下再微調一下,收工!

 

後記:看來這應該是SAP CrystalReport for VS 2010/2012的一個Bug吧,若報表檔的邊界值設定小於印表機邊界值的話,在列印至印表機時會自動以印表機的邊界值取代,並貼心的進行縮小(個人推測,未全面測試)。上面的方式雖然可以在不同重刻報表的方式下解決,但無法解進如果有需要列印到邊界之外時需求。

 

後來發現了新的解法更簡單,請參考 這裡