При использовании библиотек FastReport .NET (Core), FastReport Open Source и FastReport Mono под управлением операционной системы Linux возможно некорректное отображение юникодных текстов в предварительном просмотре отчёта, а также при сохранении документов в файлы изображений или файлы PDF.
Одна из распространённых проблема – это ошибка переноса слов в предложении и, как следствие, неверный интервал между словами. Например, при использовании тайского языка в операционной системе Windows мы видим такой текст:
При запуске этого же отчёта в операционной системе Linux Ubuntu наблюдается неверное форматирование строки:
Также возможны проблемы с переносом слов. Другой пример с тайским языком в операционной системе Windows:
Тот же текст в операционной системе Linux Ubuntu выглядит некорректно:
Подобные ошибки отображения текста могут наблюдаться и в других языках.
Также возможно появление следующей ошибки при работе приложения:
1 |
System.OutOfMemoryException: Not enough memory to complete operation [GDI+ status: OutOfMemory]
|
К счастью, есть решение описанной проблемы – самостоятельная сборка библиотеки libgdiplus из исходников с ключом with-pango.
Прежде чем приступить к сборке, настоятельно рекомендуется сделать резервную копию файлов /usr/lib/libgdiplus*.*, так как в процессе они будут перезаписаны новыми. В таком случае вы сможете вернуть систему в исходное состояние, если желаемый результат не будет получен.
На первом этапе нам нужно установить требуемые зависимости с помощью команды:
$ sudo apt-get install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev libpango1.0-dev
Затем необходимо сделать клон нужной нам библиотеки libgdiplus из репозитория GitHub:
$ git clone https://github.com/mono/libgdiplus.git
После этого переходим в папку libgdiplus и выполняем команды сборки:
$ ./autogen.sh --with-pango --prefix=/usr $ make
Если сборка прошла успешно и нет никаких ошибок, следом можно выполнить установку собранной библиотеки:
$ sudo make install
Файлы будут скопированы на место прежних в папку /usr/lib.
Теперь можно запустить программу с отчётами и убедиться в её корректной работе.
В качестве примера можно посмотреть на работу FastReport Mono под управлением Linux Ubuntu 18.04: