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 ...
随机推荐
- sublime window 配置记录 (转)
大家好,今天给大家分享一款编辑器:sublime text2 我用过很多编辑器,EditPlus.EmEditor.Notepad++.Notepad2.UltraEdit.Editra.Vim ...
- python3----练习题(图片转字符画)
import argparse from PIL import Image def parse_param(): parser = argparse.ArgumentParser() # 命令行输入参 ...
- Spring_day03--Spring配置c3p0连接池和dao使用jdbcTemplate
Spring配置c3p0连接池和dao使用jdbcTemplate 1 spring配置c3p0连接池 第一步 导入jar包 第二步 创建spring配置文件,配置连接池 原始方式 (1)把代码在配置 ...
- 关于recycler遇到的问题
1.//设置recyclerView不能点击myLayoutManager.setScrollEnabled(false);class MyLayoutManager extends LinearLa ...
- HDU1080(DP)
我用的dp是n^3的, dp[i][j] 表示在s串的i个前和t串的j个前,s[i],t[j]为最末端的两个串得到的最大值. 状态转移方程为: 之前将s和t串最尾端添加'-' ;i<=n;i++ ...
- 【BZOJ4517】[Sdoi2016]排列计数 组合数+错排
[BZOJ4517][Sdoi2016]排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值 ...
- Linux下查看nginx的安装路径
输入:nginx -V 输出:configure arguments: --prefix=/usr/local/nginx
- 160229-02、Sublime Text 3 快捷键总结
选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数 ...
- 报错分析---->jsp自定义标签:Unable to load tag handler class
Unable to load tag handler class 无法加载标签处理程序类 处理自定义标签的类中如下: 调用自定义标签的jsp中如下:
- 2017-2018-2 20165330 实验三《敏捷开发与XP实现》实验报告
实验内容 P基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件开发:即将软件需求分析.软件设计.软件构建.软件测试和软件维护这些相关技术和过程统一到一个体系中 敏捷开发:是一种以人为核 ...