Я написал небольшое доказательство концепции, что разбирает файл czech.pdf. Этот файл содержит несколько символов с диакритикой. Он был создан в ответ на следующий вопрос: Can't get Czech characters while generating a PDF
Текст сохраняется в файле дважды: один раз с использованием простого шрифта, один раз с использованием сложного шрифта. В моем доказательство концепции (названный ParseCzech), я разобрать этот PDF в файл закодирован с использованием UTF-8 (Юникод):
public void parse(String filename) throws IOException {
PdfReader reader = new PdfReader(filename);
FileOutputStream fos = new FileOutputStream(DEST);
for (int page = 1; page <= 1; page++) {
fos.write(PdfTextExtractor.getTextFromPage(reader, page).getBytes("UTF-8"));
}
fos.flush();
fos.close();
}
Результат является файл czech.txt:
Как вы можете видеть из экрана, текст извлекается правильно (но убедитесь, что используемый вами зритель знает, что файл закодирован как UTF-8, иначе вы можете видеть странные символы вместо фактического текста).
Обратите внимание, что некоторые PDF-файлы не позволяют корректно извлекать текст. Это объясняется в следующем видео:
Пожалуйста, поделитесь своим PDF-файлом, чтобы люди в StackOverflow могли проверить, не удастся ли вам извлечь текст из-за ошибки в вашем коде или не удалось ли вам добиться успеха, PDF не позволяет извлекать текст.
Если PDF был создан правильно, то символы должны быть правильно проанализированы. Какую версию iText вы используете? Является ли шрифт, хранящийся в PDF, как простой шрифт или составной шрифт? Прочтите http://stackoverflow.com/questions/26631815/cant-get-czech-characters-while-generating-a-pdf, если вы не знаете разницы. –
У меня версия 5.5.2. Я не пишу, а просто читаю. Где я могу установить кодирование? –