@Test public void test() throws IOException { final PdfReader pdfReader = TestResourceUtils.getResourceAsPdfReader(this, "test.pdf"); final String expectedText[] = new String[] { "PostScript Compatibility", "Because the PostScript language does not support the transparent imaging \n" + "model, PDF 1.4 consumer applications must have some means for converting the \n" + "appearance of a document that uses transparency to a purely opaque description \n" + "for printing on PostScript output devices. Similar techniques can also be used to \n" + "convert such documents to a form that can be correctly viewed by PDF 1.3 and \n" + "earlier consumers. ", "Otherwise, flatten the colors to some assumed device color space with pre-\n" + "determined calibration. In the generated PostScript output, paint the flattened \n" + "colors in a CIE-based color space having that calibration. "}; final Rectangle[] regions = new Rectangle[] {new Rectangle(90, 605, 220, 581), new Rectangle(80, 578, 450, 486), new Rectangle(103, 196, 460, 143)}; final RegionTextRenderFilter[] regionFilters = new RegionTextRenderFilter[regions.length]; for (int i = 0; i < regions.length; i++) regionFilters[i] = new RegionTextRenderFilter(regions[i]); MultiFilteredRenderListener listener = new MultiFilteredRenderListener(); LocationTextExtractionStrategy[] extractionStrategies = new LocationTextExtractionStrategy[regions.length]; for (int i = 0; i < regions.length; i++) extractionStrategies[i] = (LocationTextExtractionStrategy)listener.attachRenderListener(new LocationTextExtractionStrategy(), regionFilters[i]); new PdfReaderContentParser(pdfReader).processContent(1, listener); for (int i = 0; i < regions.length; i++) { String actualText = extractionStrategies[i].getResultantText() ; Assert.assertEquals(expectedText[i], actualText); } }
public <E extends RenderListener> E attachRenderListener(E delegate, RenderFilter... filterSet) { delegates.add(delegate); filters.add(filterSet); return delegate; }
MultiFilteredRenderListener implements RenderListener { public <E extends RenderListener> E attachRenderListener(E delegate, RenderFilter... filterSet) { delegates.add(delegate); filters.add(filterSet); return delegate; } }
MultiFilteredRenderListener implements RenderListener { public <E extends RenderListener> E attachRenderListener(E delegate, RenderFilter... filterSet) { delegates.add(delegate); filters.add(filterSet); return delegate; } MultiFilteredRenderListener(); }
MultiFilteredRenderListener implements RenderListener { public <E extends RenderListener> E attachRenderListener(E delegate, RenderFilter... filterSet) { delegates.add(delegate); filters.add(filterSet); return delegate; } MultiFilteredRenderListener(); E attachRenderListener(E delegate, RenderFilter... filterSet); void beginTextBlock(); void renderText(TextRenderInfo renderInfo); void endTextBlock(); void renderImage(ImageRenderInfo renderInfo); }
MultiFilteredRenderListener implements RenderListener { public <E extends RenderListener> E attachRenderListener(E delegate, RenderFilter... filterSet) { delegates.add(delegate); filters.add(filterSet); return delegate; } MultiFilteredRenderListener(); E attachRenderListener(E delegate, RenderFilter... filterSet); void beginTextBlock(); void renderText(TextRenderInfo renderInfo); void endTextBlock(); void renderImage(ImageRenderInfo renderInfo);  }