C# 实现打印机功能

c# 调用打印机
2011-12-13 17:18:00| 分类: C# | 标签:调用打印机
|举报
|字号
订阅
下载LOFTER客户端
using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.IO;using System.Windows.Forms;
namespace TY_ClassLibrary{ public class Printer { private Font printFont; private Font titleFont; private StringReader streamToPrint; private int leftMargin = 0;
/// <summary> /// 设置PrintDocument 的相关属性 /// </summary> /// <param name="str">要打印的字符串</param> public void print(string str) { try { streamToPrint = new StringReader(str); printFont = new Font("宋体", 10); titleFont = new Font("宋体", 15); System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument(); pd.PrinterSettings.PrinterName = "SmartPrinter"; pd.DocumentName = pd.PrinterSettings.MaximumCopies.ToString(); pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.pd_PrintPage); pd.PrintController = new System.Drawing.Printing.StandardPrintController(); pd.Print(); } catch(Exception ex) { MessageBox.Show(ex.ToString()); } }
private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev) { float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = this.leftMargin; float topMargin = 0; String line = null; linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics); while (count < linesPerPage && ((line = streamToPrint.ReadLine()) != null)) { if (count == 0) { yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(line, titleFont, Brushes.Black, leftMargin + 10, yPos, new StringFormat()); } else { yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } count++; } if (line != null) ev.HasMorePages = true; else ev.HasMorePages = false;
} }}收起

时间: 2024-09-03 14:24:14

C# 实现打印机功能的相关文章

Winform 判断打印机是否可用,实现设置默认打印机功能

Winform 判断打印机是否可用,实现设置默认打印机功能 http://www.cnblogs.com/zfanlong1314/p/3878563.html

使用SMM框架开发企业级应用-----打印机案例

Ø 要求:可灵活配置使用彩色墨盒或灰色墨盒 Ø 可灵活配置打印页面的大小 实现步骤 打印机功能的实现依赖于墨盒和纸张(对象间的依赖) 定义Ink和Paper接口 使用Ink接口和Paper接口开发打印机程序 开发Ink接口和Paper接口的实现类:ColorInk,GreyInk和TextPaper 组装打印机,运行调试 测试 原文地址:https://www.cnblogs.com/haohanwuyin/p/11740381.html

Samba服务详解

Windows客户端和linux服务端实现共享文件的方式是运用samba服务器,用的是SMB和CIFS协议以及NETBIOS协议,可以实现不同的系统之间互相共享文件.Linux/Unix之间用的是NFS协议. 服务 nmb :提供NETBIOS域名解析,将计算机的netbios名称解析成ip地址,并提供浏览服务显示网络上的共享资源列表. smb : 提供目录和打印机共享,支持认证,权限设置,管理网络共享资源. 监听端口 1.NETBIOS协议对于windows来讲监听TCP的139端口和UDP的

快速EDAS字体嵌入问题

在用edas向国际会议投稿的时候,往往要检查pdf稿件的格式,例如页边距.行距.字体等.经常碰到的一个问题就是字体未嵌入到文件中.因为大家一般用CTex里面的ps2pdf生成pdf文件,图片中的字往往会导致这个问题的出现.edas上提供了一些解决的方法.这里我给出一种很简单的解决方法(推荐使用这种方法): 1.用acrobat打开不满足要求的pdf文档 2.菜单"编辑->首选项",选择"转换为pdf" 3.在中间的框里,选择Word或PostScript/EP

Java中接口和抽象类的比较

Java中接口和抽象类的比较-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础[[1]].(在面向对象语言中,接口的多种不同的实现方式即为多态.多态性是允许你将父对象设置成为和一个或更多的他的子对象的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕").简单的说,就是一句话:允许将子类类型的

Linux之samba服务器的搭建及详解

SAMBA简介 SAMBA是什么 Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件.第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员.简而言之,此软件在Windows与UNIX系列OS之

stand up meeting 1/8/2016 &amp; weekend 1/9/2016~1/10/2016 &amp;&amp; sprint2扫尾

part 组员                工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 跑通打印机功能,尝试与pdf读取部分结合     6 查漏补缺,扫除UI bug    6 foxit PDF Reader 朱玉影       login 周以舟  ----------------------------       sync 林建平         foxit PDF Reader 张葳  -------------------------

产品分析之美团外卖

在今年全国第十二届人大三次会议上,李克强总理在政府工作报告中首次提出“互联网+”行动计划.那么,到底什么是互联网+呢?直白一点讲就是互联网加一个传统行业.而外卖产品就是典型的用互联网改善传统外卖的例子,原本外卖都是用户通过电话订购,商户按照订购进行生产-派送-收费一系列流程,商户需要自己拉用户,资金和精力有限,效果不明显,用户评价也不高,而互联网外卖主要是打造一个平台,平台上聚集线上的用户和线下的商家,用户在平台上选择商家点单,可以完成线上支付或者餐到付款,平台将信息反馈到线下商家,商家根据订单

Java中接口和抽象类的比較

Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础[[1]]. (在面向对象语言中,接口的多种不同的实现方式即为多态. 多态性是同意你将父对象设置成为和一个或很多其它的他的子对象的技术.赋值之后.父对象就能够依据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4编程技术内幕"). 简单的说.就是一句话:同意将