Impressão de Documento

1 resposta
oliveirarenan

Pessoal, tenho uma classe para imprimir relatórios, só que não esta fazendo a conexão com a impressora do servidor.

Alguém poderia me ajudar?

import java.io.*;
import javax.print.*;
import javax.print.event.*;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

public class BasicPrint {

public static void main(String[] args) throws MalformedURLException, RemoteException, NotBoundException {
	try {
		// Open the image file
		//InputStream is =
		//new BufferedInputStream(new FileInputStream("filename.gif"));
		String is = "impressão da classe String teste para impressão";
		String impressora = "\wksosa2097";
		
		// Find the default service
		DocFlavor flavor = DocFlavor.URL.STRING.TEXT_PLAIN;
		System.out.println("passou pela criação do docFlavor");
		//PrintService service  = PrintServiceLookup.lookupDefaultPrintService();
		PrintService service =	(PrintService)
		Naming.lookup(impressora);
		System.out.println("impressora: " + service.toString()); 
		// Create the print job
		DocPrintJob job = service.createPrintJob();
		Doc doc = new SimpleDoc(is, flavor, null);
		
		// Monitor print job events; for the implementation of PrintJobWatcher,
		// see e702 Determining When a Print Job Has Finished
		PrintJobWatcher pjDone = new PrintJobWatcher(job);
		System.out.println(doc.getDocFlavor());
		// Print it
		job.print(doc, null);
		
		// Wait for the print job to be done
		pjDone.waitForDone();

	// It is now safe to close the input stream
	//is.close();
	} catch (PrintException e) {
		e.printStackTrace();
	//} catch (IOException e) {
	//}
	}
 }
}

O Basic Print é responsável por :

- Criar o tipo de documento que será impresso,

- Estabelecer conexão com a impressora, (Não esta funcionando!)

- Imprimir o conteúdo da classe, (Não esta funcionando!)

Também tem essa outra classe q é responsável por verificar se a impressão foi realizada.

import javax.print.DocPrintJob;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;
import javax.print.event.PrintJobAdapter;

class PrintJobWatcher {
		// true iff it is safe to close the print job's input stream
		boolean done = false;
    
		PrintJobWatcher(DocPrintJob job) {
			// Add a listener to the print job
			job.addPrintJobListener(new PrintJobAdapter() {
				public void printJobCanceled(PrintJobEvent pje) {
					allDone();
				}
				public void printJobCompleted(PrintJobEvent pje) {
					allDone();
				}
				public void printJobFailed(PrintJobEvent pje) {
					allDone();
				}
				public void printJobNoMoreEvents(PrintJobEvent pje) {
					allDone();
				}
				void allDone() {
					synchronized (PrintJobWatcher.this) {
						done = true;
						PrintJobWatcher.this.notify();
					}
				}
			});
		}
		public synchronized void waitForDone() {
			try {
				while (!done) {
					wait();
				}
			} catch (InterruptedException e) {
			}
		}
	}

Alguém tem alguma solução????

Valeu!

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

1 Resposta

oliveirarenan

Ninguém sabe???

Criado 27 de outubro de 2004
Ultima resposta 28 de out. de 2004
Respostas 1
Participantes 1