Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4483236

Postscript printer fonts not used by StreamPrintService on win32

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 1.4.0
    • 1.4.0
    • client-libs
    • 2d
    • beta2
    • x86
    • windows_2000



      Name: bsC130419 Date: 07/23/2001


      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
      Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)

      When using the Java Print service to produce postscript stream output all fonts
      are rendered as images rather than using standard postscript fonts. This
      causes any 'print' file to be extremely large and the processing excessively
      slow.

      For our requirements, that include print runs of upto 2,000,000 pages, this
      makes this API completely unworkable.

      Have tried using all types of font aliases including:
      "serif"
      "Times New Roman"
      "Helvetica" and
      "Courier"

      The file psfontj2d.properties seems to imply all these fonts should be
      renered into the postscript as text.

        To reproduce:

      Run the demo code from JavaTM Print Service API User Guide - Appendix E:
      and view the output in the file out.ps.


      /*
       * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
       *
       * This software is the proprietary information of Sun Microsystems, Inc.
       * Use is subject to license terms.
       *
       */

      import java.io.*;
      import java.awt.*;
      import java.awt.print.*;
      import javax.print.*;
      import javax.print.attribute.*;
      import javax.print.attribute.standard.*;

      /*
       * Use the Java(TM) Print Service API to locate a service which can export
       * 2D graphics to a stream as Postscript. This may be spooled to a
       * Postscript printer, or used in a postscript viewer.
       */
      public class Print2DtoStream implements Printable{

      public Print2DtoStream() {
      /* Use the pre-defined flavor for a Printable from an
      InputStream */
      DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;

        /* Specify the type of the output stream */
      String psMimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType
      ();

      /* Locate factory which can export a GIF image stream as
      Postscript */
      StreamPrintServiceFactory[] factories =
      StreamPrintServiceFactory.lookupStreamPrintServiceFactories(
      flavor, psMimeType);
      if (factories.length == 0) {
      System.err.println("No suitable factories");
      System.exit(0);
      }

      try {
      /* Create a file for the exported postscript */
      FileOutputStream fos = new FileOutputStream("out.ps");

      /* Create a Stream printer for Postscript */
      StreamPrintService sps = factories[0].getPrintService
      (fos);

      /* Create and call a Print Job */
      DocPrintJob pj = sps.createPrintJob();
      PrintRequestAttributeSet aset = new
      HashPrintRequestAttributeSet();

      Doc doc = new SimpleDoc(this, flavor, null);

      pj.print(doc, aset);
      fos.close();

      } catch (PrintException pe) {
      System.err.println(pe);
      } catch (IOException ie) {
      System.err.println(ie);
      }
      }


      This bug seems to be a similar to a closed bug 4157365 raised against jdk1.2.
      (Review ID: 128664)
      ======================================================================

            prr Philip Race
            bstrathesunw Bill Strathearn (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: