You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Xceed DocX生成Docx时,页眉添加图片失败求助

解决Xceed DocX页眉图片不显示的问题

我之前也碰到过一模一样的坑!你现在的代码已经成功把图片嵌入到文档资源里了,但直接把Image对象加到页眉的Images集合并不会让它显示出来——DocX要求页眉里的内容必须放在段落(Paragraph)中才能被正确渲染。

问题根源

document.AddImage()只是把图片资源导入到文档的资源池里,但没有在页眉的可视区域内放置它。页眉的Images集合仅用于管理嵌入的图片资源,不是用来直接显示内容的,必须通过Picture对象把图片放到段落中,再将段落添加到页眉的内容流里。

修正后的代码

把你原来的document.Headers.First.Images.Add(image);这一行替换成下面的代码:

// 将导入的图片转换成可插入文档的Picture对象
Xceed.Document.NET.Picture logoPicture = image.CreatePicture();
// 给首页页眉创建一个新段落
var headerParagraph = document.Headers.First.InsertParagraph();
// 将图片添加到页眉段落中
headerParagraph.AppendPicture(logoPicture);

完整的修正后代码片段:

SaveFileDialog saveFileDialog = new SaveFileDialog { Filter = "Documento Word (*.docx)|*.docx", FileName = "Documento " + obj_eObra.ProcesoDeSeleccion + ".docx", DefaultExt = ".docx" };
if (saveFileDialog.ShowDialog() == true) {
 DocX document = DocX.Create(saveFileDialog.FileName);
 Stream Logo = new MemoryStream(obj_eEmpresa.Logo);
 Xceed.Document.NET.Image image = document.AddImage(Logo);
 document.AddHeaders();
 document.AddFooters();
 // 强制首页使用不同的页眉页脚
 document.DifferentFirstPage = true;
 // 强制奇偶页使用不同的页眉页脚
 document.DifferentOddAndEvenPages = true;

 // --- 修正的部分开始 ---
 // 将图片转为可插入的Picture实例
 Xceed.Document.NET.Picture logoPicture = image.CreatePicture();
 // 在首页页眉插入段落并添加图片
 var headerParagraph = document.Headers.First.InsertParagraph();
 headerParagraph.AppendPicture(logoPicture);
 // 可选:调整图片大小
 // logoPicture.Width = 120;
 // logoPicture.Height = 60;
 // 可选:设置段落对齐方式
 // headerParagraph.Alignment = Alignment.Right;
 // --- 修正的部分结束 ---

 // 插入正文段落
 var p = document.InsertParagraph();
 // 追加格式化文本
 p.Append("This is a simple formatted red bold paragraph")
 .Font(new Font("Arial"))
 .FontSize(25)
 .Color(System.Drawing.Color.Red)
 .Bold()
 .Append(" containing a blue italic text.").Font(new Font("Times New Roman")).Color(System.Drawing.Color.Blue).Italic()
 .SpacingAfter(40);
 document.Save();
}

额外提示

如果需要调整图片的尺寸、对齐方式,直接修改logoPicture的属性或者页眉段落的属性即可,比如设置图片宽高、段落居右对齐等。

这样修改后,生成的Word文档首页页眉就能正常显示你的图片了!

内容的提问来源于stack exchange,提问作者Gianfranco Díaz

火山引擎 最新活动