删除嵌入在pdf中的javascript打印代码

Pil*_*pes 3 javascript pdf

我有一个生成PDF的服务器,我没有权限或能够更改服务器上的设置.

当服务器生成pdf时,它会将以下javascript代码嵌入到文件中,这样当任何PDF阅读器/查看器打开它时,PRINT DOCUMENT屏幕将自动打开.这非常不方便且令人沮丧.

一开始文件中的代码如下所示:

%PDF-1.4 %âãÏÓ 1 0 obj <</S/JavaScript/JS(this.print\(true , 0,this.numPages-1,false\);\r)>> endobj 3 0 obj <</Length 10/Filter/FlateDecode>>stream xœ+ä SNIP

我认为删除javascript行并防止弹出自动打印屏幕将是一件容易的事.

我试过这个(只是做了一个字符串搜索并替换并删除了第4行).这会停止出现打印屏幕 - 但是当在几个PDF查看器(goodreader等)中打开时,会立即标记为损坏的PDF.

我可以单击修复选项,一切正常,但我想知道,有什么我可以用一些NOOP代码替换javascript代码,以防止文件损坏同时仍然阻止打印页面?

这是源文件的链接:https://www.dropbox.com/s/kziy6evi57cfhb3/2014-04-04_EIKY.pdf(800k)

有没有办法取消pdf对象或类似的东西?

谢谢.

Fra*_*bot 7

由于PDF已进行检查以确保内容长度在某些点未发生更改,因此无法添加或删除字符.但你可以改变它们.您可以像这样更改它:

<</S/JavaScript/JS(this.print\(true , 0,this.numPages-1,false\);\r)>>
Run Code Online (Sandbox Code Playgroud)

对此

<</S/JavaScript/JS(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\r)>>
Run Code Online (Sandbox Code Playgroud)

例如.


小智 6

最简单的方法:

  1. 使用记事本++或类似的编辑器打开文件。
  2. 找到触发打印对话框的 javascript 代码。您可以使用编辑器的查找对话框(ctl+f)并使用字符串“this.print”。其余代码可能会因文档而异。
  3. 选择JS指令括号内的所有字符并统计字符数。例如

    /JS ( this.print({bUI:true,bSilent:false,bShrinkToFit:true}); )

    见附图1

  4. 将括号内的所有内容替换为精确数量的分号。例如

    /JS( ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; )

  5. 保存文档。