ForHosting KIT · Documents et PDF

Structure de chapitres EPUB depuis les signets PDF

Un EPUB exploitable exige un ordre de lecture clair, alors qu’un PDF ne l’exprime souvent que par son arborescence de signets.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Cette capacité reçoit une liste de signets PDF extraite et transforme chaque signet de premier niveau en entrée de chapitre EPUB. Elle conserve l’ordre et les titres, attribue des noms XHTML stables et reprend les pages de destination lorsqu’elles sont disponibles. Les signets imbriqués restent des informations de section et ne deviennent pas accidentellement des chapitres autonomes. Si la source ne contient aucun signet de premier niveau, la requête échoue explicitement au lieu d’inventer une structure absente du document.

Préparez l’arborescence des signets

Partez de l’arborescence fournie par un analyseur ou un outil d’inspection de PDF, et non de titres visuellement saillants copiés depuis les pages. Transmettez les enregistrements dans leur ordre de lecture d’origine. Chacun doit comporter un titre et un niveau numérique, le niveau 1 désignant un signet principal ; une page de destination numérotée à partir de 1 reste facultative. Un enregistrement de niveau 2 ou supérieur peut décrire une sous-section, une annexe, une illustration ou une autre destination imbriquée. Ces éléments sont validés, car des données mal formées ne doivent pas passer inaperçues, mais ils ne sont pas promus en chapitres EPUB. Les espaces placés aux extrémités des titres sont retirés, tandis que l’orthographe, la ponctuation, la casse et les espaces internes sont conservés. Les pages fournies doivent être des entiers positifs. Cette représentation explicite évite toute déduction fondée sur le retrait ou la typographie et garantit un résultat reproductible. Elle sépare également l’extraction PDF de la planification éditoriale.

Interprétez la liste de chapitres produite

La sortie contient le nombre de chapitres et un tableau ordonné. Chaque chapitre reçoit un indice commençant à 1, le titre normalisé du signet principal correspondant et un nom stable tel que chapter-001.xhtml. Les noms dépendent de la position et non du titre : ponctuation, doublons, textes non latins ou futures règles de slug ne peuvent donc pas provoquer de collisions. Lorsqu’un signet principal comporte une page de destination, le chapitre inclut aussi source_page ; sans page fournie, ce champ facultatif est omis plutôt que défini sur null. La capacité n’extrait aucun texte, ne découpe pas le PDF, ne rédige pas de XHTML et ne construit pas le document de navigation EPUB. Elle fournit une structure intermédiaire propre permettant aux étapes suivantes de nommer les fichiers, d’affecter le contenu extrait, de créer les entrées du spine et de bâtir les liens de navigation. Puisque les signets imbriqués ne deviennent jamais des chapitres, le total correspond toujours aux enregistrements de niveau 1.

Traitez les arborescences absentes ou imparfaites

Un PDF peut afficher parfaitement ses pages tout en étant dépourvu de signets exploitables. Il n’existe alors aucun signal fiable de chapitre principal : la capacité renvoie donc une erreur d’entrée invalide au lieu de déduire des chapitres à partir des numéros de page, tailles de police ou motifs textuels. Ce comportement protège les conversions automatisées, car une liste inventée peut sembler crédible tout en associant le contenu au mauvais titre ou en écrasant une hiérarchie voulue. Si une arborescence existe mais que tous ses signets sont sous le niveau 1, la même erreur est renvoyée, puisqu’aucune limite de chapitre principal ne peut être établie. Corrigez l’extraction en amont ou ajoutez une arborescence intentionnelle avant de recommencer. Les autres éléments mal formés déclenchent un message localisé précis, notamment pour les titres vides, niveaux incorrects et pages non positives. L’algorithme parcourt une fois au plus 10,000 signets, sans réseau ni dépendance temporelle. Une entrée identique produit les mêmes indices et noms pour $0.002 par requête.

Planifier une conversion EPUB

Transformez une arborescence PDF extraite en manifeste de chapitres qu’un traitement pourra alimenter en contenu XHTML.

Auditer la navigation du document

Comparez le nombre et l’ordre des chapitres EPUB prévus aux signets principaux du PDF avant publication.

Créer des noms de chapitre stables

Attribuez des noms XHTML positionnels sans collision, même avec des titres répétés, ponctués ou non latins.

Quel est le tarif ?

Le prix de l’API est de $0.002 par requête, et la même transformation déterministe peut s’exécuter dans le navigateur.

Cette capacité lit-elle le fichier PDF lui-même ?

Non. Elle reçoit l’arborescence déjà extraite d’un PDF et la transforme en liste de chapitres.

Qu’est-ce qui constitue un chapitre ?

Chaque signet dont le niveau vaut exactement 1 devient un chapitre, dans l’ordre de l’entrée.

Que deviennent les signets imbriqués ?

Ils sont validés, mais ne sont pas émis comme chapitres. Ils peuvent ensuite servir de sections dans leur chapitre principal.

Que se passe-t-il sans signet de premier niveau ?

La requête renvoie une erreur d’entrée invalide, car la capacité n’invente pas les limites des chapitres.

Les pages de destination sont-elles obligatoires ?

Non. Une page présente devient source_page ; sinon, ce champ facultatif est omis.

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.

POSThttps://api.kit.forhosting.com/pdf/to-epub-structure

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é.

curl -X POST https://api.kit.forhosting.com/pdf/to-epub-structure \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"outline":[{"title":"Introduction","level":1,"page":1},{"title":"Background","level":2,"page":3},{"title":"Methods","level":1,"page":12}]}'
{
  "outline": [
    {
      "title": "Introduction",
      "level": 1,
      "page": 1
    },
    {
      "title": "Background",
      "level": 2,
      "page": 3
    },
    {
      "title": "Methods",
      "level": 1,
      "page": 12
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "pdf.to_epub_structure",
  "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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_mb25
max_pages200
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →