Skip to content

Layer (OCG)

PDF layer — secara formal disebut Optional Content Group (OCG) — memungkinkan Anda membuat konten yang bisa di-toggle on dan off di viewer, atau secara selektif dimasukkan saat mencetak. Sistem layer dikelola melalui Graphics\LayerManager dan diakses melalui API fluent Document.

Semua method mengembalikan static, sehingga setiap panggilan bisa di-chain.

Referensi Cepat

MethodTujuan
startLayer()Mulai layer baru dengan nama tertentu
endLayer()Tutup layer saat ini

Contoh Dasar

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->setFont('Helvetica', '', 12)

    // Terlihat di viewer, tidak dicetak
    ->startLayer('Screen Only', print: false, view: true)
    ->cell(0, 10, 'Teks ini muncul di layar tapi tidak saat dicetak', newLine: true)
    ->endLayer()

    // Hanya dicetak
    ->startLayer('Print Only', print: true, view: false)
    ->cell(0, 10, 'Teks ini muncul hanya saat dicetak', newLine: true)
    ->endLayer()

    // Selalu terlihat
    ->cell(0, 10, 'Teks ini selalu terlihat', newLine: true);

startLayer()

php
$pdf->startLayer(string $name, bool $print = true, bool $view = true): static

Memulai layer baru. Semua konten yang digambar setelah panggilan ini masuk ke layer tersebut sampai endLayer() dipanggil.

ParameterTipeDeskripsi
$namestringNama tampilan yang ditunjukkan di panel layer viewer
$printboolApakah konten layer muncul saat dicetak
$viewboolApakah konten layer muncul di layar

endLayer()

Menutup layer saat ini. Konten yang digambar setelah panggilan ini tidak lagi menjadi bagian dari layer manapun.

Mode Visibilitas Layer

Kombinasi $print dan $view memberikan empat mode visibilitas yang berguna:

$print$viewPerilaku
truetrueSelalu terlihat (default)
falsetrueHanya layar — tersembunyi saat dicetak
truefalseHanya cetak — tersembunyi di layar
falsefalseAwalnya tersembunyi di mana-mana (user bisa toggle)

Layer Bersarang

Layer bisa disarangkan. Layer anak mewarisi batasan visibilitas dari parent-nya -- jika parent tersembunyi, anak juga tersembunyi.

php
$pdf->startLayer('Parent')
    ->cell(0, 10, 'Konten parent', newLine: true)
    ->startLayer('Child', print: false, view: true)
    ->cell(0, 10, 'Konten anak — hanya layar', newLine: true)
    ->endLayer()
    ->endLayer();

Kasus Penggunaan

PDF Multi-Bahasa

Tempatkan setiap terjemahan di layer terpisah. Pembaca bisa toggle bahasa di panel layer:

php
$pdf->startLayer('English')
    ->cell(0, 10, 'Hello, World!', newLine: true)
    ->endLayer()
    ->startLayer('Chinese')
    ->cell(0, 10, '你好,世界!', newLine: true)
    ->endLayer();

Watermark (Hanya Layar)

php
$pdf->startLayer('Watermark', print: false, view: true)
    ->setFont('Helvetica', 'B', 48)
    ->setTextColor(200, 200, 200)
    ->text(60, 140, 'DRAFT')
    ->endLayer();

Crop Mark Hanya Cetak

php
$pdf->startLayer('Crop Marks', print: true, view: false)
    ->cropMark(20, 20, 10, 10)
    ->cropMark(190, 20, 10, 10)
    ->endLayer();

Tips

  • Nama layer harus singkat dan deskriptif -- nama tersebut muncul apa adanya di panel layer viewer.
  • Adobe Acrobat dan Foxit Reader memiliki dukungan OCG penuh; viewer berbasis browser mungkin mengabaikan layer.
  • Layer menambah overhead minimal ke ukuran file karena hanya berupa flag metadata, bukan konten duplikat.

Didistribusikan di bawah lisensi LGPL-3.0-or-later.