Разбор файла PDF с использованием IText для добавления гиперссылки в существующие тексты

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

Огромное спасибо,


person Mukesh Kumar    schedule 21.07.2014    source источник
comment
По сути, вам придется применять извлечение текста с извлечением местоположения текста, а не только простого текста. В этом извлеченном тексте с указанием местоположения вы должны найти все тексты, которые вы хотите сделать гиперссылками. Найдя их, укажите их местоположение и добавьте соответствующие аннотации, чтобы сделать их гиперссылками. Извлечение текста с указанием местоположения можно выполнить в iText, используя вариант LocationTextExtractionStrategy, и в PDFBox, перекрывая PDFTextStripper.writeString(String, List<TextPosition>).   -  person mkl    schedule 21.07.2014
comment
Спасибо, я попробую это.   -  person Mukesh Kumar    schedule 21.07.2014
comment
Это сработало; еще раз спасибо mkl.   -  person Mukesh Kumar    schedule 23.07.2014
comment
Я думаю, вашего первого комментария вполне достаточно для ответа. Можно ли его продвигать как ответ?   -  person Mukesh Kumar    schedule 23.07.2014
comment
Хорошо, я сделал это ответом.   -  person mkl    schedule 23.07.2014


Ответы (1)


Преобразование текстовых элементов в гиперссылки включает несколько операций:

  1. Вы должны применить извлечение текста с извлечением местоположения текста, а не только простого текста.

  2. В этом извлеченном тексте с местами вы должны найти все текстовые части, которые вы хотите сделать гиперссылками.

  3. Найдя их, укажите их местоположение и добавьте соответствующие аннотации, чтобы сделать их гиперссылками.

Извлечение текста с указанием местоположения можно выполнить в iText, реализующем вариант LocationTextExtractionStrategy (см. этот ответ; хотя он написанный для iTextSharp, применяются те же принципы) и в PDFBox, переопределяющем PDFTextStripper.writeString(String, List<TextPosition>).

person mkl    schedule 23.07.2014