2016-08-10 2 views
0

Ich versuche, ein Wasserzeichen, das ich zuvor in meinem Code erstellt habe, aus dem Dokument zu entfernen. Hier ist der Code, der erstellt und wendet das Wasserzeichen:Entfernen eines Wasserzeichens aus dem aktiven Dokument in VSTO Word 2013

foreach (Word.Section section in document.Sections) 
     { 
      nShape = section.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect1, tag, "Calibri", 10, MsoTriState.msoTrue, MsoTriState.msoFalse, 0, 0); 
      nShape.Name = "securityTagWaterMark"; 
      nShape.Line.Visible = MsoTriState.msoFalse; 
      nShape.Fill.Solid(); 
      nShape.Fill.ForeColor.RGB = (Int32)Word.WdColor.wdColorGray20; 
      nShape.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin; 
      nShape.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionMargin; 
      // bottom right location 
      nShape.Left = (float)Word.WdShapePosition.wdShapeRight; 
      nShape.Top = (float)Word.WdShapePosition.wdShapeBottom; 
      nShape.LockAspectRatio = MsoTriState.msoTrue; 
     } 

Wie kann ich das Dokument überprüfe alle Shape-Objekte zu finden oder den Text des Wasserzeichens ersetzen, die bereits auf der Seite. Hier ist, was ich versucht habe, aber es funktioniert nicht:

Word.Document currentDoc = Globals.ThisAddIn.Application.ActiveDocument; 

     Word.Shapes shapeCollection = Globals.ThisAddIn.Application.ActiveDocument.Shapes; 

     foreach (Word.Shape shape in shapeCollection) 
     { 
      if (shape.Name == "securityTagWaterMark") 
      { 
       shape.TextEffect.Text = newText; 
      } 
     } 

Antwort

0

Sie fügen es in die Kopfzeile, sondern suchen nach Formen im Hauptinhalt. Word gibt nicht alle Shapes in dem Document.Shapes-Objekt zurück. Dies gilt für Objekte im Header, aber auch für verschachtelte Shapes, die im Dokumentinhalt vorhanden sind.

Word.Document currentDoc = Globals.ThisAddIn.Application.ActiveDocument; 
Word.Shapes shapeCollection = Globals.ThisAddIn.Application.ActiveDocument.Shapes; 
foreach (Word.Shape shape in currentDoc.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes) 
{ 
    if (shape.Name == "securityTagWaterMark") 
    { 
     shape.TextEffect.Text = newText; 
    } 
} 
Verwandte Themen