Example usage for org.apache.pdfbox.pdmodel PDPageContentStream moveTextPositionByAmount

List of usage examples for org.apache.pdfbox.pdmodel PDPageContentStream moveTextPositionByAmount

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel PDPageContentStream moveTextPositionByAmount.

Prototype

@Deprecated
public void moveTextPositionByAmount(float tx, float ty) throws IOException 

Source Link

Document

The Td operator.

Usage

From source file:Bulletin.Bulletin2.java

private float Text(PDPageContentStream cos, String text, PDFont font, int size, float left, float Y) {
    try {/*  www . jav a 2 s. com*/
        for (String line : text.split("\n")) {
            cos.beginText();
            cos.setFont(fontPlain, Math.round(textScale * size));
            cos.moveTextPositionByAmount(left, Y);
            cos.drawString(line);
            Y -= this.rowHeight;
            //                System.out.println("line = " + line);
            cos.endText();
            cos.stroke();
        }
    } catch (IOException ex) {
        Logger.getLogger(Bulletin2.class.getName()).log(Level.SEVERE, null, ex);
    }
    return this.rowHeight;
}

From source file:ch.eggbacon.app.pdf.PDFCreator.java

License:Open Source License

public void drawHeader(PDPageContentStream contentStream) throws IOException {

    PDImageXObject img = PDImageXObject.createFromFile("web/img/logo.png", doc);

    contentStream.drawImage(img, PDFConstants.MARGIN, PDFConstants.PAPER_HEIGHT - 40, 47, 30);

    contentStream.setFont(PDType1Font.HELVETICA_BOLD, 18);
    contentStream.beginText();/*www  .j a  va 2s  . c  o m*/
    contentStream.moveTextPositionByAmount(PDFConstants.MARGIN + 50, PDFConstants.PAPER_HEIGHT - 30);
    contentStream.drawString("Egg & Bacon Hotel");
    contentStream.endText();
}

From source file:ch.eggbacon.app.pdf.PDFCreator.java

License:Open Source License

public void drawFooter(int pageNr, PDPageContentStream contentStream) throws IOException {
    contentStream.setFont(PDType1Font.HELVETICA, 12);
    contentStream.beginText();/*from  www .jav a  2  s .  co m*/
    contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, 20);
    contentStream.drawString("Page " + pageNr);
    contentStream.endText();
}

From source file:ch.eggbacon.app.pdf.PDFCreator.java

License:Open Source License

public void drawTitlePage(String title, Person[] addr, String[] strs, PDPageContentStream contentStream)
        throws IOException {

    float ypos = PDFConstants.PAPER_HEIGHT - PDFConstants.MARGIN;

    contentStream.beginText();//from w  ww .  ja v  a 2s  .  co  m

    // Title
    contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
    contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, ypos);
    contentStream.drawString(title);
    contentStream.endText();
    ypos -= 20;

    // Adressen
    contentStream.setFont(PDType1Font.HELVETICA, 12);
    for (Person p : addr) {
        contentStream.beginText();
        contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, ypos -= 13);
        contentStream.drawString(p.getAnrede());
        contentStream.endText();
        contentStream.beginText();
        contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, ypos -= 13);
        contentStream.drawString(p.getVorname() + " " + p.getNachname());
        contentStream.endText();
        contentStream.beginText();
        contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, ypos -= 13);
        contentStream.drawString(p.getStrasse());
        contentStream.endText();
        contentStream.beginText();
        contentStream.moveTextPositionByAmount(PDFConstants.MARGIN, ypos -= 13);
        contentStream.drawString(p.getOrt());
        contentStream.endText();

        ypos -= 25;
    }

}

From source file:ch.eggbacon.app.pdf.PDFCreator.java

License:Open Source License

