Example usage for org.apache.pdfbox.pdmodel PDDocument close

List of usage examples for org.apache.pdfbox.pdmodel PDDocument close

Introduction

In this page you can find the example usage for org.apache.pdfbox.pdmodel PDDocument close.

Prototype

@Override
public void close() throws IOException 

Source Link

Document

This will close the underlying COSDocument object.

Usage

From source file:com.testautomationguru.utility.PDFUtil.java

License:Apache License

private void updateStartAndEndPages(String file, int start, int end) throws IOException {

    PDDocument document = PDDocument.load(new File(file));
    int pagecount = document.getNumberOfPages();
    logger.info("Page Count : " + pagecount);
    logger.info("Given start page:" + start);
    logger.info("Given end   page:" + end);

    if ((start > 0 && start <= pagecount)) {
        this.startPage = start;
    } else {/*from  w  w  w  .  j a  va 2s  . c o  m*/
        this.startPage = 1;
    }
    if ((end > 0 && end >= start && end <= pagecount)) {
        this.endPage = end;
    } else {
        this.endPage = pagecount;
    }
    document.close();
    logger.info("Updated start page:" + this.startPage);
    logger.info("Updated end   page:" + this.endPage);
}

From source file:com.truckzoo.test.pdf.CustomPageDrawer.java

License:Apache License

public static void main(String[] args) throws IOException {
    File file = new File("custom-render-demo.pdf");

    PDDocument doc = PDDocument.load(file);
    PDFRenderer renderer = new MyPDFRenderer(doc);
    BufferedImage image = renderer.renderImage(0);
    ImageIO.write(image, "PNG", new File("custom-render.png"));
    doc.close();
}

From source file:com.truckzoo.test.pdf.SuperimposePage.java

License:Apache License

public static void main(String[] args) throws IOException {
    /*if (args.length != 2)
    {/*w  w w  .  j av a  2 s . c  om*/
    System.err.println("usage: " + SuperimposePage.class.getName() +
            " <source-pdf> <dest-pdf>");
    System.exit(1);
    }*/
    String sourcePath = args[0];
    String destPath = args[1];

    PDDocument sourceDoc = null;
    try {
        // load the source PDF
        sourceDoc = PDDocument.load(new File(sourcePath));
        int sourcePage = 1;

        // create a new PDF and add a blank page
        PDDocument doc = new PDDocument();
        PDPage page = new PDPage();
        doc.addPage(page);

        // write some sample text to the new page
        PDPageContentStream contents = new PDPageContentStream(doc, page);
        contents.beginText();
        contents.setFont(PDType1Font.HELVETICA_BOLD, 12);
        contents.newLineAtOffset(2, PDRectangle.LETTER.getHeight() - 12);
        contents.showText("Sample text");
        contents.endText();

        // Create a Form XObject from the source document using LayerUtility
        LayerUtility layerUtility = new LayerUtility(doc);
        PDFormXObject form = layerUtility.importPageAsForm(sourceDoc, sourcePage - 1);

        // draw the full form
        contents.drawForm(form);

        // draw a scaled form
        contents.saveGraphicsState();
        Matrix matrix = Matrix.getScaleInstance(0.5f, 0.5f);
        contents.transform(matrix);
        contents.drawForm(form);
        contents.restoreGraphicsState();

        // draw a scaled and rotated form
        contents.saveGraphicsState();
        matrix.rotate(1.8 * Math.PI); // radians
        contents.transform(matrix);
        contents.drawForm(form);
        contents.restoreGraphicsState();

        contents.close();
        doc.save(destPath);
        doc.close();
    } finally {
        if (sourceDoc != null) {
            sourceDoc.close();
        }
    }
}

From source file:com.validation.manager.core.server.core.AttachmentServerTest.java

License:Apache License

/**
 * Test of addFile method, of class AttachmentServer.
 *//*  w  w w  . j  a v a 2s .c  o m*/
