【问题标题】:itextsharp: unable to cast from FilteredRenderListener to ITextExtractionStrategyitextsharp:无法从 FilteredRenderListener 转换为 ITextExtractionStrategy
【发布时间】:2016-01-02 05:06:54
【问题描述】:

我想用 itextsharp 从指定的 pdf 区域提取文本。我知道有一个例子http://sourceforge.net/p/itextsharp/code/HEAD/tree/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter15/ExtractPageContentArea.cs#l35。核心代码是这样的:

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

但是,vs2012 向我展示了“无法从 FilteredRenderListener 隐式转换为 ITextExtractionStrategy ”。我尝试进行显式转换。但是失败了。有人可以帮我吗?我使用了错误的 itextsharp 版本吗?非常感谢!

【问题讨论】:

  • 仅供参考,Sourceforge 拥有旧的 SVN 存储库。 iTextSharp 目前在 GitHub 上:github.com/itext/itextsharp
  • 现在我看到我们没有将 ITextSharp 示例从 SVN 移植到 Git,因为该目录不是像 trunkbranchestags 这样的默认 SVN 目录。我想我知道星期一早上该做什么
  • 我无法从 sourceforge 知道正确的 itextSharp 版本。所以我只是将继承 ITextExtractionStrategy 接口的 FilteredRenderListener 的适当版本复制到我的项目中。现在它起作用了。非常感谢!
  • 我认为,在我们检查完所有内容后,如果我们从 Sourceforge 中删除该存储库,这可能是个好主意,因为 Sourceforge 已变得不可信(阅读媒体),我们发布了人们应该离开的通知到 GitHub。
  • @juilylian 我的回答解决了你的问题吗?或者还有什么问题吗

标签: itextsharp extract area


【解决方案1】:

您的线路如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2018-02-14
    • 2016-03-28
    相关资源
    最近更新 更多