Boa tarde a todos… Gostaria de saber como faço para imprimir um arquivo PDF salvo no disco. Fiz um relatório com itext, mas não estou conseguindo imprimir. Tentei usando a o Desktop.get().print(file), mas nada feito.
Retorna um erro:
" java.io.exception: Falei tô print Relatório.pdf. error message: Não há aplicativos associados ao arquivo especificado…"
Queria mandar essa arquivo direto para uma impressora selecionada pelo usuário( gostaria de lista as impressoras instaladas e imprimir na que for selecionada)
Tem alguma outra maneira de imprimir esse arquivo??
Montei esse código e testei aqui:
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
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.MediaSizeName;
public class Main {
public static void main(String[] args) throws Exception {
PrintService myPrintService = findPrintService("<<nome-da-impressora>>");
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
FileInputStream fis = new FileInputStream("/caminho/do/documento/documento.pdf");
Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.PDF, null);
DocPrintJob job = myPrintService.createPrintJob();
job.print(doc, aset);
}
private static PrintService findPrintService(String printerName) {
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService printService : printServices) {
if (printService.getName().trim().equals(printerName)) {
return printService;
}
}
return null;
}
}