Seu primeiro PDF
Visão geral
Seção intitulada “Visão geral”Neste tutorial, você gera dois arquivos PDF. Primeiro, você escreve texto diretamente com a API (Application Programming Interface) fluente do core. Em seguida, você renderiza um fragmento de Hypertext Markup Language (HTML) com Cascading Style Sheets (CSS) em uma página. No final, você terá um script funcional que pode adaptar para um documento real, além de links para as variantes de framework e servidor.
As duas abordagens usam o mesmo engine, então o que você aprende aqui vale para todas as distribuições.
O diagrama abaixo mostra as duas abordagens de criação e as três superfícies de implantação que as reutilizam.
Antes de começar
Seção intitulada “Antes de começar”Você precisa ter o engine do core instalado e um lugar para executar um script PHP.
-
Confirme que o PHP 8.4 é o runtime ativo:
Terminal window php --version -
Instale o engine do core no projeto, caso ainda não esteja presente:
Terminal window composer require nextpdf/core -
Crie um arquivo de trabalho chamado
first-pdf.phpna raiz do projeto.
Gere um PDF a partir do PHP
Seção intitulada “Gere um PDF a partir do PHP”Comece pela API fluente. Document::createStandalone() retorna um documento que você pode usar imediatamente. Adicione uma página, defina uma fonte, escreva células e salve. Cada método de criação retorna o documento; por isso, as chamadas são lidas de cima para baixo.
-
Coloque este código em
first-pdf.php. O script declara strict types, carrega o autoloader e monta uma página:<?phpdeclare(strict_types=1);require_once __DIR__ . '/vendor/autoload.php';use NextPDF\Core\Document;$document = Document::createStandalone();$document->setTitle('My first NextPDF document');$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->setFont('helvetica', '', 12);$document->cell(0, 10, 'This is the first PDF I generated with PHP.', newLine: true);$document->save(__DIR__ . '/first-pdf.pdf');echo "Wrote first-pdf.pdf\n"; -
Execute o script:
Terminal window php first-pdf.php -
Verifique a saída. Você deverá ver esta linha na saída padrão e um novo arquivo chamado
first-pdf.pdfao lado do script:Wrote first-pdf.pdf
Você acabou de gerar um arquivo PDF 2.0 válido. Abra-o em qualquer visualizador para ver o título e a linha logo abaixo.
Renderize HTML para PDF
Seção intitulada “Renderize HTML para PDF”Escrever células dá a você controle preciso. A maioria dos documentos, porém, é mais rápida de expressar como HTML e CSS. O engine do core inclui um pipeline de HTML em PHP puro. O método writeHtml() renderiza um fragmento na página atual. Ele não depende de um navegador nem de um serviço externo.
-
Crie um segundo arquivo,
html-pdf.php, que renderiza um fragmento de HTML:<?phpdeclare(strict_types=1);require_once __DIR__ . '/vendor/autoload.php';use NextPDF\Core\Document;$document = Document::createStandalone();$document->setTitle('HTML to PDF');$document->addPage();$html = <<<'HTML'<h1 style="color: #1E3A8A;">HTML rendering in NextPDF</h1><p>NextPDF renders <strong>HTML content</strong> directly into PDF pages.</p><ul><li>Headings, paragraphs, and lists</li><li>Inline <strong>bold</strong> and <em>italic</em></li><li>Inline styles such as color and font-size</li></ul>HTML;$document->writeHtml($html);$document->save(__DIR__ . '/html-pdf.pdf');echo "Wrote html-pdf.pdf\n"; -
Execute o arquivo:
Terminal window php html-pdf.php -
Verifique a linha de saída e o novo arquivo:
Wrote html-pdf.pdf
O engine renderiza um subconjunto compatível de HTML e CSS. Antes de depender de uma propriedade, consulte a matriz de suporte a CSS. Quando um layout precisa de fidelidade total do navegador, como flexbox, grid ou web fonts, instale o renderizador Artisan e chame writeHtmlChrome() em vez disso. Esse método mantém o texto selecionável.
A partir de um controller de framework
Seção intitulada “A partir de um controller de framework”Sua aplicação talvez já rode em um framework ou por meio do servidor. As mesmas duas chamadas migram para esse ambiente. O engine permanece o mesmo. Apenas a integração muda.
A facade Pdf resolve um novo documento a cada chamada. PdfResponse transforma um documento em uma resposta de download:
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use Illuminate\Http\Response;use NextPDF\Contracts\PdfDocumentInterface;use NextPDF\Laravel\Http\PdfResponse;
final class ReportController extends Controller{ public function download(): Response { $document = app(PdfDocumentInterface::class); $document->addPage(); $document->cell(0, 10, 'Monthly report', newLine: true);
return PdfResponse::download($document, 'report.pdf'); }}Consulte o guia rápido do Laravel.
O bundle expõe um serviço PdfFactory. Use um type-hint de NextPDF\Symfony\Service\PdfFactory em um controller, monte um documento da mesma forma e retorne-o como uma resposta HTTP. Consulte o guia rápido do Symfony.
Com o NextPDF Server em execução, envie, via POST, um array ordenado de operações, e o servidor retorna os bytes do PDF:
curl -sS -X POST http://localhost:8080/api/v1/render \ -H 'Authorization: Bearer <api-key>' \ -H 'Content-Type: application/json' \ -d '{ "page_size": "A4", "orientation": "portrait", "operations": [ { "type": "add_text", "text": "Hello from NextPDF Connect" } ] }' \ --output hello.pdfEm uma resposta 200, o corpo contém o PDF. Consulte o guia rápido do Connect.
Próximos passos
Seção intitulada “Próximos passos”Você acabou de gerar um PDF de três maneiras. Use estas páginas para aprofundar cada uma delas.