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 ...
随机推荐
- 微软BI 之SSRS 系列 - 如何让报表在一页显示,两种常用的技巧
通常情况下,SSRS 报表在页面内容过多的时候会自动分页.但有的时候当页面内容不是很多,大概最多2页的情况下,或者客户要求所有内容必须在一页显示时,应该如何设置. 实际上,要考虑两种情况:第一种情况是 ...
- Spark机器学习(5):SVM算法
1. SVM基本知识 SVM(Support Vector Machine)是一个类分类器,能够将不同类的样本在样本空间中进行分隔,分隔使用的面叫做分隔超平面. 比如对于二维样本,分布在二维平面上,此 ...
- SpringBoot集成redis的LBS功能
下面的代码实现了添加经纬度数据 和 搜索经纬度数据的功能: import java.util.List; import com.longge.goods.dto.BuildingDto; import ...
- mysql和redis的区别
一..redis和mysql的区别总结 (1)类型上 从类型上来说,mysql是关系型数据库,redis是缓存数据库 (2)作用上 mysql用于持久化的存储数据到硬盘, ...
- 如何寻找linux下相关软件
当在linux下运行程序遇到找不到库的时候可以使用yum whatprovides 来找到到需要安装的包. 例如:yum whatprovides libz.so.1 然后安装找到的包 yum in ...
- nodeJS服务器的创建和重新启动
一: 首先在nodejs项目里创建一个server.js文件,输入下面代码 var http = require("http"); http.createServer(functi ...
- 分库分表利器——sharding-sphere
背景 得不到的东西让你彻夜难眠,没有尝试过的技术让我跃跃欲试. 本着杀鸡焉用牛刀的准则,我们倡导够用就行,不跟风,不盲从. 所以,结果就是我们一直没有真正使用分库分表.曾经好几次,感觉没有分库分表(起 ...
- react.js map遍历的问题
React遍历多个Ant Design中的Upload组件时,随意删除任一个Upload出现了bug,依次点击上传图片后,当点击删除时,倒着删除没有问题,从中间和从开头删问题出现了,出现了类似塌方的效 ...
- python工具 - 批量文件重命名
日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名. 场景:某文 ...
- github贡献开源项目
1.正常流程 1.拷贝项目到自己的github 2.本地修改后提交远程仓库 3.创建讨论Pull requests 4.开源项目者合并到master分支 5.删除仓库 2.快速发出讨论Pull req ...