Ola pessoal…
Estou precisando imprimir varios pdf’s, nao qro visualiza-los para mandar imprimir 1 a 1, preciso enviar direto para a impressora padrao.
Alguem tem alguma dica ?
flw…
Ola pessoal…
Estou precisando imprimir varios pdf’s, nao qro visualiza-los para mandar imprimir 1 a 1, preciso enviar direto para a impressora padrao.
Alguem tem alguma dica ?
flw…
Pow legal também quero saber !!
Mais só pra a galera saber e ficar claro…
Vc ta usando Jasper???
Não consegui ver tudo certinho, mas acho que esse post resolve seu problema…
http://www.guj.com.br/posts/list/68823.java
da uma olhada se ajuda, é para impressão de pdf sem vizualiza-los.
Espero que ajude,
abraço.
Nao estou utilizando jasper… Eu pego os pdf’s já existentes de uma pasta, mas nao quero abri-los 1 a 1, preciso ler a posta toda e mandar imprimir todos os pdf’s que estejam lá.
Poneis123 o post que vc indicou já tinha dado uma olhada, mas esta api nao da suporte a pdf.
valeu…
Consegui resolver…
/* Envia direto para impressora padrao - apenas para java 6 */
Desktop.getDesktop().print(new File("fileName"));
Olá vdb.
Cara eu usei o teu exemplo e ele abre uma tela do Adobe Reader depois de enviar a impressão, tem como desabilitar isso?
Só 4 anos depois. rsrsrsrs
Entao cara, pra mim não acontece isso, utilizo este metodo para imprimir boletos em massa e nunca abriu, so seu utilizar open e nao print.
Estranho, pra mim ele abre, mas, fica aberto, sem documento nem nada, somente o Reader em branco, mas, se eu mandar 10 impressões ele abre somente uma.
[quote=vdb]Consegui resolver…
/* Envia direto para impressora padrao - apenas para java 6 */
Desktop.getDesktop().print(new File("fileName"));
[/quote]
E como faria isso no java 5 ???
[quote=edneyfs][quote=vdb]Consegui resolver…
/* Envia direto para impressora padrao - apenas para java 6 */
Desktop.getDesktop().print(new File("fileName"));
[/quote]
E como faria isso no java 5 ???[/quote]
Boa noite,
A quem interessar e não tiver resolvido ainda esta questão existe uma api da SUN pdf-renderer-1.0.5.jar com esta api mais as classes nativa de impressão do java consegui resolver este problema, agora consigo enviar o PDF direto para impressora sem precisar abrir o mesmo e ou ter o adobe instalado.
/**
*
* @author Jaime Alcides
*/
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
import com.sun.pdfview.PDFRenderer;
import javax.print.PrintService;
public class PrintPdf
{
private PrinterJob pjob = null;
static String imp = "";
private PrintService impressora = null;
public static void main(String[] args) throws IOException, PrinterException
{
imp = args[1];
System.out.println("Imprimir: " + args[0] + " /n" + args[1]);
FileInputStream fis = new FileInputStream(args[0]);
PrintPdf printPDFFile = new PrintPdf(fis, "NOME DO ARQUIVO NA FILA DE IMPRESSAO");
printPDFFile.print();
}
public PrintPdf(InputStream inputStream, String jobName) throws IOException, PrinterException
{
byte[] pdfContent = new byte[inputStream.available()];
inputStream.read(pdfContent, 0, inputStream.available());
initialize(pdfContent, jobName);
}
public PrintPdf(byte[] content, String jobName) throws IOException, PrinterException
{
initialize(content, jobName);
}
private void initialize(byte[] pdfContent, String jobName) throws IOException, PrinterException
{
ByteBuffer bb = ByteBuffer.wrap(pdfContent);
PDFFile pdfFile = new PDFFile(bb);
PDFPrintPage pages = new PDFPrintPage(pdfFile);
PrintService[] pservices = PrinterJob.lookupPrintServices();
System.out.println(pservices.length);
if (pservices.length > 0)
{
for (PrintService ps : pservices)
{
System.out.println("Impressora Encontrada: " + ps.getName());
if (ps.getName().contains(imp))
{
System.out.println("Impressora Selecionada: " + ps.getName());
impressora = ps;
break;
}
}
}
if (impressora != null)
{
pjob = PrinterJob.getPrinterJob();
pjob.setPrintService(impressora);
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pjob.setJobName(jobName);
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
Paper paper = new Paper();
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
pf.setPaper(paper);
}
}
public void print() throws PrinterException
{
if (impressora != null)
{
System.out.println("IMPRIMINDO....");
pjob.print();
}
}
}
class PDFPrintPage implements Printable
{
private PDFFile file;
PDFPrintPage(PDFFile file)
{
this.file = file;
}
public int print(Graphics g, PageFormat format, int index) throws PrinterException
{
int pagenum = index + 1;
if ((pagenum >= 1) && (pagenum <= file.getNumPages()))
{
Graphics2D g2 = (Graphics2D) g;
PDFPage page = file.getPage(pagenum);
Rectangle imageArea = new Rectangle((int) format.getImageableX(), (int) format.getImageableY(),
(int) format.getImageableWidth(), (int) format.getImageableHeight());
g2.translate(0, 0);
PDFRenderer pgs = new PDFRenderer(page, g2, imageArea, null, null);
try
{
page.waitForFinish();
pgs.run();
} catch (InterruptedException ie)
{
System.out.println(ie.toString());
}
return PAGE_EXISTS;
} else
{
return NO_SUCH_PAGE;
}
}
}
[quote]Boa noite,
A quem interessar e não tiver resolvido ainda esta questão existe uma api da SUN pdf-renderer-1.0.5.jar com esta api mais as classes nativa de impressão do java consegui resolver este problema, agora consigo enviar o PDF direto para impressora sem precisar abrir o mesmo e ou ter o adobe instalado.
[/quote]
Eu também uso este método, o bom dele é que da pra escolher a impressora que quer imprimir, diferente daquela lib do ireport que manda sempre na impressora padrão.
Eu mudei minha classe para usar essa também, somente fiz uma tela de configuração para o cliente poder escolher em qual tela ele quer que a aplicação mande imprimir, e quando ele quer escolher ele abre o pdf e usa o gerenciador do Reader, ficou muito mais prático.