Windows on ARM

PDFlibPas поддерживает Windows 11 on ARM через нативные сборки исходников Free Pascal ARM64 и Delphi ARM64EC, используя существующий API TPDFlib

КомпиляторЦельСовместимость приложений и DLL
Free Pascal 3.3.1 с соответствующими ARM64 RTL и пакетамиaarch64-win64Нативные ARM64-приложения Windows и ARM64 DLL
Delphi с установленными компилятором и RTL Windows ARM64ECWinARM64ECПриложения и DLL ARM64EC с x64-совместимым ABI на Windows 11 on ARM

У ARM64 и ARM64EC разные бинарные интерфейсы и требования к зависимостям; подберите компилятор, RTL и набор DLL под выбранную цель

Сборки Free Pascal

Выберите компилятор, у которого вывод -iTP — aarch64, а вывод -iTO — win64

set FPC=C:\Toolchains\FPC\bin\aarch64-win64\fpc.exe
build-Lazarus-Lib.cmd winarm64
build-Lazarus-DLL.cmd winarm64

Юниты библиотеки пишутся в Lib\FPC\aarch64-win64; полная DLL — в DLL\FPC\aarch64-win64\Release\PDFlibDLL-aarch64-win64.dll

Передайте debug для отладочной сборки; build-Lazarus-Lib-TRIAL.cmd winarm64 собирает TRIAL-юниты библиотеки

Пакет рантайма Lib\FPC\PDFlibPasLaz.lpk тоже собирается нативной установкой Lazarus/FPC под ARM64; уровень оптимизации у него совпадает со сборками библиотеки из командной строки

Держите конфигурацию компилятора и пути пакетов согласованными с целью и не добавляйте -FcUTF8: он может повредить бинарные данные AnsiString в идентификаторах PDF и значениях шифрования

Сборки Delphi ARM64EC

Сборка требует bin64\dccarm64ec.exe и RTL из lib\winarm64ec\release, включая librtlhelper.a; квалифицирована RAD Studio 37.0 с ARM64EC-инструментарием

build-WinARM64EC-Lib.cmd -BDSRoot "C:\Program Files (x86)\Embarcadero\Studio\37.0"
DLL\build-WinARM64EC.cmd -BDSRoot "C:\Program Files (x86)\Embarcadero\Studio\37.0"

Скрипты также находят RAD Studio через BDS или реестр установок; другую зарегистрированную установку выбирайте через -Version

Юниты библиотеки пишутся в Lib\37.0\WinARM64EC\Release, а DLL — в DLL\WinARM64EC\Release\PDFlibDLLARM64EC.dll

Передайте -Debug или -Trial для отдельных отладочных или TRIAL-каталогов вывода; соответствующие точки входа -TRIAL.cmd выбирают TRIAL-сборку автоматически

Валидация результата проверяет метаданные CHPE ARM64EC, так как PE-образ ARM64EC несёт поле machine AMD64; по одному этому полю её не отличить от обычной сборки x64

Провайдеры времени выполнения

ВозможностьПровайдер Windows ARMРазвёртывание
AES CBC и GCMWindows CNGСистемная bcrypt.dll
JPEGWindows GDI+Системная gdiplus.dll
СжатиеРеализация на Pascal во FPC или Delphi System.ZLibКомпонуется выбранным маршрутом компилятора
XMPWindows MSXML; Delphi ARM64EC использует типизированные COM-интерфейсы и ограниченный SAX-preflightСистемный MSXML 6 для Delphi ARM64EC
JPEG 2000Разделяемая библиотека OpenJPEG 2Разверните openjp2.dll под ABI приложения
Кодирование JBIG2MMR-энкодер на PascalНабор объектов внешнего энкодера для Intel исключён

Для приложений FPC берите нативную ARM64 DLL OpenJPEG; приложения Delphi ARM64EC могут использовать x64-совместимую DLL OpenJPEG — Windows эмулирует x64-зависимость

Lib\thirdparty\Build-OpenJPEGWindowsARM.ps1 собирает OpenJPEG 2.5.4 из исходников upstream подходящим драйвером Clang из LLVM-MinGW

powershell.exe -NoProfile -ExecutionPolicy Bypass -File Lib\thirdparty\Build-OpenJPEGWindowsARM.ps1 -Architecture ARM64 -Clang "C:\Toolchains\llvm-mingw\bin\aarch64-w64-mingw32-clang.exe" -SourceRoot "C:\Sources\openjpeg-2.5.4" -OutputDirectory "C:\MyApp\ARM64"

Для x64 DLL OpenJPEG выберите -Architecture x64 и драйвер x86_64-w64-mingw32-clang.exe

OpenJPEG загружается при обращении к его кодеку; отсутствующий или несовместимый провайдер даёт явную ошибку и не мешает запуску несвязанных PDF-сценариев

Опциональные PDFium, Cairo, OCR, штрихкоды и другие нативные расширения тоже требуют DLL, совместимых с ABI приложения

Использование и проверка DLL

Точки входа Windows DLL ищите по имени через GetProcAddress; DLL для Windows ARM открывает существующую поверхность именованных экспортов, строки UTF-16, 32-битные непрозрачные дескрипторы экземпляров и 64-битные указатели на буферы

Храните дескрипторы как знаковые 32-битные целые, указатели на данные — размером с указатель процесса, а буферы и экземпляры освобождайте до выгрузки DLL

Квалифицированные консольные сценарии покрывают создание PDF, сохранение и загрузку, извлечение текста, шифрование, XMP, рендеринг Windows bitmap/JPEG, кодирование JPEG 2000 и вызовы DLL через весь экспортированный ABI

GUI, принтеры, интеграция с оборудованием и опциональные сторонние провайдеры требуют проверки под конкретное приложение; набор тестов предоставляется по запросу покупателям enterprise-лицензий

О целях Linux и macOS см. Native Linux and macOS

Указатель документации