@Test
public void testAddRetrieveTextFile() {
    try {
        System.out.println("add text File");
        File f = new File("target/Test.txt");
        f.deleteOnExit();
        List<String> lines = Arrays.asList("The first line", "The second line");
        Path file = Paths.get(f.getAbsolutePath());
        Files.write(file, lines, Charset.forName("UTF-8"));
        AttachmentServer instance = new AttachmentServer();
        instance.addFile(f, f.getName());
        instance.write2DB();
        //Delete the file
        FileUtils.delete(f.getAbsolutePath());
        assertEquals(1, (int) instance.getAttachmentType().getId());//Text file
        System.out.println("retrieveFile");
        AttachmentServer temp = new AttachmentServer(instance.getAttachmentPK());
        File loadedFile = temp.getAttachedFile("target/loaded/");
        BufferedReader br = new BufferedReader(new FileReader(loadedFile));
        String line;
        int count = 0;
        while ((line = br.readLine()) != null) {
            assertEquals(lines.get(count), line);
            System.out.println(line);
            count++;
        }
        assertEquals(lines.size(), count);
        //Create pdf file
        System.out.println("add pdf File");
        File pdf = Tool.convertToPDF(loadedFile, "target/Text.pdf");
        pdf.deleteOnExit();
        instance = new AttachmentServer();
        instance.addFile(pdf, pdf.getName());
        instance.write2DB();
        //Delete the file
        FileUtils.delete(pdf.getAbsolutePath());
        assertEquals(2, (int) instance.getAttachmentType().getId());//PDF file
        System.out.println("retrieveFile");
        temp = new AttachmentServer(instance.getAttachmentPK());
        loadedFile = temp.getAttachedFile("target/loaded/");
        PDFTextStripper pdfStripper;
        PDDocument pdDoc = null;
        COSDocument cosDoc = null;
        try {
            PDFParser parser = new PDFParser(new RandomAccessBufferedFileInputStream(loadedFile));
            parser.parse();
            cosDoc = parser.getDocument();
            pdfStripper = new PDFTextStripper();
            pdDoc = new PDDocument(cosDoc);
            pdfStripper.setStartPage(1);
            pdfStripper.setEndPage(1);
            String parsedText = pdfStripper.getText(pdDoc);
            System.out.println(parsedText);
        } catch (IOException ex) {
            Exceptions.printStackTrace(ex);
            fail();
        } finally {
            if (cosDoc != null) {
                cosDoc.close();
            }
            if (pdDoc != null) {
                pdDoc.close();
            }
        }
    } catch (IOException | VMException ex) {
        Exceptions.printStackTrace(ex);
        fail();
    }
}

From source file:com.yiyihealth.tools.test.DrawPrintTextLocations.java

License:Apache License

/**
 * This will print the documents data.//from w  w w .  j  a v a2  s  . c  o  m
 *
 * @param args The command line arguments.
 *
 * @throws IOException If there is an error parsing the document.
 */
public static void main(String[] args) throws IOException {
    if (args.length != 1) {
        usage();
    } else {
        PDDocument document = null;
        try {
            document = PDDocument.load(new File(args[0]));

            DrawPrintTextLocations stripper = new DrawPrintTextLocations(document, args[0]);
            stripper.setSortByPosition(true);

            for (int page = 0; page < document.getNumberOfPages(); ++page) {
                stripper.stripPage(page);
            }
        } finally {
            if (document != null) {
                document.close();
            }
        }
    }
}

From source file:com.yiyihealth.util.PDF2Image.java

License:Apache License

/**
 * Infamous main method.//from   ww w. j  a v  a  2s  . c o m
 *
 * @param args Command line arguments, should be one and a reference to a file.
 *
 * @throws IOException If there is an error parsing the document.
 */
public static void main(String[] args) throws IOException {
    // suppress the Dock icon on OS X
    System.setProperty("apple.awt.UIElement", "true");

    String password = "";
    String pdfFile = null;
    String outputPrefix = null;
    String imageFormat = "jpg";
    int startPage = 1;
    int endPage = Integer.MAX_VALUE;
    String color = "rgb";
    int dpi;
    float cropBoxLowerLeftX = 0;
    float cropBoxLowerLeftY = 0;
    float cropBoxUpperRightX = 0;
    float cropBoxUpperRightY = 0;
    boolean showTime = false;
    try {
        dpi = Toolkit.getDefaultToolkit().getScreenResolution();
    } catch (HeadlessException e) {
        dpi = 96;
    }
    for (int i = 0; i < args.length; i++) {
        if (args[i].equals(PASSWORD)) {
            i++;
            if (i >= args.length) {
                usage();
            }
            password = args[i];
        } else if (args[i].equals(START_PAGE)) {
            i++;
            if (i >= args.length) {
                usage();
            }
            startPage = Integer.parseInt(args[i]);
        } else if (args[i].equals(END_PAGE)) {
            i++;
            if (i >= args.length) {
                usage();
            }
            endPage = Integer.parseInt(args[i]);
        } else if (args[i].equals(PAGE)) {
            i++;
            if (i >= args.length) {
                usage();
            }
            startPage = Integer.parseInt(args[i]);
            endPage = Integer.parseInt(args[i]);
        } else if (args[i].equals(IMAGE_TYPE) || args[i].equals(FORMAT)) {
            i++;
            imageFormat = args[i];
        } else if (args[i].equals(OUTPUT_PREFIX) || args[i].equals(PREFIX)) {
            i++;
            outputPrefix = args[i];
        } else if (args[i].equals(COLOR)) {
            i++;
            color = args[i];
        } else if (args[i].equals(RESOLUTION) || args[i].equals(DPI)) {
            i++;
            dpi = Integer.parseInt(args[i]);
        } else if (args[i].equals(CROPBOX)) {
            i++;
            cropBoxLowerLeftX = Float.valueOf(args[i]);
            i++;
            cropBoxLowerLeftY = Float.valueOf(args[i]);
            i++;
            cropBoxUpperRightX = Float.valueOf(args[i]);
            i++;
            cropBoxUpperRightY = Float.valueOf(args[i]);
        } else if (args[i].equals(TIME)) {
            showTime = true;
        } else {
            if (pdfFile == null) {
                pdfFile = args[i];
            }
        }
    }
    if (pdfFile == null) {
        usage();
    } else {
        if (outputPrefix == null) {
            outputPrefix = pdfFile.substring(0, pdfFile.lastIndexOf('.'));
        }

        PDDocument document = null;
        try {
            document = PDDocument.load(new File(pdfFile), password);

            ImageType imageType = null;
            if ("bilevel".equalsIgnoreCase(color)) {
                imageType = ImageType.BINARY;
            } else if ("gray".equalsIgnoreCase(color)) {
                imageType = ImageType.GRAY;
            } else if ("rgb".equalsIgnoreCase(color)) {
                imageType = ImageType.RGB;
            } else if ("rgba".equalsIgnoreCase(color)) {
                imageType = ImageType.ARGB;
            }

            if (imageType == null) {
                System.err.println("Error: Invalid color.");
                System.exit(2);
            }

            //if a CropBox has been specified, update the CropBox:
            //changeCropBoxes(PDDocument document,float a, float b, float c,float d)
            if (cropBoxLowerLeftX != 0 || cropBoxLowerLeftY != 0 || cropBoxUpperRightX != 0
                    || cropBoxUpperRightY != 0) {
                changeCropBox(document, cropBoxLowerLeftX, cropBoxLowerLeftY, cropBoxUpperRightX,
                        cropBoxUpperRightY);
            }

            long startTime = System.nanoTime();

            // render the pages
            boolean success = true;
            endPage = Math.min(endPage, document.getNumberOfPages());
            PDFRenderer renderer = new PDFRenderer(document);
            for (int i = startPage - 1; i < endPage; i++) {
                BufferedImage image = renderer.renderImageWithDPI(i, dpi, imageType);
                String fileName = outputPrefix + "_" + (i + 1) + "." + imageFormat;
                success &= ImageIOUtil.writeImage(image, fileName, dpi);
            }

            // performance stats
            long endTime = System.nanoTime();
            long duration = endTime - startTime;
            int count = 1 + endPage - startPage;
            if (showTime) {
                System.err.printf("Rendered %d page%s in %dms\n", count, count == 1 ? "" : "s",
                        duration / 1000000);
            }

            if (!success) {
                System.err.println("Error: no writer found for image format '" + imageFormat + "'");
                System.exit(1);
            }
        } finally {
            if (document != null) {
                document.close();
            }
        }
    }
}

