Applet and Java Printing API

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • java_helloworld

    Applet and Java Printing API

    I am trying to print from an applet using the Java Print API.

    If I run the applet on appletviewer then things work fine i.e. I am
    able to get the print out. If I run the applet on a browser then the
    print icon is loaded on the system tray and there is no print outs. I
    am trying to print on HP laser jet printer.

    Please help me to sort the err in the code or my understaning.

    Thanks a ton!!!

    JAVA_HelloWorld
  • Murray

    #2
    Re: Applet and Java Printing API


    "java_helloworl d" <java_helloworl d@indiatimes.co m> wrote in message
    news:be65f9e5.0 405052057.7135a ccf@posting.goo gle.com...[color=blue]
    > I am trying to print from an applet using the Java Print API.
    >
    > If I run the applet on appletviewer then things work fine i.e. I am
    > able to get the print out. If I run the applet on a browser then the
    > print icon is loaded on the system tray and there is no print outs. I
    > am trying to print on HP laser jet printer.
    >
    > Please help me to sort the err in the code or my understaning.
    >
    > Thanks a ton!!!
    >
    > JAVA_HelloWorld[/color]

    Is the applet signed? If it's not, you won't be able to print due to
    security constraints.


    Comment

    • java_helloworld

      #3
      Re: Applet and Java Printing API

      > Is the applet signed? If it's not, you won't be able to print due to[color=blue]
      > security constraints.[/color]

      Yes the applet is not a signed Applet. I think with the Java printng
      API we can print from an unsigned applet also. It just that before
      printing it asks for a confirmation something like "Do you want to
      allow the applet wants to print?".

      I am able to instantiate the print icon on the system tray but not
      able to spool to the printer.

      If I run the code as a applet application i.e. using appletviewer then
      things are fine but as I run on an HTML page the print icon loads on
      the system tray but the print outs are not there on the printer.

      Please excuse the coding standards.

      Thanks,
      Java Hello World

      Here is the snapshot of the code.

      package Applet.unsigned ;

      import java.awt.*;
      import java.awt.event. *;
      import java.io.IOExcep tion;
      import java.net.*;

      import javax.print.*;
      import javax.print.att ribute.*;
      import javax.print.att ribute.standard .*;
      import javax.swing.*;

      public class PrinterApplet extends JApplet {
      //~ Instance fields
      =============== =============== =============== ===========

      private PrintRequestAtt ributeSet aset;
      DocFlavor DocFlavor;
      public Doc doc;
      DocPrintJob printerJob;
      JTextPane pane;

      //~ Methods =============== =============== =============== =============== ====

      /**
      * DOCUMENT ME!
      */
      public void init() {
      getContentPane( ).setLayout(new BorderLayout()) ;

      pane = new JTextPane();
      pane.setSize(15 0, 100);
      pane.setContent Type("text/html");
      pane.setText(
      "<html><center> <b><big>Apple t Test</big></b><br>"
      + "</center></html>");
      getContentPane( ).add(pane, "Center");

      JPanel buttons = new JPanel();
      buttons.setBack ground(Color.wh ite);

      JButton print = new JButton("Print" );

      buttons.add(pri nt);

      getContentPane( ).add(buttons, "South");

      print.addAction Listener(new ActionListener( ) {
      public void actionPerformed (ActionEvent e) {
      print();
      }
      });
      }

      /**
      * DOCUMENT ME!
      */
      void prep() {

      URL url = null;
      aset = new HashPrintReques tAttributeSet() ;
      aset.add(MediaS izeName.ISO_A4) ;
      aset.add(new Copies(1));

      try {
      url =
      new URL("http://sohowww.nascom. nasa.gov//data//realtime//eit_171//512//latest.gif");

      } catch (MalformedURLEx ception e) {
      // TODO Auto-generated catch block
      e.printStackTra ce();
      }

      PrintService pservices =
      PrintServiceLoo kup.lookupDefau ltPrintService( );
      System.out.prin tln(pservices.g etName());
      //DocFlavor flavor = javax.print.Doc Flavor.INPUT_ST REAM.GIF;
      DocFlavor flavor = javax.print.Doc Flavor.URL.GIF;
      //doc = new InputStreamDoc( "a.gif", flavor);
      //doc = new InputStreamDoc( pane.getText(), flavor);
      doc = new SimpleDoc(url, javax.print.Doc Flavor.URL.GIF, null);
      try {
      System.out.prin tln("DOC : \n " + doc.getPrintDat a());
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTra ce();
      }
      /* Create a Print Job */
      printerJob = pservices.creat ePrintJob();

      }

      /**
      * DOCUMENT ME!
      */
      void print() {
      prep();
      System.out.prin tln("Printer Name : " +
      printerJob.getP rintService());
      try {
      printerJob.prin t(doc, aset);

      } catch (PrintException e) {
      // TODO Auto-generated catch block
      e.printStackTra ce();
      }
      System.out.prin tln("Done Printing.");
      }

      }

      Comment

      • Murray

        #4
        Re: Applet and Java Printing API

        > url =[color=blue]
        > new URL("http://sohowww.nascom. nasa.gov//data//realtime//eit_171//512//latest.gif");[/color]

        Here's your problem. An unsigned applet is not allowed to make a
        connection to a host other than the one it was loaded from. I would
        have thought DocPrintJob would throw an exception, but it appears to
        be swallowing it silently.

        url.openConnect ion();
        url.openStream( );

        This will throw an AccessControlEx ception as expected. Either sign the
        applet, or host the image locally.

        Comment

        • java_helloworld

          #5
          Re: Applet and Java Printing API

          Thanks Murray, for the clarification. But I am able to print the
          picture from the URL, if I run the Unsigned Applet as a Application
          i.e. not on a web -browser.

          BTW do you know any website/article/book, which talks about uses and
          limitations of Java Printing and Unsigned/Signed Applet.

          Comment

          • Andrew Thompson

            #6
            Re: Applet and Java Printing API

            On 12 May 2004 03:15:16 -0700, java_helloworld wrote:

            [ F'Ups set to c.l.j.help ]
            [color=blue]
            > Thanks Murray, for the clarification. But I am able to print the
            > picture from the URL, if I run the Unsigned Applet as a Application
            > i.e. not on a web -browser.[/color]

            Yes, that supports what Murray was saying,
            applications can do anything, whereas applets
            are limited by the applet 'security sandbox'..

            To 'break out' of the applet sandbox, you
            need to jar and sign your classes..
            <http://www.physci.org/codes/javafaq.jsp#jar >

            [ Unfortunatley that entry focuses on 'double
            click lauch' applications, but the 'jar/sign'
            bit relates equally to applet security. ]

            The only other option is to change the policy
            files settings in the user's browser, which
            seems only good for testing purposes..

            --
            Andrew Thompson
            http://www.PhySci.org/ Open-source software suite
            http://www.PhySci.org/codes/ Web & IT Help
            http://www.1point1C.org/ Science & Technology

            Comment

            Working...