How to enhance your PDF forms with JavaScript: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 33: Line 33:
'''1. Insert the current date into a Text Field (DateField) when the PDF is opened.'''
'''1. Insert the current date into a Text Field (DateField) when the PDF is opened.'''


function date()
''function date()


{var fld = this.getField("DateField");
{var fld = this.getField("DateField");
Line 43: Line 43:
}
}


date(); // call my function
date(); // call my function''
 


To place this function, on Menu select Edit - > JavaScripts -> Add
To place this function, on Menu select Edit - > JavaScripts -> Add
Line 55: Line 54:




function Year()
''function Year()


{var fld1 = this.getField("Year");
{var fld1 = this.getField("Year");
Line 65: Line 64:
}
}


Year(); // call my function
Year(); // call my function''
 




Line 78: Line 78:




function HideView()
''function HideView()


{var title = this.getField("zzztext");
{var title = this.getField("zzztext");
Line 86: Line 86:
}
}
   
   
HideView();// call my function
HideView();// call my function''
 




Line 93: Line 94:


You can cut and paste the code from this page. There must be a Text Field on the page named zzztext
You can cut and paste the code from this page. There must be a Text Field on the page named zzztext




'''4. Create a Print Button'''
'''4. Create a Print Button'''




Line 109: Line 112:




var pp = this.getPrintParams();
''var pp = this.getPrintParams();
 


pp.interactive = pp.constants.interactionLevel.silent;
pp.interactive = pp.constants.interactionLevel.silent;


pp.printContent = pp.constants.printContents.formFieldsOnly;
pp.printContent = pp.constants.printContents.formFieldsOnly;


this.print(pp);
 
this.print(pp);''




Line 121: Line 127:




function Print()
''function Print()


{var oDate = new Date(); // get the current date time object  
{var oDate = new Date(); // get the current date time object  
Line 128: Line 134:


this.getField("TimePrint").value = "Printed: " + sDate + "m"; // fillin the field value  
this.getField("TimePrint").value = "Printed: " + sDate + "m"; // fillin the field value  
   
   
}
}


Print();// call my function''


Print();// call my function





Revision as of 07:00, 31 May 2007

Introduction

If you have attempted the previous PDF how-to’s, you will be aware that you can create some powerful forms by using Scribus and Acrobat Reader. Unfortunately, Adobe has put restrictions on Reader so that it does not have all the capabilities of Acrobat Professional. However, there are many useful features still available, especially with using JavaScript to make Scribus PDF forms very useful.


Information and References Available

The Adobe Web Site has two free references available on JavaScripting

http://www.adobe.com/devnet/acrobat/javascript.html

Acrobat JavaScript Scripting Guide (PDF, 2.5M)

Acrobat JavaScript Scripting Reference (PDF, 7.1M)

Acrobat Community

JavaScript Corner

http://www.acrobatusers.com/tech_corners/javascript_corner/index.php

JavaScript User Forums

http://www.adobeforums.com/cgi-bin/webx?13@@.3bbedaa6

PDF Planet

http://www.planetpdf.com/


Some useful JavaScript examples

1. Insert the current date into a Text Field (DateField) when the PDF is opened.

function date()

{var fld = this.getField("DateField");


fld.value = util.printd("dd mmmm yyyy",new Date());


}

date(); // call my function

To place this function, on Menu select Edit - > JavaScripts -> Add


You can cut and paste the code from this page. There must be a Text Field on the page named DateField.


2. Insert the current year into a Text Field (Year) when the PDF is opened.


function Year()

{var fld1 = this.getField("Year");


fld1.value = util.printd("yyyy",new Date());


}

Year(); // call my function


To place this function, on Menu select Edit - > JavaScripts -> Add


You can cut and paste the code from this page. There must be a Text Field on the page named Year


3. Hide a Text Field (zzztext) when the PDF is viewed on Screen but allow the field to Print.


function HideView()

{var title = this.getField("zzztext");

title.display = display.noView;

}

HideView();// call my function


To place this function, on Menu select Edit - > JavaScripts -> Add


You can cut and paste the code from this page. There must be a Text Field on the page named zzztext


4. Create a Print Button


Create a Button Field

Right click with your mouse on the “Print” Button

A menu pops up and select PDF Options –> Field Properties

Next select the Action Tab –> choose JavaScript and then in the default Mouse Up event -

Click on Edit and insert the following


var pp = this.getPrintParams();


pp.interactive = pp.constants.interactionLevel.silent;


pp.printContent = pp.constants.printContents.formFieldsOnly;


this.print(pp);


5. Create a Text Field with the Date Printed which only appears on the printed document.


function Print()

{var oDate = new Date(); // get the current date time object

var sDate = util.printd("mm/dd/yyyy h:mm t" , oDate); // format date time string

this.getField("TimePrint").value = "Printed: " + sDate + "m"; // fillin the field value

}

Print();// call my function


To place this function, on Menu select Edit - > JavaScripts -> Add


You can cut and paste the code from this page. There must be a Text Field on the page named TimePrint.


You will also need to create a HideView function for the TimePrint Field some that the field is hidden from view until the document is printed