From source file:compressor.Compressor.java

void extract_images(String src, String dest, String img_name) throws IOException {
    PDDocument document = null;
    try {/*from  w w  w.  j  a va2s  .  c  om*/
        document = PDDocument.load(src);
    } catch (IOException ex) {
        System.out.println("" + ex);
    }
    List pages = document.getDocumentCatalog().getAllPages();
    Iterator iter = pages.iterator();
    int i = 1;
    String name = null;

    File file = new File(dest + "img");
    if (!file.exists()) {
        if (file.mkdir()) {
            System.out.println("Directory is created!");
        } else {
            System.out.println("Failed to create directory!");
        }
    }
    dest = dest + "img/";

    while (iter.hasNext()) {
        PDPage page = (PDPage) iter.next();
        PDResources resources = page.getResources();
        Map pageImages = resources.getImages();
        if (pageImages != null) {
            Iterator imageIter = pageImages.keySet().iterator();
            while (imageIter.hasNext()) {
                String key = (String) imageIter.next();
                PDXObjectImage image = (PDXObjectImage) pageImages.get(key);

                image.write2file(dest + img_name + i);
                i++;
            }
        }
    }
    document.close();
}

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();//from   ww w .  j  a va  2 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  ww  w. j  av  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:controldeadministradores.Admin.java

public void crearPDF(String file, String body) throws Exception {
    String outputFileName = file + ".pdf";
    //        if (args.length > 0)
    //            outputFileName = args[0];

    // Create a document and add a page to it
    PDDocument document = new PDDocument();
    PDPage page1 = new PDPage(PDPage.PAGE_SIZE_A4);
    // PDPage.PAGE_SIZE_LETTER is also possible
    PDRectangle rect = page1.getMediaBox();
    // rect can be used to get the page width and height
    document.addPage(page1);//  w  ww. j ava  2 s  .  co  m

    // Create a new font object selecting one of the PDF base fonts
    PDFont fontPlain = PDType1Font.HELVETICA;
    PDFont fontBold = PDType1Font.HELVETICA_BOLD;
    PDFont fontItalic = PDType1Font.HELVETICA_OBLIQUE;
    PDFont fontMono = PDType1Font.COURIER;

    // Start a new content stream which will "hold" the to be created content
    PDPageContentStream cos = new PDPageContentStream(document, page1);

    int line = 0;

    // Define a text content stream using the selected font, move the cursor and draw some text
    cos.beginText();
    cos.setFont(fontPlain, 14);
    cos.moveTextPositionByAmount(100, rect.getHeight() - 50 * (++line));
    cos.drawString("Reporte de " + file);
    cos.endText();

    String[] txtLine = body.split("-");
    for (int k = 0; k < txtLine.length; k++) {
        cos.beginText();
        cos.setFont(fontPlain, 12);
        cos.moveTextPositionByAmount(100, rect.getHeight() - 50 * (++line));
        cos.drawString(txtLine[k]);
        cos.endText();
        cos.close();
    }

    // Make sure that the content stream is closed:

    // Save the results and ensure that the document is properly closed:
    document.save(outputFileName);
    document.close();
}