⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdfgenerator.java

📁 Boletos banc谩rios usando java
💻 JAVA
字号:
/* * Esta biblioteca e um software livre, que pode ser redistribuido e/ou * modificado sob os termos da Licença Publica Geral Reduzida GNU, * conforme publicada pela Free Software Foundation, versao 2.1 da licenca. * * Esta biblioteca e distribuida na experanca de ser util aos seus usuarios, * porem NAO TEM NENHUMA GARANTIA, EXPLICITAS OU IMPLICITAS, COMERCIAIS OU * DE ATENDIMENTO A UMA DETERMINADA FINALIDADE. * Veja a Licenca Publica Geral Reduzida GNU para maiores detalhes. * A licenca se encontra no arquivo lgpl-br.txt */package org.jboleto.control;import java.io.ByteArrayOutputStream;import java.text.DecimalFormat;import javax.swing.text.DefaultFormatter;import javax.swing.text.NumberFormatter;import com.lowagie.text.Document;import com.lowagie.text.Element;import com.lowagie.text.Image;import com.lowagie.text.PageSize;import com.lowagie.text.pdf.BarcodeInter25;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfContentByte;import com.lowagie.text.pdf.PdfTemplate;import com.lowagie.text.pdf.PdfWriter;import java.io.FileOutputStream;import java.util.Vector;import org.jboleto.Banco;import org.jboleto.JBoletoBean;/** * * Classe responsavel pela geracao dos boletos no formato PDF. * @author Fabio Souza */public class PDFGenerator implements Generator {        ByteArrayOutputStream baos;        private DefaultFormatter formatter;        private Document document;    private PdfContentByte cb;        private PdfTemplate tempImgBoleto;    private PdfTemplate tempImgBanco;    private PdfTemplate tempImgMarketing;        private final float IMAGEM_BOLETO_WIDTH = 514.22f;    private final float IMAGEM_BOLETO_HEIGHT = 385.109f;        private final float IMAGEM_BANCO_WIDTH = 100.0f;    private final float IMAGEM_BANCO_HEIGHT = 23.0f;        private final float IMAGEM_MARKETING_WIDTH = 511.2f;    private final float IMAGEM_MARKETING_HEIGHT = 3341.3f;        Image imgTitulo = null;    //gera template com a imagem do marketing    Image imgMarketing = null;        Image imgBanco = null;        /**     *      * @param template Imagem de referencia para imprimir      */    public PDFGenerator(JBoletoBean boleto, int codBanco) {                baos = new ByteArrayOutputStream();                formatter = new NumberFormatter(new DecimalFormat("#,##0.00"));                document = new Document(PageSize.A4);                try {                        PdfWriter writer = PdfWriter.getInstance(document, baos);                        document.open();                        cb = writer.getDirectContent();                        //gera template com o fundo do boleto            imgTitulo = Image.getInstance(getClass().getResource("/img/template.gif"));            imgTitulo.scaleToFit(IMAGEM_BOLETO_WIDTH,IMAGEM_BOLETO_HEIGHT);            imgTitulo.setAbsolutePosition(0,0);            //Pega a imagem do marketing            if (boleto.getImagemMarketing() != null) {                                imgMarketing = Image.getInstance(boleto.getImagemMarketing());            }             else { //caso o metodo nao esteja setado coloca uma imagem de um pixel no lugar                                imgMarketing = Image.getInstance(getClass().getResource("/img/pixel.gif"));            }                        imgMarketing.scaleToFit(IMAGEM_MARKETING_WIDTH,IMAGEM_MARKETING_HEIGHT);            imgMarketing.setAbsolutePosition(0,0);            imgBanco = Image.getInstance(getClass().getResource("/img/" + codBanco + ".gif"));            imgBanco.scaleToFit(IMAGEM_BANCO_WIDTH,IMAGEM_BANCO_HEIGHT);            imgBanco.setAbsolutePosition(0,0);                    }         catch (Exception ex) {            ex.printStackTrace();        }    }        /**     * Adiciona um boleto na fila.     */    @Override    public void addBoleto(JBoletoBean boleto, Banco banco) {                try {                                                tempImgMarketing = cb.createTemplate(IMAGEM_MARKETING_WIDTH,IMAGEM_MARKETING_HEIGHT);            tempImgMarketing.addImage(imgMarketing);                                    tempImgBoleto = cb.createTemplate(IMAGEM_BOLETO_WIDTH,IMAGEM_BOLETO_HEIGHT);            tempImgBoleto.addImage(imgTitulo);                        //gera template com a imagem do logo do banco            tempImgBanco = cb.createTemplate(IMAGEM_BANCO_WIDTH,IMAGEM_BANCO_HEIGHT);            tempImgBanco.addImage(imgBanco);                        float altura = 412;                        document.newPage();                        cb.addTemplate(tempImgMarketing, document.left(),document.top()-340);                        cb.addTemplate(tempImgBoleto, document.left(),document.top()-750);            cb.addTemplate(tempImgBanco, document.left(),document.top()-486);                        BaseFont bfTextoSimples = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);            BaseFont bfTextoCB = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED);                        //inicio das descricoes do boleto            cb.beginText();            cb.setFontAndSize(bfTextoCB,10);                        if (boleto.getDescricoes() != null) {                                Vector descricoes = boleto.getDescricoes();                                for (int i=0; i < descricoes.size(); i++) {                                        cb.setTextMatrix(document.left(),document.top()-70+i*15);                    cb.showText(String.valueOf(descricoes.elementAt(i)));                }                                cb.endText();            }                        //fim descricoes                        cb.beginText();            cb.setFontAndSize(bfTextoCB,13);                        cb.setTextMatrix(document.left()+125,altura-87);                        cb.showText(banco.getNumero() + "-" + boleto.getDigitoCodigoBarras(banco.getNumero()));            cb.endText();                        cb.beginText();            cb.setFontAndSize(bfTextoSimples,8);                        cb.setTextMatrix(document.left()+50, altura+23);            cb.showText(boleto.getCedente()); //imprime o cedente                        cb.setTextMatrix(document.left()+5,altura);            cb.showText(boleto.getNomeSacado());                        cb.setTextMatrix(document.left()+230,altura);            cb.showText(boleto.getDataVencimento());                        cb.setTextMatrix(document.left()+400,altura);            cb.showText(formatter.valueToString(new Double(boleto.getValorBoleto())));                        // ALTERADO POR GLADYSTON            cb.setTextMatrix(document.left()+5,altura-19);                      cb.showText(banco.getAgenciaCodCedenteFormatted());                        // ALTERADO POR GLADYSTON            cb.setTextMatrix(document.left()+146,altura-19);            cb.showText(banco.getNossoNumeroFormatted());            cb.endText();                        cb.beginText();            cb.setFontAndSize(bfTextoCB,10);                        cb.setTextMatrix(document.left()+175,altura-87);            cb.showText(banco.getLinhaDigitavel());            cb.endText();                        cb.beginText();            cb.setFontAndSize(bfTextoSimples,8);                        cb.setTextMatrix(document.left()+5,altura-111);            cb.showText(boleto.getLocalPagamento());                        cb.setTextMatrix(document.left()+5,altura-121);            cb.showText(boleto.getLocalPagamento2());                        cb.setTextMatrix(document.left()+425,altura-121);            cb.showText(boleto.getDataVencimento());                        cb.setTextMatrix(document.left()+5,altura-141);            cb.showText(boleto.getCedente());                        // ALTERADO POR GLADYSTON            cb.setTextMatrix(document.left()+410,altura-141);            cb.showText(banco.getAgenciaCodCedenteFormatted());                        cb.setTextMatrix(document.left()+5,altura-162);            cb.showText(boleto.getDataDocumento());                        cb.setTextMatrix(document.left()+70,altura-162);            cb.showText(boleto.getNoDocumento());                        cb.setTextMatrix(document.left()+180,altura-162);            cb.showText(boleto.getEspecieDocumento());                        cb.setTextMatrix(document.left()+250,altura-162);            cb.showText(boleto.getAceite());                        cb.setTextMatrix(document.left()+300,altura-162);            cb.showText(boleto.getDataProcessamento());                        // ALTERADO POR GLADYSTON            cb.setTextMatrix(document.left()+410,altura-162);            cb.showText(banco.getNossoNumeroFormatted());                        // ALTERADO POR GLADYSTON            cb.setTextMatrix(document.left()+122,altura-185);            cb.showText(banco.getCarteiraFormatted());                        cb.setTextMatrix(document.left()+200,altura-185);            cb.showText("R$");                        cb.setTextMatrix(document.left()+430,altura-185);            cb.showText(formatter.valueToString(new Double(boleto.getValorBoleto())));                        cb.setTextMatrix(document.left()+5,altura-207);            cb.showText(boleto.getInstrucao1());                        cb.setTextMatrix(document.left()+5,altura-217);            cb.showText(boleto.getInstrucao2());                        cb.setTextMatrix(document.left()+5,altura-227);            cb.showText(boleto.getInstrucao3());                        cb.setTextMatrix(document.left()+5,altura-237);            cb.showText(boleto.getInstrucao4());                        cb.setTextMatrix(document.left()+5,altura-247);            cb.showText(boleto.getInstrucao5());                        cb.setTextMatrix(document.left()+5,altura-277);            cb.showText(boleto.getCedente());                        cb.setTextMatrix(document.left()+100,altura-302);            cb.showText(boleto.getNomeSacado() + "     " + boleto.getCpfSacado());                        cb.setTextMatrix(document.left()+100,altura-312);            cb.showText(boleto.getEnderecoSacado());                        cb.setTextMatrix(document.left()+100,altura-322);            cb.showText(boleto.getCepSacado() + " " + boleto.getBairroSacado() + " - " + boleto.getCidadeSacado() + " " + boleto.getUfSacado());                        cb.endText();                        BarcodeInter25 code = new BarcodeInter25();            code.setCode(banco.getCodigoBarras());            code.setExtended(true);                        code.setTextAlignment(Element.ALIGN_LEFT);            code.setBarHeight(37.00f);            code.setFont(null);            code.setX(0.73f);            code.setN(3);                        PdfTemplate imgCB = code.createTemplateWithBarcode(cb,null,null);            cb.addTemplate(imgCB,40,10);                    }         catch (Exception ex) {            ex.printStackTrace();        }    }            @Override    public void closeBoleto(String caminho) {                try{                        document.close();                        FileOutputStream fos = new FileOutputStream(caminho);                        fos.write(baos.toByteArray());            fos.flush();                    }         catch (Exception ex) {            ex.printStackTrace();        }                    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -