Lista decodificada de rangos de páginas basados en 1 que el autor del PDF desea que el cuadro de diálogo de impresión sugiera — la entrada /PrintPageRange del diccionario /ViewerPreferences del documento
Cuando el documento no incluye la entrada, el array devuelto está vacío (Length(Result) = 0) — trátalo como "imprimir todas las páginas". Cuando se recomienda una sola página, el rango correspondiente tiene StartPage y EndPage iguales, por ejemplo (3, 3) para "solo la página 3"
Combina el resultado con PrintCopies, PrintScaling y PrintPaperHandling al montar un cuadro de impresión para que se puedan mostrar al usuario las cuatro pistas a la vez. Como las otras preferencias de impresión, esto es solo orientativo; PDFium no impone el rango durante el renderizado
property PrintPageRanges: TPdfPrintPageRanges; // solo lectura
PDF 1.7 añadió /PrintPageRange a /ViewerPreferences como una secuencia de
pares de enteros que describen los rangos de página que un visor debería preseleccionar en su cuadro de
impresión (PDF 32000-1 § 12.2 Table 150). PDFium analiza ese array y lo expone mediante esta
propiedad como un array dinámico Pascal de registros TPdfPrintPageRange, cada uno con un
StartPage y un EndPage en numeración basada en 1
Cuando el documento no incluye la entrada, el array devuelto está vacío (Length(Result) = 0)
— trátalo como "imprimir todas las páginas". Cuando se recomienda una sola página, el rango
correspondiente tiene StartPage y EndPage iguales, por ejemplo (3, 3)
para "solo la página 3"
Combina el resultado con PrintCopies, PrintScaling y PrintPaperHandling al montar un cuadro de impresión para que se puedan mostrar al usuario las cuatro pistas a la vez. Como las otras preferencias de impresión, esto es solo orientativo; PDFium no impone el rango durante el renderizado
// construir una cadena separada por comas como "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;