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

使用Aspose邮件合并生成二维码时出现Bar code generator is not set错误

问题排查与解决方案

针对你遇到的Aspose.Words邮件合并时二维码位置出现Error! Bar code generator is not set.错误,从代码和模板两个维度排查,核心原因及解决方法如下:

1. 核心问题:重新加载文档丢失条码生成器配置

看你的代码流程,原模板设置BarcodeGenerator后执行邮件合并,保存为Docx到内存流再重新加载为新的retainerDoc,但新文档未设置FieldOptions.BarcodeGenerator,保存PDF时触发错误。

解决方法:去掉中间保存再加载的步骤,直接在原模板上生成PDF:

if (dt.Rows.Count > 0)
{
    IEnumerable<letter_templates> TemplatePath = _repo.FetchLetterTemplates("Protest");
    foreach (var item in TemplatePath)
    {
        PathToTemplate = item.full_file_path;
    }
    Aspose.Words.Document template = new Aspose.Words.Document(PathToTemplate);
    // 绑定条码生成器
    template.FieldOptions.BarcodeGenerator = new CustomBarcodeGenerator();
    // 执行邮件合并
    template.MailMerge.Execute(dt);
    // 直接保存PDF到目标流,无需中间转Docx再加载
    template.Save(finalOutStream, Aspose.Words.SaveFormat.Pdf);
    finalOutStream.Seek(0, SeekOrigin.Begin);
}

2. 验证CustomBarcodeGenerator的正确性

确保自定义条码生成器类完整实现IBarcodeGenerator接口,且不会返回空图像:

public class CustomBarcodeGenerator : IBarcodeGenerator
{
    public Bitmap GetBarcodeImage(BarcodeParameters parameters)
    {
        // 用Aspose.BarCode生成二维码
        using (var barcodeGenerator = new Aspose.BarCode.Generation.BarcodeGenerator(EncodeTypes.QR, parameters.CodeText))
        {
            // 配置二维码参数(按需调整)
            barcodeGenerator.Parameters.Barcode.XDimension.Pixels = 3;
            barcodeGenerator.Parameters.Barcode.QR.CodeTextEncoding = Encoding.UTF8;
            // 返回生成的图像
            return barcodeGenerator.GenerateBarCodeImage();
        }
    }

    public Bitmap GetOldBarcodeImage(BarcodeParameters parameters)
    {
        // 兼容旧版接口,直接返回二维码图像
        return GetBarcodeImage(parameters);
    }
}
  • 确认parameters.CodeText能正确获取到DataTable中的合并字段值
  • 确保Aspose.BarCode的许可证已正确加载(你的代码里已经设置,可忽略)

3. 检查模板中的条码域设置

模板文本框内必须使用BARCODE域,而非普通合并字段:

  1. 在Word模板中,定位到文本框内的二维码位置
  2. 插入域(快捷键Ctrl+F9),输入域代码:
    BARCODE {MERGEFIELD 你的二维码字段名} \b QR
    
  3. 切换域显示为结果(Alt+F9),确保域配置正确

如果使用普通合并字段,Aspose不会自动触发条码生成逻辑,必须用BARCODE域绑定合并字段。

4. 文本框尺寸问题排查

这个错误本身和尺寸无关,但如果后续二维码显示不全:

  • 调整模板中文本框的宽高,预留足够空间
  • 在CustomBarcodeGenerator中调整二维码尺寸参数(比如XDimension.Pixels),让生成的二维码适配文本框大小

内容的提问来源于stack exchange,提问作者Jonathan Small

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:12:12