BASKET
Search
PDFlib

interactive/movie_annotations

Download Java Code       Switch to PHP Code      Show Output PDF

/*

 * Movie annotations:

 * Demonstrate the use of a movie annotation in PDF.

 *

 * Required software: PDFlib/PDFlib+PDI/PPS 9

 * Required data: Movie file

 */

package com.pdflib.cookbook.pdflib.interactive;


import com.pdflib.pdflib;

import com.pdflib.PDFlibException;


public class movie_annotations {

    public static void main(String argv[]) {

        /* This is where the data files are. Adjust as necessary */

        String searchpath = "../input";

        String outfile = "movie_annotations.pdf";

        String title = "Movie Annotations";


        pdflib p = null;

        int exitcode = 0;


        /* Movie file to be referenced by the link */

        String moviefile = "../input/ski.avi";


        String optlist;

        int font;


        try {

            /*

             * Positions for the Movie annotation and for the Link annotation

             * that can be used to start the movie. Align the movie with the

             * Link annotations.

             */

            final double link_width = 80, link_heigth = 40,

                    link_separation = 20;


            final double movie_width = 2 * link_width + link_separation,

                    movie_height = movie_width * 2.0 / 3.0;

            final double movie_llx = 150, movie_lly = 300;

            final double movie_urx = movie_llx + movie_width,

                    movie_ury = movie_lly + movie_height;


            final double start_llx = movie_llx,

                    start_lly = movie_lly - link_separation - link_heigth,

                    start_urx = start_llx + link_width,

                    start_ury = start_lly + link_heigth;

            final double stop_llx = movie_llx + link_width + link_separation,

                    stop_lly = start_lly, stop_urx = stop_llx + link_width,

                    stop_ury = start_ury;


            p = new pdflib();


            /* This means we must check return values of load_font() etc. */

            p.set_option("errorpolicy=return");


            p.set_option("searchpath={" + searchpath + "}");


            if (p.begin_document(outfile, "") == -1)

                throw new Exception(

                        "Error: " + p.get_apiname() + ": " + p.get_errmsg());


            p.set_info("Creator", "PDFlib Cookbook");

            p.set_info("Title", title);


            font = p.load_font("Helvetica", "unicode", "");

            if (font == -1)

                throw new Exception(

                        "Error: " + p.get_apiname() + ": " + p.get_errmsg());


            p.begin_page_ext(0, 0, "width=a4.height height=a4.width");


            /* Create a "Movie" action for playing the movie */

            int start_action = p.create_action("Movie", "target=mymovie");

            int stop_action = p.create_action("Movie",

                    "target=mymovie operation=stop");


            /*

             * The movie file is not actually embedded in the PDF document, but

             * referenced as an external attachment.

             */

            int movie_attachment = p.load_asset("Attachment", moviefile,

                    "external=true");


            /*

             * Option list for the Link annotation to play a movie.

             * "showcontrols" shows a controller bar while playing the movie.

             * "movieposter auto" displays a poster image retrieved from the

             * movie file. "playmode open" plays the movie once and leaves the

             * movie controller bar open.

             */

            optlist = "name=mymovie linewidth=0 attachment={" + movie_attachment

                    + "} showcontrols movieposter=auto playmode=open";


            /*

             * Create a Movie annotation.

             */

            p.create_annotation(movie_llx, movie_lly, movie_urx, movie_ury,

                    "Movie", optlist);


            /*

             * Create Link annotations to start and stop the movie.

             */

            final String play_movie = "Play";

            final String stop_movie = "Stop";

            final String options = "position=center boxsize={" + link_width

                    + " " + link_heigth + "}";


            p.setfont(font, 12);

            p.fit_textline(play_movie, start_llx, start_lly, options);

            p.create_annotation(start_llx, start_lly, start_urx, start_ury,

                    "Link", "linewidth=2 action={activate " + start_action

                            + "} contents={" + play_movie + "}");


            p.fit_textline(stop_movie, stop_llx, stop_lly, options);

            p.create_annotation(stop_llx, stop_lly, stop_urx, stop_ury, "Link",

                    "linewidth=2 action={activate " + stop_action

                            + "} contents={" + stop_movie + "}");


            p.end_page_ext("");


            p.end_document("");

        }

        catch (PDFlibException e) {

            System.err.print("PDFlib exception occurred:\n");

            System.err.print("[" + e.get_errnum() + "] " + e.get_apiname()

                    + ": " + e.get_errmsg() + "\n");

            exitcode = 1;

        }

        catch (Exception e) {

            System.err.println(e.getMessage());

            exitcode = 1;

        }

        finally {

            if (p != null) {

                p.delete();

            }

            System.exit(exitcode);

        }

    }

}