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