Como imprimir ficheiro e controlar impressão?
2 participantes
Página 1 de 1
Como imprimir ficheiro e controlar impressão?
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.
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
Re: Como imprimir ficheiro e controlar impressão?
Com Java Print API, é possível imprimir um ficheiro e controlar a sua impressão.
Aqui fica um exemplo simples:
E agora o codigo do Listener:
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;
}
Tópicos semelhantes
» Impressão de ficheiro PDF frente e verso
» Como imprimir PDF protegido com Google Drive
» Impressão de ficheiros
» Imprimir ficheiros PDF
» Imprimir no ecrã um objecto Document
» Como imprimir PDF protegido com Google Drive
» Impressão de ficheiros
» Imprimir ficheiros PDF
» Imprimir no ecrã um objecto Document
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|
Ter Set 24, 2019 1:16 pm por jpmartins
» Artigo Bitcoin
Ter Set 24, 2019 1:13 pm por jpmartins
» Novo site para desportistas / New site for athletes
Ter Dez 04, 2018 8:19 am por Admin
» Check used port with the command line
Ter Dez 04, 2018 8:10 am por Admin
» Check the port where mariaDB is running
Seg Dez 03, 2018 4:59 am por Admin
» Check the linux version
Seg Dez 03, 2018 3:12 am por Admin
» Granting rights to a database for a user
Qui Nov 29, 2018 2:04 am por Admin
» Create new user
Qui Nov 29, 2018 2:01 am por Admin
» Change level of password security level
Qui Nov 29, 2018 1:59 am por Admin