http://qs1969.pair.com?node_id=1207113


in reply to Re^3: PDF Document Level Script
in thread PDF Document Level Script

Okay, there is a way to modify document-level JS with CAM::PDF. I created a PDF with document-level JS, and below is how I replace it with a new JS code. Note that your template may work differently. For example, the JS code is stored in a pdf object, which may contain its length, or alternatively contain a reference to another pdf object that contains the length.

my $pdf = CAM::PDF->new($file); my $p3 = $pdf->getObjValue($pdf->getObjValue($pdf->getObjValue($pdf->g +etRootDict()->{Names}{value}{JavaScript}{value})->{Names}{value}[1]{v +alue})->{JS}{value}); $p3->{StreamData}{value} = <<EO_JS; this.getField("AfterSave1").display = display.hidden; this.getField("AfterSave2").display = display.hidden; this.dirty=false; EO_JS $n = $pdf->dereference(CAM::PDF::Node->new('reference', $p3->{Length}{ +value})->{value}); $n->{value}{value} = length $p3->{StreamData}{value};;

For some reason, I'm not sure that's the way CAM::PDF was meant to be used...