Support more OOXML custom properties for text extraction
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1230168 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2a22882dff
commit
24b020cb12
@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
package org.apache.poi;
|
package org.apache.poi;
|
||||||
|
|
||||||
import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
|
|
||||||
import org.openxmlformats.schemas.officeDocument.x2006.customProperties.CTProperty;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
|
||||||
|
import org.openxmlformats.schemas.officeDocument.x2006.customProperties.CTProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link POITextExtractor} for returning the textual
|
* A {@link POITextExtractor} for returning the textual
|
||||||
* content of the OOXML file properties, eg author
|
* content of the OOXML file properties, eg author
|
||||||
@ -122,58 +122,111 @@ public class POIXMLPropertiesTextExtractor extends POIXMLTextExtractor {
|
|||||||
|
|
||||||
return text.toString();
|
return text.toString();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Returns the custom document properties, if
|
* Returns the custom document properties, if
|
||||||
* there are any
|
* there are any
|
||||||
*/
|
*/
|
||||||
public String getCustomPropertiesText() {
|
public String getCustomPropertiesText() {
|
||||||
StringBuffer text = new StringBuffer();
|
StringBuffer text = new StringBuffer();
|
||||||
org.openxmlformats.schemas.officeDocument.x2006.customProperties.CTProperties
|
org.openxmlformats.schemas.officeDocument.x2006.customProperties.CTProperties
|
||||||
props = getDocument().getProperties().getCustomProperties().getUnderlyingProperties();
|
props = getDocument().getProperties().getCustomProperties().getUnderlyingProperties();
|
||||||
|
|
||||||
List<CTProperty> properties = props.getPropertyList();
|
List<CTProperty> properties = props.getPropertyList();
|
||||||
for(CTProperty property : properties) {
|
for(CTProperty property : properties) {
|
||||||
String val = "(not implemented!)";
|
String val = "(not implemented!)";
|
||||||
|
|
||||||
if (property.isSetLpwstr()) {
|
|
||||||
val = property.getLpwstr();
|
|
||||||
}
|
|
||||||
else if (property.isSetFiletime()) {
|
|
||||||
val = property.getFiletime().toString();
|
|
||||||
}
|
|
||||||
else if (property.isSetDate()) {
|
|
||||||
val = property.getDate().toString();
|
|
||||||
}
|
|
||||||
else if (property.isSetDecimal()) {
|
|
||||||
BigDecimal d = property.getDecimal();
|
|
||||||
if (d == null) {
|
|
||||||
val = null;
|
|
||||||
} else {
|
|
||||||
val = d.toPlainString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (property.isSetBool()) {
|
|
||||||
val = Boolean.toString( property.getBool() );
|
|
||||||
}
|
|
||||||
else if (property.isSetInt()) {
|
|
||||||
val = Integer.toString( property.getInt() );
|
|
||||||
}
|
|
||||||
else if (property.isSetLpstr()) {
|
|
||||||
val = property.getLpstr();
|
|
||||||
}
|
|
||||||
else if (property.isSetI4()) {
|
|
||||||
/* Number in Excel for example.... Why i4 ? Ask microsoft. */
|
|
||||||
val = Integer.toString(property.getI4());
|
|
||||||
}
|
|
||||||
|
|
||||||
text.append(
|
|
||||||
property.getName() +
|
|
||||||
" = " + val + "\n"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return text.toString();
|
if (property.isSetLpwstr()) {
|
||||||
}
|
val = property.getLpwstr();
|
||||||
|
}
|
||||||
|
else if (property.isSetLpstr()) {
|
||||||
|
val = property.getLpstr();
|
||||||
|
}
|
||||||
|
else if (property.isSetDate()) {
|
||||||
|
val = property.getDate().toString();
|
||||||
|
}
|
||||||
|
else if (property.isSetFiletime()) {
|
||||||
|
val = property.getFiletime().toString();
|
||||||
|
}
|
||||||
|
else if (property.isSetBool()) {
|
||||||
|
val = Boolean.toString( property.getBool() );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Integers
|
||||||
|
else if (property.isSetI1()) {
|
||||||
|
val = Integer.toString(property.getI1());
|
||||||
|
}
|
||||||
|
else if (property.isSetI2()) {
|
||||||
|
val = Integer.toString(property.getI2());
|
||||||
|
}
|
||||||
|
else if (property.isSetI4()) {
|
||||||
|
val = Integer.toString(property.getI4());
|
||||||
|
}
|
||||||
|
else if (property.isSetI8()) {
|
||||||
|
val = Long.toString(property.getI8());
|
||||||
|
}
|
||||||
|
else if (property.isSetInt()) {
|
||||||
|
val = Integer.toString( property.getInt() );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unsigned Integers
|
||||||
|
else if (property.isSetUi1()) {
|
||||||
|
val = Integer.toString(property.getUi1());
|
||||||
|
}
|
||||||
|
else if (property.isSetUi2()) {
|
||||||
|
val = Integer.toString(property.getUi2());
|
||||||
|
}
|
||||||
|
else if (property.isSetUi4()) {
|
||||||
|
val = Long.toString(property.getUi4());
|
||||||
|
}
|
||||||
|
else if (property.isSetUi8()) {
|
||||||
|
val = property.getUi8().toString();
|
||||||
|
}
|
||||||
|
else if (property.isSetUint()) {
|
||||||
|
val = Long.toString(property.getUint());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reals
|
||||||
|
else if (property.isSetR4()) {
|
||||||
|
val = Float.toString( property.getR4() );
|
||||||
|
}
|
||||||
|
else if (property.isSetR8()) {
|
||||||
|
val = Double.toString( property.getR8() );
|
||||||
|
}
|
||||||
|
else if (property.isSetDecimal()) {
|
||||||
|
BigDecimal d = property.getDecimal();
|
||||||
|
if (d == null) {
|
||||||
|
val = null;
|
||||||
|
} else {
|
||||||
|
val = d.toPlainString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (property.isSetArray()) {
|
||||||
|
// TODO Fetch the array values and output
|
||||||
|
}
|
||||||
|
else if (property.isSetVector()) {
|
||||||
|
// TODO Fetch the vector values and output
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (property.isSetBlob() || property.isSetOblob()) {
|
||||||
|
// TODO Decode, if possible
|
||||||
|
}
|
||||||
|
else if (property.isSetStream() || property.isSetOstream() ||
|
||||||
|
property.isSetVstream()) {
|
||||||
|
// TODO Decode, if possible
|
||||||
|
}
|
||||||
|
else if (property.isSetStorage() || property.isSetOstorage()) {
|
||||||
|
// TODO Decode, if possible
|
||||||
|
}
|
||||||
|
|
||||||
|
text.append(
|
||||||
|
property.getName() +
|
||||||
|
" = " + val + "\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return text.toString();
|
||||||
|
}
|
||||||
|
|
||||||
public String getText() {
|
public String getText() {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user