/ViewerPreferences /Duplex — le mode de gestion papier simplex / duplex que l’auteur du PDF souhaiterait voir par défaut dans la boîte de dialogue d’impressionproperty PrintPaperHandling: TPrintPaperHandling; // read only
L'entrée /Duplex de /ViewerPreferences recommande la manière dont l'imprimante doit gérer le papier pour le document (PDF 32000-1 § 12.2 Table 150). PDFium décode le jeton nommé et l'expose sous forme de valeur d'énumération TPrintPaperHandling :
phUndefined — l'entrée est absente. Traitez-la comme « utiliser la valeur par défaut de l'imprimante ou de la visionneuse »phSimplex — /Simplex. Impression rectophDuplexFlipShortEdge — /DuplexFlipShortEdge. Impression recto verso, les pages se retournent sur le bord court (cas typique des carnets et calendriers en paysage)phDuplexFlipLongEdge — /DuplexFlipLongEdge. Impression recto verso, les pages se retournent sur le bord long (la reliure portrait classique de type livre)Comme les autres propriétés liées à l'impression, il s'agit d'une indication intégrée au fichier par l'auteur ; PDFium ne l'impose pas. Pour honorer la préférence, votre couche d'impression doit transmettre la valeur au pilote d'imprimante. Sous Windows GDI, appelez SetPdfPrintPaperHandlingDevMode pour définir DEVMODE.dmFields et DEVMODE.dmDuplex sur DMDUP_SIMPLEX, DMDUP_VERTICAL (bord long) ou DMDUP_HORIZONTAL (bord court) avant StartDoc
Associez cette propriété à PrintScaling, PrintCopies et PrintPageRanges afin que toutes les préférences d'impression du document peuplent votre boîte de dialogue d'impression comme un ensemble cohérent de valeurs par défaut
phUndefinedphSimplex et laissez l’utilisateur remplacer
// Pre-select the duplex radio buttons and prepare the printer DevMode.
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;