İçeriğe geç

NextPDF Artisan'ın kurulumu

Composer ile nextpdf/artisan paketini yükleyin. Composer, chrome-php/chrome çalışma zamanı bağımlılığını da yükler. Ardından PHP işlemine bir Chrome veya Chromium ikili dosyası sağlayın.

Terminal window
composer require nextpdf/artisan

Paket, composer.json dosyasında şu kısıtlamaları bildirir:

GereksinimKısıtlamaNotlar
php>=8.4 <9.0Yalnızca PHP 8.4
nextpdf/core^3.0 || ^5.2Açık kaynak NextPDF motoru
chrome-php/chrome^1.15Chrome DevTools Protocol (CDP) istemci kitaplığı; geçişli bağımlılık olarak yüklenir
psr/log^3.0İsteğe bağlı günlükleyici enjeksiyon noktası

Composer, chrome-php/chrome paketini otomatik olarak çözümler. Composer, Chrome ikili dosyasını asla yüklemez; bu ikili dosya bir sistem bağımlılığıdır.

Köprü, çalıştırılabilir bir Chrome veya Chromium ikili dosyası gerektirir. Varsayılan olarak chrome-php/chrome, yaygın dosya yollarında bir ikili dosya arar. Açıkça belirlenmiş bir yolu sabitlemek için bu yolu yapılandırma üzerinden verin. /integrations/artisan/configuration/ sayfasına ve özel /integrations/artisan/chrome-renderer-setup/ sayfasına bakın.

Terminal window
# Debian / Ubuntu
apt-get install -y chromium
# RHEL / Fedora
dnf install -y chromium
# macOS (Homebrew)
brew install --cask chromium

İkili dosyayı uygulamaya bağlamadan önce, başsız (headless) modda çalıştığını doğrulayın:

Terminal window
chromium --headless --dump-dom about:blank

Başarılı bir çalıştırma, boş bir Document Object Model (DOM) belgesi yazdırır ve 0 çıkış koduyla sonlanır. Sıfır olmayan bir çıkış kodu, ikili dosyanın veya paylaşılan kitaplıklarının eksik olduğu anlamına gelir. Devam etmeden önce bunu düzeltin; köprü, aynı hatayı işleme sırasında bir ChromeRenderException olarak bildirir.

<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
use NextPDF\Artisan\ChromeHtmlRenderer;
require __DIR__ . '/vendor/autoload.php';
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig());
echo $renderer->getHtmlSecurityPolicy()->getName(), PHP_EOL;
// Prints: default

Bu örnek, işleyiciyi oluşturur ve Chrome’u başlatmadan varsayılan Hypertext Markup Language (HTML) güvenlik ilkesini okur. Otomatik yüklemenin ve nextpdf/core sözleşme bağlamalarının çözümlendiğini doğrular. (Davranış şu test tarafından doğrulanır: tests/Unit/Artisan/ChromeHtmlRendererTest.php::usesDefaultHtmlSecurityPolicyWhenNoneInjected.)

Docker’da Chrome korumalı alanı (sandbox), ek çekirdek yetenekleri olmadan çoğu zaman işlem kimliği (PID) 1 / root olarak başlatılamaz. Paket, bu durum için bir noSandbox anahtarı sunar. Chrome korumalı alanını devre dışı bırakmanın gerçek bir güvenlik maliyeti vardır. /integrations/artisan/security-and-operations/ sayfası ve /integrations/artisan/chrome-renderer-setup/ sayfası bu güvenlik maliyetini ve sınırlarını belgeler. İlgili bölümü okumadan anahtarı ayarlamayın.

  • chrome-php/chrome var ancak ikili dosya yok. Composer başarılı olur; ilk işleme denemesi bir ChromeRenderException fırlatır ve başlatma hatasını sarmalar. Kitaplık denetimi, ikili dosya denetiminden ayrıdır.
  • chrome-php/chrome yok. Kitaplık otomatik yükleyiciden kaldırılırsa, BrowserPool::getBrowser(), düzeltme için gereken tam komutla birlikte bir ChromeNotAvailableException fırlatır. (Şu test tarafından doğrulanır: tests/Unit/Artisan/BrowserPoolTest.php::getBrowserThrowsWhenChromePhpPackageIsUnavailable.)
  • Sürüm kısıtlaması. nextpdf/core: ^3.0 || ^5.2 — Artisan, her iki ana core sürüm hattını da destekler. Uygulamanızın hedeflediği core sürümünü sabitleyin.

Köprüyü kurmak, güven sınırına harici bir işlem (Chrome) ekler. Herhangi bir işleme yolunu kullanıcı tarafından sağlanan HTML’ye açmadan önce /integrations/artisan/security-and-operations/ sayfasını inceleyin.

  • /integrations/artisan/overview/
  • /integrations/artisan/configuration/
  • /integrations/artisan/quickstart/
  • /integrations/artisan/chrome-renderer-setup/
  • /integrations/artisan/security-and-operations/