QRcodeHelper.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using SharpCompress.Common;
  2. //using Spire.Barcode;
  3. using Spire.Pdf;
  4. using Spire.Pdf.Barcode;
  5. using Spire.Pdf.Graphics;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using ThoughtWorks.QRCode.Codec;
  13. using static System.Formats.Asn1.AsnWriter;
  14. namespace Business.Core.Utilities
  15. {
  16. /// <summary>
  17. /// 二维码生成工具
  18. /// </summary>
  19. public class QRcodeHelper
  20. {
  21. /// <summary>
  22. /// 生成二维码
  23. /// </summary>
  24. /// <param name="context">二维码内容</param>
  25. public Image GenerateQrCode(string context)
  26. {
  27. //使用ThoughtWorks.QRCode.Codec生成二维码
  28. QRCodeEncoder qRCode = new QRCodeEncoder();
  29. qRCode.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
  30. qRCode.QRCodeScale = 2; //大小(值越大生成的二维码图片像素越高)-值越大,二维码图片越大
  31. qRCode.QRCodeVersion = 0; //版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
  32. qRCode.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //错误效验、错误更正(有4个等级)
  33. qRCode.QRCodeBackgroundColor = Color.White; //背景色
  34. qRCode.QRCodeForegroundColor = Color.Black; //前景色
  35. System.Drawing.Bitmap bt = qRCode.Encode(context, Encoding.UTF8);
  36. //bt.Save("二维码文件保存路径");//如果需要保存二维码,则返回文件路径即可
  37. return bt;
  38. }
  39. /// <summary>
  40. /// 生成条形码
  41. /// </summary>
  42. /// <param name="context">条形码内容</param>
  43. public void GenerateBarcode(string context)
  44. {
  45. }
  46. /// <summary>
  47. /// Pdf文档添加二维码
  48. /// </summary>
  49. /// <param name="filePath">文件路径</param>
  50. /// <param name="context">二维码内容</param>
  51. /// <param name="x">x轴偏移量</param>
  52. /// <param name="y">y轴偏移量</param>
  53. public void PdfAddQrCode(string filePath, string context,int x,int y)
  54. {
  55. PdfDocument pdf = new PdfDocument();
  56. //读取文件
  57. pdf.LoadFromFile(filePath);
  58. PdfPageBase pb = pdf.Pages.Add();
  59. pdf.Pages.Remove(pb);
  60. //生成二维码
  61. Image image = GenerateQrCode(context);
  62. //循环每一页,绘制二维码图形到PDF
  63. PdfImage pdfImage = PdfImage.FromImage(image);
  64. for (int i = 0; i < pdf.Pages.Count; i++)
  65. {
  66. var page = pdf.Pages[i];
  67. //自定义位置
  68. page.Canvas.DrawImage(pdfImage, x, y);
  69. }
  70. //保存文档
  71. pdf.SaveToFile(filePath);
  72. }
  73. /// <summary>
  74. /// Pdf文档添加条形码
  75. /// </summary>
  76. /// <param name="filePath">文件路径</param>
  77. /// <param name="context">挑衅码内容</param>
  78. /// <param name="x">x轴偏移量</param>
  79. /// <param name="y">y轴偏移量</param>
  80. public void PdfAddBarcode(string filePath, string context, int x, int y)
  81. {
  82. PdfDocument pdf = new PdfDocument();
  83. //读取文件
  84. pdf.LoadFromFile(filePath);
  85. PdfPageBase pb = pdf.Pages.Add();
  86. pdf.Pages.Remove(pb);
  87. //生成条形码
  88. PdfCode39Barcode pdfCode = new PdfCode39Barcode(context); //构造条形码内容
  89. pdfCode.BarcodeToTextGapHeight = 2f;
  90. pdfCode.TextDisplayLocation = TextLocation.Bottom; //条形码文字位置
  91. pdfCode.BarHeight = 40; //高度
  92. pdfCode.NarrowBarWidth = 0.5f; //宽度比例
  93. pdfCode.TextColor = Color.Black; //文字颜色
  94. //绘制条形码图形到PDF
  95. for (int i = 0; i < pdf.Pages.Count; i++)
  96. {
  97. var page = pdf.Pages[i];
  98. //自定义位置
  99. pdfCode.Draw(page, new Point(x, y));
  100. }
  101. //保存文档
  102. pdf.SaveToFile(filePath);
  103. }
  104. }
  105. }