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