İçeriğe geç

Artisan hızlı başlangıcı

Bir NextPDF belgesine ChromeRendererConfig ekleyin, writeHtmlChrome() çağırın ve Portable Document Format (PDF) dosyasını kaydedin. Hypertext Markup Language (HTML), Chrome tarafından işlenir. Köprü, sonucu bir Form XObject olarak içe aktarır ve metin seçilebilir durumda kalır.

writeHtmlChrome(), NextPDF çekirdeğindeki Document üzerinde bir yöntemdir. Bu yöntem, HasTextOutput concern’i tarafından sağlanır. Yöntem, girdiyi doğrular ve Artisan işleyicisini çözer. Ardından HTML’yi Chrome’a gönderir, döndürülen PDF’yi ayrıştırır ve sayfa 0’ı geçerli imleç konumunda bir Form XObject olarak gömer. Genel imzası writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static şeklindedir; nextpdf/coresrc/Core/Concerns/HasTextOutput.php dosyasına göre doğrulanmıştır.

quickstart.php
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(
chromeBinaryPath: '/usr/bin/chromium',
);
$doc = Document::createStandalone();
$doc->setChromeRendererConfig($config);
$doc->addPage();
$doc->writeHtmlChrome('
<div style="display: flex; gap: 20px; font-family: sans-serif;">
<div style="flex: 1; background: #f0f0f0; padding: 24px;">
<h2>Revenue</h2><p style="font-size: 2em; color: #2563eb;">$124,500</p>
</div>
<div style="flex: 1; background: #f0f0f0; padding: 24px;">
<h2>Orders</h2><p style="font-size: 2em; color: #16a34a;">1,847</p>
</div>
</div>
');
$doc->save('/tmp/report.pdf');

Bu, paketin README.md dosyasındaki standart akışıdır. Chrome, Cascading Style Sheets (CSS) flex yerleşimini işler. Sayfa bir tarama görüntüsü olarak değil, bir Form XObject olarak gömüldüğü için sayılar çıktıda seçilebilir metin olarak kalır.

Sabit bir sayfa boyutuna sığdırmak için açık genişlik ve yükseklik değerlerini PDF noktası cinsinden geçirin (A4 gösterilmiştir):

$doc->writeHtmlChrome($html, width: 595.28, height: 841.89);

Her iki değeri de verdiğinizde Chrome tam olarak o kâğıt boyutuna yazdırır. Yüksekliği atladığınızda (veya null geçtiğinizde), köprü ölçülen içerik yüksekliğine uyum sağlar ve küçük bir yeniden akış güvenlik payı ekler. Bu payın neden var olduğunu ve ne zaman geçersiz kılabileceğinizi öğrenmek için /integrations/artisan/production-usage/ adresine bakın.

ÖzellikDavranış
MetinSeçilebilir ve aranabilir (vektör metin, tarama görüntüsüne dönüştürülmemiş)
Cascading Style Sheets (CSS)Chrome yerleşimi: flexbox, grid, karmaşık seçiciler ve data Uniform Resource Identifier (URI) değerleri aracılığıyla web yazı tipleri
Alt kaynak getirilmez; uzak Uniform Resource Locators (URLs) yüklenmez (bkz. /integrations/artisan/security-and-operations/)
SayfalarChrome çıktısının 0. sayfası içe aktarılır
  • Boş HTML hiçbir işlem yapmaz. writeHtmlChrome('') belgeyi değiştirmeden geri döner (HasTextOutput::writeHtmlChrome içinde doğrulanmıştır).
  • Henüz sayfa yok. Belgenin sayfası yoksa, writeHtmlChrome() işlemeden önce bir sayfa ekler.
  • Uzak varlıklar yüklenmez. <img src="https://..."> boş olarak işlenir. Varlıkları data: URI’leri olarak satır içine alın. Bu bir hata değil, ağ yalıtımı duruşudur. Bkz. /integrations/artisan/security-and-operations/.
  • Köprü eksik. nextpdf/artisan kurulu değilse, çekirdek ölümcül bir hata yerine bir yerleşim istisnası fırlatır.

İlk çağrı, Chrome başlatma ve yerleşim süresini içerir. Sonraki çağrılar, etkin Chrome işlemini BrowserPool aracılığıyla yeniden kullanır. Toplu işler veya uzun süre çalışan işçiler için, yaşam döngüsü ve kaynak yönergelerini /integrations/artisan/production-usage/ sayfasında okuyun.

Hızlı başlangıç, güvenilir ve sabit kodlanmış HTML kullanır. Kullanıcının etkileyebildiği herhangi bir HTML’yi writeHtmlChrome() yöntemine geçirmeden önce /integrations/artisan/security-and-operations/ belgesini okuyun. Köprü ağ erişimini yalıtır, ancak HTML işlemenin yine de bir tehdit yüzeyi vardır.

Bu, açık kaynaklı köprüyü kullanarak HTML’den bir PDF üretir. Premium Pro katmanı, uyumlu bir e-fatura Extensible Markup Language (XML) dosyasını aynı belgeye gömmek için bir gömücü sağlar. Premium bulunmadığında açık kaynaklı yol etkilenmez.

  • /integrations/artisan/install/
  • /integrations/artisan/configuration/
  • /integrations/artisan/production-usage/
  • /integrations/artisan/troubleshooting/
  • /integrations/artisan/security-and-operations/