Pregunta

Estoy tratando de aprender a usar JavaScript dentro de archivos PDF y cómo obtener información del objeto /info de información como el autor y el título. He encontrado dos formas de usar JS dentro de un PDF, y he reunido 2 muestras, las primeras obras, la segunda no. Ambos ejecutan JavaScript, pero el segundo código no puede acceder a los datos /información. No puedo entender por qué.

Muestra 1 (este código muestra una alerta con el contenido de /Título, funciona bien):

%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

Muestra 2 (esta no muestra ninguna alerta, pero si reemplazo el título con una cadena, muestra la alerta);

%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

(Ambas fuentes de PDF no son PDFS realmente válidas, pero el JS se ejecuta, eliminé muchas cosas para que sean más fáciles de leer)

¿Alguien sabe por qué App.alert (título) no funciona en la segunda muestra?

¿Fue útil?

Solución

Este es realmente un comentario, pero uso la respuesta por razones de formato y legibilidad.

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

Si usted tiene

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

Entonces puedes hacer

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

En su caso, supongo que debe obtener el documento en el que se encuentra primero. Dudo que puedas hacer lo que quieras, ya que parece que estás incrustando un archivo XML dentro del PDF. No esperaría que funcione

Otros consejos

app.alert(event.target.title);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top