C#PrintDocument 打印问题

Y_LIN_ Y_LIN_ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
web页面,用PrintDocument打印的;pd.DefaultPageSettings.PrinterSettings.PrinterName在程序发布后获取不到默认打印机,在vs里调试时可以获取,为什么发布之后就获取不到了呢,怎么解决


private StringReader sr;
//str要打印的数据
public bool Print(string str)
{
bool result = true;
try
{
sr = new StringReader(str);
PrintDocument pd = new PrintDocument();
pd.PrintController = new System.Drawing.Printing.StandardPrintController();
pd.DefaultPageSettings.Margins.Top = 2;
pd.DefaultPageSettings.Margins.Left = 0;
pd.DefaultPageSettings.PaperSize = new PaperSize("tom", 320, 5150);
pd.PrinterSettings.PrinterName = pd.DefaultPageSettings.PrinterSettings.PrinterName;//默认打印机
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
try
{
pd.Print();
}
catch (Exception exs)
{
lblerror.Text = pd.PrinterSettings.PrinterName + "打印出错:" + exs.ToString();
pd.PrintController.OnEndPrint(pd, new PrintEventArgs());
}
}
catch (Exception ex)
{
result = false;
}
finally
{
if (sr != null)
sr.Close();
}
return result;
}
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
Font printFont = new Font("Arial", 9);//打印字体
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
String line = "";
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
while (count < linesPerPage && ((line = sr.ReadLine()) != null))
{
yPos = topMargin + (count * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
count++;
}
// If more lines exist, print another page.
if (line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}
...全文

相关推荐

C# winform打印DataTable数据

**优化性能** 如果DataTable数据量较大,可以考虑分页处理,只打印用户选择的部分。此外,为了提高打印速度,可以考虑先将数据渲染到图片,然后打印图片。

powerllr

C#实现文件打印功能

在C#编程环境中,实现文件打印功能是一项常见的任务,尤其对于桌面应用开发而言。这个功能允许用户通过程序读取文本、图像或者其他类型的文件,并通过本地打印机进行打印。

shangguanwuyan

证书打印,C#指定格式打印文件

该项目是一个基于C#开发的Windows窗体应用程序,用于格式化打印单张证书。通过Graphics对象在PrintPage事件中绘制边框、文本和图像,并集成打印预览与页面设置功能。程序从本地加载'ph

weixin_38569569

C#设置每页打印30条记录

程序支持按每页30条记录进行分页处理,并提供打印预览和打印功能。通过Pr

weixin_38724363

三相维也纳PFC整流器闭环仿真控制策略研究-中点电位平衡、无功补偿与双载波SVPWM(Simulink仿真实现)

内容概要:本文围绕三相维也纳PFC整流器的闭环仿真控制策略开展深入研究,重点聚焦中点电位平衡控制、无功功率补偿能力以及双载波SVPWM调制技术的集成与优化。通过Simulink平台构建30kW三相维也纳整流器的完整仿真模型,系统性地实现了基于零序电流注入法的中点电位主动平衡控制策略,有效抑制了直流侧中点电压偏移问题;同时设计了高性能的双闭环控制系统,实现了单位功率因数运行与无功功率的灵活动态调节。研究进一步引入双载波SVPWM调制技术(包含马鞍波与羊角波两种形式),提升了系统的电压利用率、调制效率及动态响应性能。全文涵盖了从主电路建模、控制算法设计、调制策略实现到仿真验证的全过程,为高效率、高功率密度的电力电子变换器系统设计提供了完整的理论依据与实践参考。; 适合人群:具备电力电子技术、自动控制理论及仿真建模基础,从事新能源发电、电力系统电能质量治理、工业自动化或电动汽车充电设施等相关领域研究的研发工程师与高校研究生。; 使用场景及目标:①深入掌握三相维也纳PFC整流器的工作机理与系统级控制架构设计;②学习并实现中点电位平衡、无功补偿等关键控制技术;③掌握双载波SVPWM调制策略的原理与仿真实现方法;④应用于新能源并网逆变器、储能变流器、高端电源等对电能质量和变换效率有严苛要求的电力变换系统开发与性能优化。; 阅读建议:建议结合Simulink仿真环境进行实践操作,重点关注控制器参数的整定过程、中点电位波动的抑制效果、无功指令的动态响应特性以及双载波调制波形的生成逻辑与频谱特性,应按照文中所述流程逐步搭建模型并调试,以深入理解各控制模块之间的耦合关系及系统的整体动态行为。

三伯
评论 4
收藏 已收藏
分享
返回顶部
Y_LIN_
.NET社区 62,271 成员 668,968 内容