/ViewerPreferences /Duplex del documento —
el modo de manejo de papel simple / dúplex al que el autor del PDF querría que el diálogo de impresión
se ajustara por defectoproperty PrintPaperHandling: TPrintPaperHandling;// solo lectura
La entrada /Duplex de /ViewerPreferences recomienda cómo debe
manejar el papel la impresora para el documento (PDF 32000-1 § 12.2 Tabla 150). PDFium
decodifica el token con nombre y lo expone como un valor del enumerado TPrintPaperHandling:
phUndefined — la entrada está ausente. Trátelo como "usar el valor predeterminado de la impresora/visor".phSimplex — /Simplex. Impresión a una cara.phDuplexFlipShortEdge — /DuplexFlipShortEdge. Impresión a dos caras, las páginas se voltean por el borde corto (típico de cuadernos y calendarios estilo horizontal).phDuplexFlipLongEdge — /DuplexFlipLongEdge. Impresión a dos caras, las páginas se voltean por el borde largo (la encuadernación estándar de libro vertical).Al igual que las demás propiedades relacionadas con impresión, esta es una pista incorporada en el
archivo por el autor; PDFium no la aplica. Para respetar la preferencia, su capa de impresión debe
reenviar el valor al controlador de impresora. Bajo Windows GDI, llame a
SetPdfPrintPaperHandlingDevMode para establecer DEVMODE.dmFields y
DEVMODE.dmDuplex a DMDUP_SIMPLEX,
DMDUP_VERTICAL (borde largo) o DMDUP_HORIZONTAL (borde corto)
antes de StartDoc.
Combine esta propiedad con PrintScaling, PrintCopies y PrintPageRanges para que todas las preferencias de impresión del documento rellenen su diálogo de impresión como un conjunto predeterminado coherente.
phUndefined.phSimplex y deje que el usuario lo anule.
// Preseleccionar los botones de radio dúplex y preparar el DevMode de la impresora
begin
case Pdf1.PrintPaperHandling of
phSimplex: radioSimplex.Checked := True;
phDuplexFlipLongEdge: radioDuplexLong.Checked := True;
phDuplexFlipShortEdge: radioDuplexShort.Checked := True;
else
radioPrinterDefault.Checked := True; // phUndefined
end;
if SetPdfPrintPaperHandlingDevMode(DevMode, Pdf1.PrintPaperHandling) then
ApplyPrinterDevMode(DevMode);
end;