C#小票打印机动态纸张尺寸
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Printing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace pdPrint{ public partial class Form1 : Form { private int lineSize; //每行打印字数 private List<string> textList; //打印内容行 private int lineHeight; //打印行高 private int fontSize; //字大小 public Form1() { lineSize = 20; //设置每行打印字数 lineHeight = 22; //行高 1/100 英寸 fontSize = 12; //字体大小 1/英寸 InitializeComponent(); } private void btn_Print_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(this.txt_PrintText.Text)) { return; } //原文字行或者段落内容 var sourceTexts = this.txt_PrintText.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); //重新把文字进行分行树立 textList = new List<string>(); foreach (var item in sourceTexts) { if (!string.IsNullOrWhiteSpace(item)) { if (item.Length > lineSize) { textList.AddRange(GetArr(lineSize, item)); } else { textList.Add(item); } } } PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(Print_Content); //纸张设置默认 PaperSize pageSize = new PaperSize("自定义纸张", fontSize * lineSize, (textList.Count * lineHeight)); pd.DefaultPageSettings.PaperSize = pageSize; try { pd.Print(); } catch (Exception ex) { MessageBox.Show("打印失败." + ex.Message); } } /// <summary> /// 打印内容事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Print_Content(object sender, PrintPageEventArgs e) { var mark = 0; foreach (var item in textList) { e.Graphics.DrawString(item, new Font(new FontFamily("宋体"), fontSize), System.Drawing.Brushes.Black, 0, mark * lineSize); mark++; } } /// <summary> /// 根据内容进行分行 /// </summary> /// <param name="linelen">每行字数</param> /// <param name="text">原文字行(段落)文字</param> /// <returns></returns> private List<string> GetArr(int linelen, string text) { var list = new List<string>(); int listcount = text.Length % linelen == 0 ? text.Length / linelen : (text.Length / linelen) + 1; for (int j = 0; j < listcount; j++) { try { list.Add(text.Substring(j * linelen, linelen)); } catch (Exception) { list.Add(text.Substring(j * linelen)); } } return list; } }}C#小票打印机动态纸张尺寸的更多相关文章
- 小票打印机指令集封装(支持EPSON指令)
最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧. 现在市场上的小票机基本都支持EPSON指令.指令集文档 对指令集进行了自己的封装,方便以后调用: package aheiziUti ...
- Java读取打印机自定义纸张.
打印出现截断? 对于自定义纸张打印, 一定要先在打印机配置那边添加, 不然会出现截断. 例如打印1000*500, 出来是正常的, 打印216*139, 出现了截断. 因为java默认的打印, 会从打 ...
- 让 Odoo POS 支持廉价小票打印机
为了测试 Odoo 在实际业务中的实施,我们开了一家(马上要开第二家分店)猪肉店.由于预算有限,在实施 Odoo PoS 的时候采购了一台价格为 85 元的爱宝热敏打印机,结果连上 Odoo Posb ...
- C#并口热敏小票打印机打印位图包括芯片的写入
下面是打印所需要调用的代码: class LptControl { private string LptStr = "lpt1"; public LptControl(string ...
- C# Lpt 并口热敏小票打印机打印位图
class LptControl { private string LptStr = "lpt1"; public LptControl(string l_LPT_Str) { L ...
- 转:C#并口热敏小票打印机打印位图
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...
- C# 热敏打印机 小票打印机 打印图片
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: 因为我们这里主要是打印条形码和二维码,所以以条形码和二维 ...
- C#并口热敏小票打印机打印位图
原文:C#并口热敏小票打印机打印位图 最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class ...
- android ImageView网络图片加载、动态设置尺寸、圆角..
封装了一个关于ImageView的辅助类,该类可以方便实现网络图片下载的同时,动态设置图片尺寸.圆角.....一系列连贯的操作,无样式表,java代码实现所有功能,使用很方便. package com ...
随机推荐
- python学习【第一篇】python介绍
python发展历史 起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更加享受 ...
- 【BZOJ5071】[Lydsy十月月赛]小A的数字 发现性质
[BZOJ5071][Lydsy十月月赛]小A的数字 题解:一般遇到这种奇奇怪怪的操作,常用的套路是将原序列差分一下,或者求个前缀和什么的.本题就是直接对原序列求前缀和,然后发现一次操作相当于交换两个 ...
- 后台程序在向tty/串口写数据的时候stop了
当后台程序向tty/串口写数据的时候stop了. STOPPED(SIGTTOU) .... SIGTTOU:代表的是后台程序向 controlling terminal写数据. 解决办法:暂时在程序 ...
- Oracle Schema Objects——Tables——Oracle Data Types
Oracle Schema Objects Oracle Data Types 数据类型 Data Type Description NUMBER(P,S) Number value having a ...
- $obj->0
w对象 数组 分别对内存的 消耗 CI result() This method returns the query result as an array of objects, or an empt ...
- nodejs(一)
nodejs第一章节 使用node来实现第一个http服务器 var http = require(‘http’); http.createServer(function (request, resp ...
- 剑指Offer——二叉树的下一个结点
题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 如果该结点存在右子树,那么返回右子树的最左结 ...
- golang环境安装
到官方https://golang.org/dl/下载安装包 cd /usr/local/src wget https://storage.googleapis.com/golang/go1.8.li ...
- 入木三分学网络第一篇--VRRP协议详解第一篇(转)
因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...
- virtIO前后端notify机制详解
2016-11-15 本来这是在前端驱动后期分析的,但是这部分内容比较多,且分析了后端notify前端的机制,所以还是单独拿出一节分析比较好! 还是拿网络驱动部分做案例,网络驱动部分有两个队列,(忽略 ...