You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by Aram Mirzadeh <aw...@mbcli.com> on 2009/08/03 22:04:40 UTC

Updating Custom Properties in XWPF

Hi,

I need to update some custom properties in a docx.  I've gotten as far
as reading the variables:

public class UpdateWordDocument {

	public static void main(String[] args) throws Exception {
		XWPFDocument doc = new XWPFDocument(POIXMLDocument.openPackage(fileName);
		CustomProperties props = doc.getProperties().getCustomProperties();
		CTProperty[] ctp = props.getUnderlyingProperties().getPropertyArray();

		for (CTProperty foo : ctp) {
			System.out.println(foo.toString());
		}
	}
}

I don't believe the code exists to update these property values and
write them back to the file.  If someone can point me to the proper
package and class, I can take a shot at providing a patch back.

Thanks.

Aram


Re: Updating Custom Properties in XWPF

Posted by Aram Mirzadeh <aw...@mbcli.com>.
Hi Dave,

Thank you, I actually didn't know this existed either.  The properties
that I need to modify are actually "Custom" properties.  These are human
added variables.  They are stored in custom.xml under docProps in the
docx zip package.

Please let me know if I missed it in the code, but I couldn't find any
setters for the customVariables.

Thanks.

Aram

P.S. An example of custom.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><property
fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2"
name="customerLongName"><vt:lpwstr>Customer Long
Names</vt:lpwstr></property><property
fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3"
name="SomethingElse"><vt:lpwstr>123</vt:lpwstr></property></Properties>


Dave Fisher wrote:
> You should already be able to do something like this:
>
> POIXMLProperties.ExtendedProperties ext =
> doc.getProperties().getExtendedProperties();
> ext.getUnderlyingProperties().setApplication("Microsoft Office Word");
>
> (The Mac Office 2008 SP2 Workaround for XWPF.)
>
> There should be setters for all the getters with all Core, Custom and
> Extended Properties.
>
> https://svn.apache.org/repos/asf/poi/trunk/src/ooxml/java/org/apache/poi/POIXMLProperties.java
>
>
> When you are done write the document and your property changes should
> be in the correct part.
>
> Regards,
> Dave
>
>
> On Aug 3, 2009, at 1:04 PM, Aram Mirzadeh wrote:
>
>> Hi,
>>
>> I need to update some custom properties in a docx.  I've gotten as far
>> as reading the variables:
>>
>> public class UpdateWordDocument {
>>
>>     public static void main(String[] args) throws Exception {
>>         XWPFDocument doc = new
>> XWPFDocument(POIXMLDocument.openPackage(fileName);
>>         CustomProperties props =
>> doc.getProperties().getCustomProperties();
>>         CTProperty[] ctp =
>> props.getUnderlyingProperties().getPropertyArray();
>>
>>         for (CTProperty foo : ctp) {
>>             System.out.println(foo.toString());
>>         }
>>     }
>> }
>>
>> I don't believe the code exists to update these property values and
>> write them back to the file.  If someone can point me to the proper
>> package and class, I can take a shot at providing a patch back.
>>
>> Thanks.
>>
>> Aram
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
>> For additional commands, e-mail: dev-help@poi.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
> For additional commands, e-mail: dev-help@poi.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


Re: Updating Custom Properties in XWPF

Posted by Dave Fisher <da...@jmlafferty.com>.
You should already be able to do something like this:

POIXMLProperties.ExtendedProperties ext =  
doc.getProperties().getExtendedProperties();
ext.getUnderlyingProperties().setApplication("Microsoft Office Word");

(The Mac Office 2008 SP2 Workaround for XWPF.)

There should be setters for all the getters with all Core, Custom and  
Extended Properties.

https://svn.apache.org/repos/asf/poi/trunk/src/ooxml/java/org/apache/poi/POIXMLProperties.java

When you are done write the document and your property changes should  
be in the correct part.

Regards,
Dave


On Aug 3, 2009, at 1:04 PM, Aram Mirzadeh wrote:

> Hi,
>
> I need to update some custom properties in a docx.  I've gotten as far
> as reading the variables:
>
> public class UpdateWordDocument {
>
> 	public static void main(String[] args) throws Exception {
> 		XWPFDocument doc = new  
> XWPFDocument(POIXMLDocument.openPackage(fileName);
> 		CustomProperties props = doc.getProperties().getCustomProperties();
> 		CTProperty[] ctp =  
> props.getUnderlyingProperties().getPropertyArray();
>
> 		for (CTProperty foo : ctp) {
> 			System.out.println(foo.toString());
> 		}
> 	}
> }
>
> I don't believe the code exists to update these property values and
> write them back to the file.  If someone can point me to the proper
> package and class, I can take a shot at providing a patch back.
>
> Thanks.
>
> Aram
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
> For additional commands, e-mail: dev-help@poi.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org