========== 测试签名图片插入修复 V3 ========== 测试记录ID: 5c82d912-a31b-4c41-822b-ce5bf1fd74ed 修复内容: 参考营业执照和身份证的成功实现方式 关键发现: ✅ 营业执照翻译件: businessLicenseData中不包含license_qrcode_image字段 ✅ 身份证翻译件: idCardData中不包含id_card_image字段 ❌ 免海牙授权书: 之前错误地设置了signature_image = '' 正确的实现方式: 1. 模板数据中不包含图片字段 2. {{占位符}}在Word中保持原样 3. 使用SignatureToWordConverter替换占位符为图片 修复对比: 修复前: signature_image = '' → {{signature_image}} → '' → 图片插入失败 修复后: 不包含signature_image → {{signature_image}} → {{signature_image}} → 图片插入成功 开始生成免海牙文档... ❌ 免海牙文档生成失败 错误信息: SQL执行失败: SQLSTATE[42S22]: [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Invalid column name 'AR'. SQL: SELECT TOP 1 fes.AR AS AR1, vg.AR AS AR2, gt.AR AS AR3, vg.Attachment, vg.BusinessLicenseDirection, fes.BusinessLicenseDirection AS BusinessLicenseDirection1, gt.BusinessLicenseDirection AS BusinessLicenseDirection2, gt.Attachment AS Attachment1, fes.Attachment AS Attachment2, bc.NameEng, bc.NameCN, bc.LegalPersonEmail, bc.RegNumber, bc.LegalPersonFullNamePinYin, bc.LegalPersonName, bc.RegisteredCapital, bc.RegisteredCapitalCurrency, bc.EstablishmentDate, bc.CityEngName, bc.RegAddressEng, bc.BusinessLicensePic, bc.LegalPersonIdNumberFrontPic, bc.LegalPersonIdNumberBackPic, bc.LegalPersonGender, bc.Nationality, bc.LegalPersonIdNumber, bc.LegalPersonIdStartDate, bc.LegalPersonIdEndDate, bc.LegalPersonCityEngName, bc.LegalPersonIDCardAddressEng, bc.LegalPersonBirthDate, bc.LegalSignedFile, bc.NameCN, vb.BusinessCode, vb.Code, vb.ID, vri.id AS VATRegInfoId, vb.PushTaxBureauStatus, vb.PushTaxBureauErrorMsg, ps.SpecsName, bc.LegalPersonIDCardType, bc.LegalPersonCountry, bc.LegalPersonAddressProvinceEn, bc.CompanyAddressLine1En, bc.CompanyAddressLine2En, bc.CompanyAddressPostcode, bc.CompanyAddressProvinceEn, bc.Country AS CompanyCountry, bu.F_Mobile as LinkedSalesContactPhone, vg.HagueType, fes.HagueType AS HagueType1, gt.HagueType AS HagueType2, bc.BusinessCRFile FROM VATRegInfo vri LEFT JOIN VATBusinessRecord vb ON vri.VATBusinessRecordID = vb.ID LEFT JOIN Base_Customer_Company bc ON bc.ID = vb.CompanyID LEFT JOIN ESVAT_Register vg ON vg.ID = vb.ID LEFT JOIN GeneralTemplateVAT gt ON gt.ID = vb.ID LEFT JOIN ESVAT_SubAgent fes ON fes.ID = vb.ID LEFT JOIN MS_OrderDetails mo ON vb.MSOrderDetailsID = mo.ID LEFT JOIN ProductSpecs ps ON ps.ID=mo.SKUSpecificationID LEFT JOIN Base_User bu ON bu.F_UserId = vb.BusinessCounselorId WHERE vb.Country = 'ES' AND vri.id = :id ========== 成功案例对比 ========== 营业执照翻译件(二维码): 1. businessLicenseData中不包含license_qrcode_image 2. WordTemplateProcessor.process()后{{license_qrcode_image}}保持原样 3. SignatureToWordConverter.replaceImageInWord()替换为二维码图片 4. 结果: ✅ 正确显示二维码 身份证翻译件(头像): 1. idCardData中不包含id_card_image 2. WordTemplateProcessor.process()后{{id_card_image}}保持原样 3. SignatureToWordConverter.replaceImageInWord()替换为头像图片 4. 结果: ✅ 正确显示头像 免海牙授权书(签名)- 修复后: 1. apostilleNotRequiredData中不包含signature_image 2. WordTemplateProcessor.process()后{{signature_image}}保持原样 3. SignatureToWordConverter.replaceImageInWord()替换为签名图片 4. 结果: ✅ 应该正确显示签名 技术原理: - WordTemplateProcessor只替换存在于数据数组中的占位符 - 不存在的占位符会保持{{placeholder}}格式 - SignatureToWordConverter可以找到并替换这些保持原样的占位符 - 这就是为什么营业执照和身份证的图片插入能成功的原因 ========== 测试完成 ==========