Получение информации (название, тема, автор, продюсер ...) из PDF с использованием JavaScript - PullRequest
0 голосов
/ 16 июня 2011

Я пытаюсь узнать, как использовать javascript внутри pdf-файлов и как получить информацию из объекта / Info, например, автора и заголовка. Я нашел два способа использовать js внутри PDF, и я собрал 2 примера, первый работает, второй нет. Они оба выполняют javascript, но второй код не может получить доступ к данным / Info. Я не могу понять, почему.

Пример 1 (Этот код показывает предупреждение с содержанием / Заголовок, работает нормально):

%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) не работает во втором примере?

Ответы [ 2 ]

1 голос
/ 13 августа 2011

app.alert(event.target.title);

0 голосов
/ 16 июня 2011

Это действительно комментарий, но я использую ответ для форматирования и удобства чтения.

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

Если у вас есть

/Info <</Author(Hello) /Title( World) /Producer( !)>>

тогда вы можете сделать

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

В вашем случае, я думаю, вам нужно сначала получить документ, в котором вы находитесь. Я сомневаюсь, что вы можете делать то, что вы хотите, так как вы, кажется, встраиваете XML-файл в PDF. Я бы не ожидал, что это сработает

...