PDFlib
BASKET
PDFlib

multimedia/starter_3d

Create a 3D model and load it into a U3D annotation. Define a 3D view and load some 3D data with the view defined. Then create an annotation containing the loaded 3D data with the defined 3D view as the initial view. Acrobat 7.07 or above is required for viewing PDF documents containing a 3D model.

Download Java Code     Show Output PDF

/* $Id: starter_3d.java,v 1.12 2008/02/05 11:54:07 katja Exp $

 * 3D Starter:

 * Create a 3D model and load it into a U3D annotation.

 *

 * Define a 3D view and load some 3D data with the view defined. Then create

 * an annotation containing the loaded 3D data with the defined 3D view as the

 * initial view.

 *

 * Acrobat 7.07 or above is required for viewing PDF documents containing a

 * 3D model.

 *

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

 * Required data: U3D data file

 */

package com.pdflib.cookbook.pdflib.multimedia;


import com.pdflib.pdflib;

import com.pdflib.PDFlibException;


public class starter_3d

{

    public static void main (String argv[])

    {

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

    String searchpath = "../input";

    String outfile = "starter_3d.pdf";

    String title = "Starter 3D";


    pdflib p = null;

   

    /* Required minimum PDFlib version */

    final double requiredversion = 701;

    final String requiredvstr = "7.0.1";

   

    String optlist;

    int font, u3dview, u3ddata;


    try {

        p = new pdflib();


        p.set_parameter("SearchPath", searchpath);


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

        p.set_parameter("errorpolicy", "return");

       

        /* Check whether the required minimum PDFlib version is available */

        double major = p.get_value("major", 0);

        double minor = p.get_value("minor", 0);

        double revision = p.get_value("revision", 0);

               

        if (major*100 + minor*10 + revision < requiredversion)

            throw new Exception("Error: PDFlib " + requiredvstr +

                " or above is required");

       

        /* Start the document */

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

            throw new Exception("Error: " + p.get_errmsg());


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

        p.set_info("Title", title + " $Revision: 1.12 $");

       

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

        if (font == -1)

            throw new Exception("Error: " + p.get_errmsg());


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

       

        /* Define a U3D view */

        optlist = "name=FirstView background={fillcolor={rgb 1 0.5 0.1}}";

        u3dview = p.create_3dview("First view", optlist);

        if (u3dview == -1)

            throw new Exception("Error: " + p.get_errmsg());

       

        /* Load some U3D data with the view defined above */

        u3ddata = p.load_3ddata("box.u3d", "views={" + u3dview + "}");

        if (u3ddata == -1)

            throw new Exception("Error: " + p.get_errmsg());


        /* Create an annotation containing the loaded U3D data with the

         * defined 3D view as the initial view

         */

        optlist = "name=annot usercoordinates contents=U3D 3ddata= " + u3ddata +

            " 3dactivate={enable=open} 3Dinitialview=" + u3dview;

        p.create_annotation(116, 400, 447, 580, "3D", optlist);

       

        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");

        } catch (Exception e) {

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

        } finally {

            if (p != null) {

                p.delete();

            }

        }

    }

}