1 package org.contineo.core.text.parser; 2 3 import java.io.File ; 4 import java.io.FileInputStream ; 5 import java.io.InputStream ; 6 import org.apache.log4j.Level; 7 import org.apache.log4j.Logger; 8 import org.apache.poi.poifs.eventfilesystem.POIFSReader; 9 import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; 10 import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; 11 import org.apache.poi.poifs.filesystem.DocumentInputStream; 12 import org.contineo.core.LoggingManager; 13 14 18 public class PPTParser implements Parser, POIFSReaderListener { 19 20 private InputStream input; 21 private Logger logger; 22 private StringBuffer content; 23 24 27 public PPTParser(File file) { 28 content = new StringBuffer (""); 29 logger = LoggingManager.getLogger(this.getClass()); 30 init(file); 31 } 32 33 36 public String getVersion() { 37 return ""; 38 } 39 40 43 47 public StringBuffer getContent() { 48 return content; 49 } 50 51 public void init(File file) { 52 try { 53 input = new FileInputStream (file); 54 POIFSReader reader = new POIFSReader(); 55 reader.registerListener(this); 56 reader.read(input); 57 } catch (Exception ex) { 58 if (logger.isEnabledFor(Level.ERROR)) 59 logger.error(ex.getMessage()); 60 } finally { 61 if (input != null) { 62 try { 63 input.close(); 64 } catch (Exception ex) { 65 if (logger.isEnabledFor(Level.ERROR)) 66 logger.error(ex.getMessage()); 67 } 68 } 69 } 70 } 71 72 public void processPOIFSReaderEvent(POIFSReaderEvent event) { 73 try{ 74 if(!event.getName().equalsIgnoreCase("PowerPoint Document")) 75 return; 76 DocumentInputStream input = event.getStream(); 77 int letter = 0; 78 StringBuffer word = new StringBuffer (); 79 boolean separator = true; 80 while ((letter = input.read()) != -1) { 81 if ((letter > 64 && letter < 91) || (letter > 96 && letter < 123)) { 82 word.append((char)letter); 83 separator = true; 84 } else { 85 if (letter == 196 || letter == 214 || letter == 220 || letter == 223 || 86 letter == 228 || letter == 246 || letter == 252) { 87 word.append((char)letter); 88 separator = true; 89 } else { 90 if (letter == 32) 91 content.append((char)32); 92 if (separator && letter != 0) { 93 if (word.length() > 2) { 94 content.append(word); 95 content.append((char)32); 96 } 97 word = new StringBuffer (); 98 separator = false; 99 } 100 } 101 } 102 } 103 } catch (Exception ex) { 104 if (logger.isEnabledFor(Level.ERROR)) 105 logger.error(ex.getMessage()); 106 } 107 } 108 109 112 public String getAuthor() { 113 return ""; 114 } 115 116 119 public String getSourceDate() { 120 return ""; 121 } 122 123 126 public String getKeywords() { 127 return ""; 128 } 129 130 133 137 public String getTitle() { 138 return ""; 139 } 140 } 141 | Popular Tags |