C#打印标签
一个复杂的标签包括一个复杂的表格样式和二维码、条形码等内容。所以如果直接绘制的方式将会非常的麻烦,所以采用使用的方案是使用模板的方式:1.使用Excel创建出想要的模板的样式。2.对模板中的动态内容进行填充。3.打印Excel
一.ZXing.net(可以方便生成条形码、二维码和带有头像的二维码)
/// <summary>
/// 条形码
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private Bitmap Create1Code(string text)
{
BarcodeWriter writer = new BarcodeWriter();
//使用ITF 格式,不能被现在常用的支付宝、微信扫出来
//如果想生成可识别的可以使用 CODE_128 格式
//writer.Format = BarcodeFormat.ITF;
writer.Format = BarcodeFormat.CODE_128;
EncodingOptions options = new EncodingOptions()
{
Width = ,
Height = ,
};
writer.Options = options;
Bitmap map = writer.Write(text);
return map;
}
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private Bitmap Create2Code(string text)
{ BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
QrCodeEncodingOptions options = new QrCodeEncodingOptions();
options.DisableECI = true;
//设置内容编码
options.CharacterSet = "UTF-8";
//设置二维码的宽度和高度
options.Width = ;
options.Height = ;
//设置二维码的边距,单位不是固定像素
options.Margin = ;
writer.Options = options;
Bitmap map = writer.Write(text);
return map;
}
二.Epplus(可以方便的对Excel内容进行设置,导出,同时可以对Excel打印时的参数进行设置,遗憾的是他并没有集成相应的API)
using (FileStream fileStream = new FileStream(TemplatePath, FileMode.Open))
{
using (ExcelPackage package = new ExcelPackage(fileStream))
{
OfficeOpenXml.ExcelWorksheet sheet = package.Workbook.Worksheets["Sheet1"];
//当设置Excel中不存在的字体的时候,比如设置的字体过小的时候,会出现Dictionary不存在键值的错误 //填充第一行第一列的内容
sheet.Cells[, ].Value =“测试内容”;
sheet.Cells[, ].Style.Font.Name =“宋体”;
sheet.Cells[, ].Style.Font.Size = 10.5;
sheet.Cells[, ].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Bottom;
//设置打印格式
sheet.PrinterSettings.LeftMargin = 0.3m;
sheet.PrinterSettings.PaperSize = ePaperSize.A3;
sheet.PrinterSettings.TopMargin = 0.3m;
//填充二维码。
var map = Create2Code(“二维码测试”);
var pic = sheet.Drawings.AddPicture("", map);
pic2.SetPosition(, , , );
using (Stream stream = new FileStream(ExcelPath, FileMode.Create))
{
package.SaveAs(stream);
}
}
}
三.使用GemBox插件进行打印(这个插件对打印功能非常简单,只是集成了一个打印功能API提供打印而已,无法对打印机的属性设置)
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
var workbook = ExcelFile.Load(ExcelPath);
workbook.Print(cboPrinter.Text);
通过上面的功能已经可以完成基本的功能。但是存在的不足就是不可以直接设置打印机的属性,有一款收费的插件可以实现,免费版的也可以使用打印的功能,但是会在文档的上面生成水印---Spire.xls
Spire.XLS是一个非常强大的插件,可以对Excel进行出来里,同时提供了相应的接口可以和Windows中打印的PrintDocument直接对接,可以设置打印机的属性。
Workbook workbook = new Workbook();
workbook.LoadFromFile(ExcelPath);
Worksheet sheet = workbook.Worksheets[];
sheet.PageSetup.PrintArea = "C7:D7";
sheet.PageSetup.PrintTitleRows = "$1:$1";
sheet.PageSetup.FitToPagesWide = ;
sheet.PageSetup.FitToPagesTall = ;
sheet.PageSetup.Orientation = PageOrientationType.Landscape;
sheet.PageSetup.PaperSize = PaperSizeType.PaperA3;
PrintDocument pd = workbook.PrintDocument;
pd.PrinterSettings.PrinterName = cboPrint.Text;
pd.PrinterSettings.DefaultPageSettings.Margins = new Margins(, , , );
pd.Print();
补充:
1.关于打印,微软还提供了弹出对话框模式的打印PrintDialog.
2.关于微软的打印PrintDocument支持直接使用Graphics直接绘图,简单的样式可以考虑
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler
(this.pd_PrintPage);
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
ev.Graphics.DrawImage(Bitmap.FromFile(pngPath), new Point(, )); }
3.和使用Excel模板一样的思路,可以使用微软的报表模板RDLC制作标签样式,使用RDLC报表中的打印功能。
C#打印标签的更多相关文章
- 如何用BarTender批量打印标签
关于使用BarTender条码打印软件打印标签,很多小伙伴最关心的问题之一,莫过于如何实现BarTender批量打印标签.为了提高日常标签打印速度,为了方便快捷,也为了减少出错率,快来跟小编学习学习吧 ...
- Winform容器标签 打印标签 对话框控件
一.容器标签 布局: Anchor:锁定位置,指定与窗口容器的边缘位置,会随着窗口大小的改变而改变: Dock:填充窗口的位置.一般与容器标签同时使用. 1.Panel:对控件进行分组.可以独立布局, ...
- wpf应用程序 打印标签
新建一个wpf应用程序,Xaml如下: <Window x:Class="CreateBarCodeDemo.MainWindow" xmlns="http://s ...
- c# asp.net mvc使用斑马GK888t打印机打印标签
前言 c#语言,asp.net mvc,南京都昌电子病历模板工具(类似word),斑马GK888t,打印手腕带和标签纸. 实现步骤为:在页面上显示一个或多个都昌模板工具,点击页面上的button,出现 ...
- C# 使用PrintDocument类打印标签
最近做了一个项目,使用不干胶标签贴在RFID抗金属标签上,那么就会出现标签打印的问题,该如何打印呢?后来经过网上冲浪发现,其实打印标签和打印A4纸的方法一样,只不过就是布局.设置纸张大小的问题. 本文 ...
- 升鲜宝V2.0_杭州生鲜配送行业,条码标签管理之批量打印标签与分配配送任务相关操作说明_升鲜宝生鲜配送系统_15382353715_余东升
升鲜宝V2.0_杭州生鲜配送行业,条码标签管理之批量打印标签与分配配送任务相关操作说明_升鲜宝供应链管理生鲜配送系统 题外话,随着国家对食材安全这个行业重视性越来越强,最近国家又出具了一些 ...
- GK888CN与Devexpress报表打印标签
安装海鸥驱动,貌似打几张也会报错 使用打印机自带的gk888t驱动,用gk888t(EPL)打带二纬码时会报错 需要选择Togther, xrLable 运行 CanShrink
- 斑马条码打印机GK888T打印标签是间隔的 ,不是连续的
有间断的标签纸和连续的标签纸是两种不同的纸张类型, 打印机的标签感应器需要工作在不同的模式来跟踪感应它们. 打印机正确感应纸张才不会红灯闪烁,打印的内容才按文件设计打印到标签的对应位置上. 所以要在驱 ...
- C# ZPL II 命令打印标签
public class BarPrinter { public static byte[] ZPLPrinter(string p_title = "", string p_sp ...
随机推荐
- 使用JavaCV播放视频、摄像头、人脸识别
一.导入Maven依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-pla ...
- 视觉SLAM中的数学基础 第三篇 李群与李代数
视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换 ...
- phpBB3.2 自动检测浏览器语言
这是根据HTTP request header里的Accept-Language信息来处理的. 首先看一下Accept-Language的格式 Accept-Language: <languag ...
- 【LeetCode】240. Search a 2D Matrix II
Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix. Thi ...
- 【SqlServer】解析SqlServer中的事务
目录结构: contents structure [+] 事务是什么 控制事务 数据并发访问产生的影响 事务的隔离级别 锁 NOLOCK.HOLDLOCK.UPDLOCK 死锁分析 在这篇Blog中, ...
- 【SqlServer】SqlServer的常规操作
创建一张新表,不负责任何数据(该表不会有原来表的主键.索引等等) select * into NewTable from OldTable where 1<>1; 创建一张新表,并且复制旧 ...
- Kriging插值法
克里金法是通过一组具有 z 值的分散点生成估计表面的高级地统计过程.与插值工具集中的其他插值方法不同,选择用于生成输出表面的最佳估算方法之前,有效使用克里金法工具涉及 z 值表示的现象的空间行为的交互 ...
- [Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...
- Thinkphp 关联模型和试图模型区别
关联模型主要在多表操作时使用,比如 user表,user_role表,role表 user_role字段:uid,rid,它作为中间表,负责将user和role之间的,1对1,1对多,多对多的关系进行 ...
- github新建repositories后import已有code 随后同步更新
github上,可以forks别人已有的项目,而且同步更新合并也很方便,但如果是自己新建的项目,而导入的是别人的代码修改后,别人的又更新了,自己想获取他的更新,怎么办呢?其实很简单. # git cl ...