Murphy před 3 roky
rodič
revize
352054f4a6

+ 15 - 0
.gitignore

@@ -1981,3 +1981,18 @@ MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/Spire
 MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/runtimes/unix/lib/netcoreapp2.0/System.Drawing.Common.dll
 MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.SystemEvents.dll
 MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/runtimes/win/lib/netcoreapp2.0/System.Drawing.Common.dll
+MicroServices/Business/Bussiness.ApplicationTest/bin/Debug/net6.0/Mongo2Go.dll
+MicroServices/Business/Bussiness.Domain.Test/bin/Debug/net6.0/Mongo2Go.dll
+MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/Mongo2Go.dll
+MicroServices/Business/Bussiness.ApplicationTest/bin/Debug/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll
+MicroServices/Business/Bussiness.ApplicationTest/bin/Debug/net6.0/ThoughtWorks.QRCode.dll
+MicroServices/Business/Bussiness.ApplicationTest/bin/Debug/net6.0/runtimes/linux-s390x/native/libe_sqlite3.so
+MicroServices/Business/Bussiness.ApplicationTest/bin/Debug/net6.0/runtimes/osx-arm64/native/libe_sqlite3.dylib
+MicroServices/Business/Bussiness.Domain.Test/bin/Debug/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll
+MicroServices/Business/Bussiness.Domain.Test/bin/Debug/net6.0/ThoughtWorks.QRCode.dll
+MicroServices/Business/Bussiness.Domain.Test/bin/Debug/net6.0/runtimes/linux-s390x/native/libe_sqlite3.so
+MicroServices/Business/Bussiness.Domain.Test/bin/Debug/net6.0/runtimes/osx-arm64/native/libe_sqlite3.dylib
+MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll
+MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/ThoughtWorks.QRCode.dll
+MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/runtimes/linux-s390x/native/libe_sqlite3.so
+MicroServices/Business/Bussiness.EntityFrameworkCore.Test/bin/Debug/net6.0/runtimes/osx-arm64/native/libe_sqlite3.dylib

+ 1 - 1
MicroServices/Business/Business.Core/Business.Core.csproj

@@ -14,8 +14,8 @@
     <PackageReference Include="NLog" Version="5.1.2" />
     <PackageReference Include="NLog.Extensions.Logging" Version="5.2.2" />
     <PackageReference Include="NLog.Web.AspNetCore" Version="5.2.2" />
-    <PackageReference Include="Spire.Barcode" Version="3.5.0" />
     <PackageReference Include="Spire.PDF" Version="4.11.3" />
+    <PackageReference Include="ThoughtWorks.QRCode" Version="1.1.0" />
     <PackageReference Include="Volo.Abp.Ddd.Domain" Version="6.0.0" />
   </ItemGroup>
 

+ 72 - 24
MicroServices/Business/Business.Core/Utilities/QRcodeHelper.cs

@@ -1,6 +1,7 @@
 using SharpCompress.Common;
-using Spire.Barcode;
+//using Spire.Barcode;
 using Spire.Pdf;
+using Spire.Pdf.Barcode;
 using Spire.Pdf.Graphics;
 using System;
 using System.Collections.Generic;
@@ -8,6 +9,7 @@ using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using ThoughtWorks.QRCode.Codec;
 using static System.Formats.Asn1.AsnWriter;
 
 namespace Business.Core.Utilities
@@ -20,9 +22,40 @@ namespace Business.Core.Utilities
         /// <summary>
         /// 生成二维码
         /// </summary>
-        /// <param name="filePath"></param>
-        /// <param name="context"></param>
-        public void GenerateQrCode(string filePath, string context)
+        /// <param name="context">二维码内容</param>
+        public Image GenerateQrCode(string context)
+        {
+            //使用ThoughtWorks.QRCode.Codec生成二维码
+            QRCodeEncoder qRCode = new QRCodeEncoder();
+            qRCode.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;          //编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
+            qRCode.QRCodeScale = 2;                                            //大小(值越大生成的二维码图片像素越高)-值越大,二维码图片越大
+            qRCode.QRCodeVersion = 0;                                          //版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
+            qRCode.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;      //错误效验、错误更正(有4个等级)
+            qRCode.QRCodeBackgroundColor = Color.White;                        //背景色
+            qRCode.QRCodeForegroundColor = Color.Black;                        //前景色
+            System.Drawing.Bitmap bt = qRCode.Encode(context, Encoding.UTF8);
+
+            //bt.Save("二维码文件保存路径");//如果需要保存二维码,则返回文件路径即可
+            return bt;
+        }
+
+        /// <summary>
+        /// 生成条形码
+        /// </summary>
+        /// <param name="context">条形码内容</param>
+        public void GenerateBarcode(string context)
+        {
+            
+        }
+
+        /// <summary>
+        /// Pdf文档添加二维码
+        /// </summary>
+        /// <param name="filePath">文件路径</param>
+        /// <param name="context">二维码内容</param>
+        /// <param name="x">x轴偏移量</param>
+        /// <param name="y">y轴偏移量</param>
+        public void PdfAddQrCode(string filePath, string context,int x,int y)
         {
             PdfDocument pdf = new PdfDocument();
             //读取文件
@@ -30,38 +63,53 @@ namespace Business.Core.Utilities
             PdfPageBase pb = pdf.Pages.Add();
             pdf.Pages.Remove(pb);
 
-            //使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建二维码图形
-            Spire.Barcode.BarcodeSettings settings = new BarcodeSettings();
-            settings.Type = BarCodeType.QRCode;
-            settings.Data = context;
-            settings.X = 0.7f;
-            settings.LeftMargin = 0;
-            settings.ShowText = false;
-            settings.AutoResize=true;
-            settings.ShowCheckSumChar = false;
-            settings.QRCodeECL = QRCodeECL.Q;
-            settings.QRCodeDataMode = QRCodeDataMode.Numeric;
-            Spire.Barcode.BarCodeGenerator generator = new BarCodeGenerator(settings);
-            Image image = generator.GenerateImage(new Size(20,20));
+            //生成二维码
+            Image image = GenerateQrCode(context);
 
-            //绘制二维码图形到PDF
+            //循环每一页,绘制二维码图形到PDF
             PdfImage pdfImage = PdfImage.FromImage(image);
             for (int i = 0; i < pdf.Pages.Count; i++)
             {
                 var page = pdf.Pages[i];
-                page.Canvas.DrawImage(pdfImage, page.Size.Width - pdfImage.Width + 9, 0);
+                //自定义位置
+                page.Canvas.DrawImage(pdfImage, x, y);
             }
-
             //保存文档
             pdf.SaveToFile(filePath);
         }
 
         /// <summary>
