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 ...
随机推荐
- 学校公文办公处理系统_基于ASP.NET和Swfupload、FlashPaper2.2、校讯通短信发送的开发
学校新来了一个主管教学的副校长,他对他以前工作学校的公文处理系统表示高度留念,于是乎叫我们也开发一个. 我就参考了那个学校的办公管理系统,发现其实功能也蛮简单的,就是一个文件上传下载的功能,选择用户组 ...
- Guava之计时器Stopwatch
import java.util.concurrent.TimeUnit; import org.junit.Test; import com.google.common.base.Stopwatch ...
- [转]抛弃jQuery,使用原生JavaScript
原文链接 Document Ready 事件 在jQuery中,document.ready可以让代码在整个文档加载完毕之后执行: $(document).ready(function() { // ...
- Spring全局异常处理的三种方式
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合度高,工作 ...
- 【Java】java数据库连接中C3P、DBCP、Druid连接池的使用
使用JDBC的步骤:1.加载数据库驱动2.通过DriverManager获得数据库连接3.通过Connection获得Statement对象4.使用Statement执行SQL语句.5.操作结果集合6 ...
- wamp设置实现本机IP或者局域网访问
在 httpd.conf 中查找 Allow from 127.0.0.1 Order Deny,Allow Deny from all Allow from 127.0.0.1 在此下面加上 All ...
- BigDecimal乘法
BigDecimal result = new BigDecimal(doubleValue).multiply(factor2); public class Payment { BigDecimal ...
- 【C语言】两个指针(地址)相减
两个指针相减,为两个指针之间间隔这两个指针类型的数目. 如:int *p,*q; p-q=(p地址-q地址)/sizeof(int) #include <stdio.h> int main ...
- Nginx配置WebService、MySQL、SQL Server、ORACLE等代理
首先介绍一下Nginx的基本使用: 注意不要直接双击nginx.exe,这样会导致修改配置后重启.停止nginx无效,需要手动关闭任务管理器内的所有nginx进程 在nginx.exe目录,打开命令行 ...
- 【iCore4 双核心板_ARM】例程十九:USBD_MSC实验——虚拟U盘
实验步骤: 1.将SD卡插在SD卡槽中. 2.将跳线冒跳至USB_OTG,将USB_OTG通过Micor USB线与USB主机(电脑)相连. 3.烧写程序,我的电脑中将出现一个磁盘. 实验现象: 核心 ...