我重写了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有点......没什么。
答案 0 :(得分:1)
此处的问题是,您为BarcodeEAN
的{{1}}媒体资源提供了无效的EAN条形码值。 EAN条形码值必须具有特定格式,包括最小字符要求,最后一个数字是校验和。您可以找到有关此格式的更多信息here。
有足够的资源可用于验证EAN条形码值。在codeproject.com上有an article的C#代码将验证EAN13条形码,并且还将计算给定的12位EAN13条形码值的校验和数字。