using SharpCompress.Common; //using Spire.Barcode; using Spire.Pdf; using Spire.Pdf.Barcode; using Spire.Pdf.Graphics; using System; using System.Collections.Generic; 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 { /// /// 二维码生成工具 /// public class QRcodeHelper { /// /// 生成二维码 /// /// 文件路径 /// 二维码内容 /// x轴偏移量 /// y轴偏移量 public void GenerateQrCode(string filePath, string context,int x,int y) { PdfDocument pdf = new PdfDocument(); //读取文件 pdf.LoadFromFile(filePath); PdfPageBase pb = pdf.Pages.Add(); pdf.Pages.Remove(pb); //生成二维码 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); //循环每一页,绘制二维码图形到PDF PdfImage pdfImage = PdfImage.FromImage(bt); for (int i = 0; i < pdf.Pages.Count; i++) { var page = pdf.Pages[i]; //位于页面右上角 //page.Canvas.DrawImage(pdfImage, page.Size.Width - pdfImage.Width - 20, 10); //自定义位置 page.Canvas.DrawImage(pdfImage, x, y); } //保存文档 pdf.SaveToFile(filePath); } /// /// 生成条形码 /// /// 文件路径 /// 挑衅码内容 /// x轴偏移量 /// y轴偏移量 public void GenerateBarcode(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((int)(page.Size.Width / 2 - pdfCode.Size.Width / 2), (int)(page.Size.Height - pdfCode.Size.Height))); //自定义位置 pdfCode.Draw(page, new Point(x, y)); } //保存文档 pdf.SaveToFile(filePath); } #region spire.barcode生成二维码和条形吗 ///// ///// 生成二维码 ///// ///// ///// //public void GenerateQrCode(string filePath, string context) //{ // PdfDocument pdf = new PdfDocument(); // //读取文件 // pdf.LoadFromFile(filePath); // 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.Data2D = 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)); // //绘制二维码图形到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); // } // //保存文档 // pdf.SaveToFile(filePath); //} ///// ///// 生成条形码 ///// ///// ///// //public void GenerateBarcode(string filePath, string context, string savePath) //{ //PdfDocument pdf = new PdfDocument(); ////读取文件 //pdf.LoadFromFile(filePath); //PdfPageBase pb = pdf.Pages.Add(); //pdf.Pages.Remove(pb); ////使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建条形码图形 //Spire.Barcode.BarcodeSettings settings = new BarcodeSettings(); //settings.Type = BarCodeType.Codabar; //settings.Data = context; //settings.Data2D = context; //settings.ShowText = false; //settings.ShowTopText = false; //settings.ShowTextOnBottom = false; //settings.ShowCheckSumChar = false; //Spire.Barcode.BarCodeGenerator generator = new BarCodeGenerator(settings); //Image image = generator.GenerateImage(new Size(40,20)); ////绘制二维码图形到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 / 2 - pdfImage.Width / 2, page.Size.Height - pdfImage.Height); //} ////保存文档 //pdf.SaveToFile(savePath); //} #endregion } }