word添加水印的时候,有些页面没有添加水印,可能是文档格式的原因导致的水印显示不出来,是否有解决的办法让水印显示,压缩文件中两个文档分别是添加前和添加水印后的文档。
水印文档.zip (163.3 KB)
这似乎是一种预期的行为,因为即使MS Word也无法生成预期的输出。 请参阅随附的输出文档:
msw-2019.zip (82.9 KB)
出现问题是因为水印形状位于页眉页脚故事内,而主要内容位于正文故事内(请参见Story类)。 如果您使用Microsoft Word 2019插入水印,您将观察到相同的行为。 文件页眉/页脚的所有内容始终位于文件主要内容的后面。
但是,您可以通过在每个页面中手动插入水印来克服此问题。 您可以通过将光标移动到文档每个页面的第一个“运行”,然后将这些运行作为水印的定位点来实现。 请参见以下代码示例:
Document doc = new Document("E:\\Temp\\204325\\in.doc");
doc.CompatibilityOptions.OptimizeFor(MsWordVersion.Word2010);
Node[] runs = doc.GetChildNodes(NodeType.Run, true).ToArray();
for (int i = 0; i < runs.Length; i++)
{
Run run = (Run)runs[i];
int length = run.Text.Length;
Run currentNode = run;
for (int x = 1; x < length; x++)
{
currentNode = SplitRun(currentNode, 1);
}
}
DocumentBuilder builder = new DocumentBuilder(doc);
PageSetup ps = builder.PageSetup;
NodeCollection smallRuns = doc.GetChildNodes(NodeType.Run, true);
LayoutCollector collector = new LayoutCollector(doc);
int pageIndex = 1;
foreach (Run run in smallRuns)
{
if (collector.GetStartPageIndex(run) == pageIndex)
{
Shape watermark = new Shape(doc, Aspose.Words.Drawing.ShapeType.TextPlainText);
watermark.IsLayoutInCell = false;
watermark.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
watermark.RelativeVerticalPosition = RelativeVerticalPosition.Page;
watermark.Width = 300;
watermark.Height = 70;
watermark.HorizontalAlignment = Aspose.Words.Drawing.HorizontalAlignment.Center;
watermark.VerticalAlignment = VerticalAlignment.Center;
watermark.Rotation = -40;
watermark.Fill.Color = Color.Gray;
watermark.StrokeColor = Color.Gray;
watermark.TextPath.Text = "watermarkText";
watermark.TextPath.FontFamily = "Arial";
watermark.Name = string.Format("WaterMark_{0}", Guid.NewGuid());
watermark.WrapType = WrapType.None;
builder.MoveTo(run);
builder.InsertNode(watermark);
pageIndex++;
}
}
doc.Save("E:\\Temp\\204325\\19.10.docx");