使用 iTextSharp 和 IronBarcode / QRCoder / Spire Barcode 生成 QR 码

Jul*_*sen 1 qr-code itext ironbarcode

IronBarcode(首选)

我们想要使用 iTextSharp 在标签中打印 QR 码。我们使用 IronBarcode 来生成条形码。另请参阅:IronBarcode 教程

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);
Run Code Online (Sandbox Code Playgroud)

错误:

"GeneratedBarcode" contain no defintion for "GetInstance", and there is no method who would accept an argument from typ "GeneratedBarcode".

二维码编码器

我们还尝试使用 QRCoder / 在这里找到:QRCoder 教程

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);
Run Code Online (Sandbox Code Playgroud)

错误:

"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());
}
Run Code Online (Sandbox Code Playgroud)

第二步,我们想要将图像添加到条形码中,首选是 IronBarcode 的解决方案。

小智 5

如果您使用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();
Run Code Online (Sandbox Code Playgroud)