C# 中打印、预览、打印机设置和打印属性的方法

标签: 打印 打印机 打印 | 发表时间:2011-10-08 14:21 | 作者:明天会怎样 Bloger
出处:http://www.cnblogs.com/

 private void Form1_Load(object sender, System.EventArgs e)
  {
   //获取或设置一个值,该值指示是否发送到文件或端口
   printDocument1.PrinterSettings.PrintToFile = true;
   //设置打印时横向还是纵向
   printDocument1.DefaultPageSettings.Landscape = true;
  }
  private void fileOpenMenuItem_Click(object sender, System.EventArgs e)
  {
   OpenFile();
  }
  private void OpenFile()
  {
   openFileDialog1.Filter = "Text Files (*.txt)|*.txt";//打开文本的类型
   //获取文件对话框的初始目录(StartupPath)获得bin文件下的文件
   openFileDialog1.InitialDirectory = System.Windows.Forms.Application.StartupPath;
   DialogResult userResponse = openFileDialog1.ShowDialog();
   //MessageBox.Show(userResponse.ToString());
   if (userResponse==DialogResult.OK)
   {
    filePath = openFileDialog1.FileName.ToString();//转换文件路径
   }
  }
  private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
   //充分利用e
  {
   
   int topMargin = printDocument1.DefaultPageSettings.Margins.Top;//上边距
   int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;//左边距
   float linesPerPage = 0;//页面行号
   float verticalPosition = 0;//绘制字符串的纵向位置
   float horizontalPosition=leftMargin;//左边距
   string textLine = null;//行字符串
   currentLine = 0;//行计数器
//   float Xline=0;
   //int line=0;
   // Calculate the number of lines per page.
   linesPerPage = e.MarginBounds.Height / myFont.GetHeight(e.Graphics);
//   Xline=e.MarginBounds.Width/myFont.GetHeight();
   
            // for each text line that will fit on the page, read a new line from the document
   while (currentLine < linesPerPage )
   {
    textLine = streamToPrint.ReadLine();
    if(textLine == null)
    {
     break;
    }
    // 求出已经打印的范围
    
    verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);
    // 设置页面的属性
    e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
    // 增加行数
    currentLine ++;
    
   }
   // If more lines of text exist in the file, print another page.
   if (textLine != null)
   {
    e.HasMorePages = true;
   }
   else
   {
    e.HasMorePages = false;
   }
  }
  private void printPreviewButton_Click(object sender, System.EventArgs e)
  {
   try
   {
    streamToPrint = new StreamReader(filePath);
    try
    {
     PrintPreview();
    }
    finally
    {
     streamToPrint.Close();
    }
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.Message);
   }
  }
  private void runtimeDialogButton_Click(object sender, System.EventArgs e)
  {
   try
   {
    streamToPrint = new StreamReader(filePath);
    try
    {
     RuntimeDialog();
    }
    finally
    {
     streamToPrint.Close();
    }
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.Message);
   }
  }
  private void printPreviewControlButton_Click(object sender, System.EventArgs e)
  {
   try
   {
    streamToPrint = new StreamReader(filePath);
    try
    {
     PrintPreviewControl();
    }
    finally
    {
     streamToPrint.Close();
    }
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.Message);
   }
  } 
  private void RuntimeDialog()
  {
   PrintPreviewDialog pPDlg;
   pPDlg = new PrintPreviewDialog();
   pPDlg.Document = pDoc;
   pPDlg.WindowState = FormWindowState.Maximized;
   pPDlg.PrintPreviewControl.Columns = 2;
   pPDlg.ShowDialog();
   pPDlg.Dispose();
  }
  private void PrintPreviewControl()
  {
   Form formPreview = new Form();
   PrintPreviewControl previewControl = new PrintPreviewControl();
   previewControl.Document = printDocument1;
   previewControl.StartPage = 2;
   formPreview.WindowState = FormWindowState.Maximized;
   formPreview.Controls.Add(previewControl);
   formPreview.Controls[0].Dock = DockStyle.Fill;
   formPreview.ShowDialog();
   formPreview.Dispose();
  }
  
  private void PrintPreview()
  {
   //设置页面的预览的页码
   //设置显示页面显示的大小(也就是原页面的倍数)
   printPreviewDialog1.PrintPreviewControl.StartPage = 0;
   printPreviewDialog1.PrintPreviewControl.Zoom =1.0;
   //设置或返回窗口状态,即该窗口是最小化、正常大小还是其他状态。
            printPreviewDialog1.WindowState = FormWindowState.Maximized;
            //设置和获取需要预览的文档
   //将窗体显示为指定者的模式对话框
   printPreviewDialog1.Document = printDocument1;
   printPreviewDialog1.ShowDialog();
  }
  private void PrintDoc()
  {
   printDialog1.Document = printDocument1;
   DialogResult userResPonse= printDialog1.ShowDialog();
   if(userResPonse==DialogResult.OK)
   {
    printDocument1.Print();
   }
  }
  //获取打印机的设置和打印的属性
  private void button1_Click(object sender, System.EventArgs e)
  {
   try
   {
    streamToPrint=new StreamReader(filePath);
    try
    {
     PrintDoc();
     }
    catch{}
   }
   catch(Exception ex)
   {
    MessageBox.Show(ex.Message);
   }
   finally
   {
    streamToPrint.Close();
   }
  
  }
 }
}

作者: 明天会怎样 发表于 2011-10-08 14:21 原文链接

评论: 0 查看评论 发表评论


