Skip to main content
Participant
July 15, 2020
Answered

Print Dialog Presets - Change Default DuplexMode attribute

  • July 15, 2020
  • 1 reply
  • 1344 views

Hi there,

How can I change default value of DuplexMode property in Print Dialog Presets to 'Duplex Flip Long Edge'? I need every new PDF file to be created with duplex mode by default. Any suggestions?

 

Or is it possible to achieve this programatically, say using JavaScript etc.?

This topic has been closed for replies.
Correct answer ls_rbls

Sure !

 

Below is a script that I was able to figure out to help another user. 

 

I started learning JavaScript in January 2020 (still learning), and in about a month and a half I was able to come up with this: 

 

 

 

app.alert("Document is now Printing");

var pp2 = this.getPrintParams();
pp2.firstPage = 2;
pp2.lastPage = 6;
pp2.interactive = pp2.constants.interactionLevel.automatic;
pp2.DuplexType = pp2.constants.duplexTypes.DuplexFlipLongEdge;
pp2.pageHandling = pp2.constants.handling.fit;
pp2.printerName = "";
if (this.getField("CH.2").value == "Yes") {this.print(pp2)};

var p2 = app.thermometer; 
p2.duration = this.print(pp2);
p2.begin();
for ( var i = 0; i < this.print(pp2); i++)
{
p2.value = i;
p2.text = "Printing pages 3-5"; break; 
}
p2.end(); 


var pp4 = this.getPrintParams();
pp4.firstPage = 9;
pp4.lastPage = 9;
pp4.interactive = pp4.constants.interactionLevel.automatic;
pp4.DuplexType = pp4.constants.duplexTypes.simplex;
pp4.pageHandling = pp4.constants.handling.fit;
pp4.printerName = "";
if (this.getField("CH.4").value == "Yes") {this.print(pp4)};

var p4 = app.thermometer; 
p4.duration = this.print(pp2);
p4.begin();
for ( var i = 0; i < this.print(pp4); i++)
{
p4.value = i;
p4.text = "Printing page 8"; break; 
}
p4.end();


var pp6 = this.getPrintParams();
pp6.firstPage = 11;
pp6.lastPage = 16;
pp6.interactive = pp6.constants.interactionLevel.automatic;
pp6.DuplexType = pp6.constants.duplexTypes.DuplexFlipLongEdge;
pp6.pageHandling = pp6.constants.handling.fit;
pp6.printerName = "";
if (this.getField("CH.6").value == "Yes") {this.print(pp6)};

var p6 = app.thermometer; 
p6.duration = this.print(pp6);
p6.begin();
for ( var i = 0; i < this.print(pp6); i++)
{
p6.value = i;
p6.text = "Printing pages 10-15"; break; 
}
p6.end();


var pp8 = this.getPrintParams();
pp8.firstPage = 17;
pp8.lastPage = 17;
pp8.interactive = pp8.constants.interactionLevel.automatic;
pp8.DuplexType = pp8.constants.duplexTypes.simplex;
pp8.pageHandling = pp8.constants.handling.fit;
pp8.printerName = "";
if (this.getField("CH.8").value == "Yes") {this.print(pp8)};

var p8 = app.thermometer; 
p8.duration = this.print(pp8);
p8.begin();
for ( var i = 0; i < this.print(pp8); i++)
{
p8.value = i;
p8.text = "Printing page 16"; break; 
}
p8.end();


var pp9 = this.getPrintParams();
pp9.printRange=[[22,22]]
pp9.printRange.push([23,24]);
pp9.interactive = pp9.constants.interactionLevel.silent;
pp9.pageHandling = pp9.constants.handling.fit;
pp9.printerName = "";
this.print(pp9);

var p9 = app.thermometer; 
p9.duration = this.print(pp9);
p9.begin();
for ( var i = 0; i < this.print(pp9); i++)
{
p9.value = i;
p9.text = "Printing pages 21-23"; break; 
}
p9.end();

 

 

 

 

You can use the original discussion as a reference  here (back in 17 February 20202):    Print based on boxes checked 

 

And there are plenty of excellent tutorials and discussions here in the forums that you can search and find useful.

 

But everything you need to know about the  getPrintParams method   is very clearly explained with examples in the following guidance:

 

 

So with some reading it is really not that complicated. It could get really complicated though. 

 

Be aware that the reference above is almost 800 pages long, so happy reading!

 

NOTE:

In my personal opinion, I did all the work for that other user and the individual never marked my solution as correct answer; that kind of hurt my "Adobe" wannabe..neverwas... Alter-ego ... specially after so much effort. 

 

But anyway, there's an old Japanese proverb that one old teacher shared with me when I was younger:

 

"Empty yourself completely to be filled up abundantly"

1 reply

ls_rbls
Community Expert
Community Expert
August 7, 2020

Yes you can achieve this programmatically with JavaScript.

 

