You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中用iTextSharp将Bitmap条码无需保存直接插入PDF

实现方案

该需求完全可以实现,以下是两种适配不同场景的实现方法:

方案1:适配现有HTML拼接逻辑(改动最小)

你可以将内存中的Bitmap转为Base64编码的Data URI,直接赋值给img标签的src属性,完全不需要写入本地磁盘。
需要用到System.IO和System.Drawing.Imaging命名空间,示例代码如下:

Barcode128 code128 = new Barcode128
{
    CodeType = Barcode.CODE128,
    ChecksumText = true,
    X = 1.1f,
    BarHeight = 20,
    GenerateChecksum = true,
    StartStopText = true,
    Code = "Angular 9"
};
Bitmap bms = new Bitmap(code128.CreateDrawingImage(Color.Black, Color.White));

// 新增内存流转Base64逻辑
using (MemoryStream ms = new MemoryStream())
{
    // 把Bitmap写入内存流,可根据需要调整图片格式
    bms.Save(ms, ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();
    string base64Img = Convert.ToBase64String(imageBytes);
    // 拼接Data URI格式的src
    string imgSrc = $"data:image/png;base64,{base64Img}";
    // 替换原有路径拼接逻辑即可
    sb.Append($"<img src='{imgSrc}'></img>");
}

注意:iTextSharp内置的HTML解析器(XMLWorkerHelper)原生支持Data URI格式的图片资源,无需额外配置。

方案2:更高性能的原生iTextSharp实现

如果可以调整现有PDF生成逻辑,不需要走HTML拼接的话,可直接将iTextSharp生成的条码对象插入PDF,不需要转Bitmap、Base64等中间步骤,性能更高:

// cb为当前PDF页面对应的PdfContentByte对象
Image barcodeImg = code128.CreateImageWithBarcode(cb, BaseColor.BLACK, BaseColor.WHITE);
// 按需调整条码尺寸、位置
barcodeImg.ScaleToFit(100, 30);
// 直接插入PDF文档对象
document.Add(barcodeImg);

内容的提问来源于stack exchange,提问作者Mritunjay Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:06:04