C#打印代码,求双面打印。

dill712 2014-04-24 03:27:40
我写了两个PrintPage事件,然后同时调用这两个事件来打印。
pdoc.Print();
pdoc2.Print();
虽然预先在打印机首选项里设置了双面打印,但打出来还是两个单页。
相关代码在网上找了很久,但是找不到。求大神指教!!!!

private void pdoc_PrintPage(object sender, PrintPageEventArgs e)
{
gra = Graphics.FromImage(forebmp); //加载
e.Graphics.DrawImage(forebmp, new Rectangle(0, 0, 794, 1123));//96pi //输出
}

private void pdoc2_PrintPage(object sender, PrintPageEventArgs e)
{
gra = Graphics.FromImage(backbmp);//加载
e.Graphics.DrawImage(backbmp, new Rectangle(0, 0, 794, 1123));//96pi //输出
}

打印机为HP P2055dn
...全文
446 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dill712 2014-04-28
  • 打赏
  • 举报
回复
我找到解决办法了,分享给大家。

pd.PrintPage += (_, e) =>
                    {
                        var img = System.Drawing.Image.FromFile(FileName[i]);
                        int iWidth = 520;
                        double hFactor = iWidth / (double)img.Width;
                        int iHeight = Convert.ToInt32(img.Height * hFactor);
                        Rectangle Rect = new Rectangle(170, 330, iWidth, iHeight);
                        e.Graphics.DrawImage(img, Rect);
                        if (i == FileName.Length - 1)
                        {
                            e.HasMorePages = false;
                        }
                        else
                        {
                            e.HasMorePages = true;
                        }
                        i++;
                    };
flyinthesky 2014-04-25
  • 打赏
  • 举报
回复
lz很天真哦。。。 软件不是万能的。。。
於黾 2014-04-25
  • 打赏
  • 举报
回复
你先开个WORD,试试能不能双面呢打印再说
jimil 2014-04-25
  • 打赏
  • 举报
回复
如果打印机有双面功能,那就e.HasMorePages = true;
dill712 2014-04-25
  • 打赏
  • 举报
回复
谢谢各位的回答,已确认这台打印机可以双面打印,且可以自动翻转。使用Word可以打出单张双面。
  • 打赏
  • 举报
回复
双面打印是打印机功能。。。。。。。不是你代码能控制的
devmiao 2014-04-24
  • 打赏
  • 举报
回复
这个和你的代码无关,和你的打印机有关。 大部分商用打印机不支持自动纸张翻转,需要手工送纸,或者先打印奇数页,然后手工翻转,再打印偶数页。具体看你的打印机手册。
华报智能报表工具(ReportAll)是开发人员最理想的报表工具,具有全新的设计思想,对中国式报表和很多复杂报表有很强的针对性,他将“对象摆放”类和“电子表格”类报表开发工具完美融合,使用种类丰富且功能强大的报表对象组合生成任意复杂的报表样式。在华报智能报表工具中,无论是“带区(Band)”、“表格(Grid)”、“图表(Chart)”、“文字”及“线条”等元素都作为报表对象嵌入在报表页面之中。这些报表对象独立占据一定的区域,独立地进行分页控制。事实上,使用华报智能报表工具为报表布局不受任何限制,开发人员可以随意灵活地利用每一块页面空间。另外,华报智能报表工具提供的报表对象都是“数据感知”的,当他们和虚拟数据集中的数据建立“绑定”关系后,可以实时显示数据和感知数据的变化。 1、原理 ReportAll控件/插件是符合微软COM规范的ActiveX控件,运行时需要嵌入到应用程序的窗体或HTML页面中,并由开发人员传入用来表现报表的格式或样式的外观信息(报表文档)和用来存储报表内容的数据信息(报表数据),这两种信息既相互独立又相互关联。因此,报表的开发工作主要围绕这两种信息的生成过程而进行。   报表文档和报表数据可以通过URL(或本地文件路径)请从Web服务器(或本地操作系统)的返回结果中加载,可以从内存中的XML字符串加载,也可以通过编程(调用API编程接口)动态生成。 ReportAll控件/插件不依赖于数据库平台,其数据从XML数据文本中获得,因此ReportAll可以灵活地适用于各种场合。 2、组成 ReportAll报表开发工具软件包主要包括以下各部分: ReportAll报表设计器:一个标准的Win32应用程序,用于对报表的文档进行编辑和调试,编辑的结果可保存到符合XML格式的文本文件中。 ReportAll报表控件/插件:嵌入到程序窗体或Web页面中的符合微软Com规范的ActiveX控件,用于展现或编辑(仅针对设计器版)报表的外观和采集数据,同时提供了API编程接口,便于开发人员对其进行各种控制。 数据源SDK源代码:这些源代码用于帮助开发人员生成加载报表数据用的XML数据文本,它们可以由开发人员根据项目的需要自由修改。目前提供语言版本包括:Delphi,VS.Net C#,Java。 帮助文档:微软标准CHM帮助文件,帮助开发人员对ReportAll进行学习。   在ReportAll报表设计器中,该文档可以提供上下文敏感的帮助信息。 范例:一些使用ReportAll进行报表开发的例子,帮助开发人员快速入门。 3、适用范围 因为ReportAll报表控件/插件是标准的ActiveX控件,所以所有支持ActiveX技术的前台开发工具(如:Delphi、C++Build、VC++、VB、、VC#、PowerBuild、JavaScript、VBScrip、Excel等)都可以使用ReportAll报表控件/插件输出报表。 4、特点 报表设计 使用“对象摆放”式和“电子表格”式相结合的方式进行报表文档的布局排版;开发人员既可以像设计Form那样灵活地摆放报表对象并设置他们的属性,也可以象使用Excel那样编辑不规则的表格。 提供了丰富的报表对象帮助您组合成任意复杂的报表样式。 采用“即点即输”的方式进行报表对象的文本编辑。 每一个报表对象都可以使用属性编辑器对其属性进行编辑(支持批量属性修改)。 支持复杂多层表头的快速设计。 支持无限级带区的快速设计。 支持单元格内的斜线排列功能。   支持行横向和纵向的窗口冻结。 使用折页器实现分栏分段 支持超文本的分页显示 支持复杂的图表功能 支持图片数据的动态加载 支持横向数据表格(记录横行动态扩展,自动分页)。 支持数据录入功能(可以下拉选择录入项)。 在套打设计时,提供辅助图底纹,可以帮助开发人员方便准确地定位报表对象。 可以在加载数据的状态下进行报表文档编辑的工作,使开发工作非常直观。 支持公制、英制、和屏幕三种单位制。 填报方式 无需预先定义数据集,通过直接对虚拟数据集操作(简单的增删和赋值操作)或从XML数据源中加载数据即可实现内容的填报。 可以在录入模式由用户通过用户界面UI输入数据至虚拟数据集中,从而实现数据的采集。 将报表对象与数据“绑定”,当加载数据或数据发生变化时,将会直接在报表页面上体现出来。 数据加载 以XML作为报表文档的存储格式。   可以通过报表设计器编辑静态的报表文档,也可以使用API编程接口动态地传入描述报表文档的XML字符串或者URL地址。 以XML作为数据交换的标准格式。可以传入符合XML格式的字符串或者URL地址实现数据的加载。 当从XML数据源中加载数据时可以采用多线程的方式(可选),在数据量较大的情况下的可以实现边加载边浏览

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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