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();
    }
  

转载于:https://www.cnblogs.com/zengjiliang/archive/2011/10/08/2202091.html

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

  1. C#Winform中打印预览时设置横向打印

    PrintDocument的打印相关的方法被调用的顺序是这样的: QueryPageSettings StartPage PrintPage EndPage 目前只处理了StartPage和Print ...

  2. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现

    原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...

  3. NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-

    到网上一搜,有很多关于打印页面设置值怎么老是变.自定义纸张和连续走纸的问题.有很多说法,有些说是VS.NET的bug,有的说必须用API,还有的说...     其实,是我们自己没有研究透,这里给一些 ...

  4. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(1)

    From: http://blog.csdn.net/flygoldfish/article/details/77208 .NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为, ...

  5. .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转

    作者:周方勇 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是打印的问题,将业务单据与数据报表打印出来.可想而知,即使一 ...

  6. 谷歌浏览器中全屏及跳过页面打印预览的设置

    1.首先在桌面创建一个谷歌浏览器的快捷方式: 2.打开浏览器>>然后打开"设置"菜单>>在"启动时"一项中选择"打开特定网页或 ...

  7. CSS @page 规则 设置打印页面框的尺寸,方向和页边距,用于打印预览和从浏览器打印Web文档

    @page规则定义styleSheet中页面框的尺寸,方向和页边距,用于打印预览和从浏览器打印Web文档.通常,在此构造中,各种CSS属性(如大小,页面和边距)用于指定页面框的尺寸,方向,边距等. 页 ...

  8. 原生JS调用打印预览页面并实现打印文件流图片(亲测有效)

    在工作中我们经常会遇到使用浏览器预览打印页面并实现文件打印,那么如何才能够在打印预览页面中显示图片呢?希望看完这篇文章对您有所帮助! 1. 原生JS调用打印预览页面 2. 在打印预览页面加载图片 使用 ...

  9. html页面实现打印预览功能,js实现打印、页面设置、打印预览功能

    javascript打印-打印页面设置-打印预览代码 function printsetup(){ // 打印页面设置 wb.execwb(8,1); } function printpreview( ...

  10. android打印机打印网页,如何不调用Android打印预览页面去进行打印?

    我想在android手机应用中实现直接调用打印机进行打印,而不要弹出android系统的那个打印预览界面,现在测试设备支持Mopria Print Service. 我该怎么去操作呢? 各位大佬有什么 ...

最新文章

  1. [转] Nodejs 进阶:Express 常用中间件 body-parser 实现解析
  2. 如何在手游中运用高逼格光影效果?
  3. C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】
  4. Mac上自带的语音功能怎么用?让你的mac读给你听
  5. (完整版)环境工程学复习资料资料
  6. 关于:XP精简版装IIS 添加/删除windows组件中找不到IIS
  7. loadrunner server压力测试 sql_LoadRunner压力测试实例.pdf
  8. ios刺客信条一直显示连接服务器,刺客信条本色错误代码6002解决方法_刺客信条本色iOS进不去解决方案 _玩游戏网...
  9. MATLAB 图像识别
  10. 【SQL实战项目】电商平台数据分析项目
  11. 自研DCI网络路由交换协议DCIP-白牌交换机时代的企业网络
  12. 从英特尔上海紫竹研发中心归来,认真聊一聊傲腾
  13. itextpdf实现文字路径裁切图片
  14. ZYNQ裸板:DDR篇
  15. 图像处理时为什么灰度化 【文末赠书】
  16. 计算机管理老是自动打开,win10系统打开设备管理器后一直自动刷新的设置方案...
  17. 20060707-Spatial transformations: Translation confusion
  18. 15秒的倒计时和15分钟的倒计时
  19. U8资产变动怎么处理
  20. icon font阿里巴巴矢量图引进文件 css

热门文章

  1. 10个常见的JS语言错误总汇
  2. 一键部署VS插件:让.NET开发者更幸福
  3. 10个最常见的JS错误
  4. confluence正常安装网页报错_NAS折腾手记1:在OMV5上安装ZFS On Linux的正确步骤
  5. Android 第三课 Activity的生命周期
  6. 检测输入路径是否存在错误_为什么存在用户输入错误
  7. 细说 Vue.js 3.2 关于响应式部分的优化
  8. Spring Boot开发MongoDB应用实践
  9. Numpy的常用方法
  10. 带你剖析WebGis的世界奥秘----Geojson数据加载(高级)