Liste las imágenes de un PDF: página, índice y tamaño
Convierta los metadatos anidados de imágenes PDF en un inventario claro, fácil de revisar, filtrar y guardar.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Indique los descriptores de imagen de cada página, incluidos el número de página y las dimensiones en píxeles. El resultado es una única lista plana, ordenada como el origen y con un índice que comienza en uno para cada página. Resulta útil después de que un analizador PDF haya identificado las imágenes incrustadas y antes de auditarlas, seleccionarlas, extraerlas o incluirlas en un informe.
Prepare los descriptores de imagen por página
Comience con los metadatos generados por su lector de PDF o flujo de extracción. La entrada es un arreglo de páginas; cada elemento contiene un número de página positivo y un arreglo de imágenes. Cada imagen debe indicar un ancho y un alto enteros positivos en píxeles. Conserve el orden entregado por el analizador, ya que ese orden determina el índice del resultado. El índice empieza en uno en cada página, lo que facilita citar «página 4, imagen 2» en informes. Una página puede no contener imágenes; en ese caso, incluya un arreglo de imágenes vacío. Los números de página no necesitan ser consecutivos, por lo que puede procesar una selección sin añadir marcadores. Sin embargo, deben ser únicos dentro de la solicitud. Esta estructura explícita evita que una página omitida asocie silenciosamente una imagen con una ubicación incorrecta.
Interprete el resultado aplanado
La respuesta contiene un arreglo de imágenes con un registro por cada descriptor encontrado en las páginas suministradas. Cada registro ofrece cuatro campos: página, índice, ancho y alto. La página se copia del elemento contenedor; el índice se calcula según la posición de la imagen y vuelve a uno al pasar a la página siguiente. El ancho y el alto se validan y copian sin redimensionar, redondear, rotar ni convertir unidades. Los registros mantienen el orden de las páginas de entrada y el de sus imágenes. Este recorrido estable produce el mismo resultado en ejecuciones repetidas y permite comparar inventarios sin ordenar de nuevo. La capacidad no abre el PDF ni extrae datos binarios: normaliza descriptores obtenidos previamente. Las dimensiones repetidas permanecen como registros distintos, pues pueden corresponder a recursos o ubicaciones diferentes.
Valide y aproveche el inventario
Use el inventario plano cuando la estructura anidada por páginas resulte incómoda. Un control de calidad puede detectar imágenes con resolución insuficiente; un proceso de extracción puede escoger solo las mayores que una miniatura; y un informe puede contar imágenes por página sin recorrer arreglos anidados repetidamente. Guarde juntos la página y el índice como ubicación legible, teniendo presente que el índice representa el orden recibido, no el identificador interno del objeto PDF. La validación es estricta: la solicitud falla si las páginas faltan o están vacías, si un número de página es inválido o está duplicado, si imágenes no es un arreglo, o si el ancho o alto no es un entero positivo. Es preferible fallar a producir un inventario parcial con apariencia completa. La operación es determinista, no usa la red ni conserva los descriptores. Puede ejecutarla en el navegador o usar la API por $0.002 por solicitud.
Qué puede hacer con ella
Auditar la resolución de imágenes
Aplane los metadatos del analizador y detecte imágenes cuyo ancho o alto no cumpla los requisitos de calidad documental.
Planificar una extracción selectiva
Cree un manifiesto de página e índice para seleccionar después imágenes grandes e ignorar pequeños elementos decorativos.
Crear un informe de recursos PDF
Transforme los resultados anidados por página en filas sencillas para una hoja de cálculo, base de datos o registro.
Preguntas frecuentes
¿Esta capacidad lee o carga el propio PDF?
No. Recibe los descriptores de imagen por página que su analizador PDF ya haya generado.
¿Cómo se asignan los índices de imagen?
Comienzan en uno, siguen el orden de entrada y vuelven a uno en cada página.
¿Puede una página no contener imágenes?
Sí. Envíe esa página con un arreglo de imágenes vacío; no aportará registros al resultado.
¿Los números de página deben ser consecutivos?
No. Puede enviar páginas seleccionadas, pero cada número debe ser un entero positivo único dentro de la solicitud.
¿Cuánto cuesta una solicitud de API?
El precio de la API es $0.002 por solicitud. El ejecutor del navegador está disponible para uso interactivo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/pdf/extract-images-list \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/extract-images-list", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/extract-images-list",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/extract-images-list", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"page":1,"images":[{"width":1200,"height":800},{"width":64,"height":64}]},{"page":2,"images":[{"width":1920,"height":1080}]}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/extract-images-list", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"pages": [
{
"page": 1,
"images": [
{
"width": 1200,
"height": 800
},
{
"width": 64,
"height": 64
}
]
},
{
"page": 2,
"images": [
{
"width": 1920,
"height": 1080
}
]
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.extract_images_list",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_pages | 10000 |
max_images_per_page | 10000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |