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

OperationDavranış
infoSayfa, form ve imzalı-field sayıları
text.extractJSON ve opsiyonel UTF-8 output'ta Unicode sayfa metni; opsiyonel bir zero-based pages array ile
forms.readTam-nitelikli field adları, Unicode value'lar, eksiksiz choice seçimleri, türler, flag'ler ve maksimum uzunluklar
forms.fillTransactional 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.importAppend 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.importSeç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
renderSayfa, dpi, view veya print usage, anotasyon option'ları ve default optional-content yapılandırmasıyla Cairo PNG output'u
signIncremental 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.verifyGerçek CMS verification, imzalı-revizyon uzunlukları, opsiyonel açık CA trust değerlendirmesi ve imzalı revocation information doğrulaması
html.importUnicode yazı tipleri, sayfalandırma, görseller, hiperlinkler ve opsiyonel AcroForm kontrolleriyle native HTML/CSS belge oluşturma
text.drawOrijinal sayfa stream'leri ve doğrulanmış şifreli revizyonlar korunmuş görünür ya da görünmez Unicode sayfa metni
ocrSınırlı alt süreç ömrü, kelime sonuçları ve opsiyonel aranabilir PDF katmanıyla gerçek Tesseract tanıma
pages.importBağımsız kaynak girdisi ve işlem hedef güncellemeleriyle seçili sayfa kaynağı importları
pdfa.convertOpsiyonel 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ı