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