function PdfLibraryConfigurationSupportError(const Configuration: TPdfLibraryConfiguration; SkiaBuild, FontationsBuild: Boolean): string;
| Configuration | TPdfLibraryConfiguration. Проверяемые настройки |
| SkiaBuild | Boolean. True для сборки PDFium с поддержкой Skia, которая экспортирует FPDF_RenderPageSkia |
| FontationsBuild | Boolean. True для сборки PDFium с бэкендом шрифтов Fontations |
string: пустая строка, когда конфигурация поддерживается, иначе описание неподдерживаемой настройкиНативная инициализация PDFium останавливает весь процесс, получив рендерер или бэкенд шрифтов, которых нет в сборке; ошибку она не возвращает
Поэтому LoadLibrary выполняет эту проверку после привязки экспортов и до нативной инициализации: prpSkia требует сборку со Skia, а pfbpFontations — сборку с Fontations. Если проверка не проходит, LoadLibrary выгружает библиотеку, оставляет конфигурацию незафиксированной и возбуждает EPdfError, так что приложение может вызвать ConfigurePdfLibrary с другими настройками и повторить попытку
Поддержка Skia определяется по экспорту FPDF_RenderPageSkia. Для Fontations PDFium ничего не экспортирует, поэтому LoadLibrary ищет в файле библиотеки Rust-крейты шрифтов, которые линкуются с этим бэкендом; нечитаемый файл библиотеки считается не поддерживающим его
Поставляемые pdfium.dll и pdfium.v8.dll — сборки со Skia и без Fontations
prpDefault, prpAgg, pfbpDefault и pfbpFreeType принимаются любой сборкойConfig := GetPdfLibraryConfiguration;
Config.Renderer := prpSkia;
ConfigurePdfLibrary(Config);
try
LoadLibrary;
except
on E: EPdfError do
begin
Config.Renderer := prpDefault;
ConfigurePdfLibrary(Config);
LoadLibrary;
end;
end;