最新新闻:
· 乔布斯不为外界所知贡献:打造更环保的苹果(2011-10-08 15:24)
· 乔布斯钟爱Croix黑色圆领衫售罄 售价175美元(2011-10-08 15:22)
· 2011年10月微软最有价值专家(MVP)当选名单(2011-10-08 15:19)
· iPod今年仅贡献7%营收(2011-10-08 15:17)
· MSN中国区刘振宇:懂得拿捏分寸的平衡者(2011-10-08 14:51)

编辑推荐:第一次负责项目总结

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [打印 打印机 打印] 推荐:

逆向打印机

- xiaonan - 创意酷
  一般来说,我们使用的打印机都是打印出油墨和字体的. 但是现在打印机被设计师的逆向思维改成了一个先进的概念. 那就是类似祛斑或者净化污渍一样的概念,把用过的A4纸放进新型逆向打印机,它将把黑色的油墨去掉,还你一张干净的白纸. 设计师还提出了利用激光将墨水去掉的技术. 这样的方式将是一个更简单的对纸品回收利用.

惠普打印机将运行webOS

- 丁丁 - Solidot
虽然惠普停止了webOS平板和手机的开发,但软件本身并没有彻底死亡,它将在惠普打印机上复活. 一位惠普发言人称,该公司正在评估让webOS运行在其专业打印机Designjet上. 惠普随后还补充说,正继续评估是否要将webOS整合到其它产品中. 前惠普CEO赫德(Mark Hurd)去年辞职前曾宣布要让webOS运行在任何联网的打印机上,虽然到兑现之日已经经历了两任CEO.

打印机外设通信 原理

- - CSDN博客架构设计推荐文章
通过网络或USB或串口,信息发送给打印机,. 每个打印机都是有自己的指令系统,. 打印页面的描述语言有通用的版本,.        打印机驱动程序(Printer driver)是将计算机端所需打印输出的文件,转换成打印机能够识别且完美打印出来的支撑程序.        Windows下的打印机驱动程序通常分为GDI打印机驱动程序、PCL打印机驱动程序和PostScript(PS)打印机驱动程序.

JAVA调用小票打印机

- - CSDN博客推荐文章
// 通俗理解就是书、文档. // 通过Paper设置页面的空白边距和可打印区域. // 把 PageFormat 和 Printable 添加到书中,组成一个页面. System.out.println("================打印出现异常");. g2d.drawString("等位排单号", 50, 10);.

云时代的打印机,能够随时随地云打印

- 见涛 - 果壳网 guokr.com - 果壳网
在云计算盛行的年代,越来越多的产品和服务都被冠上了云的名号,云打印就是其中之一. 在以前要随时随地实现打印功能,无异于幻想,就像实现在这台电脑上复制,在另外一台电脑上粘贴一样,多好的电脑都不行. 最终还是谷歌先提出了有关云打印的概念,惠普紧随其后,在一年前发布了支持云打印(ePrint)的一系列打印机,云打印原理是给与支持云打印的打印机一个随机生成的12位邮箱地址,用户只要将需要打印的文档发送至邮箱中,就可以在打印机上将邮件或者附件打印出来.

C# 中打印、预览、打印机设置和打印属性的方法

- Bloger - 博客园-首页原创精华区
   //获取或设置一个值,该值指示是否发送到文件或端口.    //设置打印时横向还是纵向.    openFileDialog1.Filter = "Text Files (*.txt)|*.txt";//打开文本的类型.    //获取文件对话框的初始目录(StartupPath)获得bin文件下的文件.

HP 发布全系列支持 Google 云打印技术的无线打印机

- Aki - cnBeta.COM
去年4月 Google 第一次对外宣布了他们的云打印计划,这一功能不但可以让远程无线打印成为现实,更解决了手持设备打印不方便的老大难问题. 截至今日,Chrome 中的云打印已经基本可用,而另外一方面 Google 的合作伙伴 HP 也在今天隆重发布了全系列支持云打印的无线打印机,用户可以从 Cr-48,移动版 Gmail 和 Google Docs 等支持云打印的应用中直接打印到这些打印机上.

3D打印机:快速成型技术观光!

- 孙想钱 - 果壳网 guokr.com - 果壳网
Hart 制作难度:★★★★★ GEEK指数:★★★★☆. (在本站“ 大师级DIY巨献 ”一文中,DIY大神就是利用了这项技术塑造出量身定做的主动脉管套的,还记得吧~~). 目前快速成型技术主要用在高端产品设计或者高等院校的研究领域,是一项比较昂贵的技术. 可相信在不久的将来,它的成本就会下降到每个人都可以用它来做一些神奇小玩意儿的水平.

三维打印机MakerBot:让孩子们人手一个

- ewen - cnBeta.COM
据国外媒体报道,在知名科技博客TechCrunch本期的“创始人故事”中,主持人克里斯・迪克森(Chris Dixon)与三维打印机MakerBot的创始人布里・佩蒂斯(Bre Pettis)进行了交谈. MakerBot 的大小相当于一个小冰箱,家用型价格为1299美元. 你可以使用CAD软件来创建你自己的物品(或从MakerBot的1万多种现成物品中选择,比如浴帘 环、眼镜框、微缩建筑等等),然后MakerBot只需花几分钟的时间就可以把它们打印出来.

postscript打印机驱动程序及超全PPD下载

- - 亿品元素设计资源
Adobe postscript打印机驱动程序下载(含超全 PPD). postscript对于普通设计师来说可能是个很专业性的东西,而对于专业的输出人员来讲, postscript及 PPD则是吃饭的家伙,那到底 postscript是什么. PostScript是什么. PostScript是一种编程语言,最适用于列印图像和文字(无论是在纸,胶片或非物质的CRT都可).