iTextSharp - 阅读2列PDF

时间:2014-06-15 22:04:38

标签: itextsharp

我在阅读带有页眉和页脚的PDF时遇到了问题,但是你身体上有两列。

我已经有了标题的列宽和高度,但我需要代码来读取带有列的页面。

任何人都可以向我提供一段用PDF读取PDF的代码吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如果您不知道列的位置,很难达到您想要的效果,但我认为您有坐标,因为您说"我已经有了列宽和身高"。在这种情况下,您的问题与StackOverflow上发布的其他问题不同:iTextSharp read from specific position

假设rect是与列位置对应的Rectangle,那么您需要以下代码:

RenderFilter[] filter = {new RegionTextRenderFilter(rect)};
ITextExtractionStrategy strategy = new FilteredTextRenderListener(
    new LocationTextExtractionStrategy(), filter);
String single_column = PdfTextExtractor.GetTextFromPage(reader, i, strategy));

现在您将文本放在一列中。您需要为页面上的每一列重复此操作。

额外评论虽然在大多数情况下使用RegionTextRenderFilter都可以正常工作,但有些情况(通过在行中插入额外的空格字符来创建列)可能需要将文本块拆分为预先处理。这可以通过例如完成。使用this answer中的TextRenderInfoSplitter并将FilteredTextRenderListener包装在其中。 (此评论由mkl提供。)