C# 使用OpenXml删除word中的水印&;腐败文件
我已尝试使用以下代码块从文档中删除水印 代码1:C# 使用OpenXml删除word中的水印&;腐败文件,c#,openxml,C#,Openxml,我已尝试使用以下代码块从文档中删除水印 代码1: private static void DeleteCustomWatermark(WordprocessingDocument package, string watermarkId) { MainDocumentPart maindoc = package.MainDocumentPart; if(maindoc!=null) { var headers = maindoc.GetParts
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);
}
}
}
我已经尝试了这两个代码块。它会删除水印,但会使文档损坏。在这之后我需要恢复。恢复后,文档很好。但是我需要合适的解决方案,这样我就可以用C代码删除水印,而不会使文档损坏。请帮忙
谢谢您还需要删除标题部分中的“图片”或“图纸” e、 g
List pictures=新列表(headerPart.RootElement.subjections());
...
foreach(图片中的图片p){
p、 删除();
}
...
标题部分删除零件(图像零件列表);
“正确的解决方案,以便我可以从代码中嵌入水印”水印还是DEwatermark?是哪一个?我猜它加了水印是为了防止你一开始就想做的事?我只是在文档上加了水印,但经过一个特定的步骤后,我想删除那个水印。啊,那么,是你把水印放在了第一位?将水印作为您在文档上执行的最后一个操作是否更有意义?这是一个要求,最初我会在文档后面放置水印,最后,当它可以删除水印时…让我们举一个例子。。。打印工资单,除非得到会计部门的批准,否则我们将在上面贴上水印“内部文件”。在会计部门批准后,在分发给员工之前,我们将删除该水印。
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)
}
}
List<Picture> pictures = new List<Picture>(headerPart.RootElement.Descendants<Picture>());
...
foreach(Picture p in pictures) {
p.Remove();
}
...
headerPart.DeleteParts(imagePartList);