v0.6.0 · linguagem .pdfl + CLI pdfl

Seu checklist de PDF, em código que roda.

O PDFLang troca o checklist que alguém lê na tela por um script versionado. Cobertura de tinta, fontes embarcadas, cláusulas obrigatórias, códigos de barras, dados pessoais — declarados uma vez, conferidos em todo arquivo, no terminal ou na CI.

profiles/offset.pdfl — um 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
funções documentadas
7
namespaces
12
comandos de CLI
8
idiomas na documentação

Sete namespaces, uma linguagem

Cada namespace cobre uma classe de problema. Você usa o que precisa: um script que nunca toca em codes:: não paga o custo da varredura das páginas.

prepress:: 30 funções

Pré-impressão

TAC exato de cobertura de tinta, separações, cores especiais, preto rico, fios de cabelo, substituição de fonte, corpo mínimo, boxes e sangria. O que a chapa mostraria — antes da chapa.

text:: 25 funções

Texto

Extração, normalização, busca por regex e validação do conteúdo que está de fato no arquivo — inclusive documentos brasileiros e detecção de dados pessoais.

struct:: 23 funções

Estrutura

O arquivo em si: metadados, XMP, objetos internos, criptografia e permissões, hashing. Responde se o PDF é o que diz ser.

fix:: 19 operações

Normalização

Boxes, rotação e ordem de páginas, marca d'água, junção e divisão, otimização. Grava um PDF novo; o original nunca é tocado.

visual:: 16 funções

Imagens

Resolução efetiva, qualidade, hash perceptual e comparação por SSIM entre duas versões. Pega o logo em baixa que o olho aprova a 100%.

codes:: 13 funções

Códigos

Detecta e decodifica EAN, UPC, Code 128/39, ITF, QR Code, Data Matrix, Aztec e PDF417 — e confere o conteúdo lido contra o que deveria estar ali.

data:: 8 funções

Dados externos

Cruza o conteúdo do documento com seus próprios glossários, datasets e tabelas de consulta. Números de lote, SKUs, terminologia aprovada.

Código de saída, não captura de tela

Todo comando de validação segue a mesma convenção: 0 passou, 1 só avisos, 2 erros de validação, 3 erro de sintaxe no script. O relatório sai em JSON, CSV, HTML ou PDF de auditoria — um para o pipeline, outro para o cliente.

o mesmo perfil, agora barrando um 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 produção

Gráfica

O arquivo chega do cliente e alguém precisa conferir tinta, fontes, imagens e sangria antes de ir para a chapa. Erro descoberto depois custa a tiragem inteira.

Um perfil por tipo de papel. O pdfl watch valida o que cai na pasta e devolve um relatório HTML que você encaminha como está.

Editora jurídica

Contratos e políticas precisam conter cláusulas obrigatórias, não podem vazar dados pessoais e devem manter os metadados coerentes a cada revisão.

Cláusulas viram asserções com a sua mensagem de falha. O pdfl compare mostra o que mudou entre duas revisões do mesmo documento.

Indústria regulada

A bula precisa trazer os textos exigidos pelo órgão regulador e um código de lote que corresponda ao lote realmente em produção.

O text:: confere a redação obrigatória e o codes:: decodifica o Data Matrix impresso e compara com o dataset da produção.

Assine o PDFLang

A licença é por dispositivo: o pdfl fingerprint identifica a máquina e o pdfl license ativa. O mesmo binário na estação do operador e no agente de build.

Ver os planos