I personally prefer this method  since it gives you the felxibility to print the entire document to one printer, or, to even select specific pages of your PDF (or a range of pages)  and output each print session to different printers in a networked enviornment. 

 

Let's say you have a page that needs to be printed for someone in  human resources in a different office, but you also need to send for review about 10 other pages of the same document to the finance office; you can instruct the print action to programatically output these print sets to a different  printer physically located in those areas. And all is done  with a single click of a button using a  mouse-up action with a button, for example.

SapekshAuthor
Participant
August 7, 2020

Thank for your reply. Would you care to elaborate a little ? At least could you provide the JS class and method name in Acrobat that I can make use of to do this or any reference thread on this topic.

ls_rbls
Community Expert
ls_rblsCommunity ExpertCorrect answer
Community Expert
August 7, 2020

Sure !

 

Below is a script that I was able to figure out to help another user. 

 

I started learning JavaScript in January 2020 (still learning), and in about a month and a half I was able to come up with this: 

 

 

 

app.alert("Document is now Printing");

var pp2 = this.getPrintParams();
pp2.firstPage = 2;
pp2.lastPage = 6;
pp2.interactive = pp2.constants.interactionLevel.automatic;
pp2.DuplexType = pp2.constants.duplexTypes.DuplexFlipLongEdge;
pp2.pageHandling = pp2.constants.handling.fit;
pp2.printerName = "";
if (this.getField("CH.2").value == "Yes") {this.print(pp2)};

var p2 = app.thermometer; 
p2.duration = this.print(pp2);
p2.begin();
for ( var i = 0; i < this.print(pp2); i++)
{
p2.value = i;
p2.text = "Printing pages 3-5"; break; 
}
p2.end(); 


var pp4 = this.getPrintParams();
pp4.firstPage = 9;
pp4.lastPage = 9;
pp4.interactive = pp4.constants.interactionLevel.automatic;
pp4.DuplexType = pp4.constants.duplexTypes.simplex;
pp4.pageHandling = pp4.constants.handling.fit;
pp4.printerName = "";
if (this.getField("CH.4").value == "Yes") {this.print(pp4)};

var p4 = app.thermometer; 
p4.duration = this.print(pp2);
p4.begin();
for ( var i = 0; i < this.print(pp4); i++)
{
p4.value = i;
p4.text = "Printing page 8"; break; 
}
p4.end();


var pp6 = this.getPrintParams();
pp6.firstPage = 11;
pp6.lastPage = 16;
pp6.interactive = pp6.constants.interactionLevel.automatic;
pp6.DuplexType = pp6.constants.duplexTypes.DuplexFlipLongEdge;
pp6.pageHandling = pp6.constants.handling.fit;
pp6.printerName = "";
if (this.getField("CH.6").value == "Yes") {this.print(pp6)};

var p6 = app.thermometer; 
p6.duration = this.print(pp6);
p6.begin();
for ( var i = 0; i < this.print(pp6); i++)
{
p6.value = i;
p6.text = "Printing pages 10-15"; break; 
}
p6.end();


var pp8 = this.getPrintParams();
pp8.firstPage = 17;
pp8.lastPage = 17;
pp8.interactive = pp8.constants.interactionLevel.automatic;
pp8.DuplexType = pp8.constants.duplexTypes.simplex;
pp8.pageHandling = pp8.constants.handling.fit;
pp8.printerName = "";
if (this.getField("CH.8").value == "Yes") {this.print(pp8)};

var p8 = app.thermometer; 
p8.duration = this.print(pp8);
p8.begin();
for ( var i = 0; i < this.print(pp8); i++)
{
p8.value = i;
p8.text = "Printing page 16"; break; 
}
p8.end();


var pp9 = this.getPrintParams();
pp9.printRange=[[22,22]]
pp9.printRange.push([23,24]);
pp9.interactive = pp9.constants.interactionLevel.silent;
pp9.pageHandling = pp9.constants.handling.fit;
pp9.printerName = "";
this.print(pp9);

var p9 = app.thermometer; 
p9.duration = this.print(pp9);
p9.begin();
for ( var i = 0; i < this.print(pp9); i++)
{
p9.value = i;
p9.text = "Printing pages 21-23"; break; 
}
p9.end();

 

 

 

 

You can use the original discussion as a reference  here (back in 17 February 20202):    Print based on boxes checked 

 

And there are plenty of excellent tutorials and discussions here in the forums that you can search and find useful.

 

But everything you need to know about the  getPrintParams method   is very clearly explained with examples in the following guidance:

 

 

So with some reading it is really not that complicated. It could get really complicated though. 

 

Be aware that the reference above is almost 800 pages long, so happy reading!

 

NOTE:

In my personal opinion, I did all the work for that other user and the individual never marked my solution as correct answer; that kind of hurt my "Adobe" wannabe..neverwas... Alter-ego ... specially after so much effort. 

 

But anyway, there's an old Japanese proverb that one old teacher shared with me when I was younger:

 

"Empty yourself completely to be filled up abundantly"