Native Linux C ABI
HotPDFLinuxABI.lpr, SONAME libhotpdf.so.1 ve public sembolleri HOTPDF_1.0'a atanmış, libhotpdf.so.1 adlı native bir x86_64 ELF shared kütüphanesi derler
Kütüphane, runtime'da bir Windows bileşeni, aktif bir masaüstü, PDF viewer veya Python process'i olmadan THPDFHeadlessDocument'ı ve CPU rendering kullanır; Python, build ve kabul script'leri tarafından kullanılır
Build ve kabul
sh Tests/Linux/Build-LinuxABI.sh
sh Tests/Linux/Run-LinuxABIAcceptance.sh
FPC_EXE=/usr/local/bin/fpc HPDF_LINUX_OUTPUT=Tests/Linux/bin/linux-abi331 sh Tests/Linux/Run-LinuxABIAcceptance.sh
FCL ve paszlib'li native FPC 3.2.2 veya daha yeni, bir C compiler, binutils, Fontconfig ve kurulu TrueType yazı tipleri kullanın; kabul Python ortamı ayrıca AES provider'lı pypdf, PyMuPDF, Pillow ve NumPy gerektirir
FPC_EXE, HPDF_LINUX_OUTPUT ve PYTHON_EXE tool konumlarını seçer; default kabul Python ortamı /opt/hotpdf-python/bin/python'dur
FPC normalde ELF linker response'una anonim bir export block yazar; build, o block'u link'ten önce kontrol-altındaki sembol map'iyle adlandırır — çünkü ikinci adlandırılmış bir version script eklemek anonim block ile çelişir
Public interface
Paylaşılan record layout'u ve status constant'ları için Lib/hotpdf_abi.h dâhil edin; hpdf_abi_io_v1_size ve hpdf_abi_operation_v1_size gerçek native record boyutlarını raporlar
Linux kütüphanesi, ABI discovery'yi, capability discovery'yi, belge oluşturma ve yok etmeyi, callback yükleme ve kaydetmeyi, sayfa sayımını, hpdf_document_execute_json_v1'i ve iki-belgeli hpdf_document_compare_json_v1 entry point'ini export eder
Mevcut operation'ları, Windows operation set'ini varsaymak yerine hpdf_capabilities_json_to_io üzerinden keşfedin
| Operation | Davranış |
|---|---|
info | Sayfa, form ve imzalı-field sayıları |
text.extract | JSON ve opsiyonel UTF-8 output'ta Unicode sayfa metni; opsiyonel bir zero-based pages array ile |
forms.read | Tam-nitelikli field adları, Unicode value'lar, eksiksiz choice seçimleri, türler, flag'ler ve maksimum uzunluklar |
forms.fill | Transactional metin, choice, multiselect, checkbox ve radio güncellemeleri, push-button caption'ları, eşleşen gömülü-yazı-tipli görünümler ve incremental PDF output'u |
annotations.export / annotations.import | Append transaction'ları, kesin Unicode, binary stream'ler, popup/reply referansları, encryption ve authenticated certification politikasıyla sınırlı anotasyon XFDF exchange |
forms.export / forms.import | Seçilen her yapılandırılmış rich family için dört gerçek style'lı, şifreli PDF transaction'ları, yeniden üretilmiş görünümler, signature politikaları ve eşzamanlı fragmented callback'lerle sınırlı scalar ve rich FDF/XFDF interchange |
render | Sayfa, dpi, view veya print usage, anotasyon option'ları ve default optional-content yapılandırmasıyla Cairo PNG output'u |
sign | Incremental PEM veya PFX imzalama, mevcut veya yeni oluşturulmuş field'lar, görünür görünümler ve certification — authenticated AES-256 R5/R6 girdileri ve digest, metadata, profil ve doğrulanmış evidence option'ları dâhil |
signatures.verify | Gerçek CMS verification, imzalı-revizyon uzunlukları, opsiyonel açık CA trust değerlendirmesi ve imzalı revocation information doğrulaması |
html.import | Unicode yazı tipleri, sayfalandırma, görseller, hiperlinkler ve opsiyonel AcroForm kontrolleriyle native HTML/CSS belge oluşturma |
text.draw | Orijinal sayfa stream'leri ve doğrulanmış şifreli revizyonlar korunmuş görünür ya da görünmez Unicode sayfa metni |
ocr | Sınırlı alt süreç ömrü, kelime sonuçları ve opsiyonel aranabilir PDF katmanıyla gerçek Tesseract tanıma |
pages.import | Bağımsız kaynak girdisi ve işlem hedef güncellemeleriyle seçili sayfa kaynağı importları |
pdfa.convert | Opsiyonel yazı tipi onarımı ve seçilen modun doğrulama gereksinimleriyle raster ya da metin/vektör PDF/A-4 dönüşümü |
compare / compare.contract | İki-handle'lı page-count, page-text, object-count, rendered-image, structural ve full karşılaştırma; ayrıca hazırlanmış JSON, HTML veya anote edilmiş PDF inceleme output'lu semantik contract karşılaştırması |
{"schemaVersion":1,"type":"render","page":0,"dpi":150,"usage":"print","annotations":false,
"limits":{"memoryBytes":268435456,"outputBytes":268435456,"pixels":100000000}}
Native imzalama workflow'ları, açık bir PEM veya Base64 PFX identity'sini, opsiyonel yeni signature field'ları ve Unicode görünümleri ve certification izinlerini kabul eder; başarılı imzalama, yüklenmiş context'i hazırlanan imzalı revizyonla değiştirirken, başarısız imzalama veya yayım orijinal context'i korur
Native imzalama option'ları, gerçek SHA256, SHA384 veya SHA512 seçimini, Unicode signature bilgisini, legal attestation'ı, açık trust baytlarını, doğrulanmış imzalı revocation evidence'ını, gerçek appearance preset'lerini ve uygulamanın öne sürdüğü credential veya timestamp transport provenance'ını bağlar
Opsiyonel optional-content viewer state, açık otomatik View, Print veya Export usage uygulamalarını, zoom'u, dili, user context'ini ve operation-lokal manuel seçimleri değişmeden V1 record'ları üzerinden sağlar
render operation'ı, view'e default'lu, usage: "view" veya usage: "print" kabul eder; seçenekleri, capability renderUsages array'i üzerinden keşfedin — değişmeden V1 callback ve operation record'larıyla
Anotasyon screen ve printing flag'leri seçili usage'ı izler ve annotations: false her iki modda da anotasyonları bastırır; optionalContent'i atlamak statik varsayılan yapılandırmayı korurken, açık bir nesne belgelenmiş otomatik önerileri ve operasyona-özgü manuel seçimleri etkinleştirir
Tests/Linux/Run-LinuxABIRenderUsage.sh, düz ve AES R5/R6 kaynaklar için gerçek PNG piksellerini, default-off içeriği, callback başarısızlıklarını, bütçeleri, cancellation'ı ve same-handle recovery'yi doğrular; fixture bağımlılıkları ve opsiyonel önceden-üretilmiş fixture dizini için bkz. Tests/Linux/HeadlessRenderUsage.en-us.md
Callback'ler ve lifetime
Form appearance option'ları, Unicode metni, export value'ları veya eksiksiz seçim array'lerini, açık button state'lerini, yazı tipi ayarlarını ve transactional kaynak limitlerini kabul eder
Read ve write callback'leri kısmi transferler döndürebilir; başarılı transferler pozitif ilerleme yapmalı ve istenen sayıyı aşmamalıdır
Tüm callback'ler, belge parsing, rendering ve kriptografik checkpoint'lerin içindeki cancellation denetimleri dâhil, çağıran thread'de eşzamanlı yürütülür
Callback input'u, mode 0600 ile münhasıran oluşturulmuş private geçici bir dosyaya kopyalanır — böylece Linux input callback'leri ve user data'ları yalnızca load veya execute çağrısı dönene kadar geçerli kalmak zorundadır
Paylaşılan bir belge handle'ı üzerindeki operation'lar dahili olarak serialize edilir; her aktif çağrı bağımsız bir referans tutar — böylece bir progress callback'inden handle'ı yok etmek, mevcut çağrının güvenle bitmesine izin verirken sonraki aramaları geçersiz kılar
Aynı handle üzerinde callback'inden başka bir operation'ı özyinelemeli yürütmeyin; shared kütüphaneyi, tüm çağrılar dönene ve her handle yok edilene kadar yüklenmiş tutun
Bütçeler ve yayımlama
JSON input, 4 MiB ve 64 nesting düzeyiyle sınırlıdır ve geçersiz UTF-8'i, duplicate üyeleri, bozuk sayısal limitleri ve Int64-Int32 parametre kırpılmasını reddeder
Ham UTF-8 ve Unicode escape'leri aynı string value'ları taşır — geçerli UTF-16 surrogate çiftleriyle temsil edilen supplementary character'lar dâhil; eşleşmemiş surrogate escape'leri, belge mutation'ından veya binary yayımından önce başarısız olur
Operation limitleri, memoryBytes, outputBytes, resultBytes ve pixels içerir; belge limitleri ayrıca önceden yüklenmiş handle'lara uygulanırken, yönetilen bellek ve rendering limitleri bir process RSS sınırı vaat etmez
PDF ve PNG output, output callback'leri başlamadan önce eksiksiz hazırlanır ve denetlenir; çağıranın-sahip olduğu bir output callback, kendi I/O başarısızlığından sonra kısmi bir transferi tutabilir, ancak başarısız binary veya result yayımı form edit'lerini commit etmez veya önceden yüklenmiş bir context'i değiştirmez
Başarılı PDF mutation'ları, hazırlanan output'u hem mevcut belge hem kendi private kaynak snapshot'ı olarak commit eder — böylece sonraki aynı-value bir FDF veya XFDF import'u, updated=0 ile kesin commit edilmiş PDF baytlarını döndürür; önceki form fill'lerini, yazılan rich görünümleri, çizilen metni ve import edilen sayfaları koruyarak
Private staging dosyaları, context değiştirildiğinde veya yok edildiğinde kaldırılır; başarılı incremental form ve signature output'u, orijinal kaynak prefix'ini ve encryption politikasını korur
Kanıtlar
Opsiyonel archival yazı tipi onarımı, callback'lerden önce gerçek PDF/A-4 doğrulamasıyla sınırlı Ghostscript substitution'ını ve gömmeyi etkinleştirir
Native anote edilmiş inceleme PDF'i, semantik karşılaştırmaya gerçek hazırlanmış PDF output'u, Unicode highlight'ları ve authenticated P3 anotasyon izinlerini ekler
Native contract karşılaştırması, sınırlı iki-handle'lı semantik karşılaştırma, Unicode inceleme HTML'i ve gerçek kaynak-satır geometrisi sağlar
Genel native belge karşılaştırması, object grafiklerini ve stream encoding'ini normalleştirir, gerçek Cairo piksellerini açık eşiklerle karşılaştırır ve belge state'ini ve callback yayım bütçelerini korur
Kabul client'ı, gerçek C header layout'larını ve versiyonlu sembol aramasını, kısmi callback'leri, 80 eşzamanlı shared-handle operation'ını, cancellation'ı, Unicode edit'leri, rollback'i ve şifreli imzalamayı doğrular
Bağımsız pypdf, MuPDF ve OpenSSL reader'ları, gerçek PDF'leri, PNG piksellerini, korunan password'ları, security dictionary'lerini, belge ID'lerini, kesin ByteRange boşluklarını, geçerli signature'ları ve değiştirilmiş imzalı baytların reddini doğrular
Headless document API · Native rendering · Kalan teslim planı