Bom dia,
Estou tendo dificuldade para imprimir um PDF. O tamanho da imagem sai menor e algumas letras falhadas
Segue abaixo minha classe.
[code] public void printPDF(String caminhoArquivo, int nCopias, boolean retrato, String impressora) {
FileInputStream psStream = null;
try {
File f = new File(caminhoArquivo);
psStream = new FileInputStream(f);
FileChannel fc = psStream.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb);
PDFPrintPage pages = new PDFPrintPage(pdfFile);
/* Seta configuracoes */
PrintRequestAttributeSet aset = this.config(nCopias, retrato);
/* PrinterJob */
PrinterJob pj = PrinterJob.getPrinterJob();
/* Configura qual impressora sera usada */
if (impressora == null) {
pj.setPrintService(PrintServiceLookup.lookupDefaultPrintService());
} else {
PrintService[] ps = PrinterJob.lookupPrintServices();
for(int i=0; i<ps.length; i++){
if(ps[i].toString().equals(impressora)){
pj.setPrintService(ps[i]);
break;
}
}
}
PageFormat pf = pj.getPageFormat(aset);
pj.setJobName(f.getName());
pj.setCopies(nCopias);
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pj.setPageable(book);
pj.print();
} catch (Exception ex) {
this.setError("Ocorreu um erro: " + ex.getMessage());
}
}
/**
* @param nCopias
* @param retrato
* @return
*/
private PrintRequestAttributeSet config(int nCopias, boolean retrato) {
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(nCopias));
aset.add(MediaSizeName.ISO_A4);
if (retrato) {
aset.add(OrientationRequested.PORTRAIT);
} else {
aset.add(OrientationRequested.LANDSCAPE);
}
aset.add(Sides.TUMBLE);
return aset;
}[/code]
Obrigado pela ajuda