【发布时间】:2018-03-08 07:22:22
【问题描述】:
我已尝试使用以下代码块从文档中删除水印
代码1:
private static void DeleteCustomWatermark(WordprocessingDocument package, string watermarkId)
{
MainDocumentPart maindoc = package.MainDocumentPart;
if(maindoc!=null)
{
var headers = maindoc.GetPartsOfType<HeaderPart>();
if(headers!=null)
{
var head = headers.First(); //we are sure that this header part contains the Watermark with id=watermarkId
var watermark = head.GetPartById(watermarkId);
if(watermark!=null)
head.DeletePart(watermark);
}
}
}
代码2:
public static void DeleteCustomWatermark(WordProcessingDocument package, string headerId)
{
//headerId is the id of the header section which contains the watermark
MainDocumentPart = maindoc = package.MainDocumentPart;
if(maindoc!=null)
{
var header = maindoc.HeaderParts.First(i=>maindoc.GetIdOfPart(i).Equals(headerId));
if(header!=null)
maindoc.DeletePart(header)
}
}
我已经尝试了这两个代码块。它会删除水印,但会使文档损坏。我需要在这之后恢复。恢复后文档很好。但我想要适当的解决方案,以便我可以使用 C# 代码删除水印,而不会损坏文档。请帮忙。
谢谢
【问题讨论】:
-
“适当的解决方案,以便我可以从代码中添加水印” 水印或去水印?它是哪一个?我猜它已经被加了水印,以防止您首先尝试做什么?
-
我只为文档添加了水印,但经过特定步骤后,我想删除该水印。
-
啊,原来是你放水印的?将水印作为您对文档执行的最后一个操作是否更有意义?
-
最初是一个要求,我会在最后的时候加上水印,而不是删除水印......
-
举个例子... 打印工资单除非得到会计部门的批准,否则我们会加水印,上面写着“内部文件”。在分配给员工之前,在会计部门批准后,我们将删除该水印。