Ich versuche, Microsoft Word-Headern mit VSTO und Shapes.AddTextEffect
ein Wasserzeichen hinzuzufügen, scheint es korrekt hinzuzufügen, bis ich die Kontrollkästchen Erste Seite und Verschiedene ungerade & gerade Seiten in Header und überprüfen Fußzeile Design.Hinzufügen eines Wasserzeichens zu Microsoft Word Dokument
Es scheint nur zu dem ungeraden Seitenkopf hinzuzufügen, ich bin nicht sicher, warum, wie ich die verschiedenen Header-Typen übergebe, finden Sie meinen Code unten.
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;
}
Jede Hilfe hier würde sehr geschätzt werden. –