Configurar permisos PDF: impresión, copia, edición y anotación
El validador de permisos PDF convierte una lista de opciones de acceso en un conjunto predecible.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Indique una referencia al PDF y cualquier combinación de print, copy, edit y annotate. El resultado utiliza nombres canónicos en minúsculas, elimina duplicados y respeta un orden estable. Si aparece un nombre no admitido, la solicitud falla claramente en vez de enviar una política ambigua al siguiente paso de su flujo documental. Así, las configuraciones automatizadas quedan uniformes y son fáciles de revisar.
Defina la política antes de modificar el documento
Los flujos de seguridad PDF suelen comenzar con un pequeño objeto de configuración, mucho antes de que una biblioteca de cifrado o un servicio documental procese el archivo. Esa configuración merece la misma validación que el documento. Una opción mal escrita, como “printing”, podría ignorarse, interpretarse de forma distinta entre bibliotecas o guardarse como si fuera válida. Esta capacidad establece un contrato preciso para ese límite. Envíe la referencia del PDF junto con los permisos que desea conceder. El validador comprueba que exista la referencia y que permissions sea un array formado únicamente por print, copy, edit y annotate. Después devuelve los nombres aceptados en orden canónico. No descarga, inspecciona, cifra ni reescribe el PDF. Esta separación permite usar el resultado como entrada segura para una protección posterior, una base de políticas, una pantalla de aprobación o un registro de auditoría. También permite rechazar una selección errónea antes de iniciar una operación documental más lenta o costosa.
Cómo obtiene la normalización un resultado estable
Las listas de permisos suelen proceder de casillas, argumentos de consola, ajustes importados o reglas combinadas. Esas fuentes pueden generar mayúsculas mezcladas, espacios, valores repetidos y órdenes diferentes. El normalizador recorta cada cadena y la convierte a minúsculas antes de contrastarla con el vocabulario admitido. Los duplicados se reducen a una sola entrada porque los permisos forman un conjunto, no una secuencia de órdenes. La salida siempre sigue el orden print, copy, edit y annotate, sin importar el orden original. Un array vacío es válido y representa una política que no concede ninguno de estos cuatro permisos. Cualquier valor que no sea texto o cualquier nombre desconocido hace fallar toda la solicitud con un error de entrada inválida; la herramienta nunca descarta silenciosamente una opción no admitida. Este comportamiento indivisible es esencial en ajustes de seguridad, pues aceptar solo una parte podría falsear la intención del solicitante. La salida determinista también se puede comparar, almacenar, firmar, revisar y probar fácilmente.
Use el conjunto normalizado en un flujo PDF completo
El array devuelto describe una política validada; no es un documento modificado. Entréguelo al componente que realmente aplique cifrado o restricciones de propietario y consulte su documentación para conocer el comportamiento exacto de lectores y sistemas operativos. Los permisos PDF suelen ser controles orientativos que aplica el software compatible; no sustituyen el control de acceso, una distribución prudente ni el cifrado con una contraseña apropiada. Separar validación y aplicación aporta ventajas prácticas. Un formulario web puede mostrar un resumen limpio antes del envío, una API puede guardar una única representación coherente y un proceso por lotes puede detenerse ante el primer nombre desconocido. Como esta capacidad no usa servicios de red ni decodifica el PDF suministrado, puede ejecutarse en el navegador con el mismo resultado determinista que la API. Su uso en el navegador es gratuito; las solicitudes automatizadas por API aplican el precio base publicado de $0.002. El validador no devuelve ni conserva contenido del documento.
Qué puede hacer con ella
Validar un formulario de permisos
Normalice los valores de las casillas antes de solicitar la protección del PDF y muestre al usuario la política aceptada exacta.
Uniformar políticas documentales guardadas
Elimine duplicados y diferencias de orden antes de guardar conjuntos de permisos en una base de datos o registro de auditoría.
Rechazar errores de configuración inseguros
Detenga un proceso por lotes si una integración envía un permiso desconocido, en lugar de ignorarlo sin aviso.
Preguntas frecuentes
¿Esta capacidad modifica o cifra el PDF?
No. Valida la referencia del PDF y los nombres de permisos, y devuelve un conjunto normalizado. Aplíquelo con otra herramienta de protección PDF.
¿Qué permisos admite?
Los nombres canónicos admitidos son print, copy, edit y annotate.
¿Qué ocurre si un permiso es desconocido?
La solicitud falla con un error de entrada inválida que identifica el valor desconocido y enumera las opciones admitidas.
¿Acepta duplicados y valores en mayúsculas?
Sí. Elimina los espacios externos, convierte los nombres a minúsculas y reduce los permisos duplicados.
¿Puedo enviar una lista de permisos vacía?
Sí. Un array vacío se conserva como tal y representa que no se concede ninguno de los cuatro permisos admitidos.
¿Cuánto cuesta?
Puede ejecutarlo gratis en el navegador desde esta página. La automatización mediante API cuesta $0.002 por solicitud.
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/permissions-set \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"kit://upl_example_pdf","permissions":["print","copy"]}'const res = await fetch("https://api.kit.forhosting.com/pdf/permissions-set", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "kit://upl_example_pdf",
"permissions": [
"print",
"copy"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/permissions-set",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "kit://upl_example_pdf",
"permissions": [
"print",
"copy"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/permissions-set", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"kit://upl_example_pdf","permissions":["print","copy"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"kit://upl_example_pdf","permissions":["print","copy"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/permissions-set", 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": "kit://upl_example_pdf",
"permissions": [
"print",
"copy"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.permissions_set",
"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. |