diff options
author | Dan Meyers <daniel_meyers@brown.edu> | 2017-06-10 09:32:55 -0400 |
---|---|---|
committer | Kurt Jung <kurt.w.jung@gmail.com> | 2017-06-10 09:32:55 -0400 |
commit | 78cae719840c4fd9cdd4a1247842c06dde6db36e (patch) | |
tree | dc1933566d57622c16194b2813a5144a75c9ddc5 /fpdf.go | |
parent | 14c1db30737a138f8d9797cffea58783892b2fae (diff) |
add the ability to include JavaScript in PDFs (#117)
Diffstat (limited to 'fpdf.go')
-rw-r--r-- | fpdf.go | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -3028,6 +3028,11 @@ func (f *Fpdf) SetCreationDate(tm time.Time) { f.creationDate = tm } +// SetJavascript adds Adobe JavaScript to the document. +func (f *Fpdf) SetJavascript(script string) { + f.javascript = &script +} + func (f *Fpdf) putpages() { var wPt, hPt float64 var pageSize SizeType @@ -3475,6 +3480,25 @@ func (f *Fpdf) putGradients() { } } +func (f *Fpdf) putjavascript() { + if f.javascript == nil { + return + } + + f.newobj() + f.nJs = f.n + f.out("<<") + f.outf("/Names [(EmbeddedJS) %d 0 R]", f.n+1) + f.out(">>") + f.out("endobj") + f.newobj() + f.out("<<") + f.out("/S /JavaScript") + f.outf("/JS %s", f.textstring(*f.javascript)) + f.out(">>") + f.out("endobj") +} + func (f *Fpdf) putresources() { if f.err != nil { return @@ -3495,6 +3519,7 @@ func (f *Fpdf) putresources() { f.putresourcedict() f.out(">>") f.out("endobj") + f.putjavascript() if f.protect.encrypted { f.newobj() f.protect.objNum = f.n @@ -3572,6 +3597,10 @@ func (f *Fpdf) putcatalog() { } // Layers f.layerPutCatalog() + // JavaScript + if f.javascript != nil { + f.outf("/Names <</JavaScript %d 0 R>>", f.nJs) + } } func (f *Fpdf) putheader() { |