SciFig

Riferimento API

Conversione di immagini

Vettorializza un’immagine in SVG oppure esporta PNG, PDF, TIFF e PPTX, inclusi i diagrammi di flusso.

Corpo JSON#

POST /images/conversions. Ambito richiesto: figures:generate.

CampoTipoObbligatorioValore predefinitoRegole
imagestringsì—Un file_id di PNG o JPEG o il risultato SVG di un diagramma di flusso, fino a 20 MB; svg accetta anche WebP
formatstringsì—svg, png, pdf, tiff o pptx
vector_modestringnoeditable_textSolo per svg: editable_text o full_vector
dpiintegerno300Non per svg: 300, 600 o 1000
widthintegerno2048Solo per sorgenti SVG di diagrammi di flusso: lato lungo in pixel, 256–4096, massimo 8,388,608 pixel totali

Vettorializzazione SVG#

  • Costa 150 crediti e richiede un piano a pagamento; usa lo stesso vettorializzatore della modifica nel canvas del sito. La sorgente è un’immagine PNG, JPEG o WebP.
  • editable_text mantiene il testo come testo SVG modificabile; full_vector traccia tutto, incluso il testo, come percorsi.
  • La vettorializzazione viene eseguita come processo. I crediti vengono riservati solo dopo l’accettazione dell’attività e i credits del processo vengono riletti dal registro contabile. Una vettorializzazione non riuscita viene rimborsata e restituisce TASK_FAILED per quella chiave.
  • Convertire un’immagine già vettorializzata restituisce lo SVG precedente senza costi per questo processo.
  • Se il vettorializzatore è temporaneamente non disponibile prima dell’avvio, la risposta è 503 SERVICE_UNAVAILABLE con Retry-After: riprova con la stessa chiave.

PNG, PDF, TIFF e PPTX#

  • Gratuito, fino a 200 conversioni per account al giorno. Terminano subito: la risposta è un processo succeeded.
  • Una conversione conta per la quota giornaliera solo dopo che l’input ha superato tutti i controlli e una sola volta per Idempotency-Key: ripetere la stessa chiave non conta nuovamente. Oltre la quota, la risposta è 429 RATE_LIMITED con details.reason = DAILY_CONVERSION_LIMIT e Retry-After fino al ripristino della finestra giornaliera.
  • La sorgente è un’immagine PNG o JPEG o il risultato SVG di un diagramma di flusso; WebP non è accettato: UNSUPPORTED_SOURCE_FORMAT.
  • Un file il cui risultato codificato supererebbe 24 MiB viene rifiutato con 400 INVALID_REQUEST e OUTPUT_TOO_LARGE; converti un’immagine più piccola.
  • dpi viene scritto nel file e determina le dimensioni fisiche delle pagine PDF e PPTX; i pixel non vengono ricampionati. Per avere più pixel, ingrandisci prima l’immagine.
  • PNG e TIFF richiedono una sorgente PNG; PDF e PPTX accettano anche JPEG. TIFF usa la compressione Deflate senza perdita.
  • Il PPTX contiene una diapositiva con l’immagine, non forme modificabili.

Esportazione dei diagrammi di flusso#

Il risultato SVG di un diagramma di flusso può essere convertito in PNG, PDF, TIFF o PPTX. Il server lo renderizza con caratteri Arial e Noto e width pixel sul lato lungo: 2048 per impostazione predefinita, massimo 4096 e 8,388,608 pixel totali; un grafico quadrato può quindi essere al massimo 2896 px. Una richiesta più grande restituisce 400 INVALID_REQUEST con RENDER_TOO_LARGE. Il testo che i caratteri non possono rappresentare viene rifiutato con 400 INVALID_REQUEST e SVG_NOT_RENDERABLE anziché disegnato come riquadri vuoti. Se il renderizzatore fallisce, la risposta è 503 SERVICE_UNAVAILABLE con SVG_RENDERER_UNAVAILABLE e Retry-After: riprova con la stessa chiave. Altri file SVG non possono essere usati come input.

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())