İçeriğe geç

İlk PDF belgeniz

Bu öğreticide iki PDF dosyası oluşturacaksınız. İlk olarak metni doğrudan akıcı çekirdek Application Programming Interface (API) ile yazarsınız. Ardından Cascading Style Sheets (CSS) içeren bir Hypertext Markup Language (HTML) parçasını bir sayfaya işlersiniz. Sonunda elinizde, gerçek bir belgeye uyarlayabileceğiniz çalışan bir betik ve çerçeve ile sunucu varyantlarına yönelik bağlantılar olur.

Her iki yaklaşım da aynı motoru kullanır; bu nedenle burada öğrendiklerinizi her dağıtıma taşıyabilirsiniz.

Aşağıdaki şema, iki içerik oluşturma yaklaşımını ve bunları yeniden kullanan üç dağıtım yüzeyini gösterir.

From your code to a PDF fileTwo authoring approaches feed one engine, which produces a PDF that you can save, stream, or return from a framework or server.

Authoring

Fluent API

setFont() + cell()

HTML fragment

writeHtml()

Document

Core engine

(pure PHP)

PDF 2.0 bytes

save() to disk

output() / getPdfData()

stream or in memory

Framework response

or server REST reply

From your code to a PDF file

Çekirdek motorun kurulu olmasına ve bir PHP betiği çalıştırabileceğiniz bir ortama ihtiyacınız vardır.

  1. PHP 8.4’ün etkin çalışma zamanı olduğunu doğrulayın:

    Terminal window
    php --version
  2. Henüz yoksa çekirdek motoru projenize kurun:

    Terminal window
    composer require nextpdf/core
  3. Proje kök dizininde first-pdf.php adında bir çalışma dosyası oluşturun.

Akıcı API ile başlayın. Document::createStandalone() hemen kullanabileceğiniz bir belge döndürür. Bir sayfa ekleyin, bir yazı tipi ayarlayın, hücreler yazın ve ardından kaydedin. Her içerik oluşturma yöntemi belgeyi döndürür; böylece çağrı zinciri yukarıdan aşağıya okunur.

  1. Bu kodu first-pdf.php dosyasına yerleştirin. Betik, katı tür bildirimini yapar, otomatik yükleyiciyi yükler ve tek sayfa oluşturur:

    <?php
    declare(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";
  2. Betiği çalıştırın:

    Terminal window
    php first-pdf.php
  3. Çıktıyı doğrulayın. Standart çıktıda aşağıdaki satırı, betiğin yanında da first-pdf.pdf adında yeni bir dosyayı görmeniz gerekir:

    Wrote first-pdf.pdf

Artık geçerli bir PDF 2.0 dosyası oluşturdunuz. Başlığı ve altındaki satırı görmek için dosyayı herhangi bir görüntüleyicide açın.

Hücre yazmak size ayrıntılı denetim sağlar. Ancak çoğu belgeyi HTML ve CSS olarak ifade etmek daha hızlıdır. Çekirdek motor, saf PHP tabanlı bir HTML işlem hattı içerir. writeHtml() yöntemi, bir parçayı geçerli sayfaya işler. Tarayıcı veya harici hizmet kullanmaz.

  1. Bir HTML parçası işleyen, html-pdf.php adında ikinci bir dosya oluşturun:

    <?php
    declare(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";
  2. Dosyayı çalıştırın:

    Terminal window
    php html-pdf.php
  3. Çıktı satırını ve yeni dosyayı doğrulayın:

    Wrote html-pdf.pdf

Motor, HTML ve CSS’nin desteklenen bir alt kümesini işler. Bir özelliğe güvenmeden önce CSS destek matrisini kontrol edin. Yerleşiminiz flexbox, grid veya web yazı tipleri gibi tam tarayıcı doğruluğu gerektirdiğinde, Artisan işleyicisini kurun ve bunun yerine writeHtmlChrome() çağırın. Bu yöntem metni seçilebilir tutar.

Uygulamanız zaten bir çerçevede veya sunucu üzerinde çalışıyor olabilir. Aynı iki çağrı bu ortama da taşınır. Motor aynı kalır; yalnızca bağlantı kurulumu değişir.

Yeni bir belgeyi her çağrı için Pdf facade’i çözümler. PdfResponse bir belgeyi indirme yanıtına dönüştürür:

<?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');
}
}

Bkz. Laravel hızlı başlangıç.

Artık bir PDF’yi üç farklı şekilde oluşturdunuz. Her bir yaklaşımdan devam etmek için bu sayfaları kullanın.