使用 iText 从 PDF 获取 Javascript
Getting Javascript from PDF using iText
我正在使用 iText 尝试从 PDF 的字段中获取 Javascript。我注意到使用 GetAdditionalAction()
会得到我需要的 Javascript ,除非代码有一定的长度。如果我将 JS 放在一个字段上,让我们说 onMouseEnter
超过大约 5 行,GetAdditionalAction()
会将此代码截断为字母数字字符串。在我的示例中,我试图在 if 语句中获取一些代码,但由于它太长,它 returns 类似于:630 0 R
。我在网上找不到任何关于此的信息,也找不到任何其他人在谈论它。将不胜感激。
If I put JS on a field for let's say onMouseEnter
that is more than around ~5 lines long, GetAdditionalAction()
will truncate this code into an alphanumeric string.
实际上GetAdditionalAction()
不截断。您观察到的是,在生成 JavaScript 操作时可以选择 PDF 生成器:
JS –
text string or
text stream –
(Required) A text string or text stream containing the JavaScript script to be executed.
PDFDocEncoding or Unicode encoding (the latter identified by the Unicode prefix U+FEFF) shall be used to encode the contents of the string or stream.
(ISO 32000-1,Table 217 – 特定于 JavaScript 操作的附加条目)
显然你的 PDF 生成器使用 文本字符串 如果脚本长达 ~5 行长 和 文本流 否则。因此,当您从操作字典 action
中检索 JS 条目的值时,执行类似
的操作
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]
}
我正在使用 iText 尝试从 PDF 的字段中获取 Javascript。我注意到使用 GetAdditionalAction()
会得到我需要的 Javascript ,除非代码有一定的长度。如果我将 JS 放在一个字段上,让我们说 onMouseEnter
超过大约 5 行,GetAdditionalAction()
会将此代码截断为字母数字字符串。在我的示例中,我试图在 if 语句中获取一些代码,但由于它太长,它 returns 类似于:630 0 R
。我在网上找不到任何关于此的信息,也找不到任何其他人在谈论它。将不胜感激。
If I put JS on a field for let's say
onMouseEnter
that is more than around ~5 lines long,GetAdditionalAction()
will truncate this code into an alphanumeric string.
实际上GetAdditionalAction()
不截断。您观察到的是,在生成 JavaScript 操作时可以选择 PDF 生成器:
JS – text string or text stream – (Required) A text string or text stream containing the JavaScript script to be executed. PDFDocEncoding or Unicode encoding (the latter identified by the Unicode prefix U+FEFF) shall be used to encode the contents of the string or stream.
(ISO 32000-1,Table 217 – 特定于 JavaScript 操作的附加条目)
显然你的 PDF 生成器使用 文本字符串 如果脚本长达 ~5 行长 和 文本流 否则。因此,当您从操作字典 action
中检索 JS 条目的值时,执行类似
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]
}