Skip to content

[PDF Generator] Adicionar botão Crossmark aos PDFs dos artigos #1114

Description

@robertatakenaka

Contexto

O Crossmark é um serviço da Crossref que permite aos leitores verificar se o conteúdo que estão lendo é a versão mais atual ou se houve correções, retratações ou atualizações. Para isso, um botão/logo do Crossmark deve ser inserido nos PDFs com um link específico por artigo.

Referência: https://www.crossref.org/documentation/crossmark/

Objetivo

Criar uma função que insira o logo do Crossmark em PDFs de artigos, com link para a página Crossmark do respectivo DOI.

Requisitos

Inserção do logo

  • Inserir o logo do Crossmark (formato SVG ou PNG) em posição configurável no PDF (padrão: canto superior direito da primeira página).
  • O logo deve conter um hyperlink no formato:
    https://crossmark.crossref.org/dialog?doi={DOI}&domain=pdf&date_stamp={DATA}
    
    • {DOI}: DOI do artigo (ex: 10.1590/s0100-12345)
    • {DATA}: data da última versão significativa do PDF, formato YYYY-MM-DD

Metadados XMP (opcional, mas desejável)

  • Adicionar/atualizar metadados XMP no PDF com os campos:
    • dc:identifierdoi:{DOI}
    • prism:doi{DOI}
    • prism:urlhttps://doi.org/{DOI}
    • crossmark:MajorVersionDate{DATA}
    • crossmark:DOI{DOI}
    • pdfx:doi{DOI}
    • pdfx:CrossmarkMajorVersionDate{DATA}

Os campos devem existir tanto no namespace crossmark quanto no pdfx (requisito para indexadores que leem o PDF dictionary).

Interface

  • Sugestão de função principal com assinatura:
    def add_crossmark(
        input_pdf: str,
        output_pdf: str,
        doi: str,
        date_stamp: str,
        logo_path: str = "CROSSMARK_Color_horizontal.png",
        position: str = "top-right",
        width: int = 150,
    ) -> None:
  • Suportar uso via CLI:
    python add_crossmark.py --input artigo.pdf --output artigo_cm.pdf --doi 10.1590/s0100-12345 --date-stamp 2026-01-15
  • Suportar processamento em lote a partir de um CSV (doi,input_pdf,date_stamp).

Restrições

  • Não alterar o conteúdo existente do PDF (texto, imagens, paginação).
  • O logo deve ser clicável (hyperlink funcional em leitores como Adobe Reader, Evince, Preview).
  • Usar bibliotecas open source (sugestões: pikepdf, pypdf, reportlab).

Critérios de aceite

  • Logo visível na primeira página do PDF de saída
  • Link do logo abre a URL correta do Crossmark com DOI e date_stamp
  • Metadados XMP presentes e válidos no PDF de saída
  • Modo CLI funcionando com --input, --output, --doi, --date-stamp
  • Modo lote funcionando com --csv
  • Testes com pelo menos 3 PDFs de tamanhos/layouts diferentes
  • Nenhuma alteração no conteúdo original do PDF
  • Ser usado na geração do PDF
  • Ser usado em qualquer PDF já existente

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions