JSON ve C ABI Belge İşlemleri
export.structured seçili sayfaları semantik HTML, XHTML, XML veya JSON olarak dışa aktarır; tables.export tipli tabloları CSV, JSON veya XLSX olarak, sayfalar arası sürekliliği, birleşik hücreleri ve doğal değer çıkarımını koruyarak dışa aktarır
Her iki işlem de ikili bir çıktı hedefi gerektirir, belgeyi ve mevcut imza alanlarını korur ve sınırlı native dışa aktarma seçenekleri sunar
Yapılandırılmış ve tipli tablo dışa aktarmaları
{"schemaVersion":1,"type":"export.structured","pages":[0,1],"format":"html",
"options":{"imageMode":"metadata","includeFormControls":false}}
{"schemaVersion":1,"type":"tables.export","pages":[0,1],"format":"json",
"options":{"mergeAcrossPages":true,"dateOrder":"dmy",
"decimalSeparator":",","thousandsSeparator":"."}}
Structured export html, xhtml, xml ve json'u (varsayılan) kabul eder; tablo export'u csv'yi (varsayılan), json ve xlsx'i kabul eder
Structured Boolean seçenekleri includeCoordinates, includeStyles, includeImages, includeTables, includeAccessibilitySemantics, preferTaggedStructure, fallbackToGeometricSemantics, includeNavigation, includeAnnotations ve includeFormControls'tur; tümünün varsayılanı true'dur
imageMode omit, metadata ve embedded-png'yi (varsayılan) kabul eder; semantik model ve hassas alan davranışı için Yapılandırılmış Yüklenmiş Sayfa Export'u sayfasına bakın
Structured kaynak seçenekleri şunlardır: maxPageCount, maxGlyphsPerPage, maxImagesPerPage, maxStructureNodes, maxOutlineItems, maxInteractionsPerPage, maxFormOptionsPerField, maxOutputBytes, maxImageBytes ve maxTotalImageBytes
Tablo Boolean seçenekleri detectMergedCells, detectRepeatedHeaders, mergeAcrossPages ve inferValueTypes'tur; tümünün varsayılanı true'dur
dateOrder ymd'yi (varsayılan), mdy ve dmy'yi kabul eder; ayraçlar tek tek yazdırılabilir karakterler olmalıdır ve boş bir thousandsSeparator onu devre dışı bırakır
minimumTableConfidence 0 ile 1 arası değerler kabul eder ve varsayılanı 0,55'tir; pozitif bir columnTolerance varsayılan olarak 12 sayfa birimidir
Tablo kaynak seçenekleri maxPageCount, maxGlyphsPerPage, maxTableCount, maxRowCount, maxCellCount, maxTextCharacters ve maxOutputBytes'tur; hücre modeli için Tipli Tablo Çıkarımı sayfasına bakın
Bilinmeyen seçenek adları, geçersiz türler, desteklenmeyen formatlar ve pozitif olmayan sınırlar reddedilir; istenen native sınırlar ihtiyatlı bellek ve nesne bütçeleriyle kırpılır
Export staging, budget.outputBytes ile budget.memoryBytes'in çeyreğinden küçük olanla sınırlanır; effectiveOutputLimit bu sınırı bildirir, daha sıkı bir options.maxOutputBytes de geçerli olabilir
Native kaynak başarısızlıkları budget-exceeded, nativeExportResources metriğini ve native teşhisini bildirir; observed=1 ve limit=0, ölçülen bayt kullanımını değil reddedilmiş bir kaynak koşulunu gösterir
Her iki işlem de documentUpdated: false bildirir, kaynağın auto-launch ve decode ayarlarını korur, çıktıyı yayınlamadan önce stage'ler ve başarısız bir dosya job'ından sonra mevcut dosya hedefini korur
Deadline ve ABI callback iptal kontrolleri işlem ve yayınlama kontrol noktalarında kooperatiftir; native iptal token'ları desteklenen çıkarma aşamalarının içinde de geçerlidir ve native çalışma zorla kesilmez
THPDFJobProcessor.ExecuteLoadedOperation ve hpdf_document_execute_json_v1 aynı şema-sürümlü belge işlem motorunu paylaşır
Mevcut işlem adlarını, formatları, imzalama profilini, callback davranışını ve varsayılan bütçeleri THPDFJobProcessor.Capabilities veya hpdf_capabilities_json_to_io ile keşfedin
İşlemler
İşlem JSON'u UTF-8 ve schemaVersion: 1 kullanır; sayfa indeksleri sıfır tabanlıdır ve seçili sayfa dizileri yinelenen öğe içeremez
| Tür | Girdi | Sonuç |
|---|---|---|
| info | Yüklenmiş belge | Sayfa, nesne, form ve imza alanı sayıları |
| render | page, dpi (18–1.200), format (png) | PNG çıktısı ve boyutları |
| export.structured | pages, format, options | Semantik HTML/XHTML/XML/JSON çıktısı ve export telemetrisi |
| tables.export | pages, format, options | Tipli CSV/JSON/XLSX çıktısı ve tablo/hücre/başlık telemetrisi |
| text.extract | pages, isteğe bağlı layout | Unicode sayfa metni ve isteğe bağlı UTF-8 metin çıktısı |
| text.replace | pages, needle, replacement, matchCase | Sayfa başına eşleşen/değiştirilen/atlanan sayıları ve isteğe bağlı PDF çıktısı |
| forms.read | Yüklenmiş belge | Adlar, kod çözülmüş Unicode değerler ve native alan türleri |
| forms.fill | ad/değer string'leri içeren fields dizisi | Atomik güncellemeler; bilinmeyen veya yinelenen adlar işlemi reddeder |
| forms.flatten | Yüklenmiş belge | Düzleştirilen sayısı ve kalan alanlar |
| ocr.layer | pages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExisting | Aranabilir PDF ve kabul edilen/düşürülen kelime sayıları |
| redact | burnIn: true, page/x1/y1/x2/y2 içeren dikdörtgenler | Uygulanan redaction sayısı ve PDF çıktısı |
| sign | pfxFile, pfxPassword, page, fieldName, isteğe bağlı dikdörtgen ve contentsBytes | PFX ile imzalanmış PDF çıktısı |
| archive.pdfa4.raster | acceptInformationLoss: true, iccProfileFile, isteğe bağlı dpi ve options | Doğrulanmış PDF/A-4 raster çıktısı, kaldırma sayıları ve açık bir kayıp profili; yüklenmiş kaynağı korur |
Text replacement, native replacement API bir eşleşmeyi kodlayamadığında kısmi durum döndürür; sayfa başına sayılarını inceleyin
Harici OCR işleri, açıkça yapılandırılmış Tesseract CLI/DLL ve RapidOCR CLI/DLL engine'lerini built-in ASCII default'unun yanında kabul eder — yazılan ayarlar, engine timeout'ları, piksel sınırları ve atomik yayımla
Mutasyonlar, imzasız placeholder'lar dahil mevcut imza alanı bulunan belgeleri reddeder; bu belgelerde imzaları korumak için native incremental API'leri kullanın
Incremental PFX imzalama, değişmemiş bir tutulan kaynağı — açık operation password'lu desteklenen şifreli PDF'ler dâhil — kabul eder, her eski ve yeni CMS'i doğrular, orijinal baytları ve encryption'ı korur, mevcut boş bir field'ı destekler, encryption izinlerini denetler ve kaynak/output dosya alias'larını reddeder
İmzalama imzalı bir çıktı üretir ve özgün handle'ı geri yükler, documentUpdated: false bildirir; mevcut form alanları kullanılabilir kalır, geçici imza alanları kaldırılır ve handle imzalama sonrasında sorgulanabilir veya başka bir işlem için kullanılabilir
PDF/A-4 raster arşiv dönüştürmesi
{
"schemaVersion": 1,
"type": "archive.pdfa4.raster",
"acceptInformationLoss": true,
"iccProfileFile": "profiles/sRGB.icm",
"dpi": 150,
"input": "source.pdf",
"output": "archive.pdf"
}
Bu nesneyi bir dosya job'ının operations dizisine yerleştirin ya da yüklü handle ve ikili çıktı callback'leriyle doğrudan hpdf_document_execute_json_v1 üzerinden sağlayın; C ABI dosya-job girdi/çıktı yollarını yok sayar ve kendi adaptörlerini kullanır
acceptInformationLoss JSON Boolean true olmalıdır ve iccProfileFile, yürütme makinesinde desteklenen bir sRGB matrix/TRC ICC profiline giden boş olmayan, NUL içermeyen bir yol adlandırmalıdır; göreli profil yolları process çalışma dizinine göre çözümlenir
dpi varsayılanı 150'dir ve 36 ile 1.200 arası tam sayıları kabul eder; dönüştürme her kaynak sayfayı kapsar ve herhangi bir pages üyesini reddeder
archive sonuç nesnesi nativeValidationSucceeded, sourcePages, pagesRendered, rasterPixels, outputBytes, removedAnnotations, removedFormFields ve removedEmbeddedFiles bildirir
archive.lossy true'dur ve archive.lossProfile içindeki her bayrak false'tur: searchableText, vectorContent, interactiveContent, originalSignatures, annotationAppearances ve structureIdentity
Sayfa içeriği RGB pixel'lere dönüşür; annotation'lar ve widget görünümleri çıktıya alınmaz, özgün imzalar çıktıya taşınmaz. Yüklenmiş kaynak documentUpdated: false ile, yayınlama başarısız olduktan sonra dahi kullanılabilir kalır; önceki launch, decode, stream-eşiği, iptal ve render ayarları geri yüklenir
İkili çıktı gereklidir ve teslimden önce native PDF/A-4 doğrulaması başarılı olmalıdır. Render, renk, codec, kaynak-alias ve uyumluluk sınırları için yüklenmiş PDF/A-4 raster dönüştürmesi sayfasına bakın
Arşiv kaynak bütçeleri
İsteğe bağlı options nesnesi, aşağıdaki etkin üst sınırları sıkılaştıran pozitif tam sayılar kabul eder; bilinmeyen anahtarlar ve bir sınırı aşan değerler, işlem bütçesini artırmak yerine isteği reddeder
| Seçenek | Etkin varsayılan ve üst sınır |
|---|---|
| maxPages | 1.000 ile budget.pageCount'in minimumu |
| maxInputObjects | 200.000 ile budget.objectCount'in minimumu |
| maxPixelsPerPage | 40.000.000, budget.pixels ve memoryBytes / 32'nin minimumu |
| maxTotalPixels | 500.000.000, budget.pixels ve memoryBytes / 32'nin minimumu |
| maxRasterBytes | 256 MiB ile memoryBytes / 8'in minimumu |
| maxOutputBytes | 256 MiB, budget.outputBytes ve memoryBytes / 8'in minimumu |
| maxDecodedStreamBytes | 64 MiB ile memoryBytes / 8'in minimumu |
| maxTotalDecodedBytes | 256 MiB ile memoryBytes / 4'ün minimumu |
ICC dosyası, bellek ayrılmadan önce 4 MiB ile memoryBytes / 16'nın küçük olanıyla sınırlanır; bu ihtiyatlı paylar eşzamanlı staging, çıktı tamponları, görüntü verisi ve decoder çalışmasını hesaba katar ve kesin bir process-RSS sınırı oluşturmaz
Daha büyük bir arşiv iş yükü bilinçliyse üst düzey job bütçelerini artırın; iç içe seçenekler yalnızca etkin sınırları sıkılaştırır ve native üst sınırlar yine de geçerlidir
Arşiv kontrol noktaları, dönüştürme sırasında callback iptalini, ödünç alınan kaynağın iptal token'ını, geçen süreyi ve nesne sayılarını yoklar. Bütçe ve iptal başarısızlıkları, yapılandırılmış durum kodlarını native converter boyunca korur
Dosya job'ları
{
"operations": [
{"type": "capabilities"},
{"schemaVersion": 1, "type": "text.extract", "input": "input.pdf",
"pages": [0, 1], "output": "text.txt"}
]
}
THPDFJobProcessor.Execute bir operations dizisi, en fazla 1.024 işlem ve 4 MiB JSON kabul eder; mevcut merge, split, optimise, encrypt ve validate job'ları kullanılabilir kalır
Her belge işlemi bir girdi yolu ve isteğe bağlı parola sağlar; render, text.replace, forms.fill, forms.flatten, ocr.layer, redact, sign ve archive.pdfa4.raster bir çıktı yolu gerektirir
Çıktılar hedefin yanındaki geçici bir dosyaya yazılır, flush edilip doğrulanır ve ardından atomik olarak yayınlanır; başarısızlık mevcut hedefi korur, girdi/çıktı aynı yolu paylaşabilir
C callback sözleşmesi
hpdf_operation_v1'i sıfırla başlatın, struct_size'ı native boyutuna, abi_version'ı HPDF_ABI_VERSION_1'e ve flags'i sıfıra ayarlayın; boyutunu hpdf_abi_operation_v1_size ile karşılaştırın
İşlem kaydı; JSON baytlarını ve tam uzunluğunu, isteğe bağlı random-access girdiyi, isteğe bağlı sıralı ikili çıktıyı ve zorunlu sıralı JSON-sonuç çıktısını taşır
Lazy parsing adaptörü elinde tuttuğu için girdi callback'leri, kullanıcı verisi ve yedek PDF baytları, handle değiştirilene veya yok edilene kadar geçerli kalmalıdır
Çıktı/sonuç callback'leri yalnızca çağrı süresince vardır; her handle için çağrıları sıralayın ve callback reentry'den kaçının
Callback'ler cdecl kullanır, kısmi aktarımlar yeniden denenir ve başarılı yazmalar pozitif ilerleme yapmalıdır; exception'lar sabit durum kodlarına dönüştürülür
Mutasyonlar yalnızca hem çıktı hem JSON-sonuç teslimi başarılı olduktan sonra commit edilir; callback başarısızlığı veya iptali değişiklikleri geri alır ve çağıranlar o ana kadar teslim edilmiş baytları atar
Replacement girdisi, mutasyon işleminden önce yüklenir ve ayrı bir durum değişikliği olarak kalır
Bütçeler
İsteğe bağlı bütçe nesnesi 9.007.199.254.740.991'i aşmayan pozitif tam sayılar kabul eder
| Anahtar | Varsayılan |
|---|---|
| memoryBytes | 268.435.456 |
| outputBytes | 134.217.728 |
| resultBytes | 16.777.216 |
| timeMilliseconds | 60.000 |
| objectCount | 1.000.000 |
| pageCount | 1.024 |
| pixels | 100.000.000 |
Genel çıktı/sonuç bütçelerinin her biri bellek bütçesinin yarısıyla sınırlıdır; arşiv dönüştürmesi yukarıdaki daha sıkı sınırları uygular. Bunlar toplam process belleğini değil, yapılandırılmış işlem kaynaklarını sınırlar
İptal ve geçen süre kontrolleri; işlem, sayfa, girdi-okuma ve çıktı-yazma kontrol noktalarında kooperatiftir; uzun bir native rutin bir sonraki kontrol noktasına kadar devam edebilir
Raporlar schemaVersion, status ve statusCode taşır; bütçe hataları status 8, iptal 4, I/O başarısızlığı 5, parse başarısızlığı 6, geçersiz argümanlar 1 ve yürütme başarısızlığı 7 kullanır