public void drawTablePage(PDPageContentStream contentStream, String[][] content) throws IOException {
    final float y = PDFConstants.PAPER_HEIGHT - PDFConstants.MARGIN;
    final int margin = PDFConstants.MARGIN;
    final int rows = content.length;
    final int cols = content[0].length;
    final float rowHeight = 20f;
    final float tableWidth = PDFConstants.PAPER_WIDTH - (2 * margin);
    final float tableHeight = rowHeight * rows;
    final float colWidth = tableWidth / (float) cols;
    final float cellMargin = 5f;

    //draw the rows
    float nexty = y;
    for (int i = 0; i <= rows; i++) {
        contentStream.drawLine(margin, nexty, margin + tableWidth, nexty);
        nexty -= rowHeight;/*from  w  ww  .  j a va  2  s.  c  o  m*/
    }

    //draw the columns
    float nextx = margin;
    for (int i = 0; i <= cols; i++) {
        contentStream.drawLine(nextx, y, nextx, y - tableHeight);
        nextx += colWidth;
    }

    //now add the text
    contentStream.setFont(PDType1Font.HELVETICA, 12);

    float textx = margin + cellMargin;
    float texty = y - 15;
    for (int i = 0; i < content.length; i++) {
        for (int j = 0; j < content[i].length; j++) {
            String text = content[i][j];
            contentStream.beginText();
            contentStream.moveTextPositionByAmount(textx, texty);
            contentStream.drawString(text);
            contentStream.endText();
            textx += colWidth;
        }
        texty -= rowHeight;
        textx = margin + cellMargin;
    }
}

From source file:com.foc.vaadin.gui.mswordGenerator.FocMSWordFontProperties.java

License:Apache License

public int getFontHeight(PDPageContentStream contentStream, PDType1Font font, int fontSize, String content)
        throws IOException {
    int start = 0;
    int end = 0;//from   ww w. j a  v  a2s . c o m
    int stringHeight = 10;
    if (content != null && !content.isEmpty()) {
        for (int i : possibleWrapPoints(content)) {
            float width = font.getStringWidth(content.substring(start, i)) / 1000 * fontSize;
            if (start < end/* && width > paragraphWidth*/) {
                contentStream.moveTextPositionByAmount(10, stringHeight);
                contentStream.drawString(toString().trim().substring(start, end));
                stringHeight += font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize;
                start = end;
            }
            end = i;
        }
    }
    return stringHeight;
}

From source file:com.foc.vaadin.gui.pdfGenerator.FocPDFLabel.java

License:Apache License

public void write() {
    try {//w w w  .ja v  a 2  s  . c om
        PDPageContentStream contentStream = getPDPageContentStream();

        if (value != null) {
            //            contentStream.moveTo(0, 0);
            contentStream.beginText();
            PDType1Font font = PDType1Font.HELVETICA;
            int fontSize = 10;
            contentStream.setFont(font, fontSize);
            //            contentStream.moveTextPositionByAmount(0, getHeight());
            contentStream.moveTextPositionByAmount(getAbsoluteLeft(), getAbsoluteTop() - getHeight());
            contentStream.drawString(value);
            contentStream.endText();
        }

    } catch (Exception ex) {
        Globals.logException(ex);
    }
}

From source file:controladores3.controladorGenerarLiquidaciones.java

