2011-02-07 5 views
7

바코드를 생성하려면 응용 프로그램에서 iTextSharp를 사용하고 있습니다. 원하는대로 모든 작업을하고 있지만 첨부 된 이미지에 표시된 것과 같은 바코드 아래에 바코드 값을 표시해야합니다. 이것은 인터넷을 검색하는 동안 내가 찾은 코드텍스트가있는 바코드 ItextSharp 사용 중

Barcode39 barcodeImg = new Barcode39(); 
barcodeImg.Code = barcodeValue.ToString(); 
barcodeImg.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White).Save(stream, ImageFormat.Png); 
+0

[this] (http://stackoverflow.com/questions/3215522/itextsharp-adding-text-plus-barcode-in-a-single-cell) help? –

답변

6

: Sample Barcode

다음은 내가 사용하는 C# 코드입니다. 희망이 당신의 문제를 해결 :

string prodCode = context.Request.QueryString.Get("code"); 
context.Response.ContentType = "image/gif"; 
if (prodCode.Length > 0) 
{ 
    Barcode128 code128   = new Barcode128(); 
    code128.CodeType   = Barcode.CODE128; 
    code128.ChecksumText  = true; 
    code128.GenerateChecksum = true; 
    code128.StartStopText  = true; 
    code128.Code    = prodCode; 
    System.Drawing.Bitmap bm = new System.Drawing.Bitmap(code128.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White)); 
    bm.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);    
} 
+0

죄송 합니다만 바코드 아래에 텍스트가 표시되지 않습니다. 도와 줘서 고마워. – acadia

+4

롤! 그 스 니펫은 내 블로그에있는 것처럼 보인다! http://www.jphellemons.nl/post/Make-a-code128-barcode-with-C-sharp-and-iTextSharp.aspx –

0

아. 글꼴을 설정해야합니다. FontFactory.registerDirectories()FontFactory.getFont(name)을 사용하는 것이 좋습니다.

registerDirectories()은 OS가 글꼴 저장에 사용하는 것으로 알려진 모든 디렉토리를 나열합니다. 윈도우 (어떤 맛이든)는 아무런 문제가되지 않습니다. 끝나면 공장에서 쉽게 글꼴을 가져올 수 있습니다. 필자가 알고있는 모든 바코드 기호는 기본 인코딩에 아무런 문제가 없어야하므로 경로를 알기보다는 기본 글꼴 이름을 묻는 것이 필요합니다. FontFactory는 모든 경로 정보를 추적합니다. 능숙한.

+0

글꼴이 아닌 것으로 표시하십시오. 내가 첨부 된 이미지에 하나의 쇼처럼 바코드 아래에 값을 표시 찾고 있습니다. 감사합니다 – acadia

+0

그게 전부 맞아. 바코드에 텍스트를 표시하려면 글꼴을 설정하십시오. 'JavaDoc] (http://api.itextpdf.com/com/itextpdf/text/pdf/Barcode.html)에서'Barcode.setFont()'에 대해 그렇게 설명합니다. 이상한 문법이지만 아이디어가 있습니다. 이상하게도 Barcode128의 기본 생성자는 글꼴을 Helvetica/WinAnsiEncoding로 초기화합니다. 어떤 iText 버전을 사용하고 있으며 어떤 텍스트를 표시하려고합니까? –

+0

나는 이것이 가능하다고 생각하지 않는다. 나는 내가 생각할 수 있고 원하는 결과를 얻을 수없는 모든 옵션을 시도했다 ... 누군가가이 일을 할 수 있다면 진짜 대답은 좋을 것이다. (@Mark Storer - iText가 아니라 iTextSharp - .NET 포트) – veljkoz

4

iTextSharp dll을 사용하여 바코드 이미지 아래에 텍스트를 직접 표시하는 방법은 없습니다. 나는 똑같은 시도하고 텍스트를 표시하는 해결 방법을했다. 이것은 직접적인 해결책은 아니지만 바코드 이미지에서 예상되는 것과 유사한 출력을 제공합니다.

바코드 이미지를 생성하기 위해 나는 그의 블로그에서 JP Hellemons가 공유 한 입력을 사용했습니다. 감사 JP Hellemons! http://www.jphellemons.nl/post/Make-a-code128-barcode-with-C-sharp-and-iTextSharp.aspx

내가 사용하는 코드 : 내가 잘못했다 경우

Barcode128 code128 = new Barcode128(); 
code128.CodeType = iTextSharp.text.pdf.Barcode.CODE128; 
code128.ChecksumText = true; 
code128.GenerateChecksum = true; 
code128.StartStopText = false; 
code128.Code = <<Barcode value>>; 

// Create a blank image 
System.Drawing.Bitmap bmpimg = new Bitmap(120,35); // provide width and height based on the barcode image to be generated. harcoded for sample purpose 

Graphics bmpgraphics = Graphics.FromImage(bmpimg); 
bmpgraphics.Clear(Color.White); // Provide this, else the background will be black by default 

// generate the code128 barcode 
bmpgraphics.DrawImage(code128.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White), new Point(0, 0)); 

//generate the text below the barcode image. If you want the placement to be dynamic, calculate the point based on size of the image 
bmpgraphics.DrawString(<<Barcode value>>, new System.Drawing.Font("Arial", 8, FontStyle.Regular), SystemBrushes.WindowText, new Point(15, 24)); 

// Save the output stream as gif. You can also save it to external file 
bmpimg.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); 

이 정정 해줘 ..

너희 중에 누구든지 직접 또는 간단한 해결책이있는 경우, 공유하시기 바랍니다 ..

0
iTextSharp.text.pdf.Barcode128 bc = new Barcode128(); 
bc.TextAlignment = Element.ALIGN_CENTER; 
bc.Code = "anything"; 
bc.StartStopText = false; 
bc.CodeType = iTextSharp.text.pdf.Barcode128.CODE128; 
bc.Extended = true; 
//bc.Font = null; 

iTextSharp.text.Image PatImage1 = bc.CreateImageWithBarcode(cb, iTextSharp.text.BaseColor.BLACK, iTextSharp.text.BaseColor.BLACK); 
PatImage1.ScaleToFit(160, 20); 

PdfPTable p_detail1 = new PdfPTable(1); 
p_detail1.WidthPercentage = 100; 

PdfPCell barcideimage = new PdfPCell(PatImage1); 
//barcideimage.Colspan = 2; 
barcideimage.HorizontalAlignment = 2; 
barcideimage.Border = 0; 
p_detail1.AddCell(barcideimage); 

l1.Add(p_detail1); 
+1

코드 전용 답변을 제공하지 말고 솔루션으로 문제를 해결하는 방법과 이유를 설명하십시오. –