Сборка библиотеки libgdiplus из исходного кода

02.10.2020

При использовании библиотек 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:

FastReport Mono
 
Все вышесказанное справедливо и для веб-приложений использующих фреймворки .NET Core и Mono.
 
Удачи вам и поменьше проблем с кроссплатформенными программами!
4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.
22 марта 2023

Создание PDF отчета в JetBrains Rider (C#) на «Альт Рабочая станция К» 10

В этой статье мы взглянем на платформу .NET в «Альт Рабочая станция К» 10 и создадим отчет, который можно экспортировать в PDF.
14 февраля 2023

Как настроить веб-сервер Apache2 для FastReport .NET

Запускаем веб-сервер Apache2 в операционной системе Linux для FastReport .NET и .NET 5 с помощью нескольких простых команд.