iTextSharp IndexOutOfRange添加类似文档的条形码时出现异常

时间:2012-06-29 14:38:01

标签: itextsharp barcode indexoutofboundsexception

我重写了iText(Java)的例子 http://itextpdf.com/examples/iia.php?id=297 在iTextSharp(C#)中就像这样..

var document = new Document(PageSize.A4);
        var writer = PdfWriter.GetInstance(document,
                                                 new FileStream(Path, FileMode.Create, FileAccess.Write,
                                                                FileShare.None));
        document.Open();
        var cb = writer.DirectContent;
        document.Add(new Paragraph("Barcode EAN.UCC-13"));
        var codeEan = new BarcodeEAN {Code = "230482304"};
        document.Add(new Paragraph("default:"));
        document.Add(codeEan.CreateImageWithBarcode(cb, BaseColor.BLACK, BaseColor.WHITE));
        codeEan.GuardBars = false;
        document.Add(new Paragraph("without guard bars:"));
        Image i = codeEan.CreateImageWithBarcode(cb, null, null);
        document.Add(i);
        codeEan.Baseline = -1f;
        codeEan.GuardBars = true;
        document.Add(new Paragraph("text above:"));
        document.Add(codeEan.CreateImageWithBarcode(cb, null, null));
        codeEan.Baseline = codeEan.Size;
        document.Close();

但获得以下异常

Index was outside the bounds of the array.

       at iTextSharp.text.pdf.BarcodeEAN.GetBarsEAN13(String _code)
   at iTextSharp.text.pdf.BarcodeEAN.PlaceBarcode(PdfContentByte cb, BaseColor barColor, BaseColor textColor)
   at iTextSharp.text.pdf.Barcode.CreateTemplateWithBarcode(PdfContentByte cb, BaseColor barColor, BaseColor textColor)
   at iTextSharp.text.pdf.Barcode.CreateImageWithBarcode(PdfContentByte cb, BaseColor barColor, BaseColor textColor)

我的错误在哪里?它的1:1示例就在那里...我没有为C#找到一些东西,但是一个C#端口而没有Doku有点......没什么。

1 个答案:

答案 0 :(得分:1)

此处的问题是,您为BarcodeEAN的{​​{1}}媒体资源提供了无效的EAN条形码值。 EAN条形码值必须具有特定格式,包括最小字符要求,最后一个数字是校验和。您可以找到有关此格式的更多信息here

有足够的资源可用于验证EAN条形码值。在codeproject.com上有an article的C#代码将验证EAN13条形码,并且还将计算给定的12位EAN13条形码值的校验和数字。