This commit is contained in:
Kalarumeth
2022-10-27 18:53:21 +02:00
parent a852e6095f
commit d6e210aeab
6 changed files with 270 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console_lps", "console_lps\console_lps.csproj", "{35ADC8E8-A92B-42D3-9B04-CFF7B5A3F9D6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{35ADC8E8-A92B-42D3-9B04-CFF7B5A3F9D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35ADC8E8-A92B-42D3-9B04-CFF7B5A3F9D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35ADC8E8-A92B-42D3-9B04-CFF7B5A3F9D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35ADC8E8-A92B-42D3-9B04-CFF7B5A3F9D6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3AF84959-0FD9-499B-8D10-69A934AC2ABF}
EndGlobalSection
EndGlobal
+51
View File
@@ -0,0 +1,51 @@
using System.ComponentModel;
using console_lps.Services;
using System.Drawing.Printing;
using System.Globalization;
using DocumentFormat.OpenXml.Spreadsheet;
using console_lps.Repository;
namespace console_lps;
public class Program
{
private List<LabelItem> liToPrintList;
private int itemCount;
public static void Main()
{
Program p = new Program();
p.Print();
}
public void Print()
{
string[] dataToPrint =
{
"HELLO WORLD!",
"I WRITE SOME TEXT IN THIS SPACE TO CHECK HOW IT WAS PRINTED"
};
//DateTime delDate = new DateTime();
//DateTime.TryParse(dataToPrint[10], out delDate);
itemCount += 1;
liToPrintList = new List<LabelItem>();
liToPrintList.Add(new LabelItem()
{
ItemId = dataToPrint[0],
ItemDescription = dataToPrint[1],
});
// Definisce dove viene stampata l'etichetta
var printer = "\\\\PALAPPS03.PAL.LOCAL\\ETM03";
using (PrintDocument pdLabel = LabelPrinterService.PreparePrintDocument(printer, liToPrintList[0].TotalLabels))
{
pdLabel.PrintPage += (sender, evt) => LabelPrinterService.label_PrintWmsItems(sender, evt, itemCount, liToPrintList[0]);
pdLabel.Print();
}
}
}
+17
View File
@@ -0,0 +1,17 @@
using DocumentFormat.OpenXml.Drawing;
namespace console_lps.Repository;
public class LabelItem
{
public short TotalLabels { get; set; }
public string ItemId { get; set; }
public string ItemDescription { get; set; }
List<QrValue> QrValues { get; set; }
}
public class QrValue
{
public string Value { get; set; }
public string Item { get; set; }
}
+118
View File
@@ -0,0 +1,118 @@
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Printing;
using System.Globalization;
using console_lps.Repository;
namespace console_lps.Services;
public class LabelPrinterService
{
//private string printer = "ETM03";
//private List<WmsLabelItem> wliToPrintList;
//private int itemCount;
internal static PrintDocument PreparePrintDocument(string printer, short numOfCopies = 1)
{
PaperSize paperSize = new PaperSize("Custom Size", 410, 158);
PrintDocument labelToPrint = new PrintDocument();
labelToPrint.DefaultPageSettings.PaperSize = paperSize;
labelToPrint.PrinterSettings.PrinterName = printer;
labelToPrint.PrinterSettings.DefaultPageSettings.PaperSize = paperSize;
labelToPrint.PrinterSettings.Copies = numOfCopies;
return labelToPrint;
}
public static void label_PrintWmsItems(object sender, PrintPageEventArgs e, int itemCount, LabelItem item)
{
try
{
int offsetx = 8;
int offsety = 8;
offsety += -19;
SolidBrush brush = new SolidBrush(Color.Black);
/*Nuova etichetta con in QR*/
Font fnt = new Font("Bitstream Vera Sans Mono", 8.0F, FontStyle.Regular);
Font fntBold = new Font("Bitstream Vera Sans Mono", 13.0F, FontStyle.Bold);
// Codice QR
//e.Graphics.DrawImage(Utils.GenerateQRCode_Image(JsonConvert.SerializeObject(new QrValue()
//{
// Value = "Hello World! I'm a fucking QR CODE",
// Item = ""
//}),
//135, 135), offsetx, offsety);
offsetx += 137;
Font fntItemId = new Font("Bitstream Vera Sans Mono", 20.0F, FontStyle.Bold);
if (item.ItemId.Length > 14)
fntItemId = new Font("Bitstream Vera Sans Mono", 14.0F, FontStyle.Bold);
// Item Id
offsety += 10;
e.Graphics.DrawString(item.ItemId, fntItemId, brush, offsetx, offsety);
////Batch
//if (!string.IsNullOrEmpty(item.InventBatchId))
//{
// Font fntBatchId = new Font("Bitstream Vera Sans Mono", 14.0F, FontStyle.Regular);
// offsety += 24;
// e.Graphics.DrawString(item.InventBatchId, fntBatchId, brush, offsetx, offsety);
//}
offsetx += 4;
offsety += 31;
string format = CultureInfo.GetCultureInfo("IT-it").DateTimeFormat.ShortDatePattern;
e.Graphics.DrawString((item.ItemDescription.Length > 36 ? item.ItemDescription.Substring(0, 36) + "\r\n" + item.ItemDescription.Substring(36, item.ItemDescription.Length - 36) : item.ItemDescription + "\r\n")
, fnt
, brush
, offsetx
, offsety);
//e.Graphics.DrawString("\r\n" + "\r\n" + "\r\n" + item.UoM + " " + Utils.ConvertDecimalInString_TwoDecimal(item.InventQty)
// , fnt
// , brush
// , offsetx + 226
// , offsety
// , new StringFormat() { Alignment = StringAlignment.Far });
//offsety += 50;
//e.Graphics.DrawString(item.PbmProjectInventId
// , fntBold
// , brush
// , offsetx
// , offsety);
//e.Graphics.DrawString(item.WmsLocationId
// , fntBold
// , brush
// , offsetx + 226
// , offsety
// , new StringFormat() { Alignment = StringAlignment.Far });
///*Nuova etichetta con in QR*/
//if (itemCount != wliToPrintList.Count - 1)
//{
// itemCount += 1;
// e.HasMorePages = true;
//}
Thread.Sleep(2000);
}
catch (Exception exc)
{
StackFrame callStack = new StackFrame(0, true);
Utils.TryCatchMessage(exc, callStack);
}
}
}
+38
View File
@@ -0,0 +1,38 @@
using System.Diagnostics;
using System.Drawing;
using Serilog;
using ZXing.QrCode;
namespace console_lps;
public class Utils
{
internal static Image GenerateQRCode_Image(string data, int width, int height, int x = 0, int y = 0, int croppedHeight = 0, int croppedWidth = 0)
{
QRCodeWriter qr = new QRCodeWriter();
var matrix = qr.encode(data, ZXing.BarcodeFormat.QR_CODE, width, height);
ZXing.BarcodeWriter<Bitmap> w = new ZXing.BarcodeWriter<Bitmap> { Format = ZXing.BarcodeFormat.QR_CODE };
System.Drawing.Bitmap img = w.Write(matrix);
if (x != 0 || y != 0)
{
System.Drawing.Bitmap croppedImage = img.Clone(new System.Drawing.Rectangle(x, y, croppedHeight, croppedWidth), img.PixelFormat);
return croppedImage;
}
else
return img;
}
internal static string ConvertDecimalInString_TwoDecimal(decimal dec, string culture = "it-IT")
{
string ret = "";
ret = dec.ToString("#,0.00", System.Globalization.CultureInfo.GetCultureInfo(culture));
return ret;
}
internal static void TryCatchMessage(Exception exc, StackFrame callStack)
{
var message = "ERRORE => " + exc.Message + "\r\n -> alla linea di codice " + callStack.GetFileLineNumber() + "\r\n -> nel metodo " + callStack.GetMethod() + "\r\n -> del file " + callStack.GetFileName() + "\r\n -> in data " + System.DateTime.Now + "\r\n";
Log.Logger.Error(message);
}
}
+21
View File
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BarcodeLib" Version="2.4.0" />
<PackageReference Include="DocumentFormat.OpenXml" Version="2.18.0" />
<PackageReference Include="Microsoft.Office.Interop.Excel" Version="15.0.4795.1001" />
<PackageReference Include="Microsoft.Office.Interop.Word" Version="15.0.4797.1004" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Serilog" Version="2.12.0" />
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
<PackageReference Include="ZXing.Net" Version="0.16.8" />
</ItemGroup>
</Project>