Le bureau CLI accepte un modèle .inks portable et des données JSON. Ces exemples maintiennent les données hors des arguments en ligne de commande et gèrent le résultat JSON versionné.
Python: rendre un client PDF
import json
import subprocess
customer = {"customer": {"name": "Ada"}}
result = subprocess.run(
[
"inksmith-cli", "render",
"--template", "invoice.inks",
"--data", "-",
"--output", "invoice-ada.pdf",
],
input=json.dumps(customer),
capture_output=True,
text=True,
check=False,
)
payload = json.loads(result.stdout if result.returncode == 0 else result.stderr)
if result.returncode != 0:
raise RuntimeError(f"{payload['error']['code']}: {payload['error']['message']}")
print(payload["output"])
Utilisez un nom de sortie différent pour chaque rendu. InkSmith refuse de remplacer un PDF existant.
Node.js: valider avant le rendu
import { spawnSync } from "node:child_process";
function runInkSmith(args, data) {
const result = spawnSync("inksmith-cli", args, {
encoding: "utf8",
input: data === undefined ? undefined : JSON.stringify(data),
});
if (result.error) throw result.error;
const payload = JSON.parse(result.status === 0 ? result.stdout : result.stderr);
if (result.status !== 0) {
throw new Error(payload.error.code + ": " + payload.error.message);
}
return payload;
}
runInkSmith(["validate", "--template", "invoice.inks"]);
const output = runInkSmith(
["render", "--template", "invoice.inks", "--data", "-", "--output", "invoice-ada.pdf"],
{ customer: { name: "Ada" } },
);
console.log(output.output);
L'installateur Windows NSIS place inksmith-cli.exe à côté de InkSmith.exe; utilisez ce chemin complet si l'exécutable n'est pas sur PATH.
Shell : utilisez un fichier JSON
inksmith-cli validate --template invoice.inks
inksmith-cli render --template invoice.inks --data customer.json --output invoice-ada.pdf
Une commande réussie émet un seul objet JSON sur stdout. Une défaillance émet un seul objet JSON sur stderr et sort avec un statut non zéro. Voir Bureau CLI pour les limites et les codes de sortie.
Conseil de confidentialité : La transmission de données par
--data -permet au client de sortir JSON de la liste des arguments du processus et d'éviter un fichier de données temporaire.