Konfiguracja zadań JSON

THPDFJobProcessor przyjmuje dokument JSON opisujący uporządkowane operacje PDF i zwraca wynik JSON ze statusem per operacja

Obsługiwane operacje

merge łączy wiele wejściowych plików PDF w jedno wyjściowe, używając AppendPagesFromDocument

split wyodrębnia zakresy stron z wejściowego pliku PDF do oddzielnych plików wyjściowych, używając ExtractLoadedPagesToPDF

optimise ponownie kompresuje strumienie FlateDecode i LZWDecode z progiem minimalnych oszczędności

encrypt stosuje szyfrowanie AES-256, AES-128, RC4-128 lub RC4-40 z podanymi przez wywołującego hasłami i typem klucza

validate uruchamia wbudowaną politykę walidacji i zwraca tekst raportu

ocr.layer tworzy przeszukiwalny tekst przez domyślny wbudowany silnik ASCII albo jawnie skonfigurowane lokalne adaptery CLI i DLL Tesseract/RapidOCR; zobacz konfigurację zadań zewnętrznego OCR

Schemat JSON

Wejście musi zawierać jedną kompletną wartość JSON z poprawnymi separatorami, domkniętymi kontenerami, poprawnymi sekwencjami ucieczek w stringach i wyłącznie białymi znakami JSON poza stringami; treść po wartości oraz liczby poza skończonym zakresem Double są odrzucane

Parser przyjmuje co najwyżej 64 zagnieżdżone poziomy wartości, licząc wartość główną jako pierwszy poziom; zniekształcone albo nadmiernie zagnieżdżone zadania kończą się porażką, zanim jakakolwiek operacja ruszy, a częściowo sparsowane wartości są zwalniane

Wejście to obiekt z tablicą operations; każda operacja ma pole type i parametry specyficzne dla typu

Wyjście to obiekt z tablicą results; każdy wynik niesie type, status (ok, error lub skipped) oraz pola specyficzne dla operacji

Wartości string zachowują znaki Unicode zapisane sekwencjami ucieczki, łącznie z \u0000; skończone liczby używają niezależnego od locale kropki dziesiętnej i mogą być serializowane poza 64-bitowym zakresem ze znakiem

Wartości liczbowe są przechowywane jako Double i podlegają precyzji konwersji zmiennoprzecinkowej runtime'u kompilatora, więc liczby całkowite poza jego dokładnym zakresem mogą zostać zaokrąglone przy wejściu; GetInt i GetInt64 zwracają podaną wartość domyślną, gdy zaokrąglona wartość wypada poza ich zakresem ze znakiem

Budżety per operacja

Każda operacja może zawierać obiekt budget z limitami memoryBytes, timeMilliseconds, objectCount, decompressionRatio i outputBytes

{"operations":[{"type":"optimise","input":"in.pdf","output":"out.pdf",
  "budget":{"memoryBytes":268435456,"timeMilliseconds":30000,
  "objectCount":1000000,"decompressionRatio":200,"outputBytes":1073741824}}]}

Naruszenie limitu zwraca status=budget-exceeded oraz metric, observed, limit i elapsedMilliseconds bez przerywania późniejszych operacji

Budżety pamięci są również stosowane do rozliczeń dekodowania per strumień i dokumentu, więc ekspansja jest ograniczona, zanim z rezerwą zostaną zachowane duże bufory

API nieprzezroczystego uchwytu

HPDFDocCreate zwraca nieprzezroczysty THPDFDocHandle opakowujący instancję THotPDF; HPDFDocLoadFromFile, HPDFDocGetPageCount, HPDFDocSaveLoadedDocument i HPDFDocRunJob działają na uchwycie; HPDFDocDestroy go zwalnia

Te kompatybilne źródłowo pomocniki Pascala pozostają dostępne dla wywołujących Delphi i C++Builder

Stabilne ABI wywołań zwrotnych C HotPDF zapewnia płaską wersjonowaną granicę C dla wejścia dostępu losowego, strumieniowego wyjścia, anulowania, postępu, diagnostyki i cyklu życia nieprzezroczystego uchwytu