@Override public List<Page> parse(InputStream fs, List<String> filterPatterns) throws Exception { List<Page> pages = new ArrayList<>(); PageContentHandler handler = new PageContentHandler(filterPatterns); Metadata metadata = new Metadata(); pdfParser.setSortByPosition(true); pdfParser.parse(fs, handler, metadata, new ParseContext()); Map<Integer, List<String>> content = handler.getImprovedContent(); for (Integer i : content.keySet()) { Page page = new Page(i); for (String p : content.get(i)) { page.getParagraphs().add(p); } pages.add(page); } return pages; } }