com.aspose.words

Class CustomDocumentProperties

A collection of custom document properties.

Each DocumentProperty object represents a custom property of a container document.

The names of the properties are case-insensitive.

The properties in the collection are sorted alphabetically by name.

Example:

Shows how to work with custom document properties.
Document doc = new Document(getMyDir() + "Properties.docx");

// Every document contains a collection of custom properties, which, like the built-in properties, are key-value pairs.
// Unlike the built-in properties, many of which the document maintains by itself, we need to create all of our own custom properties. 
Assert.assertEquals("Value of custom document property", doc.getCustomDocumentProperties().get("CustomProperty").toString());

doc.getCustomDocumentProperties().add("CustomProperty2", "Value of custom document property #2");

System.out.println("Custom Properties:");
for (DocumentProperty customDocumentProperty : doc.getCustomDocumentProperties())
{
    System.out.println(customDocumentProperty.getName());
    System.out.println(MessageFormat.format("\tType:\t{0}", customDocumentProperty.getType()));
    System.out.println(MessageFormat.format("\tValue:\t\"{0}\"", customDocumentProperty.getValue()));
}
See Also:
Document, Document.BuiltInDocumentProperties, Document.CustomDocumentProperties

Property Getters/Setters Summary
intgetCount()
Gets number of items in the collection.
DocumentPropertyget(int index)
Returns a DocumentProperty object by index.
DocumentPropertyget(java.lang.String name)
Returns a DocumentProperty object by the name of the property.
 
