From 78cae719840c4fd9cdd4a1247842c06dde6db36e Mon Sep 17 00:00:00 2001 From: Dan Meyers Date: Sat, 10 Jun 2017 09:32:55 -0400 Subject: add the ability to include JavaScript in PDFs (#117) --- fpdf.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'fpdf.go') diff --git a/fpdf.go b/fpdf.go index 8ab2339..78a7c65 100644 --- a/fpdf.go +++ b/fpdf.go @@ -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 <>", f.nJs) + } } func (f *Fpdf) putheader() { -- cgit v1.2.1-24-ge1ad