Przenośny rdzeń Linux
Przenośny rdzeń kompiluje istniejący model obiektów, parser prostych obiektów, helpery Direct File I/O, interpreter strumieni zawartości, helpery wartości PDF, writer xref i trailer, backend Flate oraz prymitywy AES do natywnych programów Linux we Free Pascalu
HPDFPlatform dostarcza prawdziwe mapowane pliki POSIX i odczyty pozycyjne, tworzenie plików tymczasowych, synchronizację workerów i losowe bajty systemu operacyjnego; adapter Windows zachowuje istniejące natywne zachowanie plików i mapowania
Zakres akceptacji
Tests/Linux/Run-PortableCoreTests.sh buduje natywny konsolowy wykonywalny ELF x86_64, czyści zmienne wyświetlania pulpitu, sprawdza zależności bibliotek GUI i uruchamia osiem grup regresji z timeoutem
Kontrole pokrywają escape parsera i referencje pośrednie, niezmiennicze wartości PDF i filtry strumieni, mapowane okna i offsety plików sparse powyżej 4 GiB, skompresowane asynchroniczne strumienie spill, znane odpowiedzi Flate i AES, hasze MD5 plików, losowe IV systemu operacyjnego, poprawną klasyczną serializację xref, liczby stron i wyszukiwanie obiektów Direct File oraz tekst i pozycje glifów w strumieniu zawartości
Generowany jednostronicowy fixture jest zapisywany przez istniejący writer i niezależnie czytany przez współdzielone helpery Direct File; kontrole zawartości używają zarówno istniejącego resolvera tożsamości Latin-1, jak i resolvera fontów strony z różnicami kodowań i jawnymi szerokościami
Dane fontów i dekodowanie tekstu
HPDFFontData oddziela istniejące dekodowanie nazw glifów, kodowań i sfnt CMap od GDI; renderowanie osadzonych glifów w Windows i istniejący dekoder HPDFTextExtraction używają tej samej implementacji
THPDFTrueTypeData wystawia obsługiwane wyszukiwanie CMap, odwrotne mapowanie glif→Unicode i poziome posunięcia hmtx dla obrazu sfnt pojedynczego fontu
HPDFBaseFontMetrics używa kanonicznych posunięć standardowych fontów dla dwunastu dokładnych nazw Helvetica/Times/Courier i wspieranych zdekodowanych znaków, zachowuje fallback GDI Windows i Linux Fontconfig dla innych fontów oraz utrzymuje jawne szerokości PDF
Kontrakty helperów platformy i fontów
THPDFPlatformHandle to ze znakiem uchwyt o natywnej szerokości, a HPDFInvalidFileHandle to -1; HPDFOpenReadOnlyFile i HPDFCloseFile zarządzają uchwytami odczytu, HPDFFileSize i HPDFReadFileAt używają pozycji Int64, a wywołujący muszą obsłużyć skrócone odczyty
HPDFMappingGranularity dostarcza wymagane wyrównanie offsetu; HPDFCreateReadOnlyMapping zwraca zero przy niepowodzeniu, HPDFMapReadOnly mapuje żądany zakres, a HPDFUnmapReadOnly / HPDFCloseMapping zwalniają widok i mapowanie
HPDFCreateTemporaryFile wyłącznie tworzy plik, którego ścieżka i sprzątanie należą do wywołującego; HPDFInitializeLock / HPDFDeleteLock zarządzają natywnymi sekcjami krytycznymi
THPDFPlatformEvent jest aliasem TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent i HPDFResetEvent zarządzają synchronizacją, a wywołujący zwalnia eventy po zatrzymaniu workera
HPDFSecureRandomBytes wypełnia żądany bufor z systemu operacyjnego albo podnosi wyjątek
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName i HPDFBaseEncToUnicode zachowują istniejące zachowanie nazw i kodowań; HPDFBaseFontFamilyToken usuwa sufiksy subsetów i stylów, a HPDFIsStandardTextFont rozpoznaje aliasy Helvetica, Times i Courier
HPDFMeasureBaseFontWidths używa providera GDI Windows albo Fontconfig w Linux i współdzielonych poziomych metryk sfnt; THPDFTrueTypeData i THPDFUnicodeByGID dostarczają współdzielone API danych fontów
Współdzielone typy Direct File
HPDFDirectFileTypes jest właścicielem istniejących definicji THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource i THPDFDirectFileState
Dzięki temu rozdzieleniu HPDFDirectFileIO może używać tych samych rekordów i typów uprawnień bez importowania implementacji komponentu i GUI
HPDFDoc zachowuje aliasy i stałe wartości enumów pod pierwotnymi nazwami; ordynały enumów i układy rekordów są bez zmian
Inicjalizacja programów Linux
Natywne programy Free Pascal muszą umieścić cthreads na pierwszym miejscu listy uses, zanim zaczną używać wątków roboczych; test przenośnego rdzenia ładuje też cwstring, aby dostarczyć menedżera konwersji Unicode
Użyj FPC 3.3.1 albo nowszego z pasującymi modułami FCL i paszlib, runtime C, Fontconfig z zainstalowanymi fontami TrueType oraz narzędzi file, ldd i timeout; FPC_EXE i HPDF_LINUX_OUTPUT wybierają kompilator i izolowany katalog wyjściowy
Minimalną wspieraną wersją FPC jest 3.3.1 na każdej platformie; nowa akceptacja zapisuje rzeczywistą kompilację i tożsamość źródła, podczas gdy wyniki starszych kompilatorów pozostają historycznym dowodem
Natywne integracje dokumentów
Natywne API dokumentów headless wczytuje klasyczne grafy, xref-stream, hybrydowe i skompresowane obiekty, rozwiązuje zasoby stron i Form, ekstrahuje tekst Unicode, edytuje obsługiwane pola AcroForm, importuje strony i publikuje przyrostowe rewizje z zachowaniem bajtów źródła
Wersjonowane C ABI Linux wystawia rzeczywiste uchwyty dokumentów ELF i synchroniczne callbacki C dla tych natywnych operacji; THotPDF pozostaje osobną integracją komponentu Windows
Natywne workflow dokumentów dostarczają import HTML, widoczny i niewidoczny tekst stron, rzeczywisty OCR Tesseract i konwersję do rastrowego PDF/A-4; importy stron i walidowana konwersja archiwizacji tekstu/wektorów zachowują oryginalne zasoby, a jawna naprawa fontów archiwalnych dodaje ograniczone osadzanie zamienników
Zobacz Tests/Linux/Readme.en-us.md dla kontraktów adapterów platformy, własności typów Direct File, granic regresji i linków do dowodów natywnych workflow i wdrożeń
Dokument headless akceptuje obecnie ograniczony profil Standard AES-256 R5/R6 opisany przez THPDFHeadlessAES256Security, włącznie z uprawnieniami owner/user, skompresowanymi obiektami i zaszyfrowanymi przyrostowymi zapisami formularzy
Zobacz natywne renderowanie Cairo i atomową natywną publikację podpisów dla zależności runtime, obsługiwanej zawartości, budżetów, uprawnień, tożsamości źródła i kontraktów wyjścia
Wyglądy formularzy Unicode obsługują tekst wielowierszowy, komórki comb, rotacje, maski haseł i opcjonalny shaping HarfBuzz/FriBidi; osobne natywne API obsługują pola choice i button, dostarczone rodziny fontów oraz typowany rich text z zachowaniem zaszyfrowanych rewizji
Natywne workflow podpisywania obejmują tożsamości PEM/PFX, nowe pola podpisu, widoczne wyglądy i certyfikację; jawny transport znaczników czasu, zaufanie i zwalidowane dowody odwołań zachowują swoje udokumentowane wymagania kryptograficzne i publikacyjne
Pozostałe granice możliwości
Profil bezpieczeństwa dokumentu headless obsługuje Standard AES-256 R5/R6; inne handlery bezpieczeństwa pozostają poza tym profilem zamiast stać się obsługiwanymi przez adapter portable-core
Szersze renderowanie adnotacji, ogólny CSS/layout rich-text, kompletne grafy akcji i zasobów FDF oraz ogólna zgodność z dynamicznym XFA pozostają aktywne w planie dopełniania możliwości; zaimplementowane powyżej natywne integracje są dostępne niezależnie od tej pozostałej pracy