Native Linux and macOS
Natywny backend FPC obsługuje przepływy biblioteki bez GUI na Linux x64 i macOS ARM64, produkując prawdziwe programy ELF i Mach-O
Istniejące API TPDFlib obejmuje tworzenie PDF, zapis i wczytywanie, wyodrębnianie i edycję tekstu, wyodrębnianie strukturalne, przenośne procedury zwrotne OCR, renderowanie bitmap, metadane, szyfrowanie, sieciowy dostęp range i natywne podpisywanie PFX
Zależności środowiskowe
| Dostawca | Biblioteka | Przeznaczenie |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, skróty, tożsamości PKCS12, podpisy CMS, integralność i jawne łańcuchy zakotwiczeń zaufania |
| libcurl | libcurl z asynchronicznym DNS | HTTP/HTTPS, ograniczony transport binarny, dostęp range i żądania RFC 3161 |
| Cairo | libcairo | Powierzchnie obrazów bitmapowych, ścieżki, przycinanie, kontury glifów i obrazy |
| Fontconfig | libfontconfig | Rzeczywiste dopasowywanie natywnych plików czcionek, w tym jawne podstawienie rodziny |
| OpenJPEG 2 | libopenjp2 | Dekodowanie i kodowanie JPEG 2000 |
Linux ładuje odpowiednie systemowe SONAME; macOS używa bibliotek ARM64 z /opt/homebrew i systemowego libcurl
Brakujące biblioteki, symbole lub nieobsługiwane operacje kończą się jawnym błędem; nie stosuje się żadnego zamiennika kontekstu urządzenia Windows
Podpisywanie i znaczniki czasu
Domyślny dostawca PFX obsługuje rzeczywiste tożsamości RSA i EC, odłączony CMS, CAdES oraz starsze profile z dołączonym SHA1; weryfikacja sprawdza bajty ByteRange PDF i podpis CMS
Weryfikacja łańcucha certyfikatów wymaga jawnych zakotwiczeń zaufania; wbudowane certyfikaty nie dają zaufania, a sama integralność jeszcze o zaufaniu nie świadczy
ApplyPAdESSignatureTimeStamp używa skonfigurowanego domyślnego natywnego transportu HTTP, aby pobrać i dołączyć prawdziwy token RFC 3161; przed oryginalnym podpisem zarezerwuj wystarczającą pojemność /Contents
Weryfikacja znacznika czasu sprawdza podpisany token, odcisk wiadomości, wykluczający krytyczny EKU timeStamping, nazwę TSA, opcjonalne oczekiwane policy/nonce oraz zaufany łańcuch certyfikatów w momencie generowania tokenu
Znaczniki czasu dokumentu weryfikują dodatkowo rzeczywisty odcisk ByteRange PDF; wywołujący może użyć istniejącego przepływu przelotowego DocTimeStamp i dostarczyć token
Metadane i renderowanie
XMP używa prawdziwego DOM świadomego przestrzeni nazw i zachowuje niepowiązane właściwości podczas edycji
Deklaracje DTD są odrzucane przez czytnik XML niezależnie od kodowania źródła; znaki wejściowe i zdekodowane są limitowane, a przejście strumieniowe ogranicza głębokość i zdarzenia węzłów przed budową DOM
Renderowanie używa rzeczywistego natywnego magazynu bitmap i powierzchni obrazów Cairo; renderowanie pasmowe zachowuje współrzędne w przestrzeni urządzenia i używa wierszy ochronnych, aby antyaliasing na granicach był spójny
Natywne osadzanie czcionek rodzinnych rozwiązuje rzeczywisty plik Fontconfig i osadza kompletny samodzielny program TrueType z CIDFontType2, Identity CIDToGIDMap, zainicjowanymi metrykami i szerokościami Unicode; tekst BMP i przenośne warstwy OCR przeżywają zapis i ponowne wczytanie PDF
Punkt wejścia odrzuca nieosadzone czcionki rodzinne, kolekcje, programy CFF i prawa osadzania wyłącznie bitmapowego; osadzanie ograniczone wymaga istniejącego jawnego nadpisania praw, a czcionki zakazujące subsettingu pozostają kompletnymi programami
Limity
- Konteksty urządzeń Windows, EMF, GUI, schowek i drukowanie wykraczają poza natywny backend bez GUI
- Złożone natywne kształtowanie tekstu i tożsamości z systemowego magazynu certyfikatów Windows są niedostępne
- Punkt wejścia osadzania samodzielnego TrueType obsługuje obecnie tekst BMP; tekst z płaszczyzn uzupełniających, wyodrębnianie krojów TTC i osadzanie CFF wykraczają poza ten punkt wejścia
- Online'owe unieważnianie OCSP/CRL jest niedostępne; żądania weryfikacji unieważnienia raportują wynik nieznany
- Domyślny natywny dostawca PFX odrzuca RSA-PSS oraz dodatkowe atrybuty podpisywania policy, commitment i revocation
- Natywne transformacje CMYK/ICC i zapis indeksowanych, jednobitowych BMP są niedostępne
- HTTP wymaga obsługi asynchronicznego DNS w libcurl, aby respektować limity czasu wyszukiwania DNS
Budowa i weryfikacja
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
Przekaż --config /path/to/fpc.cfg dla jawnej konfiguracji kompilatora; runner nie zmienia globalnych ustawień kompilatora ani nie dodaje -FcUTF8
Zestaw testów sprawdza rzeczywiste natywne formaty plików wykonywalnych i zapisuje raport JSON z wersjami kompilatora i zależności, skrótami źródeł i plików wykonywalnych, wynikami i limitami
Załączone w repozytorium fixture'y Tests/Native obejmują zapis, wczytanie i renderowanie PDF, przepływy tekstowe, szyfrowanie, metadane, podpisy, rzeczywisty ruch HTTP/TSA i negatywne przypadki bezpieczeństwa