Configuration des travaux JSON

THPDFJobProcessor accepte un document JSON décrivant des opérations PDF ordonnées et renvoie un résultat JSON avec le statut de chaque opération

Opérations prises en charge

merge combine plusieurs PDF d'entrée en un seul fichier de sortie à l'aide d'AppendPagesFromDocument

split extrait des plages de pages d'un PDF d'entrée en fichiers de sortie distincts à l'aide d'ExtractLoadedPagesToPDF

optimise recompresse les flux FlateDecode et LZWDecode avec un seuil d'économie minimal

encrypt applique un chiffrement AES-256, AES-128, RC4-128 ou RC4-40 avec des mots de passe et un type de clé spécifiés par l'appelant

validate exécute une politique de validation intégrée et renvoie le texte du rapport

Schéma JSON

L'entrée doit contenir une valeur JSON complète unique avec des séparateurs valides, des conteneurs fermés, des échappements de chaînes valides et uniquement des espaces blancs JSON hors des chaînes ; le contenu final et les nombres hors de la plage finie de Double sont rejetés

L'analyseur accepte au plus 64 niveaux de valeurs imbriquées, la valeur racine comptant comme premier niveau ; les travaux malformés ou trop imbriqués échouent avant toute exécution d'opération, et les valeurs partiellement analysées sont libérées

L'entrée est un objet avec un tableau operations ; chaque opération a un champ type et des paramètres spécifiques au type

La sortie est un objet avec un tableau results ; chaque résultat porte type, status (ok, error ou skipped) et des champs spécifiques à l'opération

Les valeurs de chaînes préservent les caractères Unicode échappés, y compris \u0000 ; les nombres finis utilisent un séparateur décimal indépendant de la locale et peuvent être sérialisés hors de la plage signée 64 bits

Les valeurs numériques sont stockées en Double et suivent la précision de conversion en virgule flottante du runtime du compilateur, si bien que les entiers au-delà de sa plage entière exacte peuvent être arrondis à l'entrée ; GetInt et GetInt64 renvoient la valeur par défaut fournie lorsque la valeur arrondie est hors de leur plage entière signée

Budgets par opération

Chaque opération peut contenir un objet budget avec les limites memoryBytes, timeMilliseconds, objectCount, decompressionRatio et outputBytes

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

Une violation de limite renvoie status=budget-exceeded plus metric, observed, limit et elapsedMilliseconds sans interrompre les opérations ultérieures

Les budgets mémoire sont également appliqués à la comptabilité de décodage par flux et par document afin que l'expansion soit bornée avant la conservation de grands tampons

API de poignée opaque

HPDFDocCreate renvoie une THPDFDocHandle opaque enveloppant une instance THotPDF ; HPDFDocLoadFromFile, HPDFDocGetPageCount, HPDFDocSaveLoadedDocument et HPDFDocRunJob opèrent sur la poignée ; HPDFDocDestroy la libère

Ces assistants Pascal compatibles au niveau source restent disponibles pour les appelants Delphi et C++Builder

HotPDF Stable C Callback ABI fournit la frontière C plate versionnée pour l'entrée à accès aléatoire, la sortie diffusée, l'annulation, la progression, les diagnostics et le cycle de vie de poignée opaque