Method Summary
DocumentPropertyadd(java.lang.String name, boolean value)
Creates a new custom document property of the PropertyType.Boolean data type.
DocumentPropertyadd(java.lang.String name, double value)
Creates a new custom document property of the PropertyType.Float data type.
DocumentPropertyadd(java.lang.String name, int value)
Creates a new custom document property of the PropertyType.Number data type.
DocumentPropertyadd(java.lang.String name, java.lang.String value)
Creates a new custom document property of the PropertyType.String data type.
DocumentPropertyadd(java.lang.String name, java.util.Date value)
Creates a new custom document property of the PropertyType.DateTime data type.
DocumentPropertyaddLinkToContent(java.lang.String name, java.lang.String linkSource)
Creates a new linked to content custom document property.
voidclear()
Removes all properties from the collection.
booleancontains(java.lang.String name)
Returns true if a property with the specified name exists in the collection.
intindexOf(java.lang.String name)
Gets the index of a property by name.
java.util.Iterator<DocumentProperty>iterator()
Returns an iterator object that can be used to iterate over all items in the collection.
voidremove(java.lang.String name)
Removes a property with the specified name from the collection.
voidremoveAt(int index)
Removes a property at the specified index.
 

    • Property Getters/Setters Detail

      • getCount

        public int getCount()
        
        Gets number of items in the collection.

        Example:

        Shows how to work with custom document properties.
        Document doc = new Document(getMyDir() + "Properties.docx");
        
        // Every document contains a collection of custom properties, which, like the built-in properties, are key-value pairs.
        // Unlike the built-in properties, many of which the document maintains by itself, we need to create all of our own custom properties. 
        Assert.assertEquals("Value of custom document property", doc.getCustomDocumentProperties().get("CustomProperty").toString());
        
        doc.getCustomDocumentProperties().add("CustomProperty2", "Value of custom document property #2");
        
        System.out.println("Custom Properties:");
        for (DocumentProperty customDocumentProperty : doc.getCustomDocumentProperties())
        {
            System.out.println(customDocumentProperty.getName());
            System.out.println(MessageFormat.format("\tType:\t{0}", customDocumentProperty.getType()));
            System.out.println(MessageFormat.format("\tValue:\t\"{0}\"", customDocumentProperty.getValue()));
        }
      • get

        public DocumentProperty get(int index)
        
        Returns a DocumentProperty object by index.

        Note: In Java this method is slow because iterates over all nodes.

        Parameters:
        index - Zero-based index of the DocumentProperty to retrieve.

        Example:

        Shows how to work with custom document properties.
        Document doc = new Document(getMyDir() + "Properties.docx");
        
        // Every document contains a collection of custom properties, which, like the built-in properties, are key-value pairs.
        // Unlike the built-in properties, many of which the document maintains by itself, we need to create all of our own custom properties. 
        Assert.assertEquals("Value of custom document property", doc.getCustomDocumentProperties().get("CustomProperty").toString());
        
        doc.getCustomDocumentProperties().add("CustomProperty2", "Value of custom document property #2");
        
        System.out.println("Custom Properties:");
        for (DocumentProperty customDocumentProperty : doc.getCustomDocumentProperties())
        {
            System.out.println(customDocumentProperty.getName());
            System.out.println(MessageFormat.format("\tType:\t{0}", customDocumentProperty.getType()));
            System.out.println(MessageFormat.format("\tValue:\t\"{0}\"", customDocumentProperty.getValue()));
        }
      • get

        public DocumentProperty get(java.lang.String name)
        
        Returns a DocumentProperty object by the name of the property.

        Returns null if a property with the specified name is not found.

        Parameters:
        name - The case-insensitive name of the property to retrieve.

        Example:

        Shows how to create a custom document property which contains a date and time.
        Document doc = new Document();
        
        doc.getCustomDocumentProperties().add("AuthorizationDate", new Date());
        
        System.out.println("Document authorized on {doc.CustomDocumentProperties[");
    • Method Detail

      • add

        public DocumentProperty add(java.lang.String name, boolean value)
        Creates a new custom document property of the PropertyType.Boolean data type.
        Parameters:
        name - The name of the property.
        value - The value of the property.
        Returns:
        The newly created property object.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • add

        public DocumentProperty add(java.lang.String name, double value)
        Creates a new custom document property of the PropertyType.Float data type.
        Parameters:
        name - The name of the property.
        value - The value of the property.
        Returns:
        The newly created property object.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • add

        public DocumentProperty add(java.lang.String name, int value)
        Creates a new custom document property of the PropertyType.Number data type.
        Parameters:
        name - The name of the property.
        value - The value of the property.
        Returns:
        The newly created property object.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • add

        public DocumentProperty add(java.lang.String name, java.lang.String value)
        Creates a new custom document property of the PropertyType.String data type.
        Parameters:
        name - The name of the property.
        value - The value of the property.
        Returns:
        The newly created property object.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • add

        public DocumentProperty add(java.lang.String name, java.util.Date value)
        Creates a new custom document property of the PropertyType.DateTime data type.
        Parameters:
        name - The name of the property.
        value - The value of the property.
        Returns:
        The newly created property object.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());

        Example:

        Shows how to create a custom document property which contains a date and time.
        Document doc = new Document();
        
        doc.getCustomDocumentProperties().add("AuthorizationDate", new Date());
        
        System.out.println("Document authorized on {doc.CustomDocumentProperties[");
      • addLinkToContent

        public DocumentProperty addLinkToContent(java.lang.String name, java.lang.String linkSource)
                                         throws java.lang.Exception
        Creates a new linked to content custom document property.
        Parameters:
        name - The name of the property.
        linkSource - The source of the property.
        Returns:
        The newly created property object or null when the linkSource is invalid.

        Example:

        Shows how to link a custom document property to a bookmark.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        builder.startBookmark("MyBookmark");
        builder.write("Hello world!");
        builder.endBookmark("MyBookmark");
        
        // Link a new custom property to a bookmark. The value of this property
        // will be the contents of the bookmark that it references in the "LinkSource" member.
        CustomDocumentProperties customProperties = doc.getCustomDocumentProperties();
        DocumentProperty customProperty = customProperties.addLinkToContent("Bookmark", "MyBookmark");
        
        Assert.assertEquals(true, customProperty.isLinkToContent());
        Assert.assertEquals("MyBookmark", customProperty.getLinkSource());
        Assert.assertEquals("Hello world!", customProperty.getValue());
        
        doc.save(getArtifactsDir() + "DocumentProperties.LinkCustomDocumentPropertiesToBookmark.docx");
      • clear

        public void clear()
        Removes all properties from the collection.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • contains

        public boolean contains(java.lang.String name)
        Returns true if a property with the specified name exists in the collection.
        Parameters:
        name - The case-insensitive name of the property.
        Returns:
        True if the property exists in the collection; false otherwise.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • indexOf

        public int indexOf(java.lang.String name)
        Gets the index of a property by name.

        Note: In Java this method is slow because iterates over all nodes.

        Parameters:
        name - The case-insensitive name of the property.
        Returns:
        The zero based index. Negative value if not found.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • iterator

        public java.util.Iterator<DocumentProperty> iterator()
        Returns an iterator object that can be used to iterate over all items in the collection.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • remove

        public void remove(java.lang.String name)
        Removes a property with the specified name from the collection.
        Parameters:
        name - The case-insensitive name of the property.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());
      • removeAt

        public void removeAt(int index)
        Removes a property at the specified index.

        Note: In Java this method is slow because iterates over all nodes.

        Parameters:
        index - The zero based index.

        Example:

        Shows how to work with a document's custom properties.
        Document doc = new Document();
        CustomDocumentProperties properties = doc.getCustomDocumentProperties();
        
        Assert.assertEquals(0, properties.getCount());
        
        // Custom document properties are key-value pairs that we can add to the document.
        properties.add("Authorized", true);
        properties.add("Authorized By", "John Doe");
        properties.add("Authorized Date", new Date());
        properties.add("Authorized Revision", doc.getBuiltInDocumentProperties().getRevisionNumber());
        properties.add("Authorized Amount", 123.45);
        
        // The collection sorts the custom properties in alphabetic order.
        Assert.assertEquals(1, properties.indexOf("Authorized Amount"));
        Assert.assertEquals(5, properties.getCount());
        
        // Print every custom property in the document.
        Iterator<DocumentProperty> enumerator = properties.iterator();
        while (enumerator.hasNext()) {
            DocumentProperty property = enumerator.next();
            System.out.println(MessageFormat.format("Name: \"{0}\"\n\tType: \"{1}\"\n\tValue: \"{2}\"", property.getName(), property.getType(), property.getValue()));
        }
        
        // Display the value of a custom property using a DOCPROPERTY field.
        DocumentBuilder builder = new DocumentBuilder(doc);
        FieldDocProperty field = (FieldDocProperty)builder.insertField(" DOCPROPERTY \"Authorized By\"");
        field.update();
        
        Assert.assertEquals("John Doe", field.getResult());
        
        // We can find these custom properties in Microsoft Word via "File" -> "Properties" > "Advanced Properties" > "Custom".
        doc.save(getArtifactsDir() + "DocumentProperties.DocumentPropertyCollection.docx");
        
        // Below are three ways or removing custom properties from a document.
        // 1 -  Remove by index:
        properties.removeAt(1);
        
        Assert.assertFalse(properties.contains("Authorized Amount"));
        Assert.assertEquals(4, properties.getCount());
        
        // 2 -  Remove by name:
        properties.remove("Authorized Revision");
        
        Assert.assertFalse(properties.contains("Authorized Revision"));
        Assert.assertEquals(3, properties.getCount());
        
        // 3 -  Empty the entire collection at once:
        properties.clear();
        
        Assert.assertEquals(0, properties.getCount());