Imprimir pdf

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;
        }
    }
}
1 curtida

[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.