# Catálogo PDF PrestaShop: guia completo

> Apresentação O DFPDFCatalog publica os seus catálogos em PDF diretamente na sua loja PrestaShop 8 ou 9. O módulo funciona de duas formas complementares. Cria primeiro as suas próprias páginas…

- Página: <https://www.datafirefly.com/pt/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/>
- Idioma: pt
- Atualizado em: 2026-09-02
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [en](https://www.datafirefly.com/en/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [es](https://www.datafirefly.com/es/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [de](https://www.datafirefly.com/de/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [it](https://www.datafirefly.com/it/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [pl](https://www.datafirefly.com/pl/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md), [nl](https://www.datafirefly.com/nl/documentation/catalogue-pdf-prestashop-vitrine-visionneuse-seo/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

## Apresentação

O DFPDFCatalog publica os seus catálogos em PDF diretamente na sua loja PrestaShop 8 ou 9. O módulo funciona de duas formas complementares. Cria primeiro as suas próprias páginas no front-office: uma página de montra que lista todos os seus catálogos em banners clicáveis (`/catalogues-pdf`) e uma página de visualização por catálogo (`/catalogue-pdf/{id}-{slug}`). Permite depois **integrar qualquer catálogo em qualquer página** da sua loja, através de um shortcode, de um widget Smarty ou de uma iframe.

Nos dois casos, o PDF é apresentado num leitor integrado de nível profissional: modo de página dupla ao estilo revista, miniaturas clicáveis, ecrã inteiro, zoom, ligações clicáveis e texto selecionável.

## Instalação

1. Descarregue o ficheiro ZIP do módulo a partir da sua conta DataFirefly.
2. No seu back-office PrestaShop, vá a **Módulos → Gestor de módulos → Instalar um módulo**.
3. Selecione o ficheiro `dfpdfcatalog.zip` e valide.
4. O módulo instala-se automaticamente: as tabelas da base de dados, o separador de administração e as rotas do front-office são criados sem qualquer configuração manual.

Depois da instalação, aparece um novo separador **Catálogos PDF** no menu **Catálogo** do back-office.

O mesmo ficheiro instala-se no PrestaShop 8.0 a 8.2 e no PrestaShop 9.x. Não há versões distintas a descarregar consoante a sua geração.

### Atualização a partir de uma versão anterior

1. Carregue a nova versão em **Módulos → Gestor de módulos → Instalar um módulo** (ou substitua a pasta `/modules/dfpdfcatalog/` por FTP).
2. Limpe a cache do PrestaShop: **Parâmetros avançados → Desempenho → Limpar a cache**.

A atualização preserva os seus catálogos existentes: as tabelas da base de dados e os ficheiros carregados (banners e PDF) não são tocados. Ao passar para a 1.2.0, o módulo regista automaticamente os hooks necessários à integração nas páginas.

## Acrescentar um catálogo

1. Vá a **Catálogo → Catálogos PDF** e clique em **Adicionar um catálogo**.
2. Preencha o **título** (traduzível por idioma): serve também para gerar o slug do URL e o meta title da página.
3. Preencha a **descrição** (traduzível): é apresentada na página de visualização e usada como meta description.
4. Carregue a **imagem do banner**: aparece na grelha da página de montra e serve de cartaz de abertura quando o catálogo é integrado numa página.
5. Carregue o **ficheiro PDF**.
6. Defina a **posição** (ordem de apresentação na grelha) e o estado **ativo/inativo**.
7. Em multiloja, assinale as lojas onde o catálogo deve aparecer.
8. Grave: o catálogo fica imediatamente visível em `/catalogues-pdf`.

Depois de gravado o catálogo, volte a abri-lo: o formulário apresenta um bloco **Códigos de integração** com os quatro códigos prontos a copiar para o apresentar noutro ponto da sua loja. Clique num campo para o selecionar.

## Integrar um catálogo numa página

A página de montra não serve todos os usos. Para uma landing page de negócio, uma página de concursos públicos ou uma categoria que deva apresentar o seu próprio catálogo, pode colocar o visualizador exatamente onde quiser.

### Método recomendado: o shortcode

Cole este marcador no conteúdo da sua página, no ponto exato onde o catálogo deve aparecer:

```
[dfpdfcatalog id="3"]
```

Substitua `3` pelo identificador do catálogo, visível na coluna ID da lista **Catálogo → Catálogos PDF**. O shortcode funciona:

- no conteúdo das **páginas CMS**;
- nas **descrições de categoria**;
- nas **descrições de produto**.

Nestes três contextos, o módulo substitui o marcador do lado do servidor, antes do envio da página. Em todos os outros contextos (blocos do tema, módulos de terceiros, page builders), um recurso em JavaScript deteta o marcador na página e monta aí o visualizador. Não tem nada a configurar: o comportamento é idêntico para o visitante.

### Opções do shortcode

- `id` — identificador do catálogo. Obrigatório.
- `mode` — `click` (predefinido) apresenta primeiro um cartaz com o banner do catálogo e só carrega o visualizador ao clique. `inline` apresenta diretamente o visualizador, carregado à aproximação da área visível.
- `height` — altura do visualizador em píxeis. Por predefinição, o visualizador ocupa 80 % da altura do ecrã.
- `title` — texto apresentado no cartaz de abertura. Por predefinição, o título do catálogo.

```
[dfpdfcatalog id="3" mode="inline" height="800"]
```

### Widget Smarty num template do tema

Para integrar um catálogo diretamente num ficheiro `.tpl` do seu tema:

```
{widget name='dfpdfcatalog' id_catalog=3 mode='inline'}
```

Esta sintaxe só funciona nos templates. Como o conteúdo das páginas CMS não é interpretado pelo Smarty, use nesse caso o shortcode.

### Iframe, incluindo fora do PrestaShop

O módulo expõe uma página de integração sem cabeçalho nem rodapé da loja, para colocar numa iframe:

```
<iframe src="/catalogue-pdf-embed/3" width="100%" height="800" style="border:0;" loading="lazy"></iframe>
```

É o método a escolher para apresentar um catálogo num site externo. Estas páginas de integração estão em `noindex` e nunca concorrem, por isso, com as suas páginas reais nos resultados de pesquisa. Note que a altura de uma iframe é fixa: na sua própria loja, prefira o shortcode, que se adapta ao conteúdo.

### Vários catálogos na mesma página

Pode colocar tantos catálogos quantos forem necessários na mesma página. Cada integração cria um visualizador independente, com os seus próprios comandos de navegação, o seu zoom e o seu modo de apresentação. Os atalhos de teclado atuam apenas sobre o visualizador que está sob o rato, não sobre todos ao mesmo tempo.

O carregamento está otimizado para este cenário:

- no modo `click`, nenhum PDF é descarregado enquanto o visitante não abrir um catálogo;
- no modo `inline`, o carregamento arranca à aproximação da área visível;
- a biblioteca de renderização e a folha de estilo são descarregadas uma única vez para toda a página e apenas se existir mesmo um catálogo nela.

Uma página com oito catálogos em modo `click` carrega, portanto, apenas oito imagens de banner de início.

## Páginas do front-office

### Página de montra

A página `/catalogues-pdf` apresenta todos os catálogos ativos da loja atual numa grelha de banners, ordenados por posição. Cada banner remete para o visualizador do catálogo. A página gera o seu próprio meta title e a sua meta description e integra-se no trilho de navegação nativo do PrestaShop.

### Página de visualização

Cada catálogo tem a sua própria página `/catalogue-pdf/{id}-{slug}`. O PDF é aí apresentado no visualizador integrado, com um botão de regresso à montra e um botão de descarga direta. O PDF é servido através de um controlador PHP em apresentação inline, o que força a visualização no navegador. Os pedidos HTTP Range são suportados, o que permite aos catálogos grandes carregarem progressivamente em vez de de uma só vez.

## Utilizar o visualizador

O visualizador assenta no PDF.js (Mozilla) e oferece os seguintes comandos na sua barra de ferramentas:

- **Miniaturas** — mostra ou oculta a barra lateral das miniaturas das páginas. As miniaturas são clicáveis e vão sendo geradas à medida do deslocamento (renderização preguiçosa), mesmo em catálogos muito longos. A página ou páginas ativas ficam realçadas.
- **Página dupla** — alterna entre a apresentação página a página e o modo de página dupla ao estilo revista: capa isolada e depois pares 2-3, 4-5, etc. Este modo está ativado por predefinição em ecrãs com pelo menos 1024 px de largura.
- **Navegação** — botões anterior/seguinte e indicador de página (por exemplo, «Página 4-5 / 24» no modo de página dupla). As setas esquerda/direita do teclado também funcionam.
- **Zoom** — aproximar e afastar em incrementos de 25 % e botão de ajuste automático à largura.
- **Ecrã inteiro** — coloca o visualizador em ecrã inteiro através da API nativa do navegador. No Safari do iOS é usado automaticamente um modo de ecrã inteiro simulado. A tecla Esc permite sair.

As hiperligações contidas no PDF mantêm-se clicáveis: as ligações externas abrem num novo separador e as ligações internas (índice, remissões) navegam diretamente dentro do visualizador. Se o PDF tiver uma camada de texto, o texto fica selecionável e copiável e a pesquisa Ctrl+F do navegador funciona sobre o conteúdo.

A renderização usa a densidade de píxeis do ecrã (HiDPI): as páginas ficam nítidas em ecrãs Retina e 4K.

## SEO e URL

O módulo declara as suas rotas através do hook moduleRoutes do PrestaShop:

- `/catalogues-pdf` — página de montra, com meta title e meta description próprios.
- `/catalogue-pdf/{id}-{slug}` — um URL limpo por catálogo, em que o slug é gerado automaticamente a partir do título. O meta title retoma o título do catálogo e a meta description retoma a sua descrição.
- `/catalogue-pdf-embed/{id}` — página de integração destinada às iframes, em `noindex`.

Não é preciso criar qualquer página CMS: as rotas são registadas automaticamente na instalação.

**Numa loja portuguesa** — As bases de URL das rotas são as do módulo e ficam em francês (`/catalogues-pdf`, `/catalogue-pdf/...`). Só a parte do slug segue o título traduzido. Se quiser bases portuguesas, terá de as alterar nas rotas do módulo.

## Multilingue e multiloja

Os títulos e as descrições traduzem-se campo a campo no formulário de edição (seletor de idioma padrão do PrestaShop). Cada idioma gera o seu próprio slug e os seus próprios metadados. Em multiloja, a associação entre catálogo e loja gere-se por caixas de seleção: cada loja apresenta apenas os catálogos que lhe estão atribuídos. Esta filtragem aplica-se igualmente ao acesso direto por URL e às integrações nas páginas: um catálogo não atribuído à loja atual nunca é aí servido.

## Resolução de problemas

### O shortcode aparece como texto simples na página

- Verifique se o identificador corresponde mesmo a um catálogo existente, ativo e atribuído à loja atual. Um identificador inexistente deixa o marcador intacto em vez de apresentar um visualizador vazio.
- Verifique se o catálogo tem mesmo um ficheiro PDF.
- Limpe a cache do PrestaShop e recarregue a página em navegação privada.
- Se acabou de atualizar o módulo, desinstale-o e reinstale-o para forçar o registo dos hooks de integração.

### O PDF não aparece

- Verifique se o ficheiro PDF foi mesmo carregado (volte a editar o catálogo no back-office).
- Limpe a cache do PrestaShop e recarregue a página em navegação privada.
- Se aparecer uma mensagem de erro no visualizador, é proposta em alternativa uma ligação de descarga direta do PDF.

### O texto não é selecionável ou o Ctrl+F não encontra nada

A seleção de texto exige que o PDF contenha uma camada de texto. Os PDF digitalizados ou exportados em bitmap puro não a têm: nesse caso, só a apresentação gráfica é possível. Passe o documento por uma ferramenta de OCR se precisar do texto.

### As ligações do PDF não são clicáveis

As ligações têm de ser verdadeiras anotações de ligação no PDF (criadas pela ferramenta de exportação: InDesign, Word, LibreOffice...). Um texto que se pareça com um URL mas sem anotação não será clicável.

### As páginas aparecem esticadas ou desfocadas

Este problema das versões 1.0.0 está corrigido desde a versão 1.0.1 (renderização HiDPI e neutralização dos resets CSS dos temas). Atualize o módulo e limpe a cache do PrestaShop.

## Histórico das versões

- **1.2.0** (2026-08-10) — Integração de um catálogo em qualquer página através de shortcode, widget Smarty ou iframe; substituição do lado do servidor nas páginas CMS, categorias e fichas de produto, com recurso a JavaScript; visualizador reescrito em instâncias independentes (vários catálogos por página); carregamento preguiçoso; códigos de integração prontos a copiar no back-office; suporte dos pedidos HTTP Range.
- **1.1.0** (2026-08-10) — Compatibilidade com o PrestaShop 9; correção da associação de loja no formulário de edição; filtragem por loja aplicada ao acesso direto por URL; verificação do conteúdo real dos ficheiros enviados.
- **1.0.4** (2026-05-11) — Modo de ecrã inteiro (API nativa + alternativa para o Safari do iOS); correção do ajuste à largura da capa no modo de página dupla; realce dos botões ativos.
- **1.0.3** (2026-05-11) — Modo de página dupla ao estilo revista (capa isolada e depois 2-3, 4-5...); ativação automática em ecrãs largos; cancelamento correto das renderizações em navegações rápidas.
- **1.0.2** (2026-05-11) — Barra lateral de miniaturas clicáveis com renderização preguiçosa; camada de texto (seleção + Ctrl+F); botão de apresentação das miniaturas.
- **1.0.1** (2026-05-11) — Renderização HiDPI nítida em Retina/4K; ligações do PDF clicáveis (camada de anotações); correção do esticamento vertical das páginas.
- **1.0.0** (2026-05-08) — Versão inicial: página de montra, visualizador integrado, URL otimizados para SEO, multilingue e multiloja.
