İçeriğe geç

Hızlı başlangıç — CodeIgniter 4 ile ilk PDF'iniz

Bir denetleyicide pdf hizmetini çözümleyin, oluşturduğu belgeye içerik ekleyin ve bir indirme yanıtı döndürün. Böylece üç satır ve tek bir Hypertext Transfer Protocol (HTTP) yanıtıyla bir Portable Document Format (PDF) dosyası elde edersiniz.

Terminal window
composer require nextpdf/codeigniter

Gereksinimler ve paket keşfi denetimleri için /integrations/codeigniter/install/ sayfasına bakın.

PDF döndüren bir denetleyici oluşturun. Pdf kitaplığı sizin için yeni bir belge oluşturur, ardından bu belgeyi bir CodeIgniter DownloadResponse nesnesine dönüştürür.

Bu sayfadaki her PHP örneği, açılış etiketinden sonra declare(strict_types=1); ifadesini kendi satırına yerleştirir (PSR-12 §x1.x3.p11; §x1.x3.p34).

<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
use NextPDF\CodeIgniter\Config\Services;
final class InvoiceController extends BaseController
{
public function download(int $id): DownloadResponse
{
$pdf = Services::pdf();
$pdf->document()->addPage();
$pdf->document()->cell(0, 10, "Invoice #{$id}");
return $pdf->download("invoice-{$id}.pdf");
}
}

Services::pdf() yeni bir Pdf döndürür. Paketin işlevsel testleri, altta yatan belgenin de her çağrıda yeni olduğunu doğrular. download() çağrısı bir DownloadResponse yanıtı üretir; bu yanıtın düzeni attachment biçimindedir.

Bir rotayı app/Config/Routes.php dosyasındaki denetleyici metoduna eşleyin:

$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');

Şu adresi açın: /invoices/42/pdf. Tarayıcınız invoice-42.pdf dosyasını indirir. Yanıt, Content-Type: application/pdf başlığını ve paketin yanıtı sıkılaştıran başlıklarını içerir.

Varyasyon — yardımcı işlevle satır içi önizleme

“Varyasyon — yardımcı işlevle satır içi önizleme” başlıklı bölüm

Genel pdf() yardımcı işlevi Services::pdf() ile eşdeğerdir. PDF’i indirmek yerine tarayıcıda göstermek için inline() işlevini çağırın:

<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
final class ReportController extends BaseController
{
public function preview(): DownloadResponse
{
$pdf = pdf();
$pdf->document()->addPage();
$pdf->document()->cell(0, 10, 'Monthly Report');
return $pdf->inline('report.pdf');
}
}

Halihazırda bir Document nesneniz varsa, yanıtı doğrudan PdfResponse ile oluşturun. pdf_document() yardımcı işlevi size önceden yapılandırılmış yeni bir belge verir.

<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
use NextPDF\CodeIgniter\Http\PdfResponse;
final class DocumentController extends BaseController
{
public function generate(): DownloadResponse
{
$document = pdf_document();
$document->addPage();
$document->cell(0, 10, 'Hello World');
return PdfResponse::download($document, 'hello.pdf');
}
}
  • Bir NextPDF hizmetini çözümleyen ve tipli bir DownloadResponse döndüren bir denetleyici.
  • İki eşdeğer giriş noktası: Services sınıfı ve pdf() / pdf_document() yardımcı işlevleri.
  • Şunları içeren bir yanıt: application/pdf türü, paketin güvenlik başlıkları ve temizlenmiş bir dosya adı.

Bu ilk tanıtımın odağını korumak için bu eğitimde hata işleme ele alınmaz. Bağımlılık enjeksiyonu, istisna işleme, gözlemlenebilirlik ve kuyruk işi içeren üretim denetleyicileri için şu sayfaya geçin: /integrations/codeigniter/production-usage/. Bu sayfada sıkılaştırılmış varyantlar gösterilir.

  • Kod örneklerinde PHP açılış etiketinin kendi satırında olması (PSR-12 Extended Coding Style §x1.x3.p11).
  • Kod örneklerinde declare(strict_types=1) ifade biçimi (PSR-12 Extended Coding Style §x1.x3.p34).
  • /integrations/codeigniter/overview/ — application programming interface (API) yüzeyinin tamamı.
  • /integrations/codeigniter/configuration/ — varsayılanları ve yolları değiştirin.
  • /integrations/codeigniter/production-usage/ — üretim düzeyinde denetleyiciler ve eşzamansız işler.
  • /integrations/codeigniter/troubleshooting/ — bir rota hiç PDF döndürmüyorsa.