Ajude a Asast
Patrocinadores
Últimos assuntos
» Novo site para desportistas / New site for athletes
Sex Mar 17, 2017 8:31 am por Admin

» List files by date
Sex Mar 17, 2017 8:24 am por Admin

» RegExp - Add XXX to the begin of a String
Sex Nov 18, 2016 1:44 am por Admin

» RegExp - Add XXX to the end of a String
Sex Nov 18, 2016 1:38 am por Admin

» Great book about DOD programming
Sex Nov 11, 2016 6:59 am por Admin

» MESOS (Apache)
Qui Set 29, 2016 1:51 am por Admin

» Site de aluguer entre particulares
Sex Jul 01, 2016 3:01 am por Admin

» Noite das maravilhas - Nuit des merveilles
Sex Jul 01, 2016 2:54 am por Admin

» Site para procura de emprego no Luxemburgo
Qui Jun 30, 2016 7:13 am por Admin

AdSense
Contributo

Como imprimir ficheiro e controlar impressão?

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como imprimir ficheiro e controlar impressão?

Mensagem  pj em Qui Nov 13, 2008 3:23 am

Olá

Estou a escrever um programa no qual preciso de imprimir um ficheiro PDF e ser capaz de dizer ao utilisador se o ficheiro foi ou não bem imprimido.

Como posso fazer isso em Java?

Obrigado.

pj

Mensagens : 36
Data de inscrição : 28/01/2008

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Como imprimir ficheiro e controlar impressão?

Mensagem  Admin em Ter Nov 18, 2008 2:33 am

Com Java Print API, é possível imprimir um ficheiro e controlar a sua impressão.

Aqui fica um exemplo simples:

Código:


...
try {
  PrintService defaultPS = PrintServiceLookup.lookupDefaultPrintService();
  DocPrintJob dPJ = defaultPS.createPrintJob();
  fis = new FileInputStream(sFilename);
  Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.AUTOSENSE, null);

  // Listener para controlar mudancas de estado do job de impressao
  PrintJobManagment pjm = new PrintJobManagment(dPJ);

  dPJ.print(doc, null);

} catch(Exception e) {
  e.printStackTrace();
}

...

E agora o codigo do Listener:

Código:


public class PrintJobManagment {

   int iResult = 0;
   
   PrintJobManagment(DocPrintJob job) {
        job.addPrintJobListener(new PrintJobAdapter() {
           
          public void printDataTransferCompleted(PrintJobEvent pje) {
                // The print data has been transferred to the print service
           System.out.println("DATA_TRANSFERT_COMPLETED");
          }
           
          public void printJobCanceled(PrintJobEvent pje) {
           // The print job was cancelled
            System.out.println("CANCELED");
           setStatus(1);
          }
          public void printJobCompleted(PrintJobEvent pje) {
               // The print job was completed
               System.out.println("COMPLETED");
               setStatus(2);
          }
          public void printJobFailed(PrintJobEvent pje) {
               // The print job has failed
               System.out.println("FAILED");
               setStatus(3);
          }
          public void printJobNoMoreEvents(PrintJobEvent pje) {
             // No more events will be delivered from this
                //    print service for this print job.
                // This event is fired in cases where the print service
                //    is not able to determine when the job completes.
               //System.out.println("NO_MORE_EVENTS");
               setStatus(4);
          }
           
          public void printJobRequiresAttention(PrintJobEvent pje) {
                // The print service requires some attention to repair
                //    some problem.
               // Example: running out of paper would cause this event
               //   to be fired.
               System.out.println("REQUIRES_ATTENTION");
               setStatus(5);
            }
           
            void setStatus(int iStatus) {
               synchronized (PrintJobManagment.this) {
                  iResult = iStatus;
                  PrintJobManagment.this.notify();
               }
            }
           
        });
   }
   
   public synchronized int waitForDone() {
        try {
           // If no event were executed or if only the data transfert event were
           //   launched executed or if the canceled job event were launched there
           //   is nothing to be done.
           while (iResult==0)
                  wait();
           
        } catch (InterruptedException e) {
        }
        return iResult;
    }

avatar
Admin
Admin

Mensagens : 596
Data de inscrição : 21/01/2008
Idade : 39

Ver perfil do usuário http://forum-informatico.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum