ข้ามไปยังเนื้อหา

ตั้งค่ากำหนดของโปรแกรมดูและโหมดการแสดงผล

สูตรนี้ควบคุมวิธีที่โปรแกรมอ่าน Portable Document Format (PDF) ที่เป็นไปตามข้อกำหนดนำเสนอเอกสารของคุณเมื่อเปิดเอกสาร คุณสามารถกำหนดการซูมเริ่มต้น เค้าโครงหน้า ส่วนควบคุมของโปรแกรมอ่าน ขนาดหน้าต่าง และข้อความบนแถบชื่อเรื่องได้ แถบชื่อเรื่องสามารถแสดงชื่อเอกสารหรือชื่อไฟล์ได้ สูตรนี้อ้างอิงจาก examples/24-viewer-preferences.php

Terminal window
composer require nextpdf/core:^3

ค่ากำหนดของโปรแกรมดูอยู่ในแคตาล็อกของเอกสาร ค่ากำหนดเหล่านี้เป็น คำแนะนำ สำหรับโปรแกรมอ่าน ไม่ใช่การรับประกัน แฟล็กหลักทั้งสามมีดังนี้ DisplayDocTitle ควบคุมข้อความบนแถบชื่อเรื่อง (ISO 32000-2 §12.2) HideToolbar ขอให้โปรแกรมอ่านซ่อนแถบเครื่องมือ FitWindow ขอให้โปรแกรมอ่านปรับขนาดหน้าต่างให้พอดีกับหน้าแรก ส่วน setDisplayMode() จับคู่การซูมเริ่มต้นกับเค้าโครงหน้า

โพรไฟล์เป็น structural เนื่องจากเอกสารมีค่า /ID ใน trailer ขั้นตอนหลังการประมวลผลจะปรับค่านั้นให้เป็นมาตรฐานก่อนเปรียบเทียบผลการรันสองครั้ง

NextPDF\Core\Concerns\HasViewerPreferences (ผสานเข้ากับ Document):

  • setViewerPreferences(array $prefs): static — แฟล็กแบบมีคีย์ เช่น HideToolbar, HideMenubar, HideWindowUI, FitWindow, CenterWindow, DisplayDocTitle (bool) รวมถึง 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";

ตัวอย่างฉบับเต็มด้านล่างสอดคล้องกับ examples/24-viewer-preferences.php ตัวอย่างนี้สร้างเอกสารหลายหน้าเพื่อแสดงเค้าโครงแบบสองคอลัมน์ และเขียนผลลัพธ์ไปยัง NEXTPDF_COOKBOOK_OUTPUT สำหรับชุดทดสอบ

<?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";

ผลลัพธ์ที่คาดหวัง:

Wrote document with viewer preferences
  • ค่ากำหนดเป็นเพียงคำแนะนำ ISO 32000-2 ระบุว่าค่ากำหนดของโปรแกรมดูเป็นคำแนะนำ โปรแกรมอ่านอาจเพิกเฉยต่อค่ากำหนดใดก็ได้ โดยเฉพาะเบราว์เซอร์ที่รองรับค่ากำหนดเหล่านี้น้อยมาก อย่าใช้ HideToolbar/HideMenubar เป็นหลักประกันด้านความปลอดภัยหรือโหมดคีออสก์
  • DisplayDocTitle ต้องมีชื่อเรื่อง ค่ากำหนดนี้จะเปลี่ยนพฤติกรรมเฉพาะเมื่อ setTitle() กำหนดชื่อเรื่องที่ไม่ว่างเปล่า หากไม่มีชื่อเรื่อง โปรแกรมอ่านจะยังคงแสดงชื่อไฟล์
  • สตริงเค้าโครงต้องตรงทุกตัวอักษร setDisplayMode() ต้องใช้การสะกดตามข้อกำหนด เช่น TwoColumnLeft ไม่ใช่ two-column-left เค้าโครงที่โปรแกรมไม่รู้จักจะเปลี่ยนไปใช้ค่าเริ่มต้นของโปรแกรมอ่าน
  • การซูมแบบตัวเลขเป็นสตริง ส่งค่า '150' สำหรับ 150 % ไม่ใช่จำนวนเต็ม 150
  • หน้าเดี่ยวเทียบกับการแสดงคู่หน้า TwoPageLeft/TwoPageRight ต้องใช้โปรแกรมอ่าน PDF 1.5+ โปรแกรมอ่านรุ่นเก่าจะเปลี่ยนไปใช้เค้าโครงแบบคอลัมน์เดียว

การตั้งค่ากำหนดของโปรแกรมดูเป็นการตั้งค่าในแคตาล็อกที่ใช้เวลาคงที่และไม่มีต้นทุนด้านการเรนเดอร์ การดำเนินการนี้อยู่ภายในงบประมาณ 1000 ms / 64 MB ได้อย่างสบาย

การซ่อนแถบเครื่องมือหรือแถบเมนูเป็นเพียงการปรับลักษณะที่แสดงผล ไม่ได้จำกัดสิ่งที่ผู้ใช้สามารถทำได้ โปรแกรมอ่านทุกตัวยังคงมีแป้นพิมพ์ลัดและคำสั่งจากการคลิกขวา และหลายตัวเพิกเฉยต่อแฟล็กเหล่านี้โดยสิ้นเชิง อย่าถือว่าค่ากำหนดของโปรแกรมดูเป็นกลไกควบคุมที่จำกัดการบันทึก การพิมพ์ หรือการคัดลอก คำขอเหล่านั้นจัดการด้วยบิตสิทธิ์ และโปรแกรมอ่านยังคงรองรับบิตเหล่านั้นแบบสมัครใจเท่านั้น ดู การเข้ารหัสลับพร้อมสิทธิ์

ข้อความระบุข้อกำหนดข้อรหัสอ้างอิง (reference_id)
DisplayDocTitle ควบคุมว่าแถบชื่อเรื่องของหน้าต่างจะแสดงชื่อเอกสารหรือไม่ISO 32000-2§12.2
HideToolbar ขอให้ซ่อนแถบเครื่องมือแบบโต้ตอบISO 32000-2§12.2
FitWindow ขอให้ปรับขนาดหน้าต่างให้พอดีกับหน้าแรกISO 32000-2§12.2

ค่ากำหนดเหล่านี้เป็นเพียงคำแนะนำ ข้อที่อ้างถึงกำหนดความหมายของค่ากำหนดเหล่านี้ แต่ไม่ได้กำหนดข้อผูกมัดให้โปรแกรมอ่านต้องรองรับค่ากำหนดเหล่านั้น NextPDF ไม่ได้ยืนยันความสอดคล้องตาม ISO 32000-2 แบบครอบคลุมทั้งหมด