do not throw exception if ExtractorFactory is available in classpath, but xbean.jar not
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1158626 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9882382c80
commit
6f5beef801
@ -48,12 +48,16 @@ import org.apache.poi.hwpf.usermodel.TableRow;
|
||||
import org.apache.poi.poifs.filesystem.DirectoryNode;
|
||||
import org.apache.poi.poifs.filesystem.Entry;
|
||||
import org.apache.poi.util.Beta;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
@Beta
|
||||
public class WordToTextConverter extends AbstractWordConverter
|
||||
{
|
||||
private static final POILogger logger = POILogFactory
|
||||
.getLogger( WordToTextConverter.class );
|
||||
|
||||
public static String getText( DirectoryNode root ) throws Exception
|
||||
{
|
||||
@ -325,7 +329,10 @@ public class WordToTextConverter extends AbstractWordConverter
|
||||
return false;
|
||||
DirectoryNode directoryNode = (DirectoryNode) entry;
|
||||
|
||||
// even if no ExtractorFactory in classpath
|
||||
/*
|
||||
* even if there is no ExtractorFactory in classpath, still support
|
||||
* included Word's objects
|
||||
*/
|
||||
if ( directoryNode.hasEntry( "WordDocument" ) )
|
||||
{
|
||||
String text = WordToTextConverter.getText( (DirectoryNode) entry );
|
||||
@ -335,14 +342,27 @@ public class WordToTextConverter extends AbstractWordConverter
|
||||
return true;
|
||||
}
|
||||
|
||||
Object extractor;
|
||||
try
|
||||
{
|
||||
Class<?> cls = Class
|
||||
.forName( "org.apache.poi.extractor.ExtractorFactory" );
|
||||
Method createExtractor = cls.getMethod( "createExtractor",
|
||||
DirectoryNode.class );
|
||||
Object extractor = createExtractor.invoke( null, directoryNode );
|
||||
extractor = createExtractor.invoke( null, directoryNode );
|
||||
}
|
||||
catch ( Error exc )
|
||||
{
|
||||
// no extractor in classpath
|
||||
logger.log( POILogger.WARN, "There is an OLE object entry '",
|
||||
entry.getName(),
|
||||
"', but there is no text extractor for this object type ",
|
||||
"or text extractor factory is not available: ", "" + exc );
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Method getText = extractor.getClass().getMethod( "getText" );
|
||||
String text = (String) getText.invoke( extractor );
|
||||
|
||||
@ -351,13 +371,14 @@ public class WordToTextConverter extends AbstractWordConverter
|
||||
+ UNICODECHAR_ZERO_WIDTH_SPACE ) );
|
||||
return true;
|
||||
}
|
||||
catch ( ClassNotFoundException exc )
|
||||
catch ( Exception exc )
|
||||
{
|
||||
// no extractor in classpath
|
||||
}
|
||||
|
||||
logger.log( POILogger.ERROR,
|
||||
"Unable to extract text from OLE entry '", entry.getName(),
|
||||
"': ", exc, exc );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void processPageref( HWPFDocumentCore wordDocument,
|
||||
|
Loading…
Reference in New Issue
Block a user