Bỏ qua để đến nội dung

Thiết lập tùy chọn trình xem và chế độ hiển thị

Công thức này kiểm soát cách một trình đọc Portable Document Format (PDF) tuân thủ chuẩn hiển thị tài liệu của bạn khi tài liệu được mở. Bạn thiết lập mức thu phóng ban đầu, bố cục trang, các điều khiển của trình đọc, kích thước cửa sổ và nội dung trên thanh tiêu đề. Thanh tiêu đề có thể hiển thị tiêu đề tài liệu hoặc tên tệp. Công thức này bám sát examples/24-viewer-preferences.php.

Terminal window
composer require nextpdf/core:^3

Các tùy chọn trình xem nằm trong catalog của tài liệu. Chúng là gợi ý cho trình đọc, không phải bảo đảm. Hãy dùng ba cờ chính như sau. DisplayDocTitle kiểm soát văn bản trên thanh tiêu đề (ISO 32000-2 §12.2). HideToolbar yêu cầu trình đọc ẩn thanh công cụ của nó. FitWindow yêu cầu trình đọc thay đổi kích thước cửa sổ cho vừa với trang đầu tiên. setDisplayMode() ghép một mức thu phóng ban đầu với một bố cục trang.

Hồ sơ là structural vì tài liệu có một giá trị /ID trong trailer. Bước hậu xử lý sẽ chuẩn hóa giá trị đó trước khi so sánh hai lần chạy.

NextPDF\Core\Concerns\HasViewerPreferences (được trộn vào Document):

  • setViewerPreferences(array $prefs): static — các cờ được đặt theo khóa như HideToolbar, HideMenubar, HideWindowUI, FitWindow, CenterWindow, DisplayDocTitle (bool), cùng với Direction, PrintScaling, Duplex (string), NumCopies (int).
  • setDisplayMode(string $zoom = 'default', string $layout = 'SinglePage'): static$zoomdefault | fullpage | fullwidth | real | <numeric>; $layoutSinglePage | OneColumn | TwoColumnLeft | TwoColumnRight | TwoPageLeft | TwoPageRight.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->setTitle('Presentation Deck');
$doc->setDisplayMode('fullwidth', 'TwoColumnLeft');
$doc->setViewerPreferences([
'HideToolbar' => true,
'FitWindow' => true,
'DisplayDocTitle' => true,
]);
$doc->addPage();
$doc->setFont('helvetica', '', 12);
$doc->cell(0, 10, 'Opens full-width, two columns, title bar shows the title.', newLine: true);
$doc->save(__DIR__ . '/viewer-prefs.pdf');
echo "Wrote viewer-prefs.pdf\n";

Ví dụ đầy đủ bên dưới phản ánh examples/24-viewer-preferences.php. Ví dụ này tạo một tài liệu nhiều trang để bạn có thể thấy bố cục hai cột và ghi vào NEXTPDF_COOKBOOK_OUTPUT cho bộ kiểm thử.

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->setTitle('Viewer Preferences Demo');
$doc->setAuthor('NextPDF Example');
$doc->setDisplayMode('fullwidth', 'TwoColumnLeft');
$doc->setViewerPreferences([
'HideToolbar' => true,
'HideMenubar' => true,
'FitWindow' => true,
'CenterWindow' => true,
'DisplayDocTitle' => true,
]);
for ($page = 1; $page <= 3; $page++) {
$doc->addPage();
$doc->setFont('helvetica', 'B', 18);
$doc->cell(0, 12, "Page {$page}", newLine: true);
$doc->setFont('helvetica', '', 11);
$doc->multiCell(0, 7, 'With TwoColumnLeft layout a conforming reader '
. 'shows pages side by side. Toolbar and menu bar are hidden, the '
. 'window fits the first page and is centred, and the title bar '
. 'shows the document title rather than the filename.');
}
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT');
$doc->save($out !== false ? $out : __DIR__ . '/viewer-preferences.pdf');
echo "Wrote document with viewer preferences\n";

Kết quả mong đợi:

Wrote document with viewer preferences
  • Các tùy chọn chỉ mang tính tham khảo. ISO 32000-2 định nghĩa các tùy chọn trình xem là gợi ý. Trình đọc có thể bỏ qua bất kỳ tùy chọn nào trong số đó. Riêng trình duyệt thường chỉ tuân theo rất ít tùy chọn. Đừng bao giờ dựa vào HideToolbar/HideMenubar để bảo đảm yêu cầu bảo mật hay chế độ kiosk.
  • DisplayDocTitle cần có một tiêu đề. Tùy chọn này chỉ thay đổi hành vi khi setTitle() đặt một tiêu đề không rỗng. Khi không có tiêu đề, trình đọc vẫn hiển thị tên tệp.
  • Các chuỗi bố cục phải chính xác. setDisplayMode() yêu cầu cách viết đúng theo đặc tả, chẳng hạn TwoColumnLeft, không phải two-column-left. Khi gặp bố cục không xác định, trình đọc sẽ quay về mặc định.
  • Mức thu phóng dạng số là một chuỗi. Hãy truyền '150' cho 150 %, không phải số nguyên 150.
  • Trang đơn so với trang đôi. TwoPageLeft/TwoPageRight yêu cầu trình đọc PDF 1.5+. Các trình đọc cũ hơn sẽ quay về bố cục một cột.

Việc thiết lập các tùy chọn trình xem là cấu hình catalog với thời gian hằng số và không phát sinh chi phí kết xuất. Cấu hình này nằm gọn trong giới hạn 1000 ms / 64 MB.

Việc ẩn thanh công cụ hay thanh menu chỉ mang tính hình thức. Nó không hạn chế những gì người dùng có thể làm. Mọi trình đọc đều giữ lại phím tắt bàn phím và các thao tác nhấp chuột phải, và nhiều trình đọc bỏ qua hoàn toàn các cờ này. Đừng xem các tùy chọn trình xem như một biện pháp kiểm soát để hạn chế việc lưu, in hay sao chép. Các bit quyền (permission bit) xử lý những yêu cầu đó, và trình đọc cũng chỉ tự nguyện tuân theo chúng. Xem Mã hóa kèm phân quyền.

Phát biểuĐặc tảĐiều khoảnreference_id
DisplayDocTitle kiểm soát việc thanh tiêu đề cửa sổ có hiển thị tiêu đề tài liệu hay không.ISO 32000-2§12.2
HideToolbar yêu cầu ẩn thanh công cụ tương tác.ISO 32000-2§12.2
FitWindow yêu cầu thay đổi kích thước cửa sổ cho vừa với trang đầu tiên.ISO 32000-2§12.2

Các tùy chọn này chỉ mang tính tham khảo. Các điều khoản được trích dẫn định nghĩa ý nghĩa của chúng, nhưng không đặt ra nghĩa vụ để trình đọc phải tuân theo. NextPDF không khẳng định sự tuân thủ toàn diện ISO 32000-2.