SciFig

Référence API

Conversion d’images

Vectorisez une image en SVG ou exportez en PNG, PDF, TIFF et PPTX, y compris les diagrammes de flux.

Afficher en Markdown

Corps JSON#

POST /images/conversions. Portée requise : figures:generate.

ChampTypeObligatoireValeur par défautRègles
imagestringoui—Un file_id de PNG ou JPEG ou le résultat SVG d’un diagramme de flux, jusqu’à 20 MB ; svg accepte aussi WebP
formatstringoui—svg, png, pdf, tiff ou pptx
vector_modestringnoneditable_textUniquement pour svg : editable_text ou full_vector
dpiintegernon300Pas pour svg : 300, 600 ou 1000
widthintegernon2048Uniquement pour les sources SVG de diagrammes de flux : grand côté en pixels, 256–4096, au plus 8,388,608 pixels au total

Vectorisation SVG#

  • Coûte 150 crédits et exige une offre payante ; utilise le même outil de vectorisation que la modification dans le canevas du site. La source est une image PNG, JPEG ou WebP.
  • editable_text conserve le texte sous forme de texte SVG modifiable ; full_vector trace tous les éléments, texte compris, sous forme de chemins.
  • La vectorisation s’exécute comme une tâche. Les crédits ne sont réservés qu’une fois l’exécution acceptée, et les credits de la tâche sont relus dans le registre comptable. Une vectorisation échouée est remboursée et renvoie TASK_FAILED pour cette clé.
  • Convertir une image déjà vectorisée renvoie le SVG précédent, sans frais pour cette tâche.
  • Si l’outil de vectorisation est temporairement indisponible avant le démarrage, la réponse est 503 SERVICE_UNAVAILABLE avec Retry-After : réessayez avec la même clé.

PNG, PDF, TIFF et PPTX#

  • Gratuit, jusqu’à 200 conversions par compte et par jour. Elles se terminent immédiatement : la réponse est une tâche succeeded.
  • Une conversion ne compte dans le quota quotidien qu’après validation de toutes ses entrées, et une fois par Idempotency-Key : répéter la même clé ne compte pas à nouveau. Au-delà du quota, la réponse est 429 RATE_LIMITED avec details.reason = DAILY_CONVERSION_LIMIT et Retry-After jusqu’à la réinitialisation de la fenêtre quotidienne.
  • La source est une image PNG ou JPEG ou le résultat SVG d’un diagramme de flux ; WebP n’est pas accepté : UNSUPPORTED_SOURCE_FORMAT.
  • Un fichier dont le résultat encodé dépasserait 24 MiB est refusé avec 400 INVALID_REQUEST et OUTPUT_TOO_LARGE ; convertissez une image plus petite.
  • dpi est inscrit dans le fichier et définit la taille physique des pages PDF et PPTX ; les pixels ne sont pas rééchantillonnés. Pour obtenir plus de pixels, agrandissez d’abord l’image.
  • PNG et TIFF exigent une source PNG ; PDF et PPTX acceptent aussi JPEG. TIFF utilise la compression Deflate sans perte.
  • Le PPTX contient une diapositive avec l’image, pas des formes modifiables.

Exportation de diagrammes de flux#

Le résultat SVG d’un diagramme de flux peut être converti en PNG, PDF, TIFF ou PPTX. Le serveur le rend avec les polices Arial et Noto, avec width pixels sur le grand côté : 2048 par défaut, au plus 4096 et 8,388,608 pixels au total ; un graphique carré ne peut donc dépasser 2896 px. Une demande plus grande renvoie 400 INVALID_REQUEST avec RENDER_TOO_LARGE. Les textes que les polices ne peuvent pas afficher sont refusés avec 400 INVALID_REQUEST et SVG_NOT_RENDERABLE, plutôt que dessinés sous forme de cases vides. Si le moteur de rendu échoue, la réponse est 503 SERVICE_UNAVAILABLE avec SVG_RENDERER_UNAVAILABLE et Retry-After : réessayez avec la même clé. Les autres fichiers SVG ne peuvent pas servir d’entrées.

cURL#

curl -X POST https://scifig.ai/api/v1/images/conversions \
  -H "Authorization: Bearer $SCIFIG_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=25" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }'

JavaScript#

const response = await fetch('https://scifig.ai/api/v1/images/conversions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
    'Idempotency-Key': crypto.randomUUID(),
    Prefer: 'wait=25',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }),
});
const result = await response.json();
console.log(response.status, result);

Python#

import os
import uuid

import requests

headers = {
    "Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
    "Idempotency-Key": str(uuid.uuid4()),
    "Prefer": "wait=25",
}
response = requests.post(
    "https://scifig.ai/api/v1/images/conversions",
    headers=headers,
    json={
        "image": "<file_id>",
        "format": "pdf",
        "dpi": 600
    },
    timeout=60,
)
print(response.status_code, response.json())