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ürGirdiSonuç
infoYüklenmiş belgeSayfa, nesne, form ve imza alanı sayıları
renderpage, dpi (18–1.200), format (png)PNG çıktısı ve boyutları
export.structuredpages, format, optionsSemantik HTML/XHTML/XML/JSON çıktısı ve export telemetrisi
tables.exportpages, format, optionsTipli CSV/JSON/XLSX çıktısı ve tablo/hücre/başlık telemetrisi
text.extractpages, isteğe bağlı layoutUnicode sayfa metni ve isteğe bağlı UTF-8 metin çıktısı
text.replacepages, needle, replacement, matchCaseSayfa başına eşleşen/değiştirilen/atlanan sayıları ve isteğe bağlı PDF çıktısı
forms.readYüklenmiş belgeAdlar, kod çözülmüş Unicode değerler ve native alan türleri
forms.fillad/değer string'leri içeren fields dizisiAtomik güncellemeler; bilinmeyen veya yinelenen adlar işlemi reddeder
forms.flattenYüklenmiş belgeDüzleştirilen sayısı ve kalan alanlar
ocr.layerpages, engine (builtin-ascii), dpi, minimumConfidence, skipPagesWithText, replaceExistingAranabilir PDF ve kabul edilen/düşürülen kelime sayıları
redactburnIn: true, page/x1/y1/x2/y2 içeren dikdörtgenlerUygulanan redaction sayısı ve PDF çıktısı
signpfxFile, pfxPassword, page, fieldName, isteğe bağlı dikdörtgen ve contentsBytesPFX ile imzalanmış PDF çıktısı
archive.pdfa4.rasteracceptInformationLoss: true, iccProfileFile, isteğe bağlı dpi ve optionsDoğ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çenekEtkin varsayılan ve üst sınır
maxPages1.000 ile budget.pageCount'in minimumu
maxInputObjects200.000 ile budget.objectCount'in minimumu
maxPixelsPerPage40.000.000, budget.pixels ve memoryBytes / 32'nin minimumu
maxTotalPixels500.000.000, budget.pixels ve memoryBytes / 32'nin minimumu
maxRasterBytes256 MiB ile memoryBytes / 8'in minimumu
maxOutputBytes256 MiB, budget.outputBytes ve memoryBytes / 8'in minimumu
maxDecodedStreamBytes64 MiB ile memoryBytes / 8'in minimumu
maxTotalDecodedBytes256 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

AnahtarVarsayılan
memoryBytes268.435.456
outputBytes134.217.728
resultBytes16.777.216
timeMilliseconds60.000
objectCount1.000.000
pageCount1.024
pixels100.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