【问题标题】:Getting Info (title, subject, author, producer...) from PDF using javascript使用 javascript 从 PDF 获取信息(标题、主题、作者、制作人...)
【发布时间】:2011-09-16 01:47:38
【问题描述】:

我正在尝试学习如何在 pdf 文件中使用 javascript,以及如何从 /Info 对象中获取信息,例如作者和标题。我找到了两种在 pdf 中使用 js 的方法,并且我将 2 个示例放在一起,第一个有效,第二个无效。它们都执行 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

示例 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 源都不是真正有效的 pdf,但 js 被执行,我删除了很多东西以使其更易于阅读)

有人知道为什么 app.alert(title) 不适用于第二个示例吗?

【问题讨论】:

    标签: javascript pdf adobe pdf-generation adobe-reader


    【解决方案1】:

    app.alert(event.target.title);

    【讨论】:

      【解决方案2】:

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

      http://corkami.googlecode.com/svn-history/r503/wiki/PDFTricks.wiki

      如果你有

      /Info &lt;&lt;/Author(Hello) /Title( World) /Producer( !)&gt;&gt;

      那你就可以了

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

      在您的情况下,我猜您需要先获取您所在的文档。我怀疑你能做你想做的事,因为你似乎在 pdf 中嵌入了一个 xml 文件。我不希望它起作用

      【讨论】:

      • 我也试过 info.title 但在第二个示例中不起作用,我想你是对的,看起来不可能从 xml 中做到这一点。
      • 你能试试 app.alert(document) app.alert(this) app.alert(parent)
      • app.alert(this) 和 app.alert(parent) 显示此警报 => [object XFAObject],文档未显示警报,因此可能未定义。我也尝试了 app.alert(app.doc) 因为我看到 app.doc 在您显示给我的 url 中使用,app 作为 [object App] 存在,但 app.doc 和 app.document 都未定义。
      猜你喜欢
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多