List of usage examples for org.apache.pdfbox.pdmodel PDDocument addPage
public void addPage(PDPage page)
From source file:com.PDF.Resume.java
public ByteArrayOutputStream createResume() throws ParseException, IOException, COSVisitorException { System.out.println(imagePath); // 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); // Create a new font object selecting one of the PDF base fonts PDFont fontPlain = PDType1Font.HELVETICA; // 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();//from w ww. j a v a 2 s . c o m cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line)); cos.drawString("Pagina " + ++pagenumber); cos.endText(); line--; cos.beginText(); cos.setFont(fontPlain, 24); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line)); cos.drawString("Curriculum Vitae"); cos.endText(); if (user != null) { cos.beginText(); cos.setFont(fontPlain, 24); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line)); cos.drawString(user.getSurname() + ""); cos.endText(); } // add an image try { BufferedImage awtImage = ImageIO.read(new File( "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png")); PDXObjectImage ximage = new PDPixelMap(document, awtImage); float scale = 1f; // alter this value to set the image size cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale); } catch (FileNotFoundException fnfex) { System.out.println("No image for you"); } // Make sure that the content stream is closed: cos.close(); //second page line = 0; PDPage page2 = new PDPage(PDPage.PAGE_SIZE_A4); document.addPage(page2); cos = new PDPageContentStream(document, page2); try { BufferedImage awtImage = ImageIO.read(new File( "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png")); PDXObjectImage ximage = new PDPixelMap(document, awtImage); float scale = 1f; // alter this value to set the image size cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale); } catch (FileNotFoundException fnfex) { System.out.println("No image for you"); } cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line)); cos.drawString("Pagina " + ++pagenumber); cos.endText(); line--; cos.beginText(); cos.setFont(fontPlain, 18); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 90 * (++line)); cos.drawString("Personalia"); cos.endText(); line += 4; cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Naam:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getSurname() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Geslacht:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getGender() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Telefoonnummer:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getPersonalPhone() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Emailadres:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getPersonalEmail() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Adres:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getAddress() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Postcode:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getZipCode() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Stad:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getCity() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Provincie:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getRegion() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Functie:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getFunction() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Business Unit:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(user.getBusinessUnitAsString() + ""); cos.endText(); if (!educationList.isEmpty()) { line++; cos.beginText(); cos.setFont(fontPlain, 18); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Opleidingen"); cos.endText(); for (EmployeeHasEducation e : educationList) { cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("School:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(e.getEducation().getSchool() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Richting:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(e.getEducation().getDegree() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Niveau:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(e.getEducation().getGrade() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Begindatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(e.getStartDate().substring(0, 10) + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Einddatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(e.getEndDate().substring(0, 10) + ""); cos.endText(); } } if (!certificateList.isEmpty()) { line++; cos.beginText(); cos.setFont(fontPlain, 18); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Certificaten"); cos.endText(); for (Certificate c : certificateList) { cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Certificaat naam:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(c.getName() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Certificaat plaats:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(c.getCertificationAuthority() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Licentienummer:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(c.getLicenseNumber() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Startdatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(c.getStartDate().substring(0, 10) + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Einddatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(c.getExpirationDate().substring(0, 10) + ""); cos.endText(); line++; } line++; } cos.close(); if (!preceedings.isEmpty()) { line = 0; PDPage page3 = new PDPage(PDPage.PAGE_SIZE_A4); document.addPage(page3); cos = new PDPageContentStream(document, page3); try { BufferedImage awtImage = ImageIO.read(new File( "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png")); PDXObjectImage ximage = new PDPixelMap(document, awtImage); float scale = 1f; // alter this value to set the image size cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale); } catch (FileNotFoundException fnfex) { System.out.println("No image for you"); } cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line)); cos.drawString("Pagina " + ++pagenumber); cos.endText(); line--; cos.beginText(); cos.setFont(fontPlain, 18); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 100 * (++line)); cos.drawString("Projecten"); line += 4; cos.endText(); for (Preceeding p : preceedings) { cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Projectnaam:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(p.getProject().getName() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Bedrijfsnaam:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(p.getProject().getCompany().getName() + " "); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Project rol:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(p.getDescription() + ""); cos.endText(); // } cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Startdatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(p.getProject().getStartDate() + ""); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Einddatum:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (line)); cos.drawString(p.getProject().getEndDate() + ""); cos.endText(); line++; } } cos.close(); //Skills of the user if (!skillList.isEmpty()) { line = 0; PDPage page3 = new PDPage(PDPage.PAGE_SIZE_A4); document.addPage(page3); cos = new PDPageContentStream(document, page3); try { BufferedImage awtImage = ImageIO.read(new File( "C:\\ICT\\HBO\\Jaar 2\\Project Enterprise Web Apps\\Images\\Info-Support-klein-formaat-JPG.png")); PDXObjectImage ximage = new PDPixelMap(document, awtImage); float scale = 1f; // alter this value to set the image size cos.drawXObject(ximage, 350, 750, ximage.getWidth() * scale, ximage.getHeight() * scale); } catch (FileNotFoundException fnfex) { System.out.println("No image for you"); } cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(475, rect.getHeight() - 800 * (++line)); cos.drawString("Pagina " + ++pagenumber); cos.endText(); line--; cos.beginText(); cos.setFont(fontPlain, 18); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 100 * (++line)); cos.drawString("Skills"); cos.endText(); line += 4; cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Skill & Rating:"); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(75, rect.getHeight() - 20 * (++line)); cos.drawString("Jaren ervaring:"); cos.endText(); line -= 2; for (SkillRating s : skillList) { cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (++line)); cos.drawString(s.getSkill().getName() + " niveau " + s.getRating()); cos.endText(); cos.beginText(); cos.setFont(fontPlain, 12); cos.setNonStrokingColor(0, 120, 201); cos.moveTextPositionByAmount(350, rect.getHeight() - 20 * (++line)); cos.drawString("" + s.getExpYears()); cos.endText(); line++; } } cos.close(); ByteArrayOutputStream output = new ByteArrayOutputStream(); document.save(output); document.close(); return output; }
From source file:com.projectlaver.util.VoucherService.java
License:Open Source License
File generateVoucherPdf(String pdfFilename, File barcodeImageFile, VoucherDTO dto) { // the result File pdfFile = null;/*from w ww. jav a2 s .c o m*/ // the document PDDocument doc = null; try { // Create a new document and add a page to it doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); float pageWidth = page.getMediaBox().getWidth(); float pageHeight = page.getMediaBox().getHeight(); // For some reason this may need to happen after reading the image PDPageContentStream contentStream = new PDPageContentStream(doc, page); /** * Read & draw the client logo */ this.drawImageWithMaxEdge(contentStream, 15f, 629, 150, this.readImage(new URL(dto.getClientLogoUrl()), doc)); /** * Read & draw the barcode image */ BufferedImage bim = ImageIO.read(barcodeImageFile); PDXObjectImage barcodeImage = new PDPixelMap(doc, bim); // inspired by http://stackoverflow.com/a/22318681/535646 float barcodeScale = 1f; // reduce this value if the image is too large this.drawImage(contentStream, 206f, 315f, barcodeImage, barcodeScale); /** * Read & draw the social eq logo image */ float logoScale = 0.15f; // reduce this value if the image is too large this.drawImage(contentStream, 246f, 265f, this.readImage(new URL(this.socialEqLogoUrl), doc), logoScale); /** * Read & draw the client image */ this.drawImageWithMaxEdge(contentStream, 0f, 145, 612, this.readImage(new URL(dto.getClientCampaignImageUrl()), doc)); /** * Add some rectangles to the page to set off the sections */ contentStream.setNonStrokingColor(new Color(0.82f, 0.82f, 0.82f, 0.6f)); // light grey /** * around the merchant logo / title */ contentStream.fillRect(0, pageHeight - 10, pageWidth, 10); // top edge contentStream.fillRect(0, pageHeight - 175, pageWidth, 10); // bottom edge contentStream.fillRect(0, pageHeight - 175, 10, 175); // left edge contentStream.fillRect(170, pageHeight - 175, 10, 175); // right of the logo contentStream.fillRect(pageWidth - 10, pageHeight - 175, 10, 175); // right edge // behind the terms and conditions contentStream.fillRect(0f, 0f, pageWidth, 145f); /** * Handle the text */ // text color is black contentStream.setNonStrokingColor(Color.BLACK); // merchant name this.printNoWrap(page, contentStream, 195, 712, dto.getMerchantName(), 48); // listing title this.printNoWrap(page, contentStream, 195, 662, dto.getVoucherTitle(), 24); // Long description this.printNoWrap(page, contentStream, 30, 582, "Details:", 14); PdfParagraph ld = new PdfParagraph(30, 562, dto.getVoucherDetails(), 14); this.printLeftAlignedWithWrap(contentStream, ld); // Terms and conditions this.printNoWrap(page, contentStream, 30, 115, "Terms & Conditions:", 12); PdfParagraph toc = new PdfParagraph(30, 100, dto.getVoucherTerms(), 10); this.printLeftAlignedWithWrap(contentStream, toc); // Make sure that the content stream is closed: contentStream.close(); String pdfPath = System.getProperty("java.io.tmpdir") + pdfFilename; doc.save(pdfPath); pdfFile = new File(pdfPath); } catch (Exception e) { throw new RuntimeException("Could not create the PDF File.", e); } finally { if (doc != null) { try { doc.close(); } catch (IOException e) { throw new RuntimeException("Could not close the PDF Document.", e); } } } return pdfFile; }
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 ww .j ava 2 s .c o m 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: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 w w w .j ava 2s .c om*/ // 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 w 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); // 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();//from w w w . j av a2 s . c om 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(); }
From source file:correccioncolorpdfs.CorrectorColorUI.java
private void transformarPDF() { try {/*from ww w. j a va 2 s . c o m*/ //@see http://stackoverflow.com/questions/18189314/convert-a-pdf-file-to-image String rutaPDFOriginal = rutaPDF + nombrePDF; // Pdf files are read from this folder //String destinationDir = "D:\\Desarrollo\\pruebas\\reportes_negros\\imagenes\\"; // converted images from pdf document are saved here File pdfOriginal = new File(rutaPDFOriginal); // File destinationFile = new File(destinationDir); // if (!destinationFile.exists()) { // destinationFile.mkdir(); // System.out.println("Folder Created -> " + destinationFile.getAbsolutePath()); // } if (pdfOriginal.exists()) { //System.out.println("Images copied to Folder: " + destinationFile.getName()); PDDocument document = PDDocument.load(rutaPDFOriginal); //Documento Fondo Blanco PDDocument documentoCool = new PDDocument(); List<PDPage> list = document.getDocumentCatalog().getAllPages(); System.out.println("Total files to be converted -> " + list.size()); String nombrePDFOriginal = pdfOriginal.getName().replace(".pdf", ""); int pageNumber = 1; for (PDPage page : list) { BufferedImage image = page.convertToImage(); //Inviertiendo colores //@see http://stackoverflow.com/questions/8662349/convert-negative-image-to-positive for (int x = 0; x < image.getWidth(); x++) { for (int y = 0; y < image.getHeight(); y++) { int rgba = image.getRGB(x, y); //Hexa a reemplazar e9e9e1 R=233|G=233|B=225 Color col = new Color(rgba, true); col = new Color(255 - col.getRed(), 255 - col.getGreen(), 255 - col.getBlue()); //Si color es igual al invertido - cambiarlo a blanco if (col.getRGB() == -1447455) { col = new Color(255, 255, 255); } //System.out.println("col.getR = " + col.getRGB()); image.setRGB(x, y, col.getRGB()); } } // File outputfile = new File(destinationDir + fileName + "_" + pageNumber + ".png"); // System.out.println("Image Created -> " + outputfile.getName()); // ImageIO.write(image, "png", outputfile); pageNumber++; //Crear pagina nueva para el PDF Convertido float width = image.getWidth(); float height = image.getHeight(); PDPage paginaSinFondo = new PDPage(new PDRectangle(width, height)); documentoCool.addPage(paginaSinFondo); PDXObjectImage img = new PDJpeg(documentoCool, image); PDPageContentStream contentStream = new PDPageContentStream(documentoCool, paginaSinFondo); contentStream.drawImage(img, 0, 0); contentStream.close(); } document.close(); rutaPDFImprimible = rutaPDF + nombrePDFOriginal + "_imprimible.pdf"; documentoCool.save(rutaPDFImprimible); documentoCool.close(); estadoConversion(true); } else { JOptionPane.showMessageDialog(this, "No se logr identificar la ruta del archivo, por favor verifique que el archivo si existe o no halla sido movido durante el proceso.", "Ruta de archivo no encontrada", JOptionPane.WARNING_MESSAGE); } } catch (IOException | COSVisitorException | HeadlessException e) { estadoConversion(false); JOptionPane.showMessageDialog(this, e.getMessage(), "Error durante el proceso de conversin", JOptionPane.ERROR_MESSAGE); } }
From source file:costumetrade.common.util.PdfUtils.java
License:Open Source License
public static PDDocument createImagePdf(File file) { PDPageContentStream contentStream = null; try {//from w w w . j a v a 2s. c o m BufferedImage bimg = ImageIO.read(file); PDDocument document = new PDDocument(); PDPage page = new PDPage(new PDRectangle(bimg.getWidth(), bimg.getHeight())); document.addPage(page); PDImageXObject image = PDImageXObject.createFromFileByExtension(file, document); contentStream = new PDPageContentStream(document, page); contentStream.drawImage(image, 0, 0); return document; } catch (IOException e) { throw new RuntimeException("?PDF", e); } finally { IOUtils.closeQuietly(contentStream); } }
From source file:CTRL.ExportController.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods./*from w w w . ja v a 2s . co m*/ * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); HttpSession session = request.getSession(); LijstLesmomentenViewModel vmLesmomentenFinal = (LijstLesmomentenViewModel) session .getAttribute("vmLesmomentenFinal"); // Create a document and add a page to it PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); // Create a new font object selecting one of the PDF base fonts PDFont font = PDType1Font.HELVETICA_BOLD; // Start a new content stream which will "hold" the to be created content PDPageContentStream contentStream = new PDPageContentStream(document, page); // Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World" contentStream.beginText(); contentStream.setFont(font, 16); contentStream.moveTextPositionByAmount(60, 700); // Titel contentStream.drawString("Lessenrooster"); contentStream.setFont(font, 10); contentStream.moveTextPositionByAmount(0, -20); int recordTeller = 0; for (Lesmoment l : vmLesmomentenFinal.getLesmomenten()) { Calendar c = Calendar.getInstance(); c.setTime(l.getDatum()); int dag = c.get(Calendar.DAY_OF_WEEK); String strDag = ""; switch (dag) { case 0: strDag = "Zondag"; break; case 1: strDag = "Maandag"; break; case 2: strDag = "Dinsdag"; break; case 3: strDag = "Woensdag"; break; case 4: strDag = "Donderdag"; break; case 5: strDag = "Vrijdag"; break; case 6: strDag = "Zaterdag"; break; } //Nieuwe page beginnen wanner 25 records werden weggeschreven if (recordTeller == 25) { recordTeller = 0; contentStream.endText(); contentStream.close(); page = new PDPage(); document.addPage(page); contentStream = new PDPageContentStream(document, page); contentStream.beginText(); contentStream.setFont(font, 10); contentStream.moveTextPositionByAmount(60, 700); } else { recordTeller++; } contentStream.drawString(l.getDatum().toString() + " " + strDag + " " + l.getBeginuur() + " " + l.getEinduur() + " " + l.getLokaal() + " " + l.getModule().getCode() + " " + l.getModule().getNaam()); contentStream.moveTextPositionByAmount(0, -20); } contentStream.endText(); // Make sure that the content stream is closed: contentStream.close(); try { // Save the results and ensure that the document is properly closed: document.save("C:\\Temp\\test.pdf"); } catch (COSVisitorException ex) { Logger.getLogger(ExportController.class.getName()).log(Level.SEVERE, null, ex); } document.close(); //Teruggaan naar resultaat pagina RequestDispatcher dispatcher = request.getRequestDispatcher("Resultaat.jsp"); dispatcher.forward(request, response); }
From source file:ddf.catalog.transformer.input.pdf.GeoPdfDocumentGenerator.java
License:Open Source License
public static PDDocument generateEmptyPdf() { PDDocument pdDocument = new PDDocument(); pdDocument.addPage(new PDPage()); return pdDocument; }