1

2つのdocxドキュメントがありますが、これらのドキュメントはドキュメントレベルで読み取り専用です。ただし、これらのドキュメントのいくつかの段落の編集オプションは、permStartタグとpermEndタグを使用して有効にします。

これら2つのドキュメントをマージして、新しいドキュメントを編集可能にする必要があります。PowerToolsDocumentBuilderを使用してこれら2つの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、およびPowertoolsDocumentBuilderを使用しています。どんな助けでも素晴らしいでしょう。

ありがとうございました!

4

2 に答える 2

2

ドキュメント保護を削除する必要があります。これに加えて、PermStartとPermEndも削除する必要があります。これらのタグは、ドキュメントが保護されている場合にのみ関連するためです。コードは次のようになります

  1. ドキュメント保護を削除します。

    DocumentSettingsPart documentSettingsPart = wordprocessingDocument.MainDocumentPart.GetPartsOfType()。FirstOrDefault();

        if (documentSettingsPart != null)
        {
            documentSettingsPart.Settings.RemoveAllChildren<DocumentProtection>();
        }
    
  2. すでに行っているように、PermStartタグとPermEndタグを削除します

    wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Body.RemoveAllChildren(); wordD.MainDocumentPart.Document.Save();

于 2012-07-20T23:09:25.557 に答える
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();
于 2012-07-20T16:16:25.863 に答える