WEB水晶报表打印问题?????????????

tinki 2006-04-03 05:45:56
本人现在使用水晶报表9,想实现WEB下打印功能:
下面是函数,可是在寻找打印机上有问题:请问有没有好的解决方法:
private void btnPrint_Click(object sender, System.EventArgs e)
{
printerName=this.ddlPrint.SelectedItem.Text.ToString().Trim();//打印机名称
string sql="select * from OR_PR_O where PRNM='"+printerName+"'";//获取打印机路径
DataSet ds=conn.CreateDataSet(sql,"OR_PR_O");
string strPrinterName = @"\\"+ds.Tables[0].Rows[0]["PS"].ToString().Trim()+"\\"+printerName;//路径和名称


// if (printDoc.PrinterSettings.IsValid)
// {
// string sqlset="select * from XTCS_SET";
// ds=conn.CreateDataSet(sqlset,"XTCS_SET");
// if(ds.Tables[0].Rows[0]["ISCOLOR"].ToString().Trim()=="1")
// {
// printDoc.DefaultPageSettings.Color=true;
// }
// else
// {
// printDoc.DefaultPageSettings.Color=false;
// }
// (Server.MapPath("/DamSurvey")+"\\DataAdmin\\picture\\picture\\"+ImgFileName);
// filePath=Server.MapPath("../Report/Inter_TPPipe_TCTable.rpt");
// streamToPrint=new StreamReader(filePath);
// streamToPrint=new StreamReader("e:\\DamSurvey\\DataAdmin\\Report\\RPT\\Inter_TPPipe_TCTable.rpt");
// int leftMargins=System.Convert.ToInt32(ds.Tables[0].Rows[0]["RPTLEFT"].ToString().Trim());
// int topMargins=System.Convert.ToInt32(ds.Tables[0].Rows[0]["RPTTOP"].ToString().Trim());
// Margins margins = new Margins(100,100,100,100);
// printDoc.DefaultPageSettings.Margins=margins;

// printDoc.DefaultPageSettings.PaperSize=;
// string fontType=ds.Tables[0].Rows[0]["RPTFONT"].ToString().Trim();
string filePath=Server.MapPath("../Report/Inter_TPPipe_TCTable.rpt");
filePath=Server.MapPath("/DamSurvey")+"\\DataAdmin\\Report\\RPT\\Inter_TPPipe_TCTable.rpt";
printFont = new Font("Arial",10);
streamToPrint=new StreamReader(filePath);
printDoc.PrinterSettings.PrinterName="5D PDF Creator";
printDoc.PrintPage +=new PrintPageEventHandler(this.printDoc_PrintPage);
printDoc.DefaultPageSettings.Landscape=true;//横向打印
printDoc.Print();
// }
// else
// {
// Response.Write("<script>alert('打印机无效!');</script>");
// }
}

private void ddlPrint_SelectedIndexChanged(object sender, System.EventArgs e)
{
printerName=this.ddlPrint.SelectedItem.Text.ToString().Trim();//更改打印机名称
}

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="ev"></param>
private void printDoc_PrintPage(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
String line=null;

// Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height/printFont.GetHeight(ev.Graphics) ;

// Iterate over the file, printing each line.
while (count < linesPerPage && ((line=streamToPrint.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;
}
}
...全文
2207 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoluo5885 2006-12-05
  • 打赏
  • 举报
回复
楼主 问题解决了吗?解决了能否高知我 我现在也被asp.net的打印难住了..
qhh389 2006-04-04
  • 打赏
  • 举报
回复
服务器端打印的话可以写程序读取,客户打印可以要USER输入打印机
daisylh 2006-04-03
  • 打赏
  • 举报
回复
可讓USER來設定印表機,名稱存入表中,就不用每次都去輸入了
水晶報表9好像沒有其他特別有效的方法了
VS.NET2005自帶的就有自帶的列印功能啦
ypzhenxp 2006-04-03
  • 打赏
  • 举报
回复
听说新版本有打印功能 4不4 啊

4,818

社区成员

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

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