/ViewerPreferences dictionary 안에 있는 /PrintPageRange 항목입니다property PrintPageRanges: TPdfPrintPageRanges; // read only
PDF 1.7은 /ViewerPreferences에 /PrintPageRange를 추가했습니다. 이는 뷰어가 Print dialog에서 미리 선택해야 하는 page range를 설명하는 정수 쌍의 sequence입니다(PDF 32000-1 § 12.2 Table 150). PDFium은 그 배열을 파싱해 이 property를 통해 Pascal dynamic array인 TPdfPrintPageRange record로 보여 줍니다. 각 record는 one-based numbering의 StartPage와 EndPage를 담습니다
문서에 해당 항목이 없으면 반환 배열은 비어 있습니다(Length(Result) = 0). 이는 "모든 page 인쇄"로 처리합니다. 단일 page를 권장하면 해당 range의 StartPage와 EndPage는 one-based numbering에서 서로 같습니다. 예를 들어 "page 3만"은 (3, 3)입니다
print dialog를 연결할 때는 PrintCopies, PrintScaling, PrintPaperHandling과 함께 이 결과를 사용해 네 가지 hint를 모두 사용자에게 보여 줍니다. 다른 print preference와 마찬가지로 이것도 advisory only이며, PDFium은 rendering 동안 range를 강제하지 않습니다
// 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;