Как отмечено в PDFBOX-3147, PDFBox пока не полностью поддерживает сложное формирование скрипта. Чтобы решить эту проблему, я использую внешний механизм формирования (HarfBuzz), который предоставляет мне правильные идентификаторы глифов и точные позиции X/Y.
Проблема: я не могу найти поддерживаемый API в PDFBox 3 для прямого внедрения этих предварительно рассчитанных идентификаторов и позиций глифов. Метод PDPageContentStream.showText(String text) заставляет входные данные быть строкой Юникода. Внутренне PDFBox перекодирует эту строку и применяет собственное ограниченное формирование, которое эффективно переопределяет работу, проделанную HarfBuzz.
Что я учел:
- Необработанные команды: Я знаю о AppendRawCommands(" Tj"). Однако это похоже на взлом. Он обходит поднабор шрифтов и генерацию ToUnicode, делая текст недоступным для поиска, и я опасаюсь, что он может быть удален в будущих версиях.
- Векторные контуры: Отображение глифов в виде фигур/путей. Визуально это выглядит правильно, но ухудшает возможность выбора текста и возможности поиска.
Подробнее здесь: https://stackoverflow.com/questions/798 ... content-st
Мобильная версия