Полный справочник ViewerPreferences

ViewerPreferences позволяют управлять тем, как PDF-документы показываются в поддерживающих viewer-ах и как инициализируются некоторые печатные настройки по умолчанию. Текущая библиотека HotPDF поддерживает 14 значений ViewerPreferences плюс связанное InitialZoom.

Текущие типы данных

THPDFDirection = (LeftToRight, RightToLeft);
THPDFNonFullScreenPageMode = (
  nfpmUseNone, nfpmUseOutlines, nfpmUseThumbs, nfpmUseOC, nfpmUseAttachments
);
THPDFPrintScaling = (psNone, psAppDefault);
THPDFDuplex = (dupSimplex, dupDuplexFlipShortEdge, dupDuplexFlipLongEdge);
THPDFPageBoundary = (pbMediaBox, pbCropBox, pbBleedBox, pbTrimBox, pbArtBox);
THPDFInitialZoom = (
  FitNone, FitPage, FitWidth, FitHeight, FitBox, FitBoxWidth, FitBoxHeight,
  Zoom50, Zoom75, Zoom100, Zoom125, Zoom150, Zoom200
);

THPDFViewerPreference = (
  vpHideToolbar, vpHideMenubar, vpHideWindowUI, vpFitWindow, vpCenterWindow,
  vpDisplayDocTitle, vpDirection, vpNonFullScreenPageMode, vpPrintScaling,
  vpDuplex, vpPickTrayByPDFSize, vpNumCopies, vpPrintArea, vpPrintClip,
  vpViewArea, vpViewClip
);

THPDFViewerPreferences = set of THPDFViewerPreference;

Поддерживаемые ViewerPreferences

Опция Сопутствующее свойство Описание
vpHideToolbar None Скрывает панель инструментов viewer-а.
vpHideMenubar None Скрывает строку меню viewer-а.
vpHideWindowUI None Скрывает элементы UI вроде полос прокрутки и элементов навигации.
vpFitWindow None Масштабирует окно документа под первую отображаемую страницу.
vpCenterWindow None Центрирует окно документа на экране.
vpDisplayDocTitle Title Показывает в заголовке viewer-а название документа вместо имени файла.
vpDirection Direction Сохраняет преобладающий порядок чтения через LeftToRight или RightToLeft.
vpNonFullScreenPageMode NonFullScreenPageMode Задаёт режим страницы после выхода из полноэкранного режима.
vpPrintScaling PrintScaling Задаёт psNone или psAppDefault для масштабирования печати по умолчанию.
vpDuplex Duplex Задаёт симплексную или дуплексную печать.
vpPickTrayByPDFSize None Просит выбирать лоток принтера по размеру PDF-страницы.
vpNumCopies NumCopies Сохраняет предложенное число копий печати.
vpPrintArea PrintArea Задаёт границу страницы для рендеринга при печати.
vpPrintClip PrintClip Задаёт границу страницы для обрезки при печати.
vpViewArea ViewArea Граница страницы для экранной области просмотра (PDF 1.4 12.2). Доступно с HotPDF v2.29.0.
vpViewClip ViewClip Граница страницы для экранной обрезки просмотра (PDF 1.4 12.2). Доступно с HotPDF v2.29.0.

Значения сопутствующих свойств

Эти свойства записываются только когда включён соответствующий флаг ViewerPreferences.

Свойство Значения
Direction LeftToRight, RightToLeft
NonFullScreenPageMode nfpmUseNone, nfpmUseOutlines, nfpmUseThumbs, nfpmUseOC, nfpmUseAttachments
PrintScaling psNone, psAppDefault
Duplex dupSimplex, dupDuplexFlipShortEdge, dupDuplexFlipLongEdge
PrintArea / PrintClip / ViewArea / ViewClip pbMediaBox, pbCropBox, pbBleedBox, pbTrimBox, pbArtBox

Интеграция InitialZoom

InitialZoom дополняет ViewerPreferences, управляя начальным режимом показа страницы при открытии документа.

По умолчанию: Начиная с HotPDF v2.3.11 значением по умолчанию является FitHeight (PDF /FitV -направление), поэтому создаваемые документы открываются с каждой страницей, вписанной по высоте окна просмотрщика. Задайте InitialZoom в FitNone, чтобы опустить OpenAction и позволить viewer-у откатиться к собственному зуму по умолчанию.

// Complete document presentation setup
HotPDF.ViewerPreferences := [vpFitWindow, vpCenterWindow, vpDisplayDocTitle];
HotPDF.InitialZoom := FitWidth;

// Technical document setup
HotPDF.ViewerPreferences := [vpDisplayDocTitle, vpPrintScaling];
HotPDF.InitialZoom := Zoom125;

// Presentation mode
HotPDF.ViewerPreferences := [vpFitWindow, vpHideToolbar, vpHideMenubar];
HotPDF.InitialZoom := FitPage;

Пример реализации

var
  VPref: THPDFViewerPreferences;
begin
  VPref := [vpFitWindow, vpCenterWindow, vpDisplayDocTitle];

  if EnableDirection then
  begin
    Include(VPref, vpDirection);
    HotPDF.Direction := RightToLeft;
  end;

  if EnablePrintScaling then
  begin
    Include(VPref, vpPrintScaling);
    HotPDF.PrintScaling := psNone;
  end;

  HotPDF.ViewerPreferences := VPref;
  HotPDF.InitialZoom := FitWidth;
end;

Примечания о совместимости

  • Adobe Reader/Acrobat: Обычно даёт самую полную поддержку ViewerPreferences.
  • Другие viewer-ы: Поддержка варьируется — эти значения лишь предпочтения, а не жёсткие требования.
  • Плавная деградация: Неподдерживаемые настройки корректные viewer-ы должны безопасно игнорировать.

Демо-приложения

Следующие демо синхронизированы с текущей поддержкой библиотеки:

  • Demo\Delphi\ViewerPref
  • Demo\CBuilder\ViewerPref