Leer metadatos de un PDF
Todo PDF lleva un diccionario de información oculto: el título, el autor, la herramienta que lo generó y las marcas de tiempo de cuándo se creó y se modificó por última vez. Esta API de metadatos PDF extrae esos campos de cualquier documento que le envíe y los devuelve como JSON estructurado y limpio, para que nunca tenga que analizar el archivo por su cuenta.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Qué lee y por qué importa
Envía un PDF y recibe los campos que casi nadie ve: Título, Autor, Asunto, Palabras clave, Creador (la aplicación de autoría), Productor (la biblioteca que escribió el archivo), además de las fechas CreationDate y ModDate. Estos datos viven en el diccionario de información del documento y, en archivos modernos, dentro de un paquete XMP incrustado. Para un gestor documental, un archivo legal o una cadena de publicación, esos metadatos marcan la diferencia entre una biblioteca buscable y una carpeta de archivos anónimos. Leerlos de forma confiable a través de la variedad caótica de los PDF reales es el trabajo tedioso que este endpoint le quita de encima.
Cómo funciona la solicitud
Llama a POST /pdf/metadata-read con una referencia a su documento y la solicitud responde de inmediato con un task_id. Como un PDF grande o mal codificado nunca debería bloquear su hilo de solicitud, el trabajo corre de forma asíncrona en nuestro edge global. Cuando termina, el resultado estructurado se le entrega, sin bucles de sondeo ni conexiones abiertas indefinidamente. Si una tarea falla, la reintentamos tres veces con backoff antes de devolver un error claro y accionable, y una tarea fallida nunca se cobra.
Una nota sobre el formato
El formato PDF arrastra un diccionario de información desde sus primeras especificaciones públicas en los años noventa, y Adobe luego superpuso XMP — un estándar de metadatos basado en XML — para que campos más ricos y estandarizados viajaran con el archivo. El detalle es que ambos pueden contradecirse, las fechas usan el peculiar formato de cadena propio del PDF, y muchos productores dejan campos vacíos. Normalizamos lo que podemos, exponemos las fechas en una forma predecible y le entregamos ambas fuentes para que nada relevante se descarte en silencio.
Entrega, retención y privacidad
Los resultados llegan por un webhook firmado, que recomendamos para automatización, o mediante un enlace firmado que permanece válido durante 24 horas. Su documento y los metadatos extraídos se conservan solo durante la ventana de retención y luego se eliminan; nada de lo que envía se usa jamás para entrenar ningún modelo. Esto mantiene la superficie pequeña y predecible, y es parte de por qué el servicio se mantiene rápido.
Dónde encaja en la automatización
Como cada llamada es una unidad pequeña, económica y autónoma, este endpoint encaja de forma natural en un paso de ingesta. Colóquelo al inicio de una tubería de entrada para etiquetar automáticamente cada archivo por autor y fecha de creación, para señalar documentos cuyo Productor revele un origen inesperado, o para reconciliar una fecha declarada contra la incrustada, todo antes de que una persona abra el archivo.
Qué puede hacer con ella
Etiquetar un archivo documental automáticamente
A medida que los archivos llegan a un archivo legal o de expedientes, lea el autor, el título y la fecha de creación de cada PDF para poblar los campos del catálogo sin captura manual, convirtiendo un volcado sin etiquetas en una biblioteca buscable.
Verificar la procedencia en e-discovery
Compare las fechas CreationDate y ModDate incrustadas contra la cronología declarada de un documento e inspeccione el campo Productor para ver qué herramienta generó realmente el archivo, útil cuando el origen de una prueba está en duda.
Control de calidad en una cadena editorial
Antes de que un PDF pase a imprenta o a un distribuidor, confirme que el Título y el Autor estén correctamente definidos y rechace los archivos cuyos metadatos estén vacíos o aún carguen un marcador de posición de la herramienta de exportación.
Deduplicar y enrutar correo entrante
Use el Productor y la marca de tiempo de creación para distinguir una factura recién escaneada de una copia reexportada, y luego enrute cada documento al flujo correcto según lo que realmente lo generó.
Preguntas frecuentes
¿Cómo leo los metadatos de un PDF con una API?
Envíe su documento a POST /pdf/metadata-read y recibe un task_id de inmediato. El título, el autor, las fechas y el productor extraídos se entregan luego a su webhook firmado o mediante un enlace firmado, como JSON estructurado.
¿La API de metadatos PDF es gratis?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Qué campos de metadatos devuelve?
Título, Autor, Asunto, Palabras clave, Creador y Productor del diccionario de información del documento, junto con las marcas CreationDate y ModDate. Cuando un archivo lleva un paquete XMP incrustado, también se leen esos campos estandarizados.
¿Puede procesar PDF de forma masiva?
Sí. Como cada llamada es una tarea asíncrona independiente que devuelve su propio task_id, puede lanzar miles de documentos en paralelo y recoger cada resultado por webhook a medida que se completa, sin una cola compartida que le frene.
¿Qué pasa si un PDF no tiene metadatos?
Muchos archivos dejan campos vacíos o sin definir. La respuesta simplemente devuelve esos campos como vacíos en lugar de adivinar, para que distinga entre un valor ausente y uno real, y un documento válido con metadatos escasos no se trata como un fallo.
¿En qué formato vienen las fechas de creación y modificación?
El PDF almacena las fechas en su propio formato de cadena, que nosotros analizamos y exponemos en una forma predecible y legible por máquina, para que no tenga que decodificar el prefijo D: crudo ni los desfases de zona horaria.
¿Leer los metadatos modifica o extrae el contenido del documento?
No. Esta capacidad solo lee el diccionario de información y el paquete XMP; no altera su archivo ni extrae el texto o las imágenes de las páginas. Su documento se elimina tras la ventana de retención.
¿Qué ocurre si el archivo está dañado o no es un PDF real?
La tarea se reintenta tres veces con backoff y, si aun así no puede leerse, recibe un error claro que explica por qué. Una tarea fallida nunca se cobra.
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, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/pdf/metadata-read \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf"}'const res = await fetch("https://api.kit.forhosting.com/pdf/metadata-read", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/metadata-read",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/metadata-read", 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"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/metadata-read", 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
{
"pdf": "https://ejemplo.com/documento.pdf"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.metadata_read",
"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_mb | 25 |
max_pages | 200 |
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. |
413 | input_too_large | El archivo supera el límite de tamaño. |