-
Bug
-
Resolution: Fixed
-
P4
-
1.4.0
-
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)
======================================================================