diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index a7cf4dca08..82f545c031 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -919,6 +919,22 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { tables.set(pos, table); ctDocument.getBody().setTblArray(pos, table.getCTTbl()); } + + /** + * Verifies that the documentProtection tag in settings.xml file
+ * specifies that the protection is enforced (w:enforcement="1")
+ *
+ * sample snippet from settings.xml + *
+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option any + */ + public boolean isEnforcedProtection() { + return settings.isEnforcedWith(); + } /** * Verifies that the documentProtection tag in settings.xml file
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java index fa4e6401f9..d9d29a3303 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -120,6 +120,29 @@ public class XWPFSettings extends POIXMLDocumentPart { CTZoom zoom = ctSettings.getZoom(); zoom.setPercent(BigInteger.valueOf(zoomPercent)); } + + /** + * Verifies the documentProtection tag inside settings.xml file
+ * if the protection is enforced (w:enforcement="1")
+ *

+ *
+ * sample snippet from settings.xml + *

+     *     <w:settings  ... >
+     *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
+     * 
+ * + * @return true if documentProtection is enforced with option any + */ + public boolean isEnforcedWith() { + CTDocProtect ctDocProtect = ctSettings.getDocumentProtection(); + + if (ctDocProtect == null) { + return false; + } + + return ctDocProtect.getEnforcement().equals(STOnOff.X_1); + } /** * Verifies the documentProtection tag inside settings.xml file
diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 43d8cce0f9..afa0428b4a 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -416,4 +416,11 @@ public final class TestXWPFDocument { doc.close(); } + + @Test + public void testEnforcedWith() throws IOException { + XWPFDocument docx = XWPFTestDataSamples.openSampleDocument("EnforcedWith.docx"); + assertTrue(docx.isEnforcedProtection()); + docx.close(); + } } diff --git a/test-data/document/EnforcedWith.docx b/test-data/document/EnforcedWith.docx new file mode 100644 index 0000000000..c50e358591 Binary files /dev/null and b/test-data/document/EnforcedWith.docx differ