.NET 横向打印,自定义纸张的横向打印
来源:互联网 发布:小岛秀夫 知乎 编辑:程序博客网 时间:2024/05/16 07:52
最近做项目打印模块时,遇到了一个让人很头疼的问题.微软提供的打印中的landscape属性设置了没效果.
于是在网上查了一番资料,有些人人说微软的这个System.Drawing.Printing里面提供的是托管代码,是实现不了的,需要用平台调用使用WinAPI.[http://www.uipower.com/bbs/thread-32543-1-1.html].
后来我又在网上查找到了这样一片文章,从中找到一些解决的头绪.
[http://hi.baidu.com/gengxiaoguo/blog/item/2cb307de039ae25c95ee3765.html 可以看其中的(四、横向打印问题)]
在里面提到了,当需要横向打印时,需要将PaperSize的高宽互换一下.
后来基于这个想法,我就用用打印机测试了好几遍.发现这样一个规律:
就是说当我们把pdoc.DefaultPageSettings.Landscape 设置为 true时,仅仅是把打印的文字和图像转向了.[在没有将PaperSize的高宽互换的前提下].
然后我在在打印前加了个判断,如果Landscape是true,就将PaperSize的高宽互换.结果就实现了横向打印.
所以我总结一句就是pdoc.DefaultPageSettings.Landscape 设置为true仅仅是将打印的内容旋转了,纸张跟着并没有旋转,需要在将纸张的高宽也跟着旋转,这样才真正实现了横向打印.
另外还有一个有趣的地方,在设置pdoc.DefaultPageSettings.Margins 的时候,如果设置了横向打印,那么必须把Margins 设置放在纸张旋转的前面执行,否则无法实现横向打印.
这里说的可能看起来还不太明白,下面把我实现的代码贴出来:
里面的两个类mod_ClinicBills , mod_PrintSettings 是我自定义的类.一个是需要打印的内容的实体类,一个是打印机和纸张设置的实体类.里面的printlib.CMToPageSize是一个类库里面的厘米转像素的静态方法.
我的前台调用的代码如下:
这个是我自己打印测试成功的代码,希望对那些跟我遇到同样问题的朋友有所帮助!!
最后推荐一下我的这个编写打印的思路,我将打印的数据单独封装成一个类,将打印机设置信息单独封装成一个类,这样在前台调用的时候,数据和设置时独立的,在编程的时候就不用同时考虑两方面了.同时将打印机设置封装成类传递给打印类,这样带来一个好处就是,可以再程序中添加一个打印机配置界面,对客户提供打印机设置,和打印页面设置,是程序更加灵活.
我个人觉得这是个很好的方法,也是我在打印编程中,自己体会出来的,难得的编程经验,大家可以借鉴一下..[^-^ 王婆来了 ...]
- .NET 横向打印,自定义纸张的横向打印
- 单据的自定义纸张打印
- 横向纵向打印
- 横向打印二叉树
- 打印机默认横向打印
- Excel横向打印设置
- mysql数据横向打印
- 批量横向打印Excel
- 哈夫曼编码横向打印
- 横向打印二叉树
- C# DevExpress 自定义打印(设置横向打印为例)。
- C# DevExpress 自定义打印(设置横向打印为例)。
- 打印自定义纸张大小
- 打印自定义纸张大小
- VC++自定义纸张打印
- 打印自定义纸张大小
- Rave中横向打印的解决方案
- VS2005水晶报表的横向打印问题
- 从零开始学习Python脚本语言
- Windows下架设Subversion服务器——转载
- Windows下架设Subversion服务器——转载
- VHDL:EPM570 IIC和按键
- 关键链法vs关键路径法
- .NET 横向打印,自定义纸张的横向打印
- int 转 string
- rsa加密算法
- 使用libcurl库时别忘加预编译头
- STM32三种启动模式中存储器的存储介质
- RAP upload file 上传文件
- 关键路径法详解
- 阿里软件资深架构师谈:开发者的人品问题
- 使用curl库进行HTTP上传