How to create a link to launch an external program?

Tags: actionslaunch actionannotationsiText 5

I am using iTextSharp to create PDF files. Can I use iTextSharp to create a link in pdf that will allow me to launch a program?

The users of this file will have no problem trusting this file. It is part of the functionalities they requested to launch a certain program.

Posted on StackOverflow on Feb 24, 2013 by user1019042

You are looking for a Launch action. I'm the author of the book about iText, and I usually don't talk about this functionality because it's considered being a security hazard (which you point out in your comment: the user really has to trust the PDF).

In iTextSharp, you'd create a launch action like this:

    Paragraph p = new Paragraph(
      new Chunk( "Click to open test.txt in Notepad.")
      .SetAction(
        new PdfAction(
          "c:/windows/notepad.exe",
          "test.txt", "open",
          Path.Combine(Utility.ResourceText, "")
        )
    ));
    document.Add(p);

Looking at the code, you immediately see a second problem: PDF is supposed to be platform dependent, but we're introducing two dependencies in this code sample:

  1. in this sample we only provide a launch action for a PDF opened on Windows (one could add extra properties for other OSs).

  2. we assume that the executable is present on the path we defined. That can be a huge problem if you want this PDF to work in every environment.

You'll have to talk this through with your customer to see if they can meet these extra requirements: OS and location of the executable.