我有2个docx文档,这些文档在文档级别是只读的。但是,使用permStart和permEnd标记可以启用这些文档中几个段落的编辑选项。
我必须合并这两个文档并使新文档可编辑。我正在使用PowerTools DocumentBuilder来合并这两个docx。最终的docx是可编辑的,但由于permStart和permEnd标签的存在,所有段落都以灰色背景突出显示。
我想知道如何删除这些permStart和permEnd标记。我尝试了以下代码但没有工作。
wordD.MainDocumentPart.Document.Body.RemoveAllChildren< PermStart>(); wordD.MainDocumentPart.Document.Body.RemoveAllChildren< PermEnd>();
我正在使用OpenXML SDK2.0,VS2010,.NET 4.0& Powertools文档生成器。任何帮助都会很棒。
谢谢!
答案 0 :(得分:2)
您需要删除文档保护。除此之外,您还需要删除PermStart和PermEnd,因为这些标记仅在文档受到保护时才相关。代码将是
删除文档保护。
DocumentSettingsPart documentSettingsPart = wordprocessingDocument.MainDocumentPart.GetPartsOfType()。FirstOrDefault();
if (documentSettingsPart != null)
{
documentSettingsPart.Settings.RemoveAllChildren<DocumentProtection>();
}
正如您所做的那样删除PermStart和PermEnd标记
wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Save();
答案 1 :(得分:1)
这是我删除permStart和permEnd标签的方式。欢迎对以下代码进行任何改进。
foreach (PermStart p1 in wordD.MainDocumentPart.Document.Body.Descendants<PermStart>())
{
p1.Parent.RemoveChild<PermStart>(p1);
}
foreach (PermEnd p2 in wordD.MainDocumentPart.Document.Body.Descendants<PermEnd>())
{
p2.Parent.RemoveChild<PermEnd>(p2);
}
wordD.MainDocumentPart.Document.Save();