-        /// 生成条形码
+        /// Pdf文档添加条形码
         /// </summary>
-        public void GenerateBarcode()
-        { 
-        
+        /// <param name="filePath">文件路径</param>
+        /// <param name="context">挑衅码内容</param>
+        /// <param name="x">x轴偏移量</param>
+        /// <param name="y">y轴偏移量</param>
+        public void PdfAddBarcode(string filePath, string context, int x, int y)
+        {
+            PdfDocument pdf = new PdfDocument();
+            //读取文件
+            pdf.LoadFromFile(filePath);
+            PdfPageBase pb = pdf.Pages.Add();
+            pdf.Pages.Remove(pb);
+            //生成条形码
+            PdfCode39Barcode pdfCode = new PdfCode39Barcode(context);   //构造条形码内容
+            pdfCode.BarcodeToTextGapHeight = 2f;
+            pdfCode.TextDisplayLocation = TextLocation.Bottom;          //条形码文字位置
+            pdfCode.BarHeight = 40;                                     //高度
+            pdfCode.NarrowBarWidth = 0.5f;                              //宽度比例
+            pdfCode.TextColor = Color.Black;                            //文字颜色
+
+            //绘制条形码图形到PDF
+            for (int i = 0; i < pdf.Pages.Count; i++)
+            {
+                var page = pdf.Pages[i];
+                //自定义位置
+                pdfCode.Draw(page, new Point(x, y));
+            }
+            //保存文档
+            pdf.SaveToFile(filePath);
         }
+
     }
 }

+ 53 - 7
MicroServices/Business/Business.HttpApi/Controllers/QRcodeController.cs

@@ -7,6 +7,7 @@ using System.Text;
 using System.Threading.Tasks;
 using Volo.Abp.AspNetCore.Mvc;
 using Volo.Abp;
+using System.Drawing;
 
 namespace Business.Controllers
 {
@@ -15,20 +16,65 @@ namespace Business.Controllers
     /// </summary>
     [RemoteService]
     [Area("Business")]
-    [Route("api/business/qrcode")]
+    [Route("api/business/codehelper")]
     public class QRcodeController : AbpController
     {
         /// <summary>
-        /// 雪花算法
+        /// 生成二维码
         /// </summary>
-        /// <returns></returns>
+        /// <param name="context">二维码内容</param>
         [HttpGet]
-        public void GenerateQrCode()
+        [Route("generate_qrcode")]
+        public Image GenerateQrCode(string context)
         {
+            //二维码帮助类
             QRcodeHelper qRcode = new QRcodeHelper();
-            string filePath = @"D:\test\销售出库单.pdf";
-            string context = "AXSCK230201473";
-            qRcode.GenerateQrCode(filePath, context);
+            //生成二维码
+            return qRcode.GenerateQrCode(context);
+        }
+
+        ///// <summary>
+        ///// 生成条形码
+        ///// </summary>
+        ///// <param name="context">条形码内容</param>
+        //[HttpGet]
+        //[Route("generate_barcode")]
+        //public void GenerateBarcode(string context)
+        //{
+        //    QRcodeHelper qRcode = new QRcodeHelper();
+        //    qRcode.GenerateBarcode(context);
+        //}
+
+        /// <summary>
+        /// Pdf文档添加二维码
+        /// </summary>
+        /// <param name="filePath">文件路径</param>
+        /// <param name="context">二维码内容</param>
+        /// <param name="x">x轴偏移量</param>
+        /// <param name="y">y轴偏移量</param>
+        [HttpGet]
+        [Route("pdfaddqrcode")]
+        public void PdfAddQrCode(string filePath, string context, int x, int y)
+        {
+            //二维码帮助类
+            QRcodeHelper qRcode = new QRcodeHelper();
+            //生成二维码
+            qRcode.PdfAddQrCode(filePath, context, x, y);
+        }
+
+        /// <summary>
+        /// Pdf文档添加条形码
+        /// </summary>
+        /// <param name="filePath">文件路径</param>
+        /// <param name="context">挑衅码内容</param>
+        /// <param name="x">x轴偏移量</param>
+        /// <param name="y">y轴偏移量</param>
+        [HttpGet]
+        [Route("pdfaddbarcode")]
+        public void PdfAddBarcode(string filePath, string context, int x, int y)
+        {
+            QRcodeHelper qRcode = new QRcodeHelper();
+            qRcode.PdfAddBarcode(filePath, context, x, y);
         }
     }
 }