Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript从PDF获取信息(标题、主题、作者、制作人…)_Javascript_Pdf_Adobe_Pdf Generation_Adobe Reader - Fatal编程技术网

使用javascript从PDF获取信息(标题、主题、作者、制作人…)

使用javascript从PDF获取信息(标题、主题、作者、制作人…),javascript,pdf,adobe,pdf-generation,adobe-reader,Javascript,Pdf,Adobe,Pdf Generation,Adobe Reader,我试图学习如何在pdf文件中使用javascript,以及如何从/Info对象(如author和title)中获取信息。我发现了两种在pdf中使用js的方法,我收集了两个示例,第一个有效,第二个无效。它们都执行javascript,但第二个代码无法访问/Info数据。我不明白为什么 示例1(此代码显示包含/Title内容的警报,效果良好): %PDF-1.3 1 0 obj <</Type/Catalog/Pages 5 0 R/OpenAction 3 0 R>> en

我试图学习如何在pdf文件中使用javascript,以及如何从/Info对象(如author和title)中获取信息。我发现了两种在pdf中使用js的方法,我收集了两个示例,第一个有效,第二个无效。它们都执行javascript,但第二个代码无法访问/Info数据。我不明白为什么

示例1(此代码显示包含/Title内容的警报,效果良好):

%PDF-1.3
1 0 obj
<</Type/Catalog/Pages 5 0 R/OpenAction 3 0 R>>
endobj
2 0 obj
<<
/Producer (test)
/Subject (test)
/Title (test)
>>
endobj
3 0 obj
<</Type/Action/S/JavaScript/JS 4 0 R>>
endobj
4 0 obj
<</Length 17>>
stream
app.alert(title);
endstream
endobj
5 0 obj
<<
>>
endobj
xref
trailer
<<
/Root 1 0 R
/Info 2 0 R
>>
startxref
%%EOF
%PDF-1.3
10 obj
endobj
20 obj
>
endobj
30 obj
endobj
40 obj
流动
app.alert(标题);
尾流
endobj
50 obj
>
endobj
外部参照
拖车
>
起始外部参照
%%EOF
示例2(此示例不显示任何警报,但如果我用字符串替换标题,则会显示警报)

%PDF-1.3
1 0 obj
<</Type/Catalog/Pages 5 0 R/AcroForm 3 0 R>>
endobj
2 0 obj
<<
/Producer (test)
/Subject (test)
/Title (test)
>>
endobj
3 0 obj
<</XFA [4 0 R]>>
endobj
4 0 obj
<</Length 767>>
stream
<?xml version="1.0" encoding="UTF-8" ?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
<config xmlns="http://www.xfa.org/schema/xci/1.0/"><present>
<pdf><interactive>1</interactive><version>1.6</version>
</pdf><xdp><packets>*</packets></xdp><destination>pdf</destination></present></config>
<template xmlns="http://www.xfa.org/schema/xfa-template/2.5/">
    <subform layout="tb" locale="en_US" name="form">
        <subform>
            <field>
                <event activity="initialize" name="eventName">
                        <script contentType="application/x-javascript">
                        app.alert(title)
                        </script>
                </event>
            </field>
        </subform>
    </subform>
</template>
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data></xfa:data></xfa:datasets>
</xdp:xdp>
endstream
endobj
5 0 obj
<<
>>
endobj
xref
trailer
<<
/Root 1 0 R
/Info 2 0 R
>>
startxref
%%EOF
%PDF-1.3
10 obj
endobj
20 obj
>
endobj
30 obj
endobj
40 obj
流动
11.6
*pdf
应用程序警报(标题)
尾流
endobj
50 obj
>
endobj
外部参照
拖车
>
起始外部参照
%%EOF
(这两个pdf源都不是真正有效的pdf,但是js被执行了,我删除了很多东西以使它们更易于阅读)


有人知道为什么app.alert(title)在第二个示例中不起作用吗?

这确实是一条评论,但出于格式和可读性的原因,我使用了答案

如果你有

/Info

那你就可以了

app.alert(info.author+info.title+info.producer)


在你的情况下,我想你需要先拿到你的文件。我怀疑你能做你想做的事情,因为你似乎在pdf中嵌入了一个xml文件。我不希望它工作

app.alert(event.target.title)

我也尝试了info.title,但在第二个不起作用的示例中,我想您是对的,似乎无法从xml中执行。您可以尝试app.alert(document)app.alert(this)app.alert(parent)app.alert(this)和app.alert(parent)show this alert=>[object XFAObject],文档未显示警报,因此可能未定义。我还尝试了app.alert(app.doc),因为我看到app.doc正在您显示给我的url中使用,app作为[object app]存在,但app.doc和app.doc都未定义。