Linux Taşınabilir Çekirdeği
Portable core; mevcut object model'i, basit-object parser'ı, Direct File I/O helper'larını, content-stream interpreter'ı, PDF value helper'larını, xref ve trailer writer'ı, Flate backend'ini ve AES primitiflerini Free Pascal ile native Linux programlarına derler
HPDFPlatform, gerçek POSIX mapped file'larını ve positional read'lerini, geçici dosya oluşturmayı, worker senkronizasyonunu ve işletim sistemi rastgele baytlarını sağlar; Windows adapter'ı mevcut native file ve mapping davranışını korur
Kabul kapsamı
Tests/Linux/Run-PortableCoreTests.sh; native bir x86_64 ELF console executable'ı derler, masaüstü display değişkenlerini temizler, GUI kütüphane bağımlılıklarını denetler ve timeout ile sekiz grup regression çalıştırır
Denetimler; parser escape'lerini ve indirect referansları, invariant PDF değerlerini ve stream filter'ları, 4 GiB üzerindeki mapped window'ları ve sparse-file offset'lerini, sıkıştırılmış asenkron spill stream'lerini, Flate ve AES known answer'larını, MD5 file hash'lerini, işletim sistemi rastgele IV'lerini, geçerli klasik xref serileştirmesini, Direct File sayfa sayılarını ve object lookup'ı ve content-stream metni ile glyph konumlarını kapsar
Üretilen tek sayfalık fixture mevcut writer ile yazılır ve paylaşılan Direct File helper'ları üzerinden bağımsız olarak okunur; content denetimleri, hem mevcut Latin-1 identity resolver'ı hem de encoding farkları ve açık width'lerle sayfa font resolver'ını kullanır
Font verisi ve metin decoding
HPDFFontData, mevcut glyph-name, encoding ve sfnt CMap decoding'ini GDI'dan ayırır; Windows gömülü glyph rendering'i ve mevcut HPDFTextExtraction decoder'ı aynı implementasyonu kullanır
THPDFTrueTypeData; tek fontluk sfnt image'i için desteklenen CMap lookup'ı, ters glyph-to-Unicode mapping'ini ve hmtx yatay advance'lerini dışa açar
HPDFBaseFontMetrics, on iki kesin Helvetica/Times/Courier adı ve desteklenen çözülmüş character'lar için kanonik standart-yazı-tipi advance'lerini kullanır, diğer yazı tipleri için Windows GDI ve Linux Fontconfig fallback'ini tutar ve açık PDF genişliklerini korur
Platform ve font helper sözleşmeleri
THPDFPlatformHandle işaretli native-width bir handle'dır ve HPDFInvalidFileHandle -1'dir; HPDFOpenReadOnlyFile ve HPDFCloseFile read handle'larını yönetirken HPDFFileSize ve HPDFReadFileAt Int64 pozisyonlar kullanır ve caller'lar kısa read'leri kendileri ele almak zorundadır
HPDFMappingGranularity gereken offset alignment'ını sağlar; HPDFCreateReadOnlyMapping başarısızlıkta sıfır döndürür, HPDFMapReadOnly istenen aralığı map eder, HPDFUnmapReadOnly / HPDFCloseMapping ise view'ı ve mapping'i serbest bırakır
HPDFCreateTemporaryFile, yolu ve temizliği caller'a ait olan bir dosyayı exclusive biçimde oluşturur; HPDFInitializeLock / HPDFDeleteLock native critical section'ları yönetir
THPDFPlatformEvent TEvent'in alias'ıdır; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent ve HPDFResetEvent senkronizasyonu yönetir ve caller, worker durduktan sonra event'leri serbest bırakır
HPDFSecureRandomBytes, istenen buffer'ı işletim sisteminden doldurur veya exception fırlatır
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName ve HPDFBaseEncToUnicode mevcut name ve encoding davranışını korur; HPDFBaseFontFamilyToken subset ve stil soneklerini kaldırırken HPDFIsStandardTextFont Helvetica, Times ve Courier alias'larını tanır
HPDFMeasureBaseFontWidths, Windows GDI veya Linux Fontconfig ve paylaşan sfnt yatay metriklerinden önce kanonik desteklenen standart-yazı-tipi advance'lerini kullanır; THPDFTrueTypeData ve THPDFUnicodeByGID paylaşılan font-data API'sini sağlar
Paylaşılan Direct File türleri
HPDFDirectFileTypes; mevcut THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource ve THPDFDirectFileState tanımlarının sahibidir
Bu ayrım, HPDFDirectFileIO'nun aynı record ve permission türlerini component ve GUI implementasyonunu import etmeden kullanmasını sağlar
HPDFDoc, alias'ları ve enum-value sabitlerini orijinal adlarıyla korur; enum ordinal'leri ve record layout'ları değişmez
Linux program başlatma
Native Free Pascal programları, worker thread'leri kullanmadan önce cthreads'i uses listesinin başına koymak zorundadır; portable-core testi ayrıca Unicode conversion manager'ı sağlamak için cwstring yükler
FCL ve paszlib unit'leri, bir C runtime, kurulu TrueType fontlarla Fontconfig ve file, ldd, timeout araçlarıyla FPC 3.2.2 veya daha yenisini kullanın; FPC_EXE ve HPDF_LINUX_OUTPUT derleyiciyi ve izole çıktı dizinini seçer
Desteklenen minimum FPC sürümü her platformda 3.3.1'dir; yeni kabul, gerçek derleyici derlemesini ve kaynak kimliğini kaydeder, eski derleyici sonuçları tarihsel kanıt olarak kalır
Kalan migration
Native headless belge API'si classic, xref-stream, hibrit ve compressed-object grafiklerini yükler, sayfa ve Form kaynaklarını çözer, Unicode metni çıkarır, desteklenen AcroForm alanlarını düzenler, sayfa import eder ve kaynak baytları korunmuş artımlı revizyonlar yayımlar
Bu aşama Linux'ta THotPDF'i dışa açmaz: native headless belge API'si, artık klasik, xref-stream, hibrit ve sıkıştırılmış-object grafiklerini yükler, sayfa ve Form kaynaklarını çözer, Unicode metni çıkarır ve AcroForm metin value'larını düzenler; profil, artık Standard AES-256'yı, streaming OpenSSL CMS/CAdES'i ve incremental signature yayımını, artı native Cairo/FreeType PNG rendering'i ve mevcut normal görünümleri içerir; transactional Unicode tek-satırlı TrueType appearance sentezi de doğrulanır; legacy encryption handler'ları, OCR ve Linux C ABI ayrı entegrasyon gerektirir
Native belge iş akışları HTML importu, görünür ve görünmez sayfa metni, gerçek Tesseract OCR ve raster PDF/A-4 dönüşümü sağlar; sayfa importları ve doğrulanmış metin/vektör arşiv dönüşümü orijinal kaynakları korur ve açık arşiv yazı tipi onarımı sınırlı ikame gömme ekler
Platform adapter sözleşmeleri, Direct File tür sahipliği, kesin regression sınırları, Windows smoke runner ve kalan kabul aşamaları için Tests/Linux/Readme.en-us.md dosyasına bakın
Headless belge, artık THPDFHeadlessAES256Security tarafından anlatılan sınırlı Standard AES-256 R5/R6 profilini kabul eder — owner/user izinleri, sıkıştırılmış object'ler ve şifreli incremental form kayıtları dâhil
Runtime bağımlılıkları, desteklenen içerik, bütçeler, izinler, kaynak identity'si ve çıktı sözleşmeleri için bkz. native Cairo rendering ve atomik native signature yayımı
Unicode form appearance üretimi, orijinal revizyonları ve AES güvenliğini korur, bellekte ve reload sonrası render eder ve desteklenmeyen field veya shaping politikalarını açıkça reddeder
Native imzalama iş akışları PEM/PFX kimliklerini, yeni imza alanlarını, görünür appearance'ları ve sertifikalandırmayı içerir; açık timestamp taşıma, güven ve doğrulanmış iptal kanıtı belgelenmiş kriptografik ve yayım gereksinimlerini korur
Kalan yetenek sınırları
Headless belge güvenlik profili Standard AES-256 R5/R6'yı destekler; diğer güvenlik handler'ları portable-core adapter'i aracılığıyla desteklenmek yerine o profilin dışında kalır
Daha geniş annotation rendering'i, genel rich-text CSS/layout'u, eksiksiz FDF eylem ve kaynak grafikleri ve genel dinamik XFA uyumluluğu yetenek tamamlama planında etkin kalır; yukarıda uygulanan native entegrasyonlar kalan bu işten bağımsız olarak kullanılabilir