我正在使用Micorosoft Word Interop从C#生成一个Word文档。
我想在每一页的标题中插入一些图片。我可以用以下代码在每一页上成功地做到这一点:
string imgHeader1 = "C:/image1.jpg";
foreach (Section section in document.Sections)
{
HeaderFooter header = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary];
header.Range.ParagraphFormat.SpaceAfter = 96;
header.Shapes.AddPicture(imgHeader1, 0, 1, 0, -40, 120, 20);
}
现在我想做同样的事情,但不是在第一页。我的建议如下:
document.PageSetup.DifferentFirstPageHeaderFooter = -1; //True
string imgHeader1 = "C:/image1.jpg";
foreach (Section section in document.Sections)
{
HeaderFooter header = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary];
//wdHeaderFooterFirstPage would be for first page..
header.Range.ParagraphFormat.SpaceAfter = 96;
header.Shapes.AddPicture(imgHeader1, 0, 1, 0, -40, 120, 20);
}
问题是图像仍然出现在第一页而不是第二页。
如果我在c#中使用microsoft office interop单词查看文档中这个问题的答案"不同的首页",并将代码复制到我的项目中,文本会出现在右侧标题上,但它似乎不适用于图像(?)
以下对我有效。我为文档中的每个部分设置DifferentFirstPage,应用格式,插入一些测试文本,插入图像。(请注意,我的解决方案中有一个using Word = Microsoft.Office.Interop.Word
,因此Word对象模型中的对象以Word.
开头)
string imgHeader1 = "C:/image1.jpg";
foreach (Word.Section section in document.Sections)
{
section.PageSetup.DifferentFirstPageHeaderFooter = -1;
Word.HeaderFooter header = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];
//wdHeaderFooterFirstPage would be for first page..
header.Range.ParagraphFormat.SpaceAfter = 96;
header.Range.Text = "test";
header.Shapes.AddPicture(imgHeader1, 0, 1, 0, -40, 120, 20);
}
使用InlineShapes对象并在完成任务后应用调整大小和位置。
Shape shape = header.Range.InlineShapes.AddPicture(imgHeader1, 0, 1, header.Range).ConvertToShape();
shape.Left = -1;
shape.Top = -42;
shape.Width = 275;
shape.Height = 151;
如果是第一页,我建议使用类似check的方法。如果为true,则不执行任何其他操作,使用该图像