There are several tools on the net, that helps you to add javascript to new PDF files - but I could not find any tool to add Javascript to existing PDF files.
Here is a python script that accomplishes that. For this you need to install the following python package (which is a modified pyPDF - found at http://pybrary.net/pyPdf/). The modified pyPDF is found at http://goo.gl/sJcMO. Or you could simply unzip the modified pyPDF in your current directory.
Help text and Usage for this script:
Here is the addjstopdf.py:
Here is a python script that accomplishes that. For this you need to install the following python package (which is a modified pyPDF - found at http://pybrary.net/pyPdf/). The modified pyPDF is found at http://goo.gl/sJcMO. Or you could simply unzip the modified pyPDF in your current directory.
Help text and Usage for this script:
$ python addjs2pdf.py
Usage: addjs2pdf.py [options] in-pdf-file out-pdf-file
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-j JAVASCRIPT, --javascript=JAVASCRIPT
javascript to embed (default embedded JavaScript is
app.alert messagebox)
-f JAVASCRIPTFILE, --javascriptfile=JAVASCRIPTFILE
javascript file to embed
add-js-to-pdf, use it to add embedded JavaScript to a PDF document that will execute automatically when the document is opened
Based on modified pyPDF http://pybrary.net/pyPdf/ and inspiration from https://DidierStevens.com
$
Here is the addjstopdf.py:
from pyPdf import PdfFileWriter, PdfFileReader
import optparse
def Main():
"""add-js-to-pdf, use it to add embedded JavaScript to a PDF document that will execute automatically when the document is opened
"""
parser = optparse.OptionParser(usage='usage: %prog [options] in-pdf-file out-pdf-file', version='%prog 0.1')
parser.add_option('-j', '--javascript', help='javascript to embed (default embedded JavaScript is app.alert messagebox)')
parser.add_option('-f', '--javascriptfile', help='javascript file to embed')
(options, args) = parser.parse_args()
if len(args) != 2:
parser.print_help()
print ''
print ' add-js-to-pdf, use it to add embedded JavaScript to a PDF document that will execute automatically when the document is opened'
print ' Based on modified pyPDF http://pybrary.net/pyPdf/ and inspiration from https://DidierStevens.com'
print ''
return
input1 = PdfFileReader(file(args[0], "rb"))
output = PdfFileWriter()
pages = input1.getNumPages()
for p in range(pages):
output.addPage(input1.getPage(p))
if options.javascript == None and options.javascriptfile == None:
javascript = """app.alert({cMsg: 'Hello from PDF JavaScript', cTitle: 'Testing PDF JavaScript', nIcon: 3});"""
elif options.javascript != None:
javascript = options.javascript
else:
try:
fileJavasScript = open(options.javascriptfile, 'rb')
except:
print "error opening file %s" % options.javascriptfile
return
try:
javascript = fileJavasScript.read()
except:
print "error reading file %s" % options.javascriptfile
return
finally:
fileJavasScript.close()
output.addJS(javascript)
outputStream = file(args[1], "wb")
output.write(outputStream)
outputStream.close()
if __name__ == '__main__':
Main()