2016-01-02 5 views
1

Я хочу извлечь текст из указанной области PDF с помощью itextsharp. Я знаю, что есть пример http://sourceforge.net/p/itextsharp/code/HEAD/tree/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter15/ExtractPageContentArea.cs#l35. Основной код выглядит так:itextsharp: невозможно передать из FilteredRenderListener в ITextExtractionStrategy

 RenderFilter[] filter = {new RegionTextRenderFilter(rect)}; 
    ITextExtractionStrategy strategy = new FilteredRenderListener(new LocationTextExtractionStrategy(), filter); 
    string text = PdfTextExtractor.GetTextFromPage(reader, i, strategy); 

Однако vs2012 показывает мне, что «не может преобразовать неявно из FilteredRenderListener в ITextExtractionStrategy». Я попытался сделать явное преобразование. Но не удалось. Может ли кто-нибудь мне помочь? Я использую неверную версию itextsharp? Спасибо!

+0

Just FYI, Sourceforge имеет старый репозиторий SVN. iTextSharp в настоящее время находится на GitHub: http://github.com/itext/itextsharp –

+0

И теперь я вижу, что мы не переносили примеры ITextSharp из SVN в Git, потому что каталог не был каталогом SVN по умолчанию, например 'trunk', 'branch' или' tags'. Я думаю, что знаю, что делать в понедельник утром –

+0

Я не могу знать правильную версию itextSharp из sourceforge. Поэтому я просто копирую соответствующую версию FilteredRenderListener, которая использует интерфейс ITextExtractionStrategy, для моего проекта. Теперь это работает. Спасибо! –

ответ

0

Ваша линия выглядит следующим образом:

ITextExtractionStrategy strategy = new FilteredRenderListener(new LocationTextExtractionStrategy(), filter); 

но corresponding lines from the sample вы ссылаетесь выглядеть следующим образом:

ITextExtractionStrategy strategy; 
... 
strategy = new FilteredTextRenderListener(
    new LocationTextExtractionStrategy(), filter 
); 

И.Э. образец использует FilteredTextRenderListener, в то время как вы используете только FilteredRenderListener. Первый фактически расширяет последнее, а также реализует ITextExtractionStrategy.

Таким образом, просто используйте FilteredTextRenderListener вместо FilteredRenderListener.