2014-10-31 4 views
-1

i чтение pdf-документов через библиотеку ItextSharp. Но эти документы на чешском языке, которые используют диакритические (ř ě ž š č и т. Д.) Как я могу читать эти символы? Есть идеи? Или, какое-то решение для замены этих символов для нормальных r e z s c? Это код в моем методе. БлагодаряItextSharp - диакритические символы

PdfReader reader = new PdfReader("M:/ShareDirs_KSP/RDM_Debtors/DMS_PROD/" + src); 

    // we can inspect the syntax of the imported page 
    String text = new String(); 
    for (int page = 1; page <= 1; page++) { 

     text += PdfTextExtractor.getTextFromPage(reader, page); 
    } 

    reader.close(); 
+0

Если PDF был создан правильно, то символы должны быть правильно проанализированы. Какую версию iText вы используете? Является ли шрифт, хранящийся в PDF, как простой шрифт или составной шрифт? Прочтите http://stackoverflow.com/questions/26631815/cant-get-czech-characters-while-generating-a-pdf, если вы не знаете разницы. –

+0

У меня версия 5.5.2. Я не пишу, а просто читаю. Где я могу установить кодирование? –

ответ

1

Я написал небольшое доказательство концепции, что разбирает файл 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:

enter image description here

Как вы можете видеть из экрана, текст извлекается правильно (но убедитесь, что используемый вами зритель знает, что файл закодирован как UTF-8, иначе вы можете видеть странные символы вместо фактического текста).

Обратите внимание, что некоторые PDF-файлы не позволяют корректно извлекать текст. Это объясняется в следующем видео:

Пожалуйста, поделитесь своим PDF-файлом, чтобы люди в StackOverflow могли проверить, не удастся ли вам извлечь текст из-за ошибки в вашем коде или не удалось ли вам добиться успеха, PDF не позволяет извлекать текст.

+0

К сожалению, эти документы содержат очень секретную информацию (были отправлены из судов). Я добавляю .getbytes («UTF-8»), но моя текстовая переменная содержит только «[B @ 1d14147»:/ –

+0

Если вы являетесь клиентом, вы можете поделиться документ с платной службой поддержки под NDA. Если вы пользователь, почему бы вам не взглянуть на документ с помощью RUPS? Если документ содержит секретную информацию, текст может быть запутан целиком, и в этом случае вы не сможете его извлечь. Посмотрите видео, если хотите понять, что я имею в виду. –

+1

* моя текстовая переменная содержит только «[B @ 1d14147» * - похоже, что ваша текстовая переменная является массивом байтов, и вы пытаетесь напечатать ее как есть или ее значение toString. Это явно не сработает. – mkl