Получение пробелов между буквами при извлечении PDF - PullRequest
0 голосов
/ 24 мая 2019

Я получаю пробел между буквами (например, между буквами) при извлечении pdf с использованием pdfbox. Похоже, это произошло из-за шрифта Couriernew, поскольку извлечение прекрасно работает с другими шрифтами. Приложение работает на AWS lambda. Я также вижу ошибку «Не удалось записать в кэш шрифтов java.io.FileNotFoundException: /home/user/.pdfbox.cache» в журналах только для этого конкретного файла PDF.

Я попытался установить для шрифтов PDDocument по умолчанию значение arial.

PDFont font = PDTrueTypeFont.loadTTF(_PDdoc, new File("C:\\Windows\\FONTS\\arial.ttf"));
for (int i = 0; i < _PDdoc.getNumberOfPages(); ++i) {
            PDPage page1 = _PDdoc.getPage(i);
            PDResources res = page1.getResources();
            for (COSName fontName : res.getFontNames()) {
                res.put(fontName, font);
            }
        }

Но это не работает, как ожидалось. На локальной машине нет проблем с кешем. Любые выводы будут оценены.

Попробовал реализовать решение, предоставленное в Apache PDFBox Удалить пробелы между символами .

String extractNoSpaces(PDDocument document,String regionName,PDPage page) throws IOException
{
    PDFTextStripperByArea pts = new PDFTextStripperByArea() {
        @Override
        protected void processTextPosition(TextPosition text)
        {
            int[] character = text.getCharacterCodes();
            //check for space
        }
    };      
                        pts = _PDFTextStripperByAreaMap.get(regionName);
                        pts.setSortByPosition(true);
                        pts.extractRegions(page);
                        return pts.getTextForRegion(regionName);
}

В документах содержится не так много информации для getCharacterCodes (), и вышеописанный метод также не выполняется.

...