public boolean generarLiquidaciones()
        throws FileNotFoundException, TransformerException, IOException, FOPException {

    Thread runnable = new Thread() {
        public void run() {
            try {
                modeloFacturas rutas = new modeloFacturas();
                dfs.setCurrencySymbol("$ ");
                dfs.setGroupingSeparator('.');
                dfs.setMonetaryDecimalSeparator('.');
                ((DecimalFormat) FORMAT).setDecimalFormatSymbols(dfs);
                controladores.controladorPrincipal miControlador = new controladorPrincipal();
                modelos.modeloEmpleados liquidaciones = new modeloEmpleados();
                modelos3.modeloRemuneraciones remuneraciones = new modeloRemuneraciones();
                String[][] data = liquidaciones.obtenerRemuneraciones2(getMes(), getYear());
                String[][] imp2cat = remuneraciones.obtenerTablaImpuesto();
                //                    float uf = remuneraciones.obtenerUF() / 100;
                double uf = remuneraciones.obtenerUF();
                int numEmp = data.length;
                String path = "Liquidaciones " + per;
                File dir = new File(path);
                dir.mkdir();/*  www.j a  v  a2  s  .c o  m*/
                //                    int bono300 = miControlador.obtenerBono300();
                for (int i = 0; i < numEmp; i++) {
                    String fileName = path + "/" + data[i][0] + ".pdf"; // name of our file
                    try {
                        PDDocument doc = new PDDocument(); // creating instance of pdfDoc
                        PDPage page = new PDPage();
                        doc.addPage(page); // adding page in pdf doc file
                        int base = Integer.parseInt(data[i][2]) * Integer.parseInt(data[i][28]) / 30;
                        //GRATIFICACION
                        int grat = (int) (base * 0.25);
                        //BONO ANTIGUEDAD
                        int bonoAnt = miControlador.obtenerBonoAnt(data[i][5]);
                        //BONO 300
                        //                            int totalBon300 = bono300 * Integer.parseInt(data[i][9]);
                        int totalBon300 = Integer.parseInt(data[i][27]);
                        //BONO ADICIONAL
                        int bonoAd = Integer.parseInt(data[i][11]);
                        //BONO RESPONSABILIDAD
                        int bonoResp = 0;
                        //BONO ADICIONAL
                        double bonoCol1 = Double.parseDouble(data[i][8]);
                        double bonoCol30 = Double.parseDouble(data[i][9]);
                        double bonoCol = bonoCol1 + bonoCol30 / 2;
                        int totalBonCol = (int) Math.round(((double) base * 0.0077777) * bonoCol);
                        //HORAS EXTRA
                        double horasExNor = Double.parseDouble(data[i][12]);
                        double horasExFes = Double.parseDouble(data[i][13]);
                        double horasEx = 0;
                        double bonoHor = 0;
                        double cantHorEx = 0;
                        //total de horas extras normales = 1; festivas = 2
                        double totalHorex = 0;
                        double resHorEx = 0;
                        if (horasExNor > 45) {
                            cantHorEx = 45;
                            totalHorex = 45;
                            resHorEx = horasExNor - 45;
                        } else {
                            cantHorEx = horasExNor;
                            totalHorex = cantHorEx;
                        }
                        if (cantHorEx + horasExFes > 45) {
                            resHorEx = resHorEx + (horasExFes - 45 + cantHorEx) * 2;
                            totalHorex = 45 - cantHorEx;
                            cantHorEx = 45;
                        } else {
                            cantHorEx += horasExFes;
                            totalHorex += horasExFes * 2;
                        }

                        //BONO ASIGNACION VOLUNTARIA
                        double totalBonoAV = base * 0.0077777 * resHorEx;
                        double valorHorEx = (int) ((double) base * 0.0077777 * totalHorex);
                        //TOTAL IMPONIBLE
                        double totImp = base + grat + bonoAnt + bonoAd + bonoResp + totalBonoAV + totalBonCol
                                + totalBon300 + valorHorEx;
                        //DESCUENTO AFP
                        int descAFP = Integer.parseInt(data[i][21]);
                        int totalAFP = (int) (totImp * ((double) descAFP / 10000));
                        int sis = (int) (totImp * 0.0141);
                        //DESCUENTO SALUD
                        double descSalud = 0, totalSalud = 0;
                        String salud;
                        if (data[i][4].toLowerCase().compareTo("fonasa") == 0) {
                            salud = "FONASA";
                            descSalud = Integer.parseInt(data[i][22]);
                            totalSalud = (int) (totImp * ((double) descSalud / 10000));
                        } else {
                            if (data[i][23].compareTo("") == 0) {
                                salud = data[i][4];
                            } else {
                                salud = data[i][23];
                            }
                            descSalud = ((double) Integer.parseInt(data[i][24]) / 1000) * uf;
                            totalSalud = descSalud;
                        }
                        //DESCUENTO CESANTIA
                        int ces = (int) (totImp * 0.006);
                        int cesEmp = (int) (totImp * 0.024);
                        //DESCUENTOS LEGALES
                        double descLegales = ces + totalSalud + totalAFP;
                        //TOTAL TRIBUTABLE
                        double totTrib = totImp - totalAFP - totalSalud - ces;
                        int descRenta = 0;
                        double totAux = 0;
                        for (String[] imp2cat1 : imp2cat) {
                            if (totTrib > Float.parseFloat(imp2cat1[0]) / 10
                                    && totTrib <= Float.parseFloat(imp2cat1[1]) / 10) {
                                descRenta = (int) (totTrib * Float.parseFloat(imp2cat1[2]) / 1000
                                        - Float.parseFloat(imp2cat1[3]) / 100);
                                totAux = totTrib - descRenta;
                                break;
                            }
                        }
                        //CAJA COMPENSACION
                        int caja = Integer.parseInt(data[i][15]);
                        //ASIGNACION FAMILIAR
                        int af = Integer.parseInt(data[i][16]);
                        //LIQ ALCANZADO
                        double liqAl = totAux - caja;
                        //COLACION 
                        int col = Integer.parseInt(data[i][6]);
                        //TRANSPORTE
                        int trans = Integer.parseInt(data[i][7]);
                        //TOTAL NO IMPONIBLE
                        int noImp = trans + col + af;
                        //ANTICIPO ADELANTO PRESTAMOS
                        int antic = Integer.parseInt(data[i][17]);
                        int adel = Integer.parseInt(data[i][18]);
                        int pres = Integer.parseInt(data[i][19]);
                        int cuo = Integer.parseInt(data[i][20]);
                        int cuoPres = 0;
                        int cuores = Math.max(0, Integer.parseInt(data[i][26]) - 1);
                        if (cuo != 0) {
                            cuoPres = pres / cuo;
                        }
                        //DESCUENTOS MENSUALES
                        int descMensuales = caja + antic + adel + cuoPres + descRenta;
                        //TOTAL HABERES
                        double totalHaberes = noImp + totImp;
                        //TOTAL DESCUENTOS
                        int totDesc = antic + adel + cuoPres + caja;
                        //LIQUIDO
                        double liq = liqAl + col + trans + af - antic - adel - cuoPres;

                        PDPageContentStream content = new PDPageContentStream(doc, page);

                        //HEADER

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 10);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(50, 770);
                        content.showText("GRUAS SANTA TERESITA LTDA.");
                        content.newLineAtOffset(200, 0);
                        content.showText("LIQUIDACIN TRABAJADOR");
                        content.newLineAtOffset(200, 0);
                        content.showText(per);
                        content.newLineAtOffset(-400, 0);
                        content.newLine();
                        content.showText("77.037.960-1");
                        content.newLine();
                        content.newLine();
                        content.showText("Nombre: " + data[i][1]);
                        content.newLineAtOffset(400, 0);
                        content.showText("Contrato: " + data[i][25]);
                        content.newLineAtOffset(-400, 0);
                        content.newLine();
                        content.showText("Rut: " + data[i][0]);
                        content.endText();
                        content.drawLine(30, 700, 600, 700);

                        //LEFT SIDE

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 9);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(120, 650);
                        content.showText("HABERES");
                        content.endText();
                        content.drawLine(45, 645, 245, 645);

                        content.beginText();
                        content.moveTextPositionByAmount(50, 635);
                        content.showText("Sueldo base proporcional");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(base));
                        content.newLineAtOffset(-150, -15);
                        double horex = Double.parseDouble(data[i][13]);
                        if (horex > 45) {
                            horex = 45;
                        }
                        content.showText("Horas extra ( " + cantHorEx + " horas )");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(valorHorEx));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Gratificacin:");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(grat));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono aos trabajados");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(bonoAnt));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono horas");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBon300));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono asignacin voluntaria");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBonoAV));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Bono adicional");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalBonCol));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Otros bonos");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(bonoAd));
                        content.endText();

                        content.drawLine(45, 515, 245, 515);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 500);
                        content.showText("Imponible");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totImp));
                        content.newLineAtOffset(-150, -15);
                        content.endText();
                        content.drawLine(45, 493, 245, 493);

                        content.beginText();
                        content.moveTextPositionByAmount(50, 470);
                        content.showText("Colacin");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(col));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Transporte");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(trans));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Asignacin familiar");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(af));
                        content.endText();

                        content.drawLine(45, 425, 245, 425);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 410);
                        content.showText("No imponible");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(noImp));
                        content.endText();
                        content.drawLine(45, 403, 245, 403);

                        content.drawLine(45, 380, 245, 380);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 365);
                        content.showText("Total haberes");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalHaberes));
                        content.endText();

                        content.beginText();
                        content.setFont(PDType1Font.HELVETICA, 9);
                        content.setLeading(14.5f);
                        content.moveTextPositionByAmount(65, 280);
                        content.showText("APORTES LEGALES EMPLEADOR");
                        content.endText();
                        content.drawLine(45, 275, 245, 275);
                        content.beginText();
                        content.moveTextPositionByAmount(50, 265);
                        content.showText("SIS");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(sis));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Seguro de cesanta empleador");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(cesEmp));
                        content.endText();
                        content.drawLine(45, 243, 245, 243);

                        //RIGHT SIDE
                        content.beginText();
                        content.moveTextPositionByAmount(410, 650);
                        content.showText("DESCUENTOS");
                        content.endText();
                        content.drawLine(345, 645, 545, 645);

                        content.beginText();
                        content.moveTextPositionByAmount(350, 635);
                        content.showText("Descuento AFP");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalAFP));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Descuento salud");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(totalSalud));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Seguro de cesanta trabajador");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(ces));
                        content.endText();

                        content.drawLine(345, 585, 545, 585);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 570);
                        content.showText("Descuentos legales");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descLegales));
                        content.endText();
                        content.drawLine(345, 563, 545, 563);

                        content.beginText();
                        content.moveTextPositionByAmount(350, 545);
                        content.showText("Impuesto a la renta");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descRenta));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Caja de compensacin");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(caja));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Anticipo");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(antic));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Adelanto");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(adel));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Prstamo");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(cuoPres));
                        content.newLineAtOffset(-150, -15);
                        content.showText("Cuotas restantes");
                        content.newLineAtOffset(150, 0);
                        content.showText(String.valueOf(cuores));
                        content.endText();

                        content.drawLine(345, 455, 545, 455);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 440);
                        content.showText("Descuentos mensuales");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descMensuales));
                        content.endText();
                        content.drawLine(345, 433, 545, 433);

                        content.drawLine(345, 400, 545, 400);
                        content.beginText();
                        content.moveTextPositionByAmount(350, 385);
                        content.showText("Total descuentos");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(descLegales + descMensuales));
                        content.endText();
                        content.drawLine(345, 378, 545, 378);

                        //CENTER
                        content.drawLine(180, 335, 400, 335);
                        content.beginText();
                        content.moveTextPositionByAmount(190, 320);
                        content.showText("Total a pago");
                        content.newLineAtOffset(150, 0);
                        content.showText(FORMAT.format(liq));
                        content.endText();
                        content.drawLine(180, 313, 400, 313);

                        content.close();
                        doc.save(fileName); // saving as pdf file with name perm 
                        doc.close(); // cleaning memory       

                    } catch (IOException e) {
                        System.out.println(e.getMessage());
                    }
                }
                JOptionPane.showMessageDialog(null, "Liquidaciones de sueldo generadas con xito",
                        "Operacin exitosa", JOptionPane.INFORMATION_MESSAGE);
                //                    liquidaciones.limpiarRemuneraciones();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    //runnable.run();
    runnable.start();
    return true;
}

