Produção de Livros

O ISBN estava nos dados e em nenhuma página do livro

Um livro tinha o ISBN no arquivo de dados e nenhuma página o imprimia. Outro tinha uma ficha com a colação errada. Como conferir ISBN e ficha catalográfica dentro do PDF, com scripts testados.

JonathanJonathan
7 min de leitura1.268 palavras
Capa do artigo: O ISBN estava nos dados e em nenhuma página do livro (eBuz, Produção de Livros)

Dois defeitos reais, de dois livros nossos.

No primeiro, o ISBN estava gravado nos dados do livro, e nenhuma página do PDF o imprimia. A página de créditos simplesmente não tinha a linha. O número "existia", e o livro saiu sem ele.

No segundo, um modelo de diagramação tinha escrito ISBN ‹A PREENCHER› direto no arquivo, e ignorava o número verdadeiro, que estava certo nos dados. O PDF mostrava a marca de pendência para um livro que já tinha ISBN.

Os dois têm a mesma causa: estar nos dados não é estar no livro. Este artigo mostra como conferir o ISBN e a ficha catalográfica dentro do PDF, com dois scripts, e as regras que a nossa ficha segue.

O ISBN em poucas linhas

ISBN é o número de 13 dígitos que identifica uma edição de livro no mundo. Cada formato tem o seu: o impresso, o digital e o audiolivro têm números diferentes, e uma segunda edição também. O último dígito é de verificação, e se calcula assim:

  • some os 12 primeiros dígitos, multiplicando por 1 os de posição ímpar e por 3 os de posição par;
  • o dígito verificador é o que falta para chegar ao próximo múltiplo de 10.

Este script faz a conta:

#!/usr/bin/env python3
"""Valida o dígito verificador de um ISBN-13. Uso: python3 isbn13.py 978-0-306-40615-7"""
import sys
d = [int(c) for c in sys.argv[1] if c.isdigit()]
ok = len(d) == 13 and (10 - sum(x * (1 if i % 2 == 0 else 3) for i, x in enumerate(d[:12])) % 10) % 10 == d[12]
print(sys.argv[1], "OK" if ok else "DÍGITO VERIFICADOR NÃO BATE")
sys.exit(0 if ok else 1)
python3 isbn13.py 978-0-306-40615-7

Com o número de exemplo usado em manuais de ISBN, a saída foi OK. Trocando o último dígito para 8, a saída foi DÍGITO VERIFICADOR NÃO BATE, e o código de saída 1. Em um lote nosso de oito ISBNs, conferimos que os oito dígitos batiam e que não havia duplicata.

Quem concede o ISBN no Brasil é a agência nacional do ISBN. Nas páginas de bibliotecas universitárias que consultamos, essa agência é a Câmara Brasileira do Livro, com solicitação pelo site dela e pagamento por boleto. Confirme o endereço e os valores atuais na fonte oficial, porque eles mudam e nós não os fixamos aqui.

Conferir se o ISBN aparece em alguma página

O script abaixo procura o número, sem hífens e sem espaços, em cada página do PDF:

#!/bin/bash
# O ISBN declarado aparece em alguma página do PDF? Uso: bash isbn_no_pdf.sh miolo.pdf 9780306406157
isbn="$2"
total=$(pdfinfo "$1" | awk '/^Pages/{print $2}')
for p in $(seq 1 "$total"); do
  pdftotext -f "$p" -l "$p" "$1" - | tr -d '\n -' | grep -q "$isbn" && { echo "ISBN $isbn encontrado na página $p"; exit 0; }
done
echo "REPROVADO: o ISBN $isbn não aparece em nenhuma página"; exit 1
bash isbn_no_pdf.sh miolo.pdf 9780306406157

No nosso teste, em um PDF cuja página 1 trazia o ISBN, a saída foi ISBN 9780306406157 encontrado na página 1. Em um PDF sem o número, a saída foi REPROVADO com código 1. Essa conferência vira uma guarda: se o número declarado não aparece, o arquivo não vai para a gráfica.

Há ainda um falso alarme conhecido. Um número de marcação como 978-65-00000-00-0 aparece em arquivos de teste que o motor gerava quando os dados não traziam ISBN. Não é um risco de livro publicado: é a prova de que o campo estava vazio.

A ficha catalográfica

A ficha vai na página de créditos, no verso da folha de rosto. A nossa página de créditos segue esta ordem:

  1. © titular e ano;
  2. a grade de responsabilidades em duas colunas (autor, revisão, capa e diagramação);
  3. a linha do Acordo Ortográfico;
  4. o bloco da ficha, com entrada do autor invertida, título e subtítulo, local, editora e ano, colação, ISBN, assuntos, a linha "I. Título." e a classificação;
  5. direitos, selo, CNPJ e endereço;
  6. cidade e ano.

Três regras protegem a ficha.

A colação é medida no PDF. A frase "82 p. ; 23 cm." mente sozinha, porque qualquer ajuste de diagramação muda o número de páginas e nada acusa. O arquivo recompila, lê o total com pdfinfo e corrige a colação se divergir. O método de duas passadas está em boneco e miolo, dois arquivos do mesmo livro.

A altura declarada é a do livro aparado, arredondada para cima. A norma de descrição bibliográfica pede só a altura. Em 6 x 9 polegadas, 22,86 cm viram 23 cm. Se a página tem sangria, ler a altura do arquivo faria a ficha declarar 24 cm em um livro que sai com 23.

Campo que só quem emite preenche vai visível. Classificação decimal, cidade e CNPJ, quando não há resposta, saem com a marca ‹A PREENCHER›. Melhor a pendência aparecer na prova do que o registro mentir. A nossa casa não usa bibliotecário: a classificação vai só com o número, e a linha de registro profissional não é impressa.

O ISBN dentro da ficha, e não duas vezes

Quando a ficha existe, o ISBN já vai dentro dela. Imprimir de novo na página de créditos é erro. Quando a ficha não existe, o ISBN precisa aparecer em outro lugar da página. O nosso motor decide isso sozinho, por um marcador que diz se há ficha. A primeira versão do modelo não imprimia o ISBN em lugar nenhum, e foi achada ao conferir um livro.

Passo a passo

  1. Valide o dígito verificador de cada ISBN com o script.
  2. Declare o ISBN no dado do livro, um por formato.
  3. Gere o PDF e rode a conferência de presença do número.
  4. Meça o total de páginas e a altura do corte, e compare com a colação da ficha.
  5. Deixe ‹A PREENCHER› em todo campo sem resposta. Nenhum campo em branco, nenhum inventado.
  6. Rode de novo depois de qualquer ajuste de diagramação: a colação é a primeira a mentir.

O erro que custa caro

Confiar no dado. O número certo no arquivo de configuração, com a página errada ou um modelo que ignora o campo, é um livro sem ISBN. O outro erro é a colação declarada à mão: a ficha mente sozinha na primeira revisão que muda uma página.

Quando NÃO usar

Em livro só digital, a colação em páginas não se aplica, e o ISBN costuma aparecer nos metadados do arquivo e na página de créditos. Em livro sem ficha, o ISBN vai na página de créditos, e a conferência de presença vale do mesmo jeito.

Alternativa sem o nosso ambiente

Os dois scripts usam Python e o poppler. Em um programa de layout visual, a conferência é a mesma: abrir o PDF final e procurar o número, com a busca do leitor de PDF, em todas as páginas. O que não muda é medir no arquivo final.

O que o Claude faz hoje, e como fazer sem ele

Hoje o Claude lê o total de páginas e a altura do PDF, recompila a ficha e roda a guarda do ISBN. Sem ele, os scripts e o pdfinfo fazem a mesma conferência.

Onde entra na operação

A ficha e o ISBN ficam no pré-texto, que é montado em pares recto e verso: pré-texto em 13 posições. A conferência final do arquivo está no checklist de preflight do miolo. O guia da esteira é Como produzimos o miolo de um livro profissional sem InDesign.

Baixe, para guardar: checklist de preflight do miolo, com comando e limite por item (PDF).

Versões usadas neste artigo: veja a matriz de versões.

Perguntas frequentes

Como validar o dígito verificador de um ISBN-13?

Multiplique os 12 primeiros dígitos, alternando 1 e 3, e some. O dígito verificador é o valor que falta para a soma chegar ao próximo múltiplo de 10. O script do artigo faz a conta e avisa quando não bate.

Preciso de um ISBN para cada formato do livro?

Sim. O impresso, o digital e o audiolivro têm ISBNs diferentes, e uma nova edição também. Cada um é declarado nos dados do livro e conferido no arquivo correspondente.

Por que a colação da ficha catalográfica pode estar errada?

Porque ela declara o número de páginas, e qualquer ajuste de diagramação muda esse número. A solução é medir o total no PDF final e corrigir a colação, em duas passadas de compilação.

A ficha catalográfica declara a altura do arquivo ou a do livro?

A do livro aparado, arredondada para cima, e não a do arquivo com sangria. Em 6 x 9 polegadas, a altura é de 22,86 cm, que se declara como 23 cm.