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 ...
随机推荐
- Axure 8 注册码,市面上很多注册码都不行用,但是这个可以。
找了很久了,感谢@Quan-Sunny的转载 Licensee: University of Science and Technology of China (CLASSROOM) Key: DTXR ...
- vue+webpack2实现路由的懒加载
当打包构建应用时,Javascript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组 ...
- ios学习--结合UIImageView实现图片的移动和缩放
因为种种原因,需要在iphone应用中实现图片查看功能,由于iphone屏幕支持多点触摸,于是是想到用“手势”来实现图片的实时缩放和移动.借鉴无所不在的internet网络资料之后,终于实现此一功能, ...
- sql中IN的含义
in后面可以是查询集合,也可以是诸如('1','2','3','4') 例: UPDATE CC_PROBLEM_INFO SET Z_STATUS = 1 WHERE CONTENT_ID IN ( ...
- 【BZOJ1009】[HNOI2008]GT考试 next数组+矩阵乘法
[BZOJ1009][HNOI2008]GT考试 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的 ...
- Vue基础-渲染函数-插槽
Vue 测试版本:Vue.js v2.5.13 先看个插槽的例子: <div id="app"> <child > <span slot-scope= ...
- 160307、Java调用Oracle存储过程返回结果集
一:无返回值的存储过程调用 存储过程: CREATE OR REPLACE PROCEDURE PRO_1(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS BEGI ...
- SaltStack自动化安装zabbix-server
使用SaltStack自动化安装zabbix-server 1,设置ntp时间同步 2,安装zabbix-agent 3,安装zabbix-server 4,安装及配置mariadb(mariadb与 ...
- HDU_5512_Pagodas
Pagodas Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- WHICH ONE IS BETTER FOR NEWBIE?
DROP PROCEDURE IF EXISTS w_array; DELIMITER /w/ )) BEGIN ) DO SET @w = LOCATE(',', w_arr); ); SET @w ...