Faites pivoter des pages PDF de 90, 180 ou 270 degrés
La rotation de pages PDF corrige les documents qui contiennent des feuilles de travers ou à l’envers sans modifier toutes les pages.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Fournissez un PDF classique, indiquez les pages avec une sélection commençant à 1, telle que 2,4-6, puis choisissez un angle horaire de 90, 180 ou 270 degrés. Le résultat est un PDF reconstruit dont seules les pages sélectionnées reçoivent la rotation. Le traitement est déterministe et local à la requête, sans réseau, valeur aléatoire, horodatage ni conservation de fichier.
Choisissez précisément les pages à faire pivoter
Commencez par repérer les pages dont l’orientation est incorrecte dans l’ordre actuel du document. La sélection utilise une numérotation commençant à 1 : la première page visible vaut 1, la deuxième 2, et ainsi de suite. Vous pouvez indiquer des pages individuelles séparées par des virgules, écrire une plage inclusive avec un tiret ou combiner les deux formes. Par exemple, 1,3-5 fait pivoter les première, troisième, quatrième et cinquième pages, tout en laissant la page 2 intacte. Les numéros répétés sont acceptés, mais traités une seule fois afin de préserver un résultat prévisible. Les plages doivent avancer et chaque numéro sélectionné doit exister dans le PDF. Si le document comporte six pages, une sélection se terminant à 7 est refusée au lieu d’être raccourcie silencieusement. Cette rigueur est utile dans les traitements automatisés : une ancienne sélection ne peut pas produire par accident un document seulement partiellement corrigé. Vérifiez le nombre de pages avant d’appliquer une sélection enregistrée à un nouveau rapport, scan, lot de factures ou diaporama.
Sélectionnez le bon angle horaire
L’angle décrit la rotation horaire appliquée à chaque page sélectionnée. Choisissez 90 lorsque le contenu couché sur son côté gauche nécessite un quart de tour, 180 lorsqu’il est à l’envers, ou 270 lorsqu’il faut un quart de tour dans l’autre sens. Seules ces valeurs sont acceptées. Un angle de 0 n’effectuerait aucune opération utile, tandis qu’un angle arbitraire comme 45 degrés imposerait de modifier la géométrie de la page et pourrait rogner le contenu ; il est donc rejeté comme entrée incorrecte. La rotation existante est respectée au lieu d’être remplacée. Si une page porte déjà une rotation de 90 degrés et que vous demandez encore 90 degrés, sa rotation finale devient 180 degrés. Le calcul revient proprement au départ après un tour complet. Les opérations répétées restent ainsi faciles à comprendre et vous pouvez corriger un fichier aux orientations variées sans deviner si un outil précédent a enregistré une rotation. La sortie indique également l’angle appliqué et les pages sélectionnées.
Comprenez la structure PDF prise en charge et la sortie
Cette capacité lit les PDF classiques dont les pages sont représentées par des objets de page indirects ordinaires, puis reconstruit une table de références croisées valide. Elle conserve le corps de chaque objet indirect, ne modifie que l’entrée de rotation des dictionnaires des pages sélectionnées et écrit les objets dans un ordre numérique stable. Une entrée identique produit donc une sortie identique, ce qui est précieux pour les tests, la mise en cache et les pistes d’audit. Les PDF qui stockent leur structure dans des flux d’objets compressés ou de références croisées sont refusés avec une erreur claire, plutôt que réécrits de façon incomplète. Si un document source utilise cette structure récente, enregistrez-le ou exportez-le au format PDF classique avant sa rotation. L’objet renvoyé contient le texte PDF reconstruit, les numéros des pages choisies à partir de 1 et l’angle accepté. Aucune requête réseau, aucun modèle, horodatage ou identifiant aléatoire n’intervient. Le navigateur convient aux corrections interactives, tandis que les appels API coûtent $0.002 par requête.
Cas d’usage
Corriger un scan aux orientations variées
Faites pivoter uniquement les feuilles entrées de travers dans le scanner et préservez les pages déjà bien orientées.
Réparer des rapports assemblés
Corrigez des annexes en paysage ou des insertions à l’envers après la fusion de plusieurs documents sources.
Automatiser la réception documentaire
Appliquez une règle de sélection connue aux lots PDF récurrents et consignez les pages qui ont changé.
Questions fréquentes
Quels angles de rotation sont acceptés ?
Seules les rotations horaires de 90, 180 et 270 degrés sont acceptées. Toute autre valeur produit une erreur d’entrée incorrecte.
Comment sélectionner plusieurs pages ?
Utilisez des numéros commençant à 1 séparés par des virgules, des plages inclusives comme 3-5 ou une combinaison comme 1,3-5.
Que deviennent les pages non sélectionnées ?
Leurs dictionnaires de page restent inchangés. Seuls les objets sélectionnés reçoivent une entrée de rotation mise à jour.
L’outil conserve-t-il une rotation existante ?
Oui. L’angle demandé est ajouté à la rotation existante, puis le résultat est normalisé sur un tour complet.
Pourquoi la structure de mon PDF a-t-elle été refusée ?
L’analyseur déterministe accepte les objets indirects classiques et les tables de références croisées, pas leurs flux compressés.
Combien coûte une requête API ?
Chaque requête API coûte $0.002. L’exécution interactive dans le navigateur est disponible sans appel réseau.
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/rotate-pages \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf","pages":"2","angle":90}'const res = await fetch("https://api.kit.forhosting.com/pdf/rotate-pages", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf",
"pages": "2",
"angle": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/rotate-pages",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf",
"pages": "2",
"angle": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/rotate-pages", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf","pages":"2","angle":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf","pages":"2","angle":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/rotate-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
{
"pdf": "https://ejemplo.com/documento.pdf",
"pages": "2",
"angle": 90
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.rotate_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. |