Ghostscript是否支持将JavaScript插入现有PDF?
我在文档中未找到任何相关内容: 我确实找到了一个在每一页上插入水印的相关例子,所以这似乎是可能的Ghostscript是否支持将JavaScript插入现有PDF?,javascript,pdf,ghostscript,postscript,Javascript,Pdf,Ghostscript,Postscript,我在文档中未找到任何相关内容: 我确实找到了一个在每一页上插入水印的相关例子,所以这似乎是可能的 但是,从该示例中不清楚如何插入Javascript。Ghostscript的pdfwrite设备支持许多PostScript pdfmark操作(但不是全部)。不,没有支持哪一个的文档,但广义上说,除了逻辑结构的文档之外,其他的都支持 pdfmark参考(可从Adobe网站的某处获得…)描述了pdfmark语法,结合PDF参考手册(或ISO规范),我们可以看到JavaScript仅限于小部件注释。
但是,从该示例中不清楚如何插入Javascript。Ghostscript的pdfwrite设备支持许多PostScript pdfmark操作(但不是全部)。不,没有支持哪一个的文档,但广义上说,除了逻辑结构的文档之外,其他的都支持 pdfmark参考(可从Adobe网站的某处获得…)描述了pdfmark语法,结合PDF参考手册(或ISO规范),我们可以看到JavaScript仅限于小部件注释。pdfmark引用中甚至有en示例,所以我做了一些显而易见的事情,并尝试了一下。下面的代码执行“something”。我假定它是正确的,但无法确定(也就是说,PDF内容是正确的;我不知道JavaScript):
[
/子类型/小部件
/Rect[216 647 361 684]
/F 4
/T(SL文本)
/英尺/英尺
/DA(/Helv 14 Tf 0 1 rg)
/五(5)
/AA
/F>
>>/ANN pdfmark
展示页
它绘制了一个浅蓝色的矩形,当你将鼠标移到它上面绘制了一个黑色边框,当你点击它时,它会显示值5。用数字值替换5,然后按回车键,它在蓝色背景上变成$value.00。看起来不错
请注意,上面链接的示例对您没有帮助,这与纯PostScript有关。要添加这样的注释,您需要:
Ghostscript的pdfwrite设备支持许多PostScript pdfmark操作(但不是全部)。不,没有支持哪些操作的文档,但从广义上讲,除了逻辑结构操作之外,其他操作都支持 pdfmark参考(可从Adobe网站的某处获得…)描述了pdfmark语法,并与PDF参考手册(或ISO规范)结合使用我们可以看到JavaScript仅限于小部件注释。pdfmark参考中甚至有en示例,所以我做了显而易见的事情,并尝试了它。下面的代码做了一些事情。我假设它是正确的,但无法确定(也就是说,PDF内容是正确的;我不知道JavaScript):
[
/子类型/小部件
/Rect[216 647 361 684]
/F 4
/T(SL文本)
/英尺/英尺
/DA(/Helv 14 Tf 0 1 rg)
/五(5)
/AA
/F>
>>/ANN pdfmark
展示页
它绘制了一个浅蓝色的矩形,当你将鼠标移到它上面绘制了一个黑色边框,当你点击它时,它会显示值5。用数字值替换5,然后按回车键,它在蓝色背景上变成$value.00。看起来不错
请注意,上面链接的示例对您没有帮助,这与纯PostScript有关。要添加这样的注释,您需要:
如果您想在文档加载时执行JavaScript,可以这样做(多亏了这个)
[/_objdef{MyAlert}/type/dict/OBJ pdfmark
[{MyAlert}>>
/打上PDF标记
[{Catalog}>/PUT pdfmark
复制的完整步骤将是:
gs
命令).ps
)文件旁边的文件夹中cd
放入该文件夹gs-dNOPAUSE-dBATCH-sDEVICE=pdfwrite-sOutputFile=newpdf.pdf myps.ps mypdf.pdf
(显然用实际文件名替换myps.ps
和mypdf.pdf
)newpdf.pdf
以验证它是否有效- Acrobat使用的语法与您在传统web开发中可能使用的语法不完全相同(因此示例中的
,而不是传统的app.alert
),不要仅仅假设您尝试使用的函数存在alert()
- 您需要使用反斜杠来转义JavaScript中的括号(例如,
app.alert\(“Hello World”)
- 您可以设置一个用于帮助JS调试的
[/_objdef{MyAlert}/type/dict/OBJ pdfmark
[{MyAlert}>>
/打上PDF标记
[{Catalog}>/PUT pdfmark
复制的完整步骤将是:
gs
命令).ps
)文件旁边的文件夹中cd
放入该文件夹gs-dNOPAUSE-dBATCH-sDEVICE=pdfwrite-sOutputFile=newpdf.pdf myps.ps mypdf.pdf
(显然用实际文件名替换myps.ps
和mypdf.pdf
)newpdf.pdf
以验证它是否有效- Acrobat不使用精确的
[ /Subtype /Widget /Rect [216 647 361 684] /F 4 /T (SL Text) /FT /Tx /DA (/Helv 14 Tf 0 0 1 rg) /V (5) /AA << /K << /S /JavaScript /JS (AFNumber_Keystroke\(2, 0, 0, 0, "$", true\);) >> /F << /S /JavaScript /JS (AFNumber_Format\(2, 0, 0, 0, "$", true\);) >> >> /ANN pdfmark showpage
[ /_objdef {MyAlert} /type /dict /OBJ pdfmark [ {MyAlert} << /JavaScript << /Names [ (MyAlertCode) << /S /JavaScript /JS (app.alert\("Hello world 1."\);app.alert\("Hello world 2."\);) >> ] >> >> /PUT pdfmark [ {Catalog} << /Names {MyAlert} >> /PUT pdfmark