Создать штрих-код с текстовым изображением (не PDF), используя itextsharp - PullRequest
2 голосов
/ 18 декабря 2010

Я могу создать штрих-код, используя метод itextsharp CreateDrawingImage.Но я хочу включить фактический текст в изображение.Как я могу это сделать?или Как использовать метод CreateImageWithBarcode для сохранения изображения (Jpeg / Png)?

Спасибо

Ответы [ 4 ]

2 голосов
/ 07 января 2011

Столкнувшись с той же проблемой, и после просмотра источников iTextSharp кажется, что вы не можете.Кроме того, с CreateDrawingImage () у меня были проблемы с изменением размера изображения, оно было нечетким и нечитаемым.

В итоге я использовал эту библиотеку (очень круто):

http://www.codeproject.com/KB/graphics/BarcodeLibrary.aspx

Код для EAN13:

System.Drawing.Image imageBarcode = BarcodeLib.Barcode.DoEncode(BarcodeLib.TYPE.EAN13, barcode, true, Color.Black, Color.White, 500, 250);
0 голосов
/ 16 февраля 2015

Вы можете просто нарисовать текст поверх изображения с штрих-кодом. Если вы генерируете 1D штрих-коды, такие как (Код 39, Код 128 и т. Д.), Штрих-код меняет свою ширину в зависимости от входного значения, но высота является постоянным значением.

Таким образом, вы можете просто вычислить координату Y и координаты X для текста и нарисовать текст с кодом, подобным этому ( на основе кода из этого ответа ):

    RectangleF rectf = new RectangleF(70, BarCodeBottom, 90, 50);

    Graphics g = Graphics.FromImage(BarCodeImage);

    // set text drawing modes for the high quality look
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    g.DrawString("some barcode caption text", new Font("Tahoma",8), Brushes.Black, rectf);

    g.Flush();       

или вы можете использовать некоторые коммерческие компоненты, которые автоматически вычисляют позицию текста (но вам лучше использовать собственный код, если вы уже полагаетесь на iTextsharp).

Отказ от ответственности: я работаю на ByteScout, производителя ByteScout BarCode Generator SDK .

0 голосов
/ 10 октября 2012

У меня есть GetBarcode.ashx (универсальный обработчик), который он сохраняет в выходной поток (непосредственно на экране) и на диск.*

в вашем HTML и вот обработчик:

<%@ WebHandler Language="C#" Class="GetBarcode" %>

using System;
using System.Configuration;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;
using iTextSharp.text.pdf;
using Rectangle = iTextSharp.text.Rectangle;

public class GetBarcode : IHttpHandler {

    private Bitmap bm;

    public void ProcessRequest (HttpContext context) 
    {
        string prodCode = context.Request.QueryString.Get("code");
        string fileName = ConfigurationManager.AppSettings.Get("absolutePath") + @"bc\" + prodCode + ".gif";

        // if already on disk, use it. otherwise create it.
        try 
        {
            bm = new Bitmap(fileName);
        }
        catch
        {
            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;
                bm = new Bitmap(code128.CreateDrawingImage(Color.Black, Color.White));
                bm.Save(fileName); // to disk
            }
        }

        bm.Save(context.Response.OutputStream, ImageFormat.Gif); // to screen
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}
0 голосов
/ 07 января 2011

Это функция, которую я сделал для обработки своих штрих-кодов:

public static Image AddBarCode(ref PdfWriter Writer, string Text, bool ShowText, float ScaleWidth, float ScaleHeight)
{

    // http://forums.asp.net/t/1599409.aspx
    PdfContentByte cb = Writer.DirectContent;
    Barcode39 bc39 = new Barcode39();
    bc39.Code = Text;
    // comment next line to show barcode text   
    if (!ShowText) bc39.Font = null;
    Image barCodeImage = bc39.CreateImageWithBarcode(cb, null, null);
    barCodeImage.Alignment = PdfAppearance.ALIGN_CENTER;
    barCodeImage.ScalePercent(ScaleWidth, ScaleHeight);
    return barCodeImage;
}

Чтобы использовать ее, вы должны сделать что-то вроде этого:

doc.Add(PDFHelper.AddBarCode(ref writer, pitch.DBLabelGroup.BarCode, true, 100, 200));

Я первоначально нашел код, чтобы сделать этофункция здесь: http://forums.asp.net/t/1599409.aspx

...