Get text from PDF with broken encoding using iText7

Viewed 210

I'm trying to extract text from PDF using the following method:

public static string GetRectangleText(string pdfPath, int pageId, float[] rectangleDimensions)
{
    using (PdfDocument pdfDoc = new PdfDocument(new PdfReader(pdfPath)))
    {
        var page = pdfDoc.GetPage(pageId);
        iText.Kernel.Geom.Rectangle rect = new iText.Kernel.Geom.Rectangle(rectangleDimensions[0], rectangleDimensions[1], rectangleDimensions[2], rectangleDimensions[3]);
        var filter = new IEventFilter[1];
        filter[0] = new TextRegionEventFilter(rect);
        var filteredTextEventListener = new FilteredTextEventListener(new LocationTextExtractionStrategy(), filter);
        var result = PdfTextExtractor.GetTextFromPage(page, filteredTextEventListener);
        return result;
    }
}

While it works fine for most documents, several PDFs which would seem to have their encoding broken, return strings like ǪȃǷǻȁǭǵǶǬdzȇǹǺǸǶǰǺǭdzȄǹǺǪǨ ,668(')25&216758&7,21 what should in fact be ВЫПУЩЕНО ДЛЯ СТРОИТЕЛЬСТВА / ISSUED FOR CONSTRUCTION

I wonder if some kind of specific LocationTextExtractionStrategy would help?

0 Answers
Related