2016-07-11 27 views
2

VSTOとShapes.AddTextEffectを使用してMicrosoft Wordヘッダーにウォーターマークを追加しようとしていますが、ヘッダー内の異なる最初のページと異なる奇数&偶数ページのチェックボックスをオンにするまで、フッターデザイン。Microsoft Wordドキュメントにウォーターマークを追加する

奇数ページヘッダーに追加するだけのようですが、私は別のヘッダータイプを渡しているので、なぜ下のコードを見つけるのか分かりません。

private static void UpdateWatermark(ComObjectWrapper<Document> doc, string watermarkText, string watermarkName, Style style) 
    { 
     foreach (Section section in doc.Resource.Sections) 
     { 
      if (!watermarkText.IsNullOrEmpty()) 
      { 
       InsertWatermark(section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary], section, watermarkText, watermarkName + (int)WdHeaderFooterIndex.wdHeaderFooterPrimary, style); 
       if (section.PageSetup.DifferentFirstPageHeaderFooter == -1) 
        InsertWatermark(section.Headers[WdHeaderFooterIndex.wdHeaderFooterFirstPage], section, watermarkText, watermarkName + (int)WdHeaderFooterIndex.wdHeaderFooterFirstPage, style); 
       if (section.PageSetup.OddAndEvenPagesHeaderFooter == -1) 
        InsertWatermark(section.Headers[WdHeaderFooterIndex.wdHeaderFooterEvenPages], section, watermarkText, watermarkName + (int)WdHeaderFooterIndex.wdHeaderFooterEvenPages, style); 
      } 
     } 
    } 

private static void InsertWatermark(HeaderFooter header, Section section, string watermarkText, string watermarkName, Style style) 
    { 
     var wm = header.Shapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect1, watermarkText, 
      style.WatermarkStyle.FontFamily, 
      style.WatermarkStyle.FontSize ?? 72, 
      MsoTriState.msoFalse, MsoTriState.msoFalse, 0, 0, header.Range); 
     wm.Visible = MsoTriState.msoFalse; 
     wm.Name = watermarkName; 
     wm.Fill.ForeColor.RGB = (int)WdColor.wdColorGray10; 
     wm.Fill.BackColor.RGB = (int)WdColor.wdColorGray10; 
     wm.Fill.Transparency = 0.2f; 
     wm.Fill.Solid(); 
     wm.Rotation = -45; 

     wm.RelativeVerticalPosition = WdRelativeVerticalPosition.wdRelativeVerticalPositionPage; 
     wm.RelativeHorizontalPosition = WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage; 
     wm.Height = style.WatermarkStyle.Height != null 
      ? (float)style.WatermarkStyle.Height 
      : section.PageSetup.PageHeight - 400; 
     wm.Width = section.PageSetup.PageWidth - 200; 
     wm.WrapFormat.AllowOverlap = -1; 
     wm.WrapFormat.Side = WdWrapSideType.wdWrapBoth; 
     wm.WrapFormat.Type = WdWrapType.wdWrapNone; 

     wm.Left = (float)WdShapePosition.wdShapeCenter; 
     wm.Top = (float)WdShapePosition.wdShapeCenter; 
     wm.Visible = MsoTriState.msoCTrue; 
    } 
+0

ここのお手伝いがあれば幸いです。 –

答えて

0

if (section.PageSetup.OddAndEvenPagesHeaderFooter == -1)

は、この列挙は正しいですか? まだコメントがありません=)

+0

ええ、Microsoft Wordはtrueの場合は-1、偽の場合は0と思われます。 –

+0

は、両方の場合にヘッダーが既に含まれているドキュメントを使用して、奇妙でもseperatlyでも試してみてください。多分、オフィスは滅多にない。 – gismo

+0

3つのHeaderFooterタイプがあり、最初のページにも表示されません。HeaderFooterタイプを聞いているようではありませんが、実際のヘッダーやフッターをこのように追加するときは –

関連する問題