Pdf полнотекстовый поиск на iPad с Quartz 2D - PullRequest
3 голосов
/ 27 августа 2010

Я пытаюсь реализовать полнотекстовый поиск с использованием Quartz 2D, но это кошмар.Я могу «извлечь» текст из PDF-страницы, используя PDF Operator (TJ и другие ...)

    CGPDFOperatorTableRef myTable;

myTable = CGPDFOperatorTableCreate();

CGPDFOperatorTableSetCallback (myTable, "BT", &op_BT);
CGPDFOperatorTableSetCallback (myTable, "Td", &op_Td);
CGPDFOperatorTableSetCallback (myTable, "TD", &op_TD);
CGPDFOperatorTableSetCallback (myTable, "Tm", &op_Tm);
CGPDFOperatorTableSetCallback (myTable, "T*", &op_T);
CGPDFOperatorTableSetCallback (myTable, "TJ", &op_TJ);
CGPDFOperatorTableSetCallback (myTable, "Tf", &op_TF);
CGPDFOperatorTableSetCallback (myTable, "ET", &op_ET);

Но в то же время мне нужно выделить совпадение на PDF-странице с каким-то прямоугольником, как это было сделано вСафари например.Любые предложения, как это реализовать?Есть ли какие-то решения, которые не требуют такой огромной работы?

1 Ответ

4 голосов
/ 14 января 2011

Это только вершина айсберга ...

Обнаружение "байтов", закодированных в TJ, не означает, что у вас уже есть "текст" или даже вы можете вообще его преобразовать.

В PDF при рисовании текста есть «активный» шрифт (Tf).Шрифт имеет кодировку - вокруг много разных кодировок, и некоторые не являются «обратимыми» в том смысле, что вы можете получить из него юникод.

Если у вас есть «обратимая» кодировка, это нормально.Для реализации обратного поиска все еще много работы (особенно для многобайтовых кодировок ...), но в один прекрасный день все готово.

Если ваша кодировка не такая умная, у вас все еще может быть дополнительная карта / ToUnicode, которая позволяет вычислять Unicode.Дополнительные усилия, но теперь ваш штраф.

... помимо множества существующих документов, которые не поддерживают ни одно из этих сопоставлений с юникодом ...

... и в конце концов: PDF делаетне содержит «текст» в этом смысле, он рисует символы.Таким образом, теоретически вы должны нарисовать символы на виртуальной странице, прежде чем сможете отсортировать их в любом удобочитаемом порядке ...

В целом, это очень весело.

...