Skip to content

fix: numera páginas do PDF na ordem natural das folhas quando não há fpage - #1310

Open
Rossi-Luciano wants to merge 2 commits into
scieloorg:masterfrom
Rossi-Luciano:fix/pdf-page-numbering-natural-order
Open

fix: numera páginas do PDF na ordem natural das folhas quando não há fpage#1310
Rossi-Luciano wants to merge 2 commits into
scieloorg:masterfrom
Rossi-Luciano:fix/pdf-page-numbering-natural-order

Conversation

@Rossi-Luciano

@Rossi-Luciano Rossi-Luciano commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Corrige a parte de numeração de página da issue #1302, que não foi coberta pelo #1309 (fases 1+2): quando não há <fpage> (artigos de publicação contínua), a numeração de página do PDF ficava incorreta.

Também unifica o mecanismo de numeração entre a 1ª página e as demais: docx_page_vol_issue_year_pipe passa a usar o mesmo campo PAGE dinâmico do Word que docx_second_footer_pipe, em vez de escrever footer_data['fpage'] como texto estático (que ficava vazio quando não há fpage).

Nota sobre o teste alterado: test_rendered_page_layout.py::test_body_starts_page_one_without_fpage_defaults_to_one (dos PRs #1295/#1296) afirmava que a página 2 mostrar "1" era o comportamento correto. Isso foi um efeito colateral de uma correção de layout (o corpo do artigo passando a começar na página 1), não uma decisão deliberada sobre numeração. A #1302 identificou que esse comportamento está errado, e a observação da #1302 prevalece. O teste foi renomeado e atualizado para refletir o novo comportamento esperado.

Onde a revisão poderia começar?

packtools/sps/formats/pdf/pipeline/docx.py, função pipeline_docx (fallback de start_page_number) e docx_page_vol_issue_year_pipe (troca de texto estático por campo PAGE).

Como este poderia ser testado manualmente?

python -m packtools.sps.formats.pdf_generator \
    -i tests/fixtures/pdf/a4.xml \
    -l tests/fixtures/pdf/layout.docx \
    -o /tmp/a4.pdf --libreoffice-binary libreoffice

Páginas 1, 2 e 3: devem mostrar 1 | VOL..., 2 | VOL..., 3 | VOL... respectivamente (antes: página 1 sem número, página 2 mostrava 1).

python -m packtools.sps.formats.pdf_generator \
    -i tests/fixtures/pdf/a1.xml \
    -l tests/fixtures/pdf/layout.docx \
    -o /tmp/a1.pdf --libreoffice-binary libreoffice

Artigo com fpage=271: páginas 1 a 11 devem continuar mostrando 271 a 281 normalmente (sem regressão).

Testes automatizados: pytest tests/sps/formats/pdf (inclui o teste de renderização real via LibreOffice, que já roda neste ambiente).

Algum cenário de contexto que queira dar?

Depende do #1309 (fases 1+2 da mesma issue #1302) já estar mergeado ou revisado antes deste, já que a branch parte dele. Fecha a parte de numeração de página da #1302; a issue pode ser fechada depois que os dois PRs forem mergeados.

Screenshots

Antes/depois da numeração de páginas 1 e 2 de a4.xml (sem fpage):

comparison_page_numbering_before_after

Quais são os tickets relevantes?

Closes #1302 (em conjunto com #1309).

Referências

N/A


Segurança da informação (NSI.04)

Este PR manipula dados sensíveis ou pessoais (LGPD)?

  • Sim
  • Não

Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?

  • Sim
  • Não

Este PR introduz, atualiza ou remove dependências de terceiros?

  • Sim
  • Não

Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?

  • Sim
  • Não aplicável a este PR (justifique): Trivy/SonarQube não estão configurados neste repositório (packtools é biblioteca Python, não serviço containerizado). Os gates automáticos reais deste repositório (Snyk e GitGuardian) rodam via CI neste PR.

Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?

  • Sim
  • Não

Este PR expõe novos endpoints, telas ou serviços?

  • Sim
  • Não

Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?

  • Não, nenhum segredo foi commitado
  • Sim

Corrige parte da issue scieloorg#1302: artigos de publicacao continua (com
elocation-id, sem fpage/lpage) mostravam ": -" no rodape e no CITE AS
em vez do identificador eletronico. Adiciona location_label em
extract_footer_data, calculado a partir de fpage/lpage quando
presentes, ou de elocation-id como alternativa.

Tambem remove o " | " inicial do rodape do Material Suplementar, que
aparecia mesmo essa secao nunca recebendo numero de pagina (paginacao
independente do corpo do artigo).

Nao mexe na numeracao de pagina em si (start_page_number, mecanismo
diferente entre a 1a pagina e as demais); fica para PR separado.
…fpage

Corrige a parte de numeracao de pagina da issue scieloorg#1302: sem fpage
(publicacao continua), a 1a folha ficava sem numero e a 2a mostrava
"1" (start_page_number caia para 0). Muda o fallback para 1, para que
a numeracao siga a ordem natural das folhas (1, 2, 3...) desde a
primeira.

Unifica o mecanismo de numeracao entre a 1a pagina e as demais:
docx_page_vol_issue_year_pipe agora usa o mesmo campo PAGE dinamico
que docx_second_footer_pipe, em vez de escrever footer_data['fpage']
como texto estatico (que ficava vazio sem fpage).

Atualiza o teste de renderizacao real que fixava o comportamento
antigo (test_rendered_page_layout.py, dos PRs scieloorg#1295/scieloorg#1296): aquele
teste tratava "pagina 2 mostra 1" como correto, um efeito colateral
da correcao de layout daqueles PRs, nao uma decisao deliberada sobre
numeracao. A observacao da scieloorg#1302 prevalece.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PDF Generator] Inconsistências na numeração de páginas e dados de localização no rodapé do PDF`

2 participants