В Liferay 6.1 появилась новая полезная фича - возможность просмотра PDF-документов в библиотеке прямо на портале, без необходимости загрузки файла на клиентскую машину. К сожалению, "из коробки" она обычно работает криво - структура документа видна, но текст читать невозможно из за его засорения "кракозябрами". Причём таким образом портится как русский, так и английский текст, так что дело тут явно не в кодировке.
К счастью, документация подсказывает нам, что решается эта проблема достаточно просто - нужно заменить библиотеку, которая генерирует preview для документов - вместо Apache PDFBox использовать ImageMagick. Делается это следующим образом:
1. Ставим ImageMagick. Настоятельно рекомендуется поставить её по дефолтному пути (/usr/local/bin для UNIX-подобных ОС) - в этом случае мы избежим лишних проблем с заданием пути к библиотеке.
2. Открываем файл portal-ext.properties нашего портала и добавляем ключ, "переключающий" генерацию preview на ImageMagick:
imagemagick.enabled=true
Если при установке ImageMagick был использован дефолтный путь (/usr/local/bin в UNIX-подобных ОС), то ничего больше добавлять не надо; если нет, то нужно определить, где находится команда convert. К примеру, в Linux / Solaris / FreeBSD это можно сделать так:
jek@jek-laptop:~$ which convert
/usr/bin/convert
Теперь необходимо прописать путь к команде convert в конфиге портала (файл portal-ext.properties):
# imagemagick.global.search.path[apple]=/opt/local/bin
imagemagick.global.search.path[unix]=/usr/bin
# imagemagick.global.search.path[windows]=C:\\Program Files\\ImageMagick
Для Windows и OS X существуют свои опции; т.к. я тестировал свой пример под Linux, у меня они закомментированы.
После этого нам остаётся только перезапустить портал, загрузить наш документ в библиотеку ещё раз (чтобы повторно запустилась генерация preview) и убедиться в том, что теперь со шрифтами всё в порядке - текст отлично читается.