Instalação do pacote Laravel para NextPDF
Visão geral
Seção intitulada “Visão geral”Instale o nextpdf/laravel com o Composer. A descoberta automática do Laravel registra o service provider para você. Publique o arquivo de configuração quando precisar editá-lo. O pacote também detecta automaticamente as extensões opcionais do NextPDF.
Instalação
Seção intitulada “Instalação”composer require nextpdf/laravelO pacote declara as seguintes restrições no próprio composer.json:
| Requisito | Restrição |
|---|---|
| PHP | >=8.4 <9.0 |
laravel/framework | ^12.0 |
nextpdf/core | ^3.0 || ^5.2 |
psr/http-client | ^1.0 |
O pacote usa autoload com um único mapeamento PHP Standard Recommendation 4 (PSR-4). O prefixo NextPDF\Laravel\ é resolvido para src/Laravel/. Isso segue a regra da PSR-4 para prefixo e diretório base (PSR-4 §3).
Visão conceitual
Seção intitulada “Visão conceitual”Depois de executar composer require, a descoberta automática de pacotes do Laravel lê o bloco extra.laravel no composer.json deste pacote. Em seguida, registra o provider e o alias da facade para você, de modo que você não precisa editar config/app.php manualmente. O bloco fica assim:
{ "extra": { "laravel": { "providers": [ "NextPDF\\Laravel\\NextPdfServiceProvider" ], "aliases": { "Pdf": "NextPDF\\Laravel\\Facades\\Pdf" } } }}A documentação de pacotes do Laravel descreve esse comportamento. O array extra.laravel.providers registra service providers automaticamente, e o array extra.laravel.aliases registra aliases de facade automaticamente (guia de desenvolvimento de pacotes do Laravel 12,
https://laravel.com/docs/12.x/packages, acessado em 2026-05-18).
Exemplo de código — Início rápido
Seção intitulada “Exemplo de código — Início rápido”Use a tag nextpdf-config para publicar o arquivo de configuração. Esse nome de tag é definido em NextPdfServiceProvider::boot().
php artisan vendor:publish --tag=nextpdf-configIsso grava o config/nextpdf.php na aplicação. O provider também mescla a configuração padrão do pacote sob a chave nextpdf durante o register(), de modo que o pacote funciona antes da publicação. Ao publicar, o arquivo fica editável na aplicação.
Confirme que o Laravel descobriu o provider:
php artisan package:discover --ansiExemplo de código — Produção
Seção intitulada “Exemplo de código — Produção”Fixe a restrição para implantações reproduzíveis. Desabilite explicitamente a descoberta somente se você registrar o provider por conta própria:
{ "extra": { "laravel": { "dont-discover": [ "nextpdf/laravel" ] } }}Quando a descoberta estiver desabilitada, registre o provider por conta própria em bootstrap/providers.php:
<?php
declare(strict_types=1);
return [ App\Providers\AppServiceProvider::class, NextPDF\Laravel\NextPdfServiceProvider::class,];Extensões opcionais
Seção intitulada “Extensões opcionais”O pacote lista pacotes complementares opcionais em suggest, no próprio composer.json. Ele detecta em tempo de execução os complementares instalados:
| Pacote | Efeito quando instalado | Ponto de detecção |
|---|---|---|
nextpdf/artisan | Aplica a configuração do renderizador Chrome DevTools Protocol (CDP) Hypertext Markup Language (HTML) ao binding do documento quando uma classe factory do Chrome está presente | NextPdfServiceProvider::register() verifica se a classe browser-factory do Chrome está presente |
nextpdf/premium | As chaves de container existentes resolvem as concretizações dos contratos de assinatura PDF Advanced Electronic Signatures (PAdES B-B), arquivamento PDF/A e nota fiscal eletrônica | resolvidas de forma lazy quando o container as resolve pela primeira vez |
Instale uma extensão da mesma maneira:
composer require nextpdf/artisanNenhuma configuração adicional é necessária. O provider detecta a extensão no próximo ciclo de registro.
Casos de borda e pegadinhas
Seção intitulada “Casos de borda e pegadinhas”- A publicação é idempotente. Ela não sobrescreve um
config/nextpdf.phpexistente. Adicione--forcequando quiser sobrescrevê-lo intencionalmente. - Como o provider é deferred, um
php artisan package:discoverbem-sucedido é suficiente para confirmar o pacote. Os próprios bindings só aparecem na primeira resolução. - O pacote oferece suporte ao
nextpdf/corenas duas linhas major^3.0e^5.2. Faça a restrição do core corresponder à linha fixada pela aplicação. A superfície do adaptador Laravel é a mesma nas duas. - O badge do README e o
composer.jsonconcordam quanto à licença Apache-2.0. O pacote foi relicenciado a partir da LGPL-3.0-or-later. As versões marcadas antes da migração permanecem sob a licença anterior (consulteCHANGELOG.md).
Desempenho
Seção intitulada “Desempenho”A resolução do nextpdf/core é o principal fator no custo do composer require. O registro do provider não adiciona custo de boot mensurável, porque todos os bindings são closures deferred. Consulte /integrations/laravel/boot-and-discovery/ para ver o custo de construção na primeira resolução.
Notas de segurança
Seção intitulada “Notas de segurança”Instale a partir do pacote Packagist canônico nextpdf/laravel. O pacote inclui cabeçalhos REUSE Software Package Data Exchange (SPDX) e um arquivo NOTICE Apache-2.0. Fixe a restrição no composer.json e faça commit do composer.lock para que os workers implantados resolvam a árvore de dependências já verificada.
Conformidade
Seção intitulada “Conformidade”| Declaração | Fonte | Cláusula | reference_id |
|---|---|---|---|
| O prefixo PSR-4 mapeia para o diretório base | PSR-4 Autoloader | §3 |
Os nomes das chaves de descoberta automática do Laravel foram verificados em relação à documentação oficial de desenvolvimento de pacotes do Laravel 12 (https://laravel.com/docs/12.x/packages, acessada em 2026-05-18).
Contexto comercial
Seção intitulada “Contexto comercial”O nextpdf/premium adiciona as concretizações de assinatura, PDF/A e nota fiscal eletrônica como recurso Enterprise opcional. Você pode adotá-lo sem alterar o pacote Core documentado aqui. Consulte https://nextpdf.dev/get-license/?intent=laravel-signing.
Veja também
Seção intitulada “Veja também”- /integrations/laravel/overview/ — arquitetura do pacote e tabela de bindings
- /integrations/laravel/quickstart/ — primeiro controller executável
- /integrations/laravel/configuration/ — cada chave de configuração explicada
- /integrations/laravel/boot-and-discovery/ — detalhes internos da descoberta e ciclos de vida dos bindings