using BarcodeLib;
using BBWY.Client.Extensions;
using BBWY.Client.Models;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using WebSocketSharp;
namespace BBWY.Client.Helpers
{
public class MyPrintHelper
{
public static void PrintBarcode(ref PrintPageEventArgs args, BarCodeModel barCode, Font font)
{
args.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
args.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
var sige = args.Graphics.VisibleClipBounds;// 宽:236 高:157 打印可视化区域
args.Graphics.TranslateTransform((sige.Width - 236) / 2, 0);//设置起始位置
//args.Graphics.DrawRectangle(new System.Drawing.Pen(System.Drawing.Brushes.Black), 0, 0, sige.Width, sige.Height);//画出条码编辑区域
args.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
args.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
switch (barCode.LabelModel)
{
case BarcodeLabelModel.标准模板:
font = new Font("宋体", 8, System.Drawing.FontStyle.Regular);
SetBar(barCode, ref args, font, 5);
//SetBarStander(barCode, ref args, font);
break;
case BarcodeLabelModel.精简模板:
font = new Font("宋体", 10, System.Drawing.FontStyle.Regular);
//SetBar(barCode, ref args, font, 15);
SetBarSimplify(barCode, ref args, font);
break;
case BarcodeLabelModel.无型号模板:
font = new Font("宋体", 10, System.Drawing.FontStyle.Regular);
SetBar(barCode, ref args, font, 7);
break;
default:
break;
}
}
private static void SetBar(BarCodeModel barCode, ref PrintPageEventArgs args, Font font, int heightSpace)
{
float topHeigth = 0;//与顶部的距离
string barcodeSku = $"POP{barCode.SkuId}";
Barcode barcode = new Barcode();
System.Drawing.Image img = barcode.Encode(TYPE.CODE128, barcodeSku, 500, 40);
SizeF size = args.Graphics.MeasureString(barCode.BrandName, font);
var sizeHeight = size.Height;//字体高度
topHeigth += 10;
switch (barCode.LabelModel)
{
case BarcodeLabelModel.无型号模板:
case BarcodeLabelModel.标准模板:
args.Graphics.DrawString($"品牌: {barCode.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
break;
case BarcodeLabelModel.精简模板:
break;
}
args.Graphics.DrawString($"品名: {barCode.BrandName}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
switch (barCode.LabelModel)
{
case BarcodeLabelModel.标准模板:
args.Graphics.DrawString($"型号: {barCode.ProductNo}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
break;
case BarcodeLabelModel.无型号模板:
case BarcodeLabelModel.精简模板:
break;
default:
break;
}
args.Graphics.DrawString($"规格: {barCode.SkuName}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
// g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
size = args.Graphics.MeasureString(barcodeSku, font);
topHeigth += (heightSpace + sizeHeight);
args.Graphics.DrawImage(img, 1, topHeigth, 234, 50);
topHeigth += (50 + 5);
args.Graphics.DrawString(barcodeSku, font, System.Drawing.Brushes.Black, new PointF((236 - size.Width) / 2, topHeigth));
}
///
/// 标准
///
///
///
///
private static void SetBarStander(BarCodeModel barCode, ref PrintPageEventArgs args, Font font)
{
float topHeigth = 0;//与顶部的距离
string barcodeSku = $"POP{barCode.SkuId}";
Barcode barcode = new Barcode();
System.Drawing.Image img = barcode.Encode(TYPE.CODE128, barcodeSku, 500, 40);
SizeF size = args.Graphics.MeasureString(barCode.BrandName, font);
var sizeHeight = size.Height;//字体高度
var heightSpace = 5;//间隔高度
topHeigth += 10;
args.Graphics.DrawString($"品牌: {barCode.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
args.Graphics.DrawString($"品名: {barCode.BrandName}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
args.Graphics.DrawString($"型号: {barCode.ProductNo}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
topHeigth += (heightSpace + sizeHeight);
args.Graphics.DrawString($"规格: {barCode.SkuName}", font, System.Drawing.Brushes.Black, new PointF(10, topHeigth));
// g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
size = args.Graphics.MeasureString(barcodeSku, font);
topHeigth += (heightSpace + sizeHeight);
args.Graphics.DrawImage(img, 1, topHeigth, 234, 50);
topHeigth += (50 + 5);
args.Graphics.DrawString(barcodeSku, font, System.Drawing.Brushes.Black, new PointF((236 - size.Width) / 2, topHeigth));
}
///
/// 精简
///
///
///
///
private static void SetBarSimplify(BarCodeModel barCode, ref PrintPageEventArgs args, Font font)
{
string barcodeSku = $"POP{barCode.SkuId}";
Barcode barcode = new Barcode();
System.Drawing.Image img = barcode.Encode(TYPE.CODE128, barcodeSku, 500, 60);
args.Graphics.DrawString($"品名: {barCode.BrandName}", font, System.Drawing.Brushes.Black, new PointF(10, 10));
args.Graphics.DrawString($"规格: {barCode.SkuName}", font, System.Drawing.Brushes.Black, new PointF(10, 40));
// g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
SizeF size = args.Graphics.MeasureString(barcodeSku, font);
args.Graphics.DrawString(barcodeSku, font, System.Drawing.Brushes.Black, new PointF((236 - size.Width) / 2, 130));
args.Graphics.DrawImage(img, 1, 68, 234, 60);
}
public static void PrintCertificate(ref PrintPageEventArgs args, CertificateModel certificate, Font font)
{
args.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
args.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
var sige = args.Graphics.VisibleClipBounds;// 宽:236 高:157 打印可视化区域
args.Graphics.TranslateTransform((sige.Width - 236) / 2, 0);//设置起始位置
args.Graphics.DrawRectangle(new System.Drawing.Pen(System.Drawing.Brushes.Black), 5, 5, sige.Width - 10, sige.Height - 10);//画出条码编辑区域
args.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
args.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
font = new Font("宋体", 6, System.Drawing.FontStyle.Regular);
switch (certificate.LabelModel)
{
case CertificateLabelModel.标准无3c:
case CertificateLabelModel.标准有3c:
SetCerStander(ref args, certificate, font);
break;
case CertificateLabelModel.无型号:
SetCerNoXingHao(ref args, certificate, font);
break;
case CertificateLabelModel.适用年龄:
SetCerNoXingHao(ref args, certificate, font);
break;
default:
break;
}
}
private static void SetCerStander(ref PrintPageEventArgs args, CertificateModel certificate, Font font)
{
//#if DEBUG
// Bitmap bitmap = new Bitmap(236, 157);
// // Bitmap bitmap = new Bitmap(500, 500);
// Graphics graphics = Graphics.FromImage(bitmap);
// var sige = graphics.VisibleClipBounds;// 宽:236 高:157 打印可视化区域
// graphics.TranslateTransform((sige.Width - 236) / 2, 0);//设置起始位置
// graphics.DrawRectangle(new System.Drawing.Pen(System.Drawing.Brushes.Black), 5, 5, sige.Width - 10, sige.Height - 10);//画出条码编辑区域
// int bigJiange = 20;//合格证与品牌的高度差
// var heightSpace = 4;//所有行间隔高度
// if (!string.IsNullOrEmpty(certificate.ProduceDate))
// {
// bigJiange = 10; heightSpace = 3;
// }
// int standerSpace = 1;//执行标准之间的
// if (certificate.IsLogo == 1)//含图标
// {
// string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
// string path = appPath + $"/Resources/Images/3c.png";
// Image image = Image.FromFile(path);
// graphics.DrawImage(image, 190, 7, 28, 21);
// graphics.DrawString(certificate.FactoryNumber, font, System.Drawing.Brushes.Black, 188, 28);
// }
// var fontBig = new Font("宋体", 14, System.Drawing.FontStyle.Regular);
// string cerName = "合格证";
// SizeF bigSize = graphics.MeasureString(cerName, fontBig);
// float verHeight = bigJiange + bigSize.Height;
// graphics.DrawString(cerName, fontBig, System.Drawing.Brushes.Black, new PointF((236 - bigSize.Width) / 2, 10));
// graphics.DrawString($"品牌: {certificate.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
// if (!string.IsNullOrEmpty(certificate.ProductNo))
// graphics.DrawString($"型号: {certificate.ProductNo}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
// var smallSize = graphics.MeasureString(certificate.Brand, font);//小字体高度
// verHeight += (smallSize.Height + heightSpace);
// graphics.DrawString($"品名: {certificate.BrandName}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
// graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
// StringBuilder sb = new StringBuilder();
// var excutes = certificate.ExcuteStander.Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries);
// int hangCount = excutes.Count() / 2 + excutes.Count() % 2;//获取行数
// for (int i = 0; i < excutes.Count(); i++)
// {
// if (i % 2 == 0 && i > 0)//间隔两个换行
// {
// sb.Append("\n");
// }
// sb.Append(excutes[i]).Append(" ");
// }
// sb.Remove(sb.Length - 3, 3);
// var rows = sb.ToString().Split('\n');
// string excuteStander = "执行标准: ";
// smallSize = graphics.MeasureString(excuteStander, font);
// verHeight += (smallSize.Height + heightSpace);
// graphics.DrawString($"执行标准: {rows[0]}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
// for (int i = 1; i < rows.Count(); i++)
// {
// verHeight += (smallSize.Height + standerSpace);
// graphics.DrawString($"{rows[i]}", font, System.Drawing.Brushes.Black, new PointF(12 + smallSize.Width, verHeight));
// }
// if (!string.IsNullOrEmpty(certificate.ProduceDate))
// {
// verHeight += (smallSize.Height + heightSpace) - 3;
// graphics.DrawString($"生产日期: {certificate.ProduceDate}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
// }
// verHeight += (smallSize.Height + heightSpace);
// RectangleF rect = new RectangleF(10, verHeight, 220, smallSize.Height * 2 + heightSpace);
// var productStr = $"生产商: {certificate.ProductShop}";
// if (graphics.MeasureString(productStr, font).Width <= 220)
// {
// graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, 10, verHeight);
// verHeight += smallSize.Height + heightSpace;
// }
// else
// {
// graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, rect);
// verHeight += 2 * smallSize.Height + heightSpace;
// }
// var productShop = graphics.MeasureString("生产商", font);
// var adress = graphics.MeasureString("地 址", font);
// var rect1 = new RectangleF(10 + productShop.Width - adress.Width, verHeight - 2, 220, smallSize.Height * 3 + heightSpace);
// graphics.DrawString($"地 址: {certificate.ProductAdress}", font, System.Drawing.Brushes.Black, rect1);
// var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// bitmap.Save($"{applicationPath}/{certificate.LabelModel}-{certificate.GoodsNumber}.jpg", ImageFormat.Png);
int bigJiange = 20;//合格证与品牌的高度差
var heightSpace = 4;//所有行间隔高度
int standerSpace = 1;//执行标准之间的
if (!string.IsNullOrEmpty(certificate.ProduceDate))
{
bigJiange = 10; heightSpace = 3;
}
if (certificate.IsLogo == 1)//含图标
{
string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = appPath + $"/Resources/Images/3c.png";
Image image = Image.FromFile(path);
args.Graphics.DrawImage(image, 190, 7, 28, 21);
args.Graphics.DrawString(certificate.FactoryNumber, font, System.Drawing.Brushes.Black, 188, 28);
}
var fontBig = new Font("宋体", 14, System.Drawing.FontStyle.Regular);
string cerName = "合格证";
SizeF bigSize = args.Graphics.MeasureString(cerName, fontBig);
float verHeight = bigJiange + bigSize.Height;
args.Graphics.DrawString(cerName, fontBig, System.Drawing.Brushes.Black, new PointF((236 - bigSize.Width) / 2, 10));
args.Graphics.DrawString($"品牌: {certificate.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
if(!string.IsNullOrEmpty(certificate.ProductNo))
args.Graphics.DrawString($"型号: {certificate.ProductNo}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
var smallSize = args.Graphics.MeasureString(certificate.Brand, font);//小字体高度
verHeight += (smallSize.Height + heightSpace);
args.Graphics.DrawString($"品名: {certificate.BrandName}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
args.Graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
StringBuilder sb = new StringBuilder();
var excutes = certificate.ExcuteStander.Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries);
int hangCount = excutes.Count() / 2 + excutes.Count() % 2;//获取行数
for (int i = 0; i < excutes.Count(); i++)
{
if (i % 2 == 0 && i > 0)//间隔两个换行
{
sb.Append("\n");
}
sb.Append(excutes[i]).Append(" ");
}
sb.Remove(sb.Length - 3, 3);
var rows = sb.ToString().Split('\n');
string excuteStander = "执行标准: ";
smallSize = args.Graphics.MeasureString(excuteStander, font);
verHeight += (smallSize.Height + heightSpace);
args.Graphics.DrawString($"执行标准: {rows[0]}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
for (int i = 1; i < rows.Count(); i++)
{
verHeight += (smallSize.Height + standerSpace) - 3;
args.Graphics.DrawString($"{rows[i]}", font, System.Drawing.Brushes.Black, new PointF(10 + smallSize.Width, verHeight));
}
if (!string.IsNullOrEmpty(certificate.ProduceDate))
{
verHeight += (smallSize.Height + heightSpace);
args.Graphics.DrawString($"生产日期: {certificate.ProduceDate}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
}
verHeight += (smallSize.Height + heightSpace);
RectangleF rect = new RectangleF(10, verHeight, 220, smallSize.Height * 2 + heightSpace);
var productStr = $"生产商: {certificate.ProductShop}";
if (args.Graphics.MeasureString(productStr, font).Width <= 220)
{
args.Graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, 10, verHeight);
verHeight += smallSize.Height + heightSpace;
}
else
{
args.Graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, rect);
verHeight += 2 * smallSize.Height + heightSpace;
}
var productShop = args.Graphics.MeasureString("生产商", font);
var adress = args.Graphics.MeasureString("地 址", font);
var rect1 = new RectangleF(10 + productShop.Width - adress.Width, verHeight- 2, 220, smallSize.Height * 3 + heightSpace);
args.Graphics.DrawString($"地 址: {certificate.ProductAdress}", font, System.Drawing.Brushes.Black, rect1);
}
private static void SetCerNoXingHao(ref PrintPageEventArgs args, CertificateModel certificate, Font font)
{
//Bitmap bitmap = new Bitmap(236, 157);
//Graphics graphics = Graphics.FromImage(bitmap);
//graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//var sige = graphics.VisibleClipBounds;// 宽:236 高:157 打印可视化区域
//graphics.TranslateTransform((sige.Width - 236) / 2, 0);//设置起始位置
//graphics.DrawRectangle(new System.Drawing.Pen(System.Drawing.Brushes.Black), 5, 5, sige.Width - 10, sige.Height - 10);//画出条码编辑区域
//graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//var twoWidth = graphics.MeasureString("适用", font);
//var oneWidth = graphics.MeasureString("适", font);
//int bigJiange = 20;//合格证与品牌的高度差
//if (!string.IsNullOrEmpty(certificate.ProduceDate)) bigJiange = 10;
//var heightSpace = 4;//所有行间隔高度
//int standerSpace = 1;//执行标准之间的
//var fontBig = new Font("宋体", 14, System.Drawing.FontStyle.Regular);
//string cerName = "合格证";
//SizeF bigSize = graphics.MeasureString(cerName, fontBig);
//float verHeight = bigJiange + bigSize.Height;
//graphics.DrawString(cerName, fontBig, System.Drawing.Brushes.Black, new PointF((236 - bigSize.Width) / 2, 10));
//graphics.DrawString($"品牌: {certificate.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
//graphics.DrawString($"品名: {certificate.BrandName}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
//var smallSize = graphics.MeasureString(certificate.BrandName, font);//小字体高度
//verHeight += (smallSize.Height + heightSpace);
//graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
//switch (certificate.LabelModel)
//{
// case CertificateLabelModel.标准无3c:
// break;
// case CertificateLabelModel.标准有3c:
// break;
// case CertificateLabelModel.无型号:
// break;
// case CertificateLabelModel.适用年龄:
// graphics.DrawString($"适用年龄: {certificate.ApplyAge}", font, System.Drawing.Brushes.Black, new PointF(125 - twoWidth.Width, verHeight));
// break;
// default:
// break;
//}
////graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
//StringBuilder sb = new StringBuilder();
//var excutes = certificate.ExcuteStander.Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries);
//int hangCount = excutes.Count() / 2 + excutes.Count() % 2;//获取行数
//for (int i = 0; i < excutes.Count(); i++)
//{
// if (i % 2 == 0 && i > 0)//间隔两个换行
// {
// sb.Append("\n");
// }
// sb.Append(excutes[i]).Append(" ");
//}
//sb.Remove(sb.Length - 3, 3);
//var rows = sb.ToString().Split('\n');
//string excuteStander = "执行标准: ";
//smallSize = graphics.MeasureString(excuteStander, font);
//verHeight += (smallSize.Height + heightSpace);
//graphics.DrawString($"执行标准: {rows[0]}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
//for (int i = 1; i < rows.Count(); i++)
//{
// verHeight += (smallSize.Height + standerSpace);
// graphics.DrawString($"{rows[i]}", font, System.Drawing.Brushes.Black, new PointF(12 + smallSize.Width, verHeight));
//}
//if (!string.IsNullOrEmpty(certificate.ProduceDate))
//{
// verHeight += (smallSize.Height + heightSpace)-3;
// graphics.DrawString($"生产日期: {certificate.ProduceDate}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
//}
//verHeight += (smallSize.Height + heightSpace);
//RectangleF rect = new RectangleF(10, verHeight, 220, smallSize.Height * 2 + heightSpace);
//var productStr = $"生产商: {certificate.ProductShop}";
//if (graphics.MeasureString(productStr, font).Width <= 220)
//{
// graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, 10, verHeight);
// verHeight += smallSize.Height + heightSpace;
//}
//else
//{
// graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, rect);
// verHeight += 2 * smallSize.Height + heightSpace;
//}
//var productShop = graphics.MeasureString("生产商", font);
//var adress = graphics.MeasureString("地 址", font);
//var rect1 = new RectangleF(10 + productShop.Width - adress.Width, verHeight - 2, 220, smallSize.Height * 3 + heightSpace);
//graphics.DrawString($"地 址: {certificate.ProductAdress}", font, System.Drawing.Brushes.Black, rect1);
//var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
//bitmap.Save($"{applicationPath}/{certificate.LabelModel}-{certificate.GoodsNumber}.jpg", ImageFormat.Png);
int bigJiange = 20;//合格证与品牌的高度差
var heightSpace = 4;//所有行间隔高度
int standerSpace = 1;//执行标准之间的
if (!string.IsNullOrEmpty(certificate.ProduceDate)) bigJiange = 10;
var fontBig = new Font("宋体", 14, System.Drawing.FontStyle.Regular);
string cerName = "合格证";
SizeF bigSize = args.Graphics.MeasureString(cerName, fontBig);
float verHeight = bigJiange + bigSize.Height;
args.Graphics.DrawString(cerName, fontBig, System.Drawing.Brushes.Black, new PointF((236 - bigSize.Width) / 2, 10));
args.Graphics.DrawString($"品牌: {certificate.Brand}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
args.Graphics.DrawString($"品名: {certificate.BrandName}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
var smallSize = args.Graphics.MeasureString(certificate.BrandName, font);//小字体高度
verHeight += (smallSize.Height + heightSpace);
args.Graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
switch (certificate.LabelModel)
{
case CertificateLabelModel.标准无3c:
break;
case CertificateLabelModel.标准有3c:
break;
case CertificateLabelModel.无型号:
break;
case CertificateLabelModel.适用年龄:
var twoWidth = args.Graphics.MeasureString("适用", font);
args.Graphics.DrawString($"适用年龄: {certificate.ApplyAge}", font, System.Drawing.Brushes.Black, new PointF(122 - twoWidth.Width, verHeight));
break;
default:
break;
}
//args.Graphics.DrawString($"材质: {certificate.Shader}", font, System.Drawing.Brushes.Black, new PointF(122, verHeight));
StringBuilder sb = new StringBuilder();
var excutes = certificate.ExcuteStander.Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries);
int hangCount = excutes.Count() / 2 + excutes.Count() % 2;//获取行数
for (int i = 0; i < excutes.Count(); i++)
{
if (i % 2 == 0 && i > 0)//间隔两个换行
{
sb.Append("\n");
}
sb.Append(excutes[i]).Append(" ");
}
sb.Remove(sb.Length - 3, 3);
var rows = sb.ToString().Split('\n');
string excuteStander = "执行标准: ";
smallSize = args.Graphics.MeasureString(excuteStander, font);
verHeight += (smallSize.Height + heightSpace);
args.Graphics.DrawString($"执行标准: {rows[0]}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
for (int i = 1; i < rows.Count(); i++)
{
verHeight += (smallSize.Height + standerSpace);
args.Graphics.DrawString($"{rows[i]}", font, System.Drawing.Brushes.Black, new PointF(10 + smallSize.Width, verHeight));
}
if (!string.IsNullOrEmpty(certificate.ProduceDate))
{
verHeight += (smallSize.Height + heightSpace)-3;
args.Graphics.DrawString($"生产日期: {certificate.ProduceDate}", font, System.Drawing.Brushes.Black, new PointF(10, verHeight));
}
verHeight += (smallSize.Height + heightSpace);
RectangleF rect = new RectangleF(10, verHeight, 220, smallSize.Height * 2 + heightSpace);
var productStr = $"生产商: {certificate.ProductShop}";
if (args.Graphics.MeasureString(productStr, font).Width <= 220)
{
args.Graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, 10, verHeight);
verHeight += smallSize.Height + heightSpace;
}
else
{
args.Graphics.DrawString(productStr, font, System.Drawing.Brushes.Black, rect);
verHeight += 2 * smallSize.Height + heightSpace;
}
var productShop = args.Graphics.MeasureString("生产商", font);
var adress = args.Graphics.MeasureString("地 址", font);
var rect1 = new RectangleF(10 + productShop.Width - adress.Width, verHeight-2, 220, smallSize.Height * 3 + heightSpace);
args.Graphics.DrawString($"地 址: {certificate.ProductAdress}", font, System.Drawing.Brushes.Black, rect1);
}
public static void SaveImage(PrintPageEventArgs args)
{
args.Graphics.Save();
// args.Graphics
//Bitmap bitmap2 = new Bitmap(236, 157);
//Graphics graphics2 = Graphics.FromImage(bitmap2);
//graphics2 = args.Graphics.Copy();
//bitmap2.Save("image.jpg", ImageFormat.Jpeg);
}
}
}