QRcodeHelper.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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="filePath">文件路径</param>
  25. /// <param name="context">二维码内容</param>
  26. /// <param name="x">x轴偏移量</param>
  27. /// <param name="y">y轴偏移量</param>
  28. public void GenerateQrCode(string filePath, string context,int x,int y)
  29. {
  30. PdfDocument pdf = new PdfDocument();
  31. //读取文件
  32. pdf.LoadFromFile(filePath);
  33. PdfPageBase pb = pdf.Pages.Add();
  34. pdf.Pages.Remove(pb);
  35. //生成二维码
  36. QRCodeEncoder qRCode = new QRCodeEncoder();
  37. qRCode.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
  38. qRCode.QRCodeScale = 2; //大小(值越大生成的二维码图片像素越高)-值越大,二维码图片越大
  39. qRCode.QRCodeVersion = 0; //版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
  40. qRCode.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //错误效验、错误更正(有4个等级)
  41. qRCode.QRCodeBackgroundColor = Color.White; //背景色
  42. qRCode.QRCodeForegroundColor = Color.Black; //前景色
  43. System.Drawing.Bitmap bt = qRCode.Encode(context, Encoding.UTF8);
  44. //循环每一页,绘制二维码图形到PDF
  45. PdfImage pdfImage = PdfImage.FromImage(bt);
  46. for (int i = 0; i < pdf.Pages.Count; i++)
  47. {
  48. var page = pdf.Pages[i];
  49. //位于页面右上角
  50. //page.Canvas.DrawImage(pdfImage, page.Size.Width - pdfImage.Width - 20, 10);
  51. //自定义位置
  52. page.Canvas.DrawImage(pdfImage, x, y);
  53. }
  54. //保存文档
  55. pdf.SaveToFile(filePath);
  56. }
  57. /// <summary>
  58. /// 生成条形码
  59. /// </summary>
  60. /// <param name="filePath">文件路径</param>
  61. /// <param name="context">挑衅码内容</param>
  62. /// <param name="x">x轴偏移量</param>
  63. /// <param name="y">y轴偏移量</param>
  64. public void GenerateBarcode(string filePath, string context, int x, int y)
  65. {
  66. PdfDocument pdf = new PdfDocument();
  67. //读取文件
  68. pdf.LoadFromFile(filePath);
  69. PdfPageBase pb = pdf.Pages.Add();
  70. pdf.Pages.Remove(pb);
  71. PdfCode39Barcode pdfCode = new PdfCode39Barcode(context);
  72. pdfCode.BarcodeToTextGapHeight = 2f;
  73. pdfCode.TextDisplayLocation = TextLocation.Bottom;
  74. pdfCode.BarHeight = 40;
  75. pdfCode.NarrowBarWidth = 0.5f;
  76. pdfCode.TextColor = Color.Black;
  77. //绘制二维码图形到PDF
  78. for (int i = 0; i < pdf.Pages.Count; i++)
  79. {
  80. var page = pdf.Pages[i];
  81. //位于页面底部中间
  82. //pdfCode.Draw(page, new Point((int)(page.Size.Width / 2 - pdfCode.Size.Width / 2), (int)(page.Size.Height - pdfCode.Size.Height)));
  83. //自定义位置
  84. pdfCode.Draw(page, new Point(x, y));
  85. }
  86. //保存文档
  87. pdf.SaveToFile(filePath);
  88. }
  89. #region spire.barcode生成二维码和条形吗
  90. ///// <summary>
  91. ///// 生成二维码
  92. ///// </summary>
  93. ///// <param name="filePath"></param>
  94. ///// <param name="context"></param>
  95. //public void GenerateQrCode(string filePath, string context)
  96. //{
  97. // PdfDocument pdf = new PdfDocument();
  98. // //读取文件
  99. // pdf.LoadFromFile(filePath);
  100. // PdfPageBase pb = pdf.Pages.Add();
  101. // pdf.Pages.Remove(pb);
  102. // //使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建二维码图形
  103. // Spire.Barcode.BarcodeSettings settings = new BarcodeSettings();
  104. // settings.Type = BarCodeType.QRCode;
  105. // settings.Data = context;
  106. // settings.Data2D = context;
  107. // settings.X = 0.7f;
  108. // settings.LeftMargin = 0;
  109. // settings.ShowText = false;
  110. // settings.AutoResize=true;
  111. // settings.ShowCheckSumChar = false;
  112. // settings.QRCodeECL = QRCodeECL.Q;
  113. // settings.QRCodeDataMode = QRCodeDataMode.Numeric;
  114. // Spire.Barcode.BarCodeGenerator generator = new BarCodeGenerator(settings);
  115. // Image image = generator.GenerateImage(new Size(20,20));
  116. // //绘制二维码图形到PDF
  117. // PdfImage pdfImage = PdfImage.FromImage(image);
  118. // for (int i = 0; i < pdf.Pages.Count; i++)
  119. // {
  120. // var page = pdf.Pages[i];
  121. // page.Canvas.DrawImage(pdfImage, page.Size.Width - pdfImage.Width + 9, 0);
  122. // }
  123. // //保存文档
  124. // pdf.SaveToFile(filePath);
  125. //}
  126. ///// <summary>
  127. ///// 生成条形码
  128. ///// </summary>
  129. ///// <param name="filePath"></param>
  130. ///// <param name="context"></param>
  131. //public void GenerateBarcode(string filePath, string context, string savePath)
  132. //{
  133. //PdfDocument pdf = new PdfDocument();
  134. ////读取文件
  135. //pdf.LoadFromFile(filePath);
  136. //PdfPageBase pb = pdf.Pages.Add();
  137. //pdf.Pages.Remove(pb);
  138. ////使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建条形码图形
  139. //Spire.Barcode.BarcodeSettings settings = new BarcodeSettings();
  140. //settings.Type = BarCodeType.Codabar;
  141. //settings.Data = context;
  142. //settings.Data2D = context;
  143. //settings.ShowText = false;
  144. //settings.ShowTopText = false;
  145. //settings.ShowTextOnBottom = false;
  146. //settings.ShowCheckSumChar = false;
  147. //Spire.Barcode.BarCodeGenerator generator = new BarCodeGenerator(settings);
  148. //Image image = generator.GenerateImage(new Size(40,20));
  149. ////绘制二维码图形到PDF
  150. //PdfImage pdfImage = PdfImage.FromImage(image);
  151. //for (int i = 0; i < pdf.Pages.Count; i++)
  152. //{
  153. // var page = pdf.Pages[i];
  154. // page.Canvas.DrawImage(pdfImage, page.Size.Width / 2 - pdfImage.Width / 2, page.Size.Height - pdfImage.Height);
  155. //}
  156. ////保存文档
  157. //pdf.SaveToFile(savePath);
  158. //}
  159. #endregion
  160. }
  161. }