Layer (OCG)
PDF layer — tên chính thức là Optional Content Group (OCG) — cho phép bạn tạo nội dung có thể bật tắt trong trình xem, hoặc chọn lọc khi in. Hệ thống layer được quản lý qua Graphics\LayerManager và truy cập qua fluent API của Document.
Mọi method trả về static, nên mỗi lệnh gọi có thể chain.
Tham chiếu nhanh
| Method | Mục đích |
|---|---|
startLayer() | Bắt đầu layer mới với tên cho trước |
endLayer() | Đóng layer hiện tại |
Ví dụ cơ bản
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
// Hiển thị trên màn hình, không in
->startLayer('Screen Only', print: false, view: true)
->cell(0, 10, 'This text appears on screen but not when printed', newLine: true)
->endLayer()
// Chỉ in
->startLayer('Print Only', print: true, view: false)
->cell(0, 10, 'This text appears only when printed', newLine: true)
->endLayer()
// Luôn hiển thị
->cell(0, 10, 'This text is always visible', newLine: true);startLayer()
php
$pdf->startLayer(string $name, bool $print = true, bool $view = true): staticBắt đầu layer mới. Mọi nội dung vẽ sau lệnh gọi này thuộc về layer cho đến khi gọi endLayer().
| Tham số | Kiểu | Mô tả |
|---|---|---|
$name | string | Tên hiển thị trong panel layer của trình xem |
$print | bool | Nội dung layer có xuất hiện khi in hay không |
$view | bool | Nội dung layer có xuất hiện trên màn hình hay không |
endLayer()
Đóng layer hiện tại. Nội dung vẽ sau lệnh gọi này không còn thuộc layer nào.
Chế độ hiển thị Layer
Tổ hợp $print và $view cho bạn bốn chế độ hiển thị hữu ích:
$print | $view | Hành vi |
|---|---|---|
true | true | Luôn hiển thị (mặc định) |
false | true | Chỉ màn hình — ẩn khi in |
true | false | Chỉ in — ẩn trên màn hình |
false | false | Ẩn ban đầu mọi nơi (người dùng có thể bật tắt) |
Layer lồng nhau
Layer có thể lồng nhau. Layer con kế thừa ràng buộc hiển thị của layer cha — nếu cha bị ẩn, con cũng bị ẩn.
php
$pdf->startLayer('Parent')
->cell(0, 10, 'Parent content', newLine: true)
->startLayer('Child', print: false, view: true)
->cell(0, 10, 'Child content — screen only', newLine: true)
->endLayer()
->endLayer();Trường hợp sử dụng
PDF đa ngôn ngữ
Đặt mỗi bản dịch trên layer riêng. Người đọc chuyển đổi ngôn ngữ trong panel layer:
php
$pdf->startLayer('English')
->cell(0, 10, 'Hello, World!', newLine: true)
->endLayer()
->startLayer('Chinese')
->cell(0, 10, '你好,世界!', newLine: true)
->endLayer();Watermark (chỉ màn hình)
php
$pdf->startLayer('Watermark', print: false, view: true)
->setFont('Helvetica', 'B', 48)
->setTextColor(200, 200, 200)
->text(60, 140, 'DRAFT')
->endLayer();Crop Mark chỉ in
php
$pdf->startLayer('Crop Marks', print: true, view: false)
->cropMark(20, 20, 10, 10)
->cropMark(190, 20, 10, 10)
->endLayer();Mẹo
- Tên layer nên ngắn gọn và mô tả rõ — chúng xuất hiện nguyên văn trong panel layer của trình xem.
- Adobe Acrobat và Foxit Reader hỗ trợ OCG đầy đủ; trình xem dựa trên trình duyệt có thể bỏ qua layer.
- Layer chỉ tăng rất ít overhead kích thước file vì chúng là cờ metadata, không phải nội dung trùng lặp.