如何防止水晶报表按比例缩放?

huanghuangtao 2013-10-10 02:04:29
上网找资料找了很久,关于水晶报表如何设置可以缩放的文章和帖子就很多,但没找到固定缩放的例子。因为客户需求,我需要做一个报表是固定大小的,无论什么纸张都是一个大小,超出纸张的话用户就知道选错纸张打印了(感觉这太不人性化了,但也是需求)。其实关键问题是报表里面有条形码,假如报表按照纸张大小按比例缩放,条形码也会跟着缩放,导致失真无法通过验证,所以目前只有固定报表的大小这个方法。我会一边继续研究,一边坐等大神回复的,需求那个赶啊。先谢了!
...全文
306 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanghuangtao 2013-10-11
  • 打赏
  • 举报
回复
引用 11 楼 sjyforg 的回复:
[quote=引用 10 楼 huanghuangtao 的回复:] [quote=引用 9 楼 sjyforg 的回复:] 我看了一下PrintOptions中Page的相关属性,都是只读的: public virtual int PageContentHeight { get; } public virtual int PageContentWidth { get; } Paper相关的倒是可以调整: public virtual PaperSize PaperSize { get; set; } 估计水晶报表设计的时候就是这般考虑的吧。 建议先将报表转成图片,这样就可以自由打印了。
那意思就是说页面的大小无法通过代码控制,一定要默认按比例缩放?所以也只有把报表转换成图片再打印吗?[/quote] 是这样。 不过似乎也可以考虑将PaperSize设为一个固定值。 比如假设A4的尺寸是符合你打印要求的,那么就将这个尺寸始终设为你的打印选项值(即使A3的纸你也用A4尺寸打印)。这样就不会产生因放大而引起的变形了。[/quote] PaperSize这个属性可以设置纸张大小,应该不是报表尺寸,如果把它固定大小了,就不能选其他大小的纸张了,看来还得找资料。
申江渔夫 2013-10-10
  • 打赏
  • 举报
回复
引用 10 楼 huanghuangtao 的回复:
[quote=引用 9 楼 sjyforg 的回复:] 我看了一下PrintOptions中Page的相关属性,都是只读的: public virtual int PageContentHeight { get; } public virtual int PageContentWidth { get; } Paper相关的倒是可以调整: public virtual PaperSize PaperSize { get; set; } 估计水晶报表设计的时候就是这般考虑的吧。 建议先将报表转成图片,这样就可以自由打印了。
那意思就是说页面的大小无法通过代码控制,一定要默认按比例缩放?所以也只有把报表转换成图片再打印吗?[/quote] 是这样。 不过似乎也可以考虑将PaperSize设为一个固定值。 比如假设A4的尺寸是符合你打印要求的,那么就将这个尺寸始终设为你的打印选项值(即使A3的纸你也用A4尺寸打印)。这样就不会产生因放大而引起的变形了。
huanghuangtao 2013-10-10
  • 打赏
  • 举报
回复
引用 9 楼 sjyforg 的回复:
我看了一下PrintOptions中Page的相关属性,都是只读的: public virtual int PageContentHeight { get; } public virtual int PageContentWidth { get; } Paper相关的倒是可以调整: public virtual PaperSize PaperSize { get; set; } 估计水晶报表设计的时候就是这般考虑的吧。 建议先将报表转成图片,这样就可以自由打印了。
那意思就是说页面的大小无法通过代码控制,一定要默认按比例缩放?所以也只有把报表转换成图片再打印吗?
申江渔夫 2013-10-10
  • 打赏
  • 举报
回复
我看了一下PrintOptions中Page的相关属性,都是只读的: public virtual int PageContentHeight { get; } public virtual int PageContentWidth { get; } Paper相关的倒是可以调整: public virtual PaperSize PaperSize { get; set; } 估计水晶报表设计的时候就是这般考虑的吧。 建议先将报表转成图片,这样就可以自由打印了。
huanghuangtao 2013-10-10
  • 打赏
  • 举报
回复
引用 6 楼 wangsunjun 的回复:
[quote=引用 4 楼 huanghuangtao 的回复:] [quote=引用 3 楼 wangsunjun 的回复:] 微软的东西支持缩放的接口做的不好,WPF之前的貌似做不到,因为采用的是user32.dll绘制控件的机制,控件大小 是死的,如果非要能放大缩小,那就必须得重绘控件。wpf 也要看什么控件接口~
你好,可能我知识面不够广,没看懂你说的···不过我并不是想放大缩小控件,我只是想用200*200的纸张也能打印出100*100的效果,当然,100*100的纸张也是打印出100*100的效果,就是上面所谓的纸张大小改变,报表实际大小不变![/quote] 报表里的虚拟纸和要打印的内容是绑定到一个东西里的应该,所以纸张大小变了,内容也变了。水晶报表我不熟没做过,要让内容不变,考虑用图片效果打印吧。有些需求在某一个平台上是很难做到的,LZ加油~![/quote] 如果可以实现把报表搞成图片再去打印的话,估计更要耗时间去研究,不过也算是多一个办法,感觉需求再难还是得做出来,谢谢的你加油。
huanghuangtao 2013-10-10
  • 打赏
  • 举报
回复
引用 5 楼 sjyforg 的回复:
“将CrystalReportViewer的报表属性值BestFitPage设置为false, 然后就可以任意地设置该控件的width和height属性了。” 网上看到的方法,你可以试试。
感谢你的热心回答,我刚才查了下这个属性,貌似是ASP的控件,我忘记说了是WinForm开发的了,不好意思···没有这个属性可以调,而且设置控件的宽度和高度就是报表的实际大小吗?这个我很疑惑。
  • 打赏
  • 举报
回复
引用 4 楼 huanghuangtao 的回复:
[quote=引用 3 楼 wangsunjun 的回复:] 微软的东西支持缩放的接口做的不好,WPF之前的貌似做不到,因为采用的是user32.dll绘制控件的机制,控件大小 是死的,如果非要能放大缩小,那就必须得重绘控件。wpf 也要看什么控件接口~
你好,可能我知识面不够广,没看懂你说的···不过我并不是想放大缩小控件,我只是想用200*200的纸张也能打印出100*100的效果,当然,100*100的纸张也是打印出100*100的效果,就是上面所谓的纸张大小改变,报表实际大小不变![/quote] 报表里的虚拟纸和要打印的内容是绑定到一个东西里的应该,所以纸张大小变了,内容也变了。水晶报表我不熟没做过,要让内容不变,考虑用图片效果打印吧。有些需求在某一个平台上是很难做到的,LZ加油~!
申江渔夫 2013-10-10
  • 打赏
  • 举报
回复
“将CrystalReportViewer的报表属性值BestFitPage设置为false, 然后就可以任意地设置该控件的width和height属性了。” 网上看到的方法,你可以试试。
huanghuangtao 2013-10-10
  • 打赏
  • 举报
回复
引用 3 楼 wangsunjun 的回复:
微软的东西支持缩放的接口做的不好,WPF之前的貌似做不到,因为采用的是user32.dll绘制控件的机制,控件大小 是死的,如果非要能放大缩小,那就必须得重绘控件。wpf 也要看什么控件接口~
你好,可能我知识面不够广,没看懂你说的···不过我并不是想放大缩小控件,我只是想用200*200的纸张也能打印出100*100的效果,当然,100*100的纸张也是打印出100*100的效果,就是上面所谓的纸张大小改变,报表实际大小不变!
  • 打赏
  • 举报
回复
微软的东西支持缩放的接口做的不好,WPF之前的貌似做不到,因为采用的是user32.dll绘制控件的机制,控件大小 是死的,如果非要能放大缩小,那就必须得重绘控件。wpf 也要看什么控件接口~
huanghuangtao 2013-10-10
  • 打赏
  • 举报
回复
引用 1 楼 sjyforg 的回复:
你可以看看这贴:http://bbs.csdn.net/topics/250014930
你好,这个帖子貌似也没有实际解决办法啊,我需要的是纸张大小可变,但实际内容大小不变。
申江渔夫 2013-10-10
  • 打赏
  • 举报
回复
你可以看看这贴:http://bbs.csdn.net/topics/250014930

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