ตั้งค่ากำหนดของโปรแกรมดูและโหมดการแสดงผล
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”สูตรนี้ควบคุมวิธีที่โปรแกรมอ่าน Portable Document Format (PDF) ที่เป็นไปตามข้อกำหนดนำเสนอเอกสารของคุณเมื่อเปิดเอกสาร คุณสามารถกำหนดการซูมเริ่มต้น เค้าโครงหน้า ส่วนควบคุมของโปรแกรมอ่าน ขนาดหน้าต่าง และข้อความบนแถบชื่อเรื่องได้ แถบชื่อเรื่องสามารถแสดงชื่อเอกสารหรือชื่อไฟล์ได้ สูตรนี้อ้างอิงจาก examples/24-viewer-preferences.php
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/core:^3ภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”ค่ากำหนดของโปรแกรมดูอยู่ในแคตาล็อกของเอกสาร ค่ากำหนดเหล่านี้เป็น คำแนะนำ สำหรับโปรแกรมอ่าน ไม่ใช่การรับประกัน แฟล็กหลักทั้งสามมีดังนี้ DisplayDocTitle ควบคุมข้อความบนแถบชื่อเรื่อง (ISO 32000-2 §12.2) HideToolbar ขอให้โปรแกรมอ่านซ่อนแถบเครื่องมือ FitWindow ขอให้โปรแกรมอ่านปรับขนาดหน้าต่างให้พอดีกับหน้าแรก ส่วน setDisplayMode() จับคู่การซูมเริ่มต้นกับเค้าโครงหน้า
โพรไฟล์เป็น structural เนื่องจากเอกสารมีค่า /ID ใน trailer ขั้นตอนหลังการประมวลผลจะปรับค่านั้นให้เป็นมาตรฐานก่อนเปรียบเทียบผลการรันสองครั้ง
ส่วนติดต่อ API
หัวข้อที่มีชื่อว่า “ส่วนติดต่อ API”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—$zoom∈default | fullpage | fullwidth | real | <numeric>;$layout∈SinglePage | 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 แบบครอบคลุมทั้งหมด