使用 iTextSharp 和 IronBarcode / QRCoder / Spire Barcode 的二维码
QR Code with iTextSharp and IronBarcode / QRCoder / Spire Barcode
IronBarcode(首选)
我们想用 iTextSharp 在标签中打印二维码。我们使用 IronBarcode 来生成条形码。另见:IronBarcode Tutorial
var label = new Label(Enums.Alignment.CENTER);
// label.AddText("Nr. " + index.ToString("000000"), "Verdana", 12, embedFont: true); // YEAH this works fine
var qrcode = QRCodeWriter.CreateQrCode(index.ToString(), 100);
var image = qrcode.GetInstance(); image.ScaleToFitHeight = false;
label.AddImage(image);
labelCreator.AddLabel(label);
错误:
"GeneratedBarcode" contain no defintion for "GetInstance", and there is no method who would accept an argument from typ "GeneratedBarcode".
QRCoder
我们也用 QRCoder 尝试过/在这里找到:QRCoder Tutorial
var label = new Label(Enums.Alignment.CENTER);
// label.AddText("Nr. " + index.ToString("000000"), "Verdana", 12, embedFont: true); // YEAH this works fine
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(index.ToString(), QRCodeGenerator.ECCLevel.Q);
var qrCode = new Base64QRCode(qrCodeData);
var qrCodeImageAsBase64 = qrCode.GetGraphic(8);
var imageBytes = Convert.FromBase64String(qrCodeImageAsBase64);
var image = Image.GetInstance(imageBytes);
image.ScaleAbsoluteWidth(40);
image.ScaleAbsoluteHeight(40);
label.AddImage(image);
labelCreator.AddLabel(label);
错误:
"Image" contain no defintion for "GetInstance".
其他试试
如果我们使用using iTextSharp.text;
和using iTextSharp.text.pdf;
错误:
Argument "1": Convert from "iTextSharp.text.Image" to "System.IO.Stream" not possible
我们如何解决这个问题?感谢您的输入!
~编辑
这是我们从 label.cs
添加图像的函数。看看我们用作基本的这个项目:SharpPDFLabel.
public void AddImage(Stream img)
{
var mem = new System.IO.MemoryStream();
CopyStream(img, mem);
_images.Add(mem.GetBuffer());
}
第二步我们想在条形码中添加图像,首选是 IronBarcode 的解决方案。
如果您使用 iTextSharp 为什么不在 iTextSharp 中完全使用?
GeneratedPdf generatedPDF = new GeneratedPdf();
Document document = new Document();
string path = @"C:\Temp\";
string originalFileName = "qr.pdf";
PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(path + originalFileName, FileMode.Create));
document.Open();
string strBarCodeValue = "hello world";
BarcodeQRCode barcodeQRCode = new BarcodeQRCode(strBarCodeValue, 20, 20, null) ;
document.Add(barcodeQRCode.GetImage());
document.Close();
解决方案
我们打开一个 MemoryStream 并将我们的二维码/图片放入其中。在它们背后的函数中,我们想要读取“Stream qrstream”。它必须是“MemoryStream qrstream”。
我们现在使用“Spire Barcode”而不是“IronBarcode”或“QRCoder”
错误
public void AddImage(Stream qrstream)
{
// var mem = new MemoryStream(); // not needed
// CopyStream(qrstream, mem); // not needed
_images.Add(qrstream.GetBuffer());
}
正确
public void AddImage(MemoryStream qrstream)
{
// var mem = new MemoryStream(); // not needed
// CopyStream(qrstream, mem); // not needed
_images.Add(qrstream.GetBuffer());
}
创建流的函数
//Create a BarcodeSettings object
BarcodeSettings settings = new BarcodeSettings();
//Set barcode type, error correction level, data, etc.
settings.Type = BarCodeType.QRCode;
settings.QRCodeECL = QRCodeECL.H;
settings.X = 1.4f;
settings.AutoResize = true;
settings.HasBorder = false;
settings.ShowText = false;
string data = "MY TEXT IN QR CODE";
settings.Data = data;
settings.Data2D = data;
//Generate QR image based on the settings
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.GenerateImage();
// Put Image to Stream
var qrstream = new System.IO.MemoryStream();
image.Save(qrstream, System.Drawing.Imaging.ImageFormat.Png);
// Put QR Code to Label as Image
label.AddImage(qrstream);
向单元格添加图像的函数
foreach (var img in _images)
{
var pdfImg = iTextSharp.text.Image.GetInstance(img);
cellContent.Add(new Chunk(pdfImg, 0, 0));
}
运行现在,太棒了!
IronBarcode 没有任何具有此名称的函数 GetInstance()
您可以使用 qrcode.Image 属性 那个 return System.Drawing.Image 对象
还有很多 return 不同类型的函数
qrcode.ToBitmap() 、 qrcode.ToImage() 、 qrcode.ToStream 和许多其他
你可以在 IronSoftware Website here
中找到它们
我写了一个代码片段,展示了如何创建包含徽标和注释的二维码
var qrcode = QRCodeWriter.CreateQrCodeWithLogo(index.ToString(), @"MyLogo.png");
qrcode.AddAnnotationTextBelowBarcode(index.ToString());
var image = qrcode.Image;
label.AddImage(image);
labelCreator.AddLabel(label);
您可以进一步了解 IronBarcode IronSoftware Tutorials here
IronBarcode(首选)
我们想用 iTextSharp 在标签中打印二维码。我们使用 IronBarcode 来生成条形码。另见:IronBarcode Tutorial
var label = new Label(Enums.Alignment.CENTER);
// label.AddText("Nr. " + index.ToString("000000"), "Verdana", 12, embedFont: true); // YEAH this works fine
var qrcode = QRCodeWriter.CreateQrCode(index.ToString(), 100);
var image = qrcode.GetInstance(); image.ScaleToFitHeight = false;
label.AddImage(image);
labelCreator.AddLabel(label);
错误:
"GeneratedBarcode" contain no defintion for "GetInstance", and there is no method who would accept an argument from typ "GeneratedBarcode".
QRCoder
我们也用 QRCoder 尝试过/在这里找到:QRCoder Tutorial
var label = new Label(Enums.Alignment.CENTER);
// label.AddText("Nr. " + index.ToString("000000"), "Verdana", 12, embedFont: true); // YEAH this works fine
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(index.ToString(), QRCodeGenerator.ECCLevel.Q);
var qrCode = new Base64QRCode(qrCodeData);
var qrCodeImageAsBase64 = qrCode.GetGraphic(8);
var imageBytes = Convert.FromBase64String(qrCodeImageAsBase64);
var image = Image.GetInstance(imageBytes);
image.ScaleAbsoluteWidth(40);
image.ScaleAbsoluteHeight(40);
label.AddImage(image);
labelCreator.AddLabel(label);
错误:
"Image" contain no defintion for "GetInstance".
其他试试
如果我们使用using iTextSharp.text;
和using iTextSharp.text.pdf;
错误:
Argument "1": Convert from "iTextSharp.text.Image" to "System.IO.Stream" not possible
我们如何解决这个问题?感谢您的输入!
~编辑
这是我们从 label.cs
添加图像的函数。看看我们用作基本的这个项目:SharpPDFLabel.
public void AddImage(Stream img)
{
var mem = new System.IO.MemoryStream();
CopyStream(img, mem);
_images.Add(mem.GetBuffer());
}
第二步我们想在条形码中添加图像,首选是 IronBarcode 的解决方案。
如果您使用 iTextSharp 为什么不在 iTextSharp 中完全使用?
GeneratedPdf generatedPDF = new GeneratedPdf();
Document document = new Document();
string path = @"C:\Temp\";
string originalFileName = "qr.pdf";
PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(path + originalFileName, FileMode.Create));
document.Open();
string strBarCodeValue = "hello world";
BarcodeQRCode barcodeQRCode = new BarcodeQRCode(strBarCodeValue, 20, 20, null) ;
document.Add(barcodeQRCode.GetImage());
document.Close();
解决方案
我们打开一个 MemoryStream 并将我们的二维码/图片放入其中。在它们背后的函数中,我们想要读取“Stream qrstream”。它必须是“MemoryStream qrstream”。
我们现在使用“Spire Barcode”而不是“IronBarcode”或“QRCoder”
错误
public void AddImage(Stream qrstream)
{
// var mem = new MemoryStream(); // not needed
// CopyStream(qrstream, mem); // not needed
_images.Add(qrstream.GetBuffer());
}
正确
public void AddImage(MemoryStream qrstream)
{
// var mem = new MemoryStream(); // not needed
// CopyStream(qrstream, mem); // not needed
_images.Add(qrstream.GetBuffer());
}
创建流的函数
//Create a BarcodeSettings object
BarcodeSettings settings = new BarcodeSettings();
//Set barcode type, error correction level, data, etc.
settings.Type = BarCodeType.QRCode;
settings.QRCodeECL = QRCodeECL.H;
settings.X = 1.4f;
settings.AutoResize = true;
settings.HasBorder = false;
settings.ShowText = false;
string data = "MY TEXT IN QR CODE";
settings.Data = data;
settings.Data2D = data;
//Generate QR image based on the settings
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.GenerateImage();
// Put Image to Stream
var qrstream = new System.IO.MemoryStream();
image.Save(qrstream, System.Drawing.Imaging.ImageFormat.Png);
// Put QR Code to Label as Image
label.AddImage(qrstream);
向单元格添加图像的函数
foreach (var img in _images)
{
var pdfImg = iTextSharp.text.Image.GetInstance(img);
cellContent.Add(new Chunk(pdfImg, 0, 0));
}
运行现在,太棒了!
IronBarcode 没有任何具有此名称的函数 GetInstance() 您可以使用 qrcode.Image 属性 那个 return System.Drawing.Image 对象 还有很多 return 不同类型的函数 qrcode.ToBitmap() 、 qrcode.ToImage() 、 qrcode.ToStream 和许多其他 你可以在 IronSoftware Website here
中找到它们我写了一个代码片段,展示了如何创建包含徽标和注释的二维码
var qrcode = QRCodeWriter.CreateQrCodeWithLogo(index.ToString(), @"MyLogo.png");
qrcode.AddAnnotationTextBelowBarcode(index.ToString());
var image = qrcode.Image;
label.AddImage(image);
labelCreator.AddLabel(label);
您可以进一步了解 IronBarcode IronSoftware Tutorials here