Ejecutar script al abrir un pdf

nullVaya por delante que el objetivo de este artículo no es explicar cómo aprovechar alguna vulnerabilidad de los documentos PDF para obtener información de usuarios desprevenidos.

La idea es indicar la forma de ejecutar código javascript al abrir cualquier documento pdf de modo que podamos prepararlo convenientemente antes de que el usuario comience a introducir datos.

Expliquemos el ejemplo

A modo de ejemplo crearemos con Scribus un formulario pdf sencillo formado por una etiqueta  y una caja de texto en la que mostraremos la fecha del sistema cuando se abra el documento.

Cómo ejecutar el script

La idea es sencilla, nos basaremos en la forma de funcionar javascript para conseguir que cualquier función que definamos (se podría hacer sin escribir ninguna pero, dentro de una función, queda mucho más limpio y claro) se ejecute al abrir el documento.

Sea el siguiente código

function Year()
{
this.getField(“Texto2”).value = util.printd(“dd/mm/yyyy”,new Date());
}

Year();

donde:

  1. podríamos haber creado tantas funciones como fuese necesario (en el ejemplo nos hemos limitado a incluir la función Year()).
  2. Texto2 es la caja de texto del documento pdf en la que queremos que aparezca la fecha actual.
  3. Util.printd(…) es una función que nos permite formatear al formato dd/mm/yyyy la fecha del sistema (Date()).

El truco está en colocar, tras todas las definiciones de función (las que empiezan por function) una llamada a aquella que queramos que se ejecute al abrir el documento (en el ejemplo el Year(); al final del código)

Cómo definir el código javaScript

Buscamos la siguiente entrada de menú

null

Pulsamos el botón Añadir script

null

Le damos un nombre (en el ejemplo jasv) al bloque de funciones que vamos a definir

null

Y rellenamos con el código que hemos visto en el apartado anterior.

Conclusión

Truco sencillo que nos permitirá preparar nuestro documento antes de que el usuario rellene el formulario pdf con sus datos.

Aunque la aplicación de este truco queda a la imaginación del lector algunos ejemplos podrían ser:

  • Mostrar la fecha actual en algún campo del formulario.
  • Conectar contra algún servidor para obtener información que pueda resultar de interés al usuario.
  • Generar un identificador único para el documento.

Para aquellos que lo deseen, pueden descargar del siguiente enlace el documento que he generado como ejemplo para el presente artículo; espero que os sirva para aclarar cualquier duda que os pueda surgir.

11 comentarios en “Ejecutar script al abrir un pdf

  1. jviera dijo:

    Hola,
    me gustaría comentarte una alternativa que estamos utilizando en la Administración Pública en Andalucía donde apostamos por el software libre. En este caso se basa en la utilización de JPedal. Es una librería Java con la cual se pueden manipular PDF’s, evitando incluso muchas de las restricciones impuestas por Acrobat.
    Un saludo.

  2. Eugenio dijo:

    Buenas,

    Me gustaría saber si conocéis algún manual o página en la que pueda ampliar conocimientos para utilizar JavaScript con Scribus. En principio mi idea es poder insertar imágenes en el documento pdf una vez creado, utilizar calendario desplegable en el documento pdf, etc (me imagino que este tipo de utilidades estarán ya implementadas y agradecería si me podéis indicar algún lugar dónde pueda descargar el código JavaScript).

    Un saludo.

  3. jaime dijo:

    Buenos días y gracias por el tutorial, me ha sido muy útil.

    Os agradecería me indicaseis si existe alguna forma de guardar el formulario pdf con los datos introducidos por el usuario.

  4. Buenas, mi nombre es Eduardo y me gustaria saber algunos temas con el PDF, ya que estoy encarando un proyecto con lo siguiente:

    Tengo 15 PDF que los uso como plantillas, cada PDF contiene de 4 a 10 hojas, y lo que hice es editarlo con Adobe Acrobat y agregarle controles como Text, ComboBox, etc.

    Ahora bien, cuando desde ASP.NET programando con C#, deseo seleccionar una plantilla, la funcionalidad que estoy buscando es la siguiente:

    Que puede por codigo, hacer que la plantilla se muestre en la pantalla, completar algunos controles con datos ue yo le voy a enviar desde codigo, luego completar a mano el resto de los controles por medio de un usuario. Y cuando desea hacer clic en guardar, que esa info la pueda tomar para enviarla a una base de datos.

    Esto es posible ??
    Saludos
    Eduardo

  5. Hola….necesito q me ayuden con algo….tengo q realizar un articulo sobre como introducir codigo malicioso (es decir virus ) en el codigo JavaScript de un documento PDF cualquiera….. y q en el momento q ejecute el documento PDF, es decir cuando abra el PDF se tiene que ejecutar el virus que se supone esta escondido en el codigo javaScript….
    Cualquier ayuda o recomendacion se los agradeceria de verdad……
    espero me puedan dar una respuesta rapida o enviarme algun enlace donde pueda encontrar algo q me ayude…
    de ante mano muchas gracias 🙂

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s