使用iText从PDF中获取Javascript

问题描述 投票:0回答:1

我正在使用iText尝试从一个PDF的字段中获取Javascript。我注意到,使用 GetAdditionalAction() 会让我得到我需要的Javascript,除非代码有一定的长度。如果我把JS放在一个字段上,比如说...。onMouseEnter 这是超过约5行长。GetAdditionalAction() 将把这些代码截断成一个字母数字字符串。在我的例子中,我试图在if语句中获取一些代码,但由于太长,它返回的是这样的内容。630 0 R. 我在网上找不到任何关于这个问题的信息,也找不到其他人谈论这个问题。如果能得到帮助,我将非常感激。

javascript pdf itext adobe acrobat
1个回答
0
投票

如果我把JS放在一个字段上,比方说 onMouseEnter 这是超过约5行长。GetAdditionalAction() 将把这段代码截断成一个字母数字字符串。

实际上 GetAdditionalAction() 不截断。你观察到的是,在生成PDF生成器时,有一个选择,就是在生成 脚本语言 行动。

JS - 文本串或文本流 - (需要) 一个文本字符串或文本流,包含要执行的JavaScript脚本。 PDFDocEncoding 或Unicode编码(后者由Unicode前缀 U+FEFF)应被用于对字符串或流的内容进行编码。

(ISO 32000-1,表217--特定于JavaScript动作的附加条目)

显然,你的PDF生成器使用了一个 字符串 如果剧本符合 ~5行长 和a 文本流 否则。因此,当你检索到了 JS 词条 action,做一些像

PdfObject direct = action.Get(PdfName.JS, true);
if (direct == null)
{
    [handle case of missing JavaScript script in action]
}
else if (direct.GetObjectType() == PdfObject.STRING)
{
    PdfString scriptString = (PdfString) direct;
    [handle case of JavaScript script contained in text string]
}
else if (direct.GetObjectType() == PdfObject.STREAM)
{
    PdfStream scriptStream = (PdfStream) direct;
    [handle case of JavaScript script contained in text stream]
}
else
{
    [handle case of invalid JavaScript script object type]
}
© www.soinside.com 2019 - 2024. All rights reserved.