2015-01-19 2 views
0

Я пытаюсь разобрать некоторые PDF-файлы, чтобы получить текст из него, но у меня есть некоторые проблемы с чтением специальных символов, таких как:. Ţ ă â ' "и другиеCGPDFPageRef специальные символы

У меня есть следующие операторы:

CGPDFOperatorTableSetCallback (table, "MP", &op_MP) 
CGPDFOperatorTableSetCallback (table, "DP", &op_DP) 

CGPDFOperatorTableSetCallback (table, "BMC", &op_BMC) 
CGPDFOperatorTableSetCallback (table, "BDC", &op_BDC) 
CGPDFOperatorTableSetCallback (table, "EMC", &op_EMC) 
CGPDFOperatorTableSetCallback(table, "TJ", arrayCallback) 
CGPDFOperatorTableSetCallback(table, "Tj", stringCallback) 

Вместо этих специальных символов, я п р ß и так далее ... есть ли что-то мне не хватает?

Благодаря

+0

так в чем проблема? –

+0

@ TheParamagneticCroissant Я отредактировал мой вопрос. –

ответ

1

в т он pdf-файл, символы представлены их символом в их шрифте. Шрифты могут использовать произвольное кодирование, поэтому нет гарантии, что код глифа будет соответствовать кодовому номеру Юникода для глифа, или даже, что глиф имеет код Unicode. (Например, многие шрифты включают в себя лигатуры и альтернативные формы определенных букв.) Это может стать довольно сложным.

Может быть (должно) быть некоторое указание о том, как переводить глиф-коды в Юникод. Там может быть явная карта с символом «глиф-юникод», или шрифт может использовать стандартную кодировку Unicode-to-glyph. Информация должна быть в словаре шрифтов, поэтому вам нужно знать, с каким шрифтом отображаются символы.

К сожалению, я не знаю, как вы могли бы получить доступ к этой информации с использованием каркаса 2D кварца.

+0

благодарю вас за ответ. Это сложнее, чем я думал :) –

2

Параметры для операторов TJ и Tj (и других операторов отображения текста) не являются фактическими строками, а байтовыми массивами. Байты в этих массивах должны быть переведены на символы на основе кодировки шрифта и ToUnicode шрифта (если доступно).
Вы также должны обрабатывать оператор Tf, который устанавливает активный шрифт. На основе идентификатора шрифта, предоставленного в качестве параметра, вы найдете объект шрифта в словаре/Resources. Объект font содержит необходимые записи для правильного декодирования параметров TJ/Tj.
PDFKitten рама - хорошее начало для вдохновения.

Чтение PDF specification (раздел 9.10 и связанный) является обязательным условием для извлечения текста из файлов PDF.

+0

спасибо за ответ. Я посмотрю на это. –

Смежные вопросы