PDFium Delphi Component Docs

PrintPageRanges Свойство

Компонент: TPdf  ·  Модуль: PDFium
Декодированный список диапазонов страниц с нумерацией с единицы, который автор PDF хотел бы подсказать диалогу печати — запись /PrintPageRange в словаре /ViewerPreferences документа

Syntax

property PrintPageRanges: TPdfPrintPageRanges; // read only

Description

В PDF 1.7 в /ViewerPreferences добавили /PrintPageRange — последовательность пар целых чисел, описывающих диапазоны страниц, которые ридер должен предвыбрать в диалоге печати (PDF 32000-1 § 12.2 Table 150). PDFium разбирает этот массив и отдаёт через свойство как Pascal dynamic array из записей TPdfPrintPageRange, каждая с StartPage и EndPage в нумерации с единицы

Если в документе записи нет, возвращается пустой массив (Length(Result) = 0) — трактуйте как "печатать все страницы". Когда рекомендована одна страница, у соответствующего диапазона StartPage и EndPage равны, например (3, 3) для "только страница 3"

Сочетайте результат с PrintCopies, PrintScaling и PrintPaperHandling при сборке диалога печати, чтобы показать пользователю все четыре подсказки. Как и остальные настройки печати, это только рекомендация; при рендеринге PDFium диапазон не принуждает

Remarks

Example

// Build a comma-separated string like "1-3, 7, 10-12".
var Ranges: TPdfPrintPageRanges;
var S: string;
var I: Integer;
begin
  Ranges := Pdf1.PrintPageRanges;
  if Length(Ranges) = 0 then Exit;
  for I := 0 to High(Ranges) do
  begin
    if S <> '' then S := S + ', ';
    if Ranges[I].StartPage = Ranges[I].EndPage then
      S := S + IntToStr(Ranges[I].StartPage)
    else
      S := S + Format('%d-%d', [Ranges[I].StartPage, Ranges[I].EndPage]);
  end;
  editRanges.Text := S;
end;

See Also

PrintCopies, PrintScaling, PrintPaperHandling, ViewerPreference