İçeriğe geç

Görüntüleyici tercihlerini ve görüntüleme modunu ayarlama

Bu tarif, uyumlu bir Portable Document Format (PDF) okuyucusunda belgeniz açıldığında nasıl görüntüleneceğini denetler. Başlangıç yakınlaştırma düzeyini, sayfa yerleşimini, okuyucu denetimlerini, pencere boyutunu ve başlık çubuğu metnini ayarlayabilirsiniz. Başlık çubuğu belge başlığını veya dosya adını gösterebilir. Bu tarif, examples/24-viewer-preferences.php dosyasını izler.

Terminal window
composer require nextpdf/core:^3

Görüntüleyici tercihleri belge kataloğunda yer alır. Bunlar okuyucuya yönelik ipuçlarıdır; garanti değildir. Üç ana bayrağı şu şekilde kullanın: DisplayDocTitle başlık çubuğu metnini denetler (ISO 32000-2 §12.2). HideToolbar okuyucudan araç çubuğunu gizlemesini ister. FitWindow okuyucudan penceresini ilk sayfaya sığacak şekilde yeniden boyutlandırmasını ister. setDisplayMode() başlangıç yakınlaştırma düzeyini sayfa yerleşimiyle eşleştirir.

Profil structural olur; çünkü belge bir trailer /ID değeri taşır. Son işlem adımı, iki çalıştırmayı karşılaştırmadan önce bu değeri normalleştirir.

NextPDF\Core\Concerns\HasViewerPreferences (Document içine eklenir):

  • setViewerPreferences(array $prefs): staticHideToolbar, HideMenubar, HideWindowUI, FitWindow, CenterWindow, DisplayDocTitle (bool) gibi bayrak anahtarları; ayrıca 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";

Aşağıdaki tam örnek examples/24-viewer-preferences.php dosyasını yansıtır. İki sütunlu yerleşimi görebilmeniz için çok sayfalı bir belge oluşturur ve test düzeneği için çıktıyı NEXTPDF_COOKBOOK_OUTPUT konumuna kaydeder.

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

Beklenen çıktı:

Wrote document with viewer preferences
  • Tercihler tavsiye niteliğindedir. ISO 32000-2 görüntüleyici tercihlerini ipucu olarak tanımlar. Okuyucular bunların herhangi birini yok sayabilir. Özellikle tarayıcılar bunların çok azını uygular. Güvenlik veya kiosk garantisi sağlamak için asla HideToolbar/HideMenubar bayrağına güvenmeyin.
  • DisplayDocTitle bir başlık gerektirir. Yalnızca setTitle() boş olmayan bir başlık ayarladığında davranışı değiştirir. Başlık olmadığında okuyucu yine de dosya adını gösterir.
  • Yerleşim dizeleri tam olmalıdır. setDisplayMode() spesifikasyonda geçen yazımları bekler; örneğin TwoColumnLeft, two-column-left değil. Bilinmeyen bir yerleşim verildiğinde okuyucu varsayılanına geri döner.
  • Sayısal yakınlaştırma bir dizedir. %150 için '150' değerini iletin, tamsayı 150 değil.
  • Tek sayfa ve çift sayfa karşılaştırması. TwoPageLeft/TwoPageRight PDF 1.5+ okuyucuları gerektirir. Eski görüntüleyiciler tek sütunlu bir yerleşime geri döner.

Görüntüleyici tercihlerini ayarlamak sabit zamanlı bir katalog yapılandırmasıdır ve işleme maliyeti oluşturmaz. 1000 ms / 64 MB bütçesinin çok altında kalır.

Araç çubuğunu veya menü çubuğunu gizlemek yalnızca görsel bir değişikliktir. Kullanıcının yapabileceklerini kısıtlamaz. Her okuyucu klavye kısayollarını ve sağ tıklama eylemlerini korur; birçoğu bayrakları tamamen yok sayar. Görüntüleyici tercihlerini kaydetmeyi, yazdırmayı veya kopyalamayı sınırlayan bir denetim olarak görmeyin. Bu istekler izin bitleriyle yönetilir ve okuyucular bunları da yalnızca isteğe bağlı olarak uygular. Bkz. İzinlerle şifreleme.

İfadeSpesifikasyonMaddereference_id
DisplayDocTitle pencere başlık çubuğunun belge başlığını gösterip göstermeyeceğini denetler.ISO 32000-2§12.2
HideToolbar etkileşimli araç çubuğunun gizlenmesini ister.ISO 32000-2§12.2
FitWindow pencerenin ilk sayfaya göre yeniden boyutlandırılmasını ister.ISO 32000-2§12.2

Bu tercihler tavsiye niteliğindedir. Atıfta bulunulan maddeler bunların anlamını tanımlar; bir okuyucunun bunları uygulamakla yükümlü olduğunu belirtmez. NextPDF, tam ISO 32000-2 uyumluluğu iddia etmez.