C# 中打印、预览、打印机设置和打印属性的方法http://www.veryhuo.com 2011-10-08 烈火学院 投递稿件 我有话说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();
}

}
}
}

PrintDocument打印、预览、打印机设置和打印属性的方法(较完整)相关推荐

  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. html页面实现打印预览功能,js实现打印、页面设置、打印预览功能

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

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

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

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

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

最新文章

  1. IOS开发报错之Undefined symbols for architecture armv6
  2. 不相关子查询的工作方式是_课题组工作|Nucleic Acids Research|基于表达密度谱的特征子空间分离及相关单细胞转录组分群新算法...
  3. 最小生成树、最短路径树
  4. python调用cmd命令释放端口_详解python调用cmd命令三种方法
  5. Tengine(Nginx)动静分离简要配置
  6. cheat engine 将选中目标的函数_EXCEL函数与公式剖析:IF
  7. 精巧好用的DelayQueue
  8. Parallels Desktop虚拟机如何安装win10和win11,懒人安装教程
  9. python下载完了之后怎么用_python下载后怎么用
  10. 音乐播放小窗口html,jQuery+html5迷你网页音乐播放器代码
  11. java 获取 国家_Java中Locale.getDefault()方法获取本地国家代码
  12. 偶数求和打分 c语言acm,杭州电子科技大学ACM2015-偶数求和-解题思路(accept)
  13. Python爬取并分析 201865 条《隐秘的角落》弹幕
  14. 如何选择最好的研究方法?——Nvivo教程
  15. Linux不是Windows(转载)
  16. 手机上网、3G、wifi
  17. 360发布云查杀引擎 称比杀毒软件快十倍
  18. python global 变量_python中global变量释疑
  19. TDSQL-C 真·秒级启停:连接断了,又没断
  20. 【无标题】求X的n次方函数

热门文章

  1. 【我们是冠军】2021年大数据领域第一名の博客之星活动复盘
  2. unity-导航系统
  3. this与supper
  4. 光场相机1.0与光场相机2.0
  5. Android 优质精准的用户行为统计和日志打捞方案
  6. 使用DelayQueue实现订单限时支付处理
  7. mac使用迅雷下载资源
  8. 实战 webpack 4 配置解析四
  9. Java连接Mysql数据库详细步骤(超级详细)
  10. SRS之SFU多人视频