C# .NET DocX 向图像插入标题

C# .NET DocX inserting captions to an Image

有没有办法像 MS word 允许您在右键单击图像时插入标题一样在图像中插入标题?问题是现有的标题支持与 right-click 方法的不同之处在于图号未更新。我想以完全相同的方式进行操作,以便图号本身也附有标题。

经过大约 2 天的研究,我自己找到了一种在 Word 中插入标题的方法,就像我们右键单击图像或 table 时的“插入标题”选项一样。 实际上在 MS Word 中,数字或 table 数字是 文档字段 。是的,这听起来有点新,但这些字段就在那里,可以通过右键单击文档中任何插入的标题并单击 切换字段代码 来查看。可以说,这些实际上是代表不同含义的公式。例如 {SEQ} 表示初始化一个从 1 开始的序列。

好的,关于标题的内容已经足够了。简而言之,我们需要插入一个带有公式的“文档字段”来为图像插入标题。

实际上,这可以通过使用 Simple Fields 在 Xceed Opensource 库中实现。简单字段是文档字段的精确副本。 Xceed 示例在其 HeaderFooter 示例中使用简单的方法来实现向文档添加页码。 我已经实现了类似于 AppendPageNumber(PageNumberFormat pnf) 函数的函数。 您可以使用它来实现 Paragraph.cs

中的字幕
public Paragraph InsertNumberedSequence()
{
  XElement fldSimple = new XElement( XName.Get( "fldSimple", Document.w.NamespaceName ) );
  fldSimple.Add( new XAttribute( XName.Get( "instr", Document.w.NamespaceName ), @"SEQ " ) );
  
  XElement content = XElement.Parse
  (
   @"<w:r w:rsidR='001D0226' xmlns:w=""http://schemas.openxmlformats.org/wordprocessingml/2006/main"">
               <w:rPr>
                   <w:noProof /> 
               </w:rPr>
               <w:t>1</w:t> 
           </w:r>"
  );

  fldSimple.Add( content );
  Xml.Add( fldSimple );

  return this;
}

添加字幕可以使用

document.InsertParagraph($"captionLabel ").InsertNumberedSequence().Append(" my caption text");