Originally posted by Joe Ess:
Perhaps you missed this example in the link I gave you, which demonstrates printing a text document.
Hi Joe,
I had already tried that. Below you can find my version trying to print myFile.txt to the default printer.
The problem with this solution is that if a line is, for instance, 300 characters long, only a portion of the line will be printed and the rest will be cut away.
As for the port LPT1, the answer is no. My default printer is our company network printer and is not on the port LPT1. Do you mean that in Java you can print only to LPT1 ?
Thanks for your help.
Roberto
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaSize;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.PrintQuality;
import javax.print.attribute.standard.Sides;
public class TestPage9
{
// Input the file
public TestPage9()
{
// Input the file
FileInputStream textStream = null;
try
{
textStream = new FileInputStream("myFile.txt");
}
catch (FileNotFoundException ffne)
{}
if (textStream == null)
{
System.out.println("File not found");
return;
}
// Set the document type
DocFlavor myFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
// Build a set of attributes
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add( new Copies(1) );
aset.add( OrientationRequested.LANDSCAPE );
aset.add( PrintQuality.HIGH );
aset.add( MediaSizeName.ISO_A4 );
aset.add( Sides.ONE_SIDED );
// Create a
Doc Doc myDoc = new SimpleDoc(textStream, myFormat, null);
// discover the printers that can print the format according to the
// instructions in the attribute set
PrintService services = PrintServiceLookup.lookupDefaultPrintService();
System.out.println("DEFAULT PRINTER= " + services);
//PrintService[] services = PrintServiceLookup.lookupPrintServices(myFormat, aset);
if (! services.equals(null)) // Create a print job from one of the print services
{
DocPrintJob job = services.createPrintJob();
try
{
job.print(myDoc, aset);
System.out.println("aset = " + aset.toString());
System.out.println("aset = " + aset.get(OrientationRequested.class));
System.out.println("aset = " + aset.get(PrintQuality.class));
System.out.println("aset = " + aset.get(MediaSizeName.class));
System.out.println("aset = " + aset.get(Sides.class));
//System.out.println("STAMPA IN CORSO");
}
catch (PrintException pe)
{
System.out.println("No connection to the printer " + services);
pe.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
System.out.println("No printer available");
} // fine costruttore
private void docFlavorsSupportati(PrintService services)
{
DocFlavor arrayDocFlavor[] = services.getSupportedDocFlavors();
for(int i=0; i<arrayDocFlavor.length; i++)
{
System.out.println("\nElemento numero " + i);
System.out.println("getMediaSubtype() " + arrayDocFlavor[i].getMediaSubtype() );
System.out.println("getMediaType() " + arrayDocFlavor[i].getMediaType() );
System.out.println("getMimeType() " + arrayDocFlavor[i].getMimeType() );
System.out.println("getRepresentationClassName() " + arrayDocFlavor[i].getRepresentationClassName() );
System.out.println("toString() " + arrayDocFlavor[i].toString() );
System.out.println("getClass() " + arrayDocFlavor[i].getClass() );
}
}
public static void main(
String args[])
{
new TestPage9();
}
}