From source file:controladores4.controladorReportes.java

public boolean generarInformeCobranza(final JTable tabla, final int[] rows) {
    DateFormat perDate = new SimpleDateFormat("MMMM-yyyy");
    DateFormat date = new SimpleDateFormat("dd-MM-yyyy");
    final String per = date.format(new Date());
    final NumberFormat FORMAT = NumberFormat.getCurrencyInstance();
    final DecimalFormatSymbols dfs = new DecimalFormatSymbols();
    Thread runnable = new Thread() {
        public void run() {
            try {
                dfs.setCurrencySymbol("$ ");
                dfs.setGroupingSeparator('.');
                dfs.setMonetaryDecimalSeparator('.');
                ((DecimalFormat) FORMAT).setDecimalFormatSymbols(dfs);
                String path = "Informes de cobranza/" + tabla.getValueAt(rows[0], 2);
                File dir = new File(path);
                dir.mkdirs();/*from   w  ww  .jav  a 2s  .co m*/
                String fileName = path + "/" + per + ".pdf"; // name of our file
                PDDocument doc = new PDDocument();
                PDPage page = new PDPage();
                doc.addPage(page);
                PDPageContentStream content = new PDPageContentStream(doc, page);
                int total = 0;
                modeloClientes model = new modeloClientes();
                String[] data = model.obtenerRutContactoPorRazon(tabla.getValueAt(rows[0], 2).toString());
                try {
                    //HEADER
                    content.beginText();
                    content.setFont(PDType1Font.HELVETICA, 10);
                    content.setLeading(14.5f);
                    content.moveTextPositionByAmount(50, 770);
                    content.endText();

                    content.drawLine(30, 750, 600, 750);
                    File imagen = new File(("src/icono/Logo_Gruas.bmp"));
                    String imPath = imagen.getAbsolutePath();
                    System.out.println(imPath);
                    PDImageXObject image = PDImageXObject.createFromFile(imPath, doc);
                    content.drawImage(image, 50, 600);

                    content.beginText();
                    content.moveTextPositionByAmount(400, 680);
                    content.showText("INFORME COBRANZA");
                    content.newLine();
                    content.showText(per);
                    content.newLineAtOffset(-130, -80);
                    content.showText("CLIENTE");
                    content.newLine();
                    content.endText();

                    content.drawLine(30, 580, 600, 580);

                    content.beginText();
                    content.moveTextPositionByAmount(50, 560);
                    content.showText("Rut: ");
                    content.newLineAtOffset(100, 0);
                    content.showText(data[0]);
                    content.newLineAtOffset(-100, -15);
                    content.showText("Razn Social:");
                    content.newLineAtOffset(100, 0);
                    content.showText(data[1]);
                    content.newLineAtOffset(-100, -15);
                    content.showText("Contacto:");
                    content.newLineAtOffset(100, 0);

                    content.newLine();
                    content.endText();

                    content.drawLine(30, 510, 600, 510);

                    content.beginText();
                    content.moveTextPositionByAmount(50, 480);
                    content.showText(
                            "Estimado cliente, las facturas que se exponen a continuacin se encuentran pendientes");
                    content.newLine();
                    content.showText("de pago. Favor regularizar la situacin.");
                    content.endText();

                    content.drawLine(30, 440, 600, 440);

                    content.beginText();
                    content.moveTextPositionByAmount(70, 430);
                    content.showText("N Folio");
                    content.newLineAtOffset(70, 0);
                    content.showText("Fecha");
                    content.newLineAtOffset(70, 0);
                    content.showText("Das emisin");
                    content.newLineAtOffset(80, 0);
                    content.showText("Total factura");
                    content.newLineAtOffset(80, 0);
                    content.showText("Monto abono");
                    content.newLineAtOffset(80, 0);
                    content.showText("Saldo deuda");
                    content.newLineAtOffset(80, 0);
                    content.endText();

                    content.drawLine(30, 425, 600, 425);

                    content.beginText();
                    content.moveTextPositionByAmount(75, 390);
                    for (int row : rows) {
                        String folio = tabla.getValueAt(row, 0).toString();
                        String fecha = tabla.getValueAt(row, 3).toString();
                        String dias = tabla.getValueAt(row, 4).toString();
                        int monto = Integer.parseInt(tabla.getValueAt(row, 7).toString());
                        int abono = Integer.parseInt(tabla.getValueAt(row, 11).toString());
                        int saldo = Integer.parseInt(tabla.getValueAt(row, 12).toString());
                        total += saldo;

                        content.showText(folio);
                        content.newLineAtOffset(60, 0);
                        content.showText(fecha);
                        content.newLineAtOffset(90, 0);
                        content.showText(dias);
                        content.newLineAtOffset(70, 0);
                        content.showText(FORMAT.format(monto));
                        content.newLineAtOffset(80, 0);
                        content.showText(FORMAT.format(abono));
                        content.newLineAtOffset(80, 0);
                        content.showText(FORMAT.format(saldo));
                        content.newLineAtOffset(-380, -15);
                    }

                    content.newLineAtOffset(310, -45);
                    content.showText("Total deuda");
                    content.newLineAtOffset(70, 0);
                    content.showText(FORMAT.format(total));
                    content.endText();

                    content.close();
                    doc.save(fileName); // saving as pdf file with name perm 
                    doc.close(); // cleaning memory 

                } catch (Exception e) {
                    e.printStackTrace();
                }

                JOptionPane.showMessageDialog(null, "Informe de cobranza generado con xito",
                        "Operacin exitosa", JOptionPane.INFORMATION_MESSAGE);
                //                    liquidaciones.limpiarRemuneraciones();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    //runnable.run();
    runnable.start();
    return true;
}

From source file:org.dspace.disseminate.CitationDocumentServiceImpl.java

License:BSD License

protected void generateCoverPage(Context context, PDDocument document, PDPage coverPage, Item item)
        throws IOException {
    PDPageContentStream contentStream = new PDPageContentStream(document, coverPage);
    try {/*ww  w. j a  v a 2s.co  m*/
        int ypos = 760;
        int xpos = 30;
        int xwidth = 550;
        int ygap = 20;

        PDFont fontHelvetica = PDType1Font.HELVETICA;
        PDFont fontHelveticaBold = PDType1Font.HELVETICA_BOLD;
        PDFont fontHelveticaOblique = PDType1Font.HELVETICA_OBLIQUE;
        contentStream.setNonStrokingColor(Color.BLACK);

        String[][] content = { header1 };
        drawTable(coverPage, contentStream, ypos, xpos, content, fontHelveticaBold, 11, false);
        ypos -= (ygap);

        String[][] content2 = { header2 };
        drawTable(coverPage, contentStream, ypos, xpos, content2, fontHelveticaBold, 11, false);
        ypos -= ygap;

        contentStream.fillRect(xpos, ypos, xwidth, 1);
        contentStream.closeAndStroke();

        String[][] content3 = { { getOwningCommunity(context, item), getOwningCollection(item) } };
        drawTable(coverPage, contentStream, ypos, xpos, content3, fontHelvetica, 9, false);
        ypos -= ygap;

        contentStream.fillRect(xpos, ypos, xwidth, 1);
        contentStream.closeAndStroke();
        ypos -= (ygap * 2);

        for (String field : fields) {
            field = field.trim();
            PDFont font = fontHelvetica;
            int fontSize = 11;
            if (field.contains("title")) {
                fontSize = 26;
                ypos -= ygap;
            } else if (field.contains("creator") || field.contains("contributor")) {
                fontSize = 16;
            }

            if (field.equals("_line_")) {
                contentStream.fillRect(xpos, ypos, xwidth, 1);
                contentStream.closeAndStroke();
                ypos -= (ygap);

            } else if (StringUtils.isNotEmpty(itemService.getMetadata(item, field))) {
                ypos = drawStringWordWrap(coverPage, contentStream, itemService.getMetadata(item, field), xpos,
                        ypos, font, fontSize);
            }

            if (field.contains("title")) {
                ypos -= ygap;
            }
        }

        contentStream.beginText();
        contentStream.setFont(fontHelveticaOblique, 11);
        contentStream.moveTextPositionByAmount(xpos, ypos);
        contentStream.drawString(footer);
        contentStream.endText();
    } finally {
        contentStream.close();
    }
}