C#PrintDocument 打印问题

Y_LIN_ 2018-02-21 07:30:20
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;
}
...全文
891 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
月夜惹人醉 2018-02-26
  • 打赏
  • 举报
回复
web需要用插件才可以打印,之前我们用过Lodop打印插件,但是会出现无法弹出打印界面的问题,现在用devexpress插件,这个插件操作比较方便,cs和bs均可使用
Jason_Mao1 2018-02-23
  • 打赏
  • 举报
回复
WEB 端是无法获取的,建议异步后台获取后使用。或者使用浏览器自带的打印,或者是打印插件之类的 。
threenewbee 2018-02-22
  • 打赏
  • 举报
回复
你这代码只能winforms用
秋的红果实 2018-02-22
  • 打赏
  • 举报
回复
这个控件是服务端的,访问时是在浏览器客户端进行的,这是两个场景 在vs里调试时可以获取,为什么发布之后就获取不到了呢,怎么解决 ==> 调试时,客户端和服务端在同一台计算机,于是可用 在客户端打印,需要js调用打印机; 或者使用pdf插件打印,具体自己搜索下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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