v0.6.0 · lenguaje .pdfl + CLI pdfl

Tu checklist de PDF, en código que se ejecuta.

PDFLang cambia la lista que alguien repasa en pantalla por un script versionado. Cobertura de tinta, fuentes incrustadas, cláusulas obligatorias, códigos de barras, datos personales: se declaran una vez y se comprueban en cada archivo, en la terminal o en la CI.

profiles/offset.pdfl — un perfil de preflight para offset
profile "offset-magazine" {

  const TAC_LIMIT = 300%
  const MIN_DPI   = 300

  check "Ink coverage" tags: ["prepress"] {
    doc.pages.each { |page|
      tac = prepress::calculate_exact_tac(page.number)
      assert tac <= TAC_LIMIT,
        "page #{page.number}: #{tac}% ink"
    }
  }

  check "Fonts" tags: ["fonts"] {
    loose = prepress::detect_text_substitution()
    assert loose.length == 0,
      "fonts not embedded: #{loose.join(", ")}"
  }
}
134
funciones documentadas
7
espacios de nombres
12
comandos del CLI
8
idiomas de la documentación

Siete espacios de nombres, un solo lenguaje

Cada espacio de nombres cubre una clase de problema. Usas lo que necesitas: un script que nunca toca codes:: no paga el coste del barrido de las páginas.

prepress:: 30 funciones

Preimpresión

TAC exacto de cobertura de tinta, separaciones, tintas planas, negro rico, filetes finos, sustitución de fuentes, cuerpo mínimo, cajas y sangrado. Lo que la plancha te habría mostrado, antes de la plancha.

text:: 25 funciones

Texto

Extracción, normalización, búsqueda por expresiones regulares y validación del contenido que de verdad está en el archivo, incluida la detección de datos personales.

struct:: 23 funciones

Estructura

El archivo en sí: metadatos, XMP, objetos internos, cifrado y permisos, huellas. Responde si el PDF es lo que dice ser.

fix:: 19 operaciones

Normalización

Cajas, rotación y orden de páginas, marcas de agua, unión y división, optimización. Escribe un PDF nuevo; el original no se toca nunca.

visual:: 16 funciones

Imágenes

Resolución efectiva, calidad, hash perceptual y comparación por SSIM entre dos versiones. Detecta el logotipo de baja resolución que el ojo aprueba al 100%.

codes:: 13 funciones

Códigos de barras

Detecta y decodifica EAN, UPC, Code 128/39, ITF, código QR, Data Matrix, Aztec y PDF417, y coteja lo leído con lo que debería estar ahí.

data:: 8 funciones

Datos externos

Cruza el contenido del documento con tus propios glosarios, conjuntos de datos y tablas de consulta: números de lote, referencias, terminología aprobada.

Códigos de salida, no capturas de pantalla

Todo comando de validación sigue la misma convención: 0 todo pasó, 1 solo advertencias, 2 errores de validación, 3 error de sintaxis en el script. El informe sale en JSON, CSV, HTML o PDF de auditoría: uno para el pipeline y otro para el cliente.

el mismo perfil, ahora bloqueando un merge
# .github/workflows/preflight.yml
- run: pdfl run profiles/offset.pdfl artwork.pdf \
         --output html --output-file report.html \
         --fail-on warning

# 0 ok · 1 warnings · 2 validation errors · 3 syntax error
$ pdfl run profiles/offset.pdfl artwork.pdf
$ echo $?
2

Escrito para producción

Imprenta

El archivo llega del cliente y alguien tiene que revisar tinta, fuentes, imágenes y sangrado antes de pasar a plancha. Un error descubierto después cuesta la tirada entera.

Un perfil por tipo de papel. pdfl watch valida lo que cae en la carpeta vigilada y devuelve un informe HTML que puedes reenviar tal cual.

Editorial jurídica

Los contratos y las políticas deben incluir cláusulas obligatorias, no pueden filtrar datos personales y tienen que mantener los metadatos coherentes en cada revisión.

Las cláusulas se convierten en aserciones con tus propios mensajes de error. pdfl compare muestra qué cambió entre dos revisiones del mismo documento.

Industria regulada

El prospecto debe llevar los textos que exige el organismo regulador y un código de lote que corresponda al lote realmente en producción.

text:: comprueba la redacción obligatoria y codes:: decodifica el Data Matrix impreso y lo compara con el conjunto de datos de producción.

Suscríbete a PDFLang

La licencia es por dispositivo: pdfl fingerprint identifica la máquina y pdfl license la activa. El mismo binario en el puesto del operador y en el agente de compilación.

Ver los planes