У меня есть набор файлов PDF, содержащих символы Центральной Европы, такие как č, Ď, Š и так далее. Я хочу преобразовать их в текст, и я пробовал pdftotext
и PDFBox
через Apache Tika, но всегда некоторые из них не преобразуются правильно.
Странно то, что один и тот же символ в одном и том же тексте в одних местах конвертируется правильно, а в других неправильно! Примером может служить этот pdf.
В случае pdftotext я использую следующие параметры:
pdftotext -nopgbrk -eol dos -enc UTF-8 070612.pdf
Мой код Tika выглядит так:
String newname = f.getCanonicalPath().replace(".pdf", ".txt");
OutputStreamWriter print = new OutputStreamWriter (new FileOutputStream(newname), Charset.forName("UTF-16"));
String fileString = "path\to\myfiles\"
try{
is = new FileInputStream(f);
ContentHandler contenthandler = new BodyContentHandler(10*1024*1024);
Metadata metadata = new Metadata();
PDFParser pdfparser = new PDFParser();
pdfparser.parse(is, contenthandler, metadata, new ParseContext());
String outputString = contenthandler.toString();
outputString = outputString.replace("\n", "\r\n");
System.err.println("Writing now file "+newname);
print.write(outputString);
}catch (Exception e) {
e.printStackTrace();
}
finally {
if (is != null) is.close();
print.close();
}
Редактировать: Забыл упомянуть, что я столкнулся с той же проблемой при преобразовании в текст из Acrobat Reader XI.