Recadrer des pages PDF et calculer leurs dimensions
Préparez le recadrage d’un PDF avant de modifier le document. Indiquez la largeur et la hauteur d’origine de chaque page, ainsi qu’une zone de recadrage mesurée en points PDF : ce calculateur renvoie les dimensions obtenues pour chaque page.
Lancer gratuitement
Il vérifie aussi que chaque rectangle reste dans les limites de sa page source, afin de détecter une géométrie incorrecte avant son envoi à une bibliothèque PDF, un flux d’impression ou une chaîne documentaire. Le calcul est déterministe et accepte plusieurs formats de page dans une même requête.
Décrivez chaque page et chaque zone en points PDF
Une page PDF se mesure en points, à raison de 72 points par pouce. Pour chaque page, renseignez sa largeur et sa hauteur d’origine, puis définissez le rectangle avec crop_x, crop_y, crop_width et crop_height. La coordonnée x part du bord gauche et la coordonnée y du bord inférieur, conformément au repère habituel des PDF. La largeur et la hauteur de la zone représentent la partie qui restera visible, et non des marges à soustraire. Par exemple, une page Lettre américaine mesure généralement 612 sur 792 points. Une zone commençant à 36, 54 et mesurant 540 sur 684 tient dans cette page et donne un résultat de 540 sur 684 points. Placez les pages dans l’ordre du document. La réponse les numérote selon cet ordre, ce qui permet de rattacher facilement la géométrie calculée à un rapport d’analyse ou à une opération ultérieure. Une requête peut mêler orientations portrait, paysage et formats personnalisés.
Comprenez les contrôles des limites
Toutes les dimensions d’origine et toutes les composantes de la zone doivent être des nombres finis. La largeur et la hauteur de la page comme celles du recadrage doivent être strictement positives. Les coordonnées d’origine peuvent être nulles, mais jamais négatives. Le calculateur contrôle le bord droit en additionnant crop_x et crop_width, puis en comparant le résultat à la largeur d’origine. Il contrôle le bord supérieur de la même manière avec crop_y, crop_height et la hauteur d’origine. Si l’un de ces bords dépasse la page source, la requête échoue avec une erreur d’entrée incorrecte qui précise la page concernée. En revanche, une zone peut toucher exactement un bord extérieur : terminer à la largeur ou à la hauteur de la page reste valide. Ce contrôle est essentiel, car un rectangle aux dimensions plausibles peut tout de même être décalé hors de la page par son origine. Toutes les pages sont vérifiées et une seule page incorrecte empêche la production d’un résultat partiel ambigu.
Intégrez les dimensions à votre traitement PDF
Le résultat indique, pour chaque page, le format d’origine, l’origine du recadrage ainsi que la nouvelle largeur et la nouvelle hauteur. Il ne réécrit ni ne téléverse le PDF : il calcule et valide la géométrie qu’un éditeur ou une bibliothèque PDF pourra ensuite appliquer. Cette séparation facilite la prévisualisation, le contrôle de réglages saisis par des utilisateurs, l’estimation d’une mise en page ou la normalisation des instructions avant une opération documentaire coûteuse. Pour obtenir des pouces, divisez les valeurs par 72 ; conserver les points pendant le traitement évite toutefois les arrondis. Si plusieurs pages partagent un format et une règle, répétez leurs valeurs afin que la sortie reste explicitement alignée sur l’ordre du document. Avant l’application, vérifiez si votre bibliothèque attend x, y, largeur et hauteur, ou gauche, bas, droite et haut. Dans ce dernier cas, la droite vaut crop_x plus new_width et le haut crop_y plus new_height. L’API coûte $0.002 par requête.
Cas d’usage
Valider les réglages avant traitement
Refusez une opération en amont dès qu’un rectangle demandé dépasse sa page source.
Prévisualiser un PDF aux formats variés
Calculez dans une réponse ordonnée les dimensions finales de pages portrait, paysage et personnalisées.
Préparer une bibliothèque PDF
Transformez des mesures contrôlées en données fiables pour une étape distincte de modification.
Questions fréquentes
Cette fonctionnalité modifie-t-elle le fichier PDF ?
Non. Elle valide la géométrie et calcule les dimensions finales ; un autre outil PDF peut ensuite appliquer ces valeurs.
Quelles unités faut-il utiliser ?
Utilisez des points PDF pour les dimensions, les origines et la zone. Un pouce correspond à 72 points.
Où se trouve l’origine de la zone ?
crop_x part du bord gauche et crop_y du bord inférieur de la page d’origine.
La zone peut-elle toucher le bord de la page ?
Oui. Elle peut finir exactement à la largeur ou à la hauteur d’origine, sans toutefois la dépasser.
Une requête peut-elle contenir plusieurs formats ?
Oui. Chaque page possède ses propres dimensions et sa propre zone, ce qui autorise les formats mixtes.
Quel est le prix ?
L’API coûte $0.002 par requête, et le même calcul déterministe est accessible gratuitement dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/pdf/crop-pages \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/crop-pages", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/crop-pages",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/crop-pages", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"width":612,"height":792,"crop_x":36,"crop_y":54,"crop_width":540,"crop_height":684},{"width":842,"height":595,"crop_x":20,"crop_y":15,"crop_width":800,"crop_height":560}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/crop-pages", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"pages": [
{
"width": 612,
"height": 792,
"crop_x": 36,
"crop_y": 54,
"crop_width": 540,
"crop_height": 684
},
{
"width": 842,
"height": 595,
"crop_x": 20,
"crop_y": 15,
"crop_width": 800,
"crop_height": 560
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.crop_pages",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 200 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |