List of usage examples for org.apache.pdfbox.pdmodel.graphics.image LosslessFactory createFromImage
public static PDImageXObject createFromImage(PDDocument document, BufferedImage image) throws IOException
From source file:at.gv.egiz.pdfas.lib.impl.stamping.pdfbox2.PDFAsVisualSignatureBuilder.java
License:EUPL
private void readTableResources(PDFBoxTable table, PDDocument template) throws PdfAsException, IOException { float[] colsSizes = table.getColsRelativeWith(); int max_cols = table.getColCount(); float padding = table.getPadding(); if (colsSizes == null) { colsSizes = new float[max_cols]; // set the column ratio for all columns to 1 for (int cols_idx = 0; cols_idx < colsSizes.length; cols_idx++) { colsSizes[cols_idx] = 1;//from ww w. ja va2 s .c o m } } logger.debug("TOTAL Width: " + table.getWidth()); float total = 0; for (int cols_idx = 0; cols_idx < colsSizes.length; cols_idx++) { total += colsSizes[cols_idx]; } for (int cols_idx = 0; cols_idx < colsSizes.length; cols_idx++) { colsSizes[cols_idx] = (colsSizes[cols_idx] / total) * table.getWidth(); } for (int cols_idx = 0; cols_idx < colsSizes.length; cols_idx++) { logger.debug("Col: " + cols_idx + " : " + colsSizes[cols_idx]); } /* * if(!addedFonts.contains(table.getFont().getFont(null))) { PDFont font * = table.getFont().getFont(template); addedFonts.add(font); * innerFormResources.addFont(font); } * * if(!addedFonts.contains(table.getValueFont().getFont(null))) { PDFont * font = table.getValueFont().getFont(template); addedFonts.add(font); * innerFormResources.addFont(font); } */ for (int i = 0; i < table.getRowCount(); i++) { ArrayList<Entry> row = table.getRow(i); for (int j = 0; j < row.size(); j++) { Entry cell = (Entry) row.get(j); if (cell.getType() == Entry.TYPE_IMAGE) { String img_value = (String) cell.getValue(); String img_ref = createHashedId(img_value); if (!images.containsKey(img_ref)) { BufferedImage img = ImageUtils.getImage(img_value, settings); float width = colsSizes[j]; float height = table.getRowHeights()[i] + padding * 2; float iwidth = (int) Math.floor((double) width); iwidth -= 2 * padding; float iheight = (int) Math.floor((double) height); iheight -= 2 * padding; float origWidth = (float) img.getWidth(); float origHeight = (float) img.getHeight(); if (table.style != null) { if (table.style.getImageScaleToFit() != null) { iwidth = table.style.getImageScaleToFit().getWidth(); iheight = table.style.getImageScaleToFit().getHeight(); } } float wfactor = iwidth / origWidth; float hfactor = iheight / origHeight; float scaleFactor = wfactor; if (hfactor < wfactor) { scaleFactor = hfactor; } iwidth = (float) Math.floor((double) (scaleFactor * origWidth)); iheight = (float) Math.floor((double) (scaleFactor * origHeight)); logger.debug("Scaling image to: " + iwidth + " x " + iheight); if (this.designer.properties.getSignatureProfileSettings().isPDFA()) { img = ImageUtils.removeAlphaChannel(img); } else { if (img.getAlphaRaster() == null && img.getColorModel().hasAlpha()) { img = ImageUtils.removeAlphaChannel(img); } } // img = ImageUtils.convertRGBAToIndexed(img); PDImageXObject pdImage = LosslessFactory.createFromImage(template, img); ImageObject image = new ImageObject(pdImage, iwidth, iheight); images.put(img_ref, image); innerFormResources.add(pdImage, "Im"); } } else if (cell.getType() == Entry.TYPE_TABLE) { PDFBoxTable tbl_value = (PDFBoxTable) cell.getValue(); readTableResources(tbl_value, template); } } } }
From source file:cdiscisa.StreamUtil.java
private static void imprimirDiplomas(ArrayList<Participante> listaParticipantes, Curso c, Directorio d, String chkDipFirma, String chkDipLogo, String savePath, Map<String, String> dosc, String instructor, Map<String, String> abreviaturas) throws IOException { ListIterator<Participante> it = listaParticipantes.listIterator(); Participante p1 = null;/* w w w .j a v a 2 s. co m*/ Participante p2 = null; String abrev_curso = ""; // Create a document and add a page to it PDDocument document = new PDDocument(); PDDocument documentSingle; InputStream file = null; BufferedImage logo = null; BufferedImage firma = null; try { //logo = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/logo.png").getFile()); //logo = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png"); logo = ImageIO.read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png")); //logo = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png"); if (instructor.equalsIgnoreCase("Ing. Jorge Antonio Razn Gutierrez")) { //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaCoco.png").getFile()); firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaCoco.png")); } else if (instructor.equalsIgnoreCase("Manuel Anguiano Razn")) { firma = ImageIO.read( cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaManuel.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaManuel.png").getFile()); } else { firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaJorge.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaJorge.png").getFile()); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar la imagen del logo o la firma \nfile: " + String.valueOf(logo) + "\n" + String.valueOf(firma) + "\n" + ex.toString()); } PDImageXObject firmaObject = null; PDImageXObject logoObject = null; try { if (chkDipLogo.equalsIgnoreCase("true")) { //logoObject = PDImageXObject.createFromFile(logo, document); logoObject = LosslessFactory.createFromImage(document, logo); } if (chkDipFirma.equalsIgnoreCase("true")) { // firmaObject = PDImageXObject.createFromFile(firma, document); firmaObject = LosslessFactory.createFromImage(document, firma); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al crear objetos de logo o firma \nfile: " + String.valueOf(logoObject) + "\n" + String.valueOf(firmaObject) + "\n" + ex.toString()); } try { file = cdiscisa.Cdiscisa.class.getClassLoader() .getResourceAsStream("files/n_diploma_simple_vacio_nf_nl_nr.pdf"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el el diploma single base. \ndiploma: files/n_diploma_simple_vacio_nf_nl_nr.pdf \nfile: " + String.valueOf(file) + "\n" + ex.toString()); } documentSingle = PDDocument.load(file); PDPage pageSingle = (PDPage) documentSingle.getDocumentCatalog().getPages().get(0); COSDictionary pageDictSingle = pageSingle.getCOSObject(); COSDictionary newPageSingleDict = new COSDictionary(pageDictSingle); PDPage templatePageSingle = new PDPage(newPageSingleDict); // Create a document and add a page to it PDDocument documentDoble; InputStream file2 = null; try { file2 = cdiscisa.Cdiscisa.class.getClassLoader() .getResourceAsStream("files/n_diploma_doble_vacio_nf_nl_nr.pdf"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el el diploma doble base. \ndiploma: n_diploma_doble_vacio_nf_nl_nr.pdf\nfile: " + String.valueOf(file2) + "\n" + ex.toString()); } documentDoble = PDDocument.load(file2); PDPage pageDoble = (PDPage) documentDoble.getDocumentCatalog().getPages().get(0); COSDictionary pageDobleDict = pageDoble.getCOSObject(); COSDictionary newPageDobleDict = new COSDictionary(pageDobleDict); PDPage templatePageDoble = new PDPage(newPageDobleDict); InputStream isFont1 = null, isFont2 = null, isFont3 = null; try { isFont1 = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/Calibri.ttf"); isFont2 = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/CalibriBold.ttf"); isFont3 = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/Pristina.ttf"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el una fuente \nisFont1: " + String.valueOf(isFont1) + "\nisFont2: " + String.valueOf(isFont2) + "\nisFont3: " + String.valueOf(isFont3) + "\n" + ex.toString()); } PDFont calibri = null; PDFont calibriBold = null; PDFont pristina = null; calibri = PDType0Font.load(document, isFont1); calibriBold = PDType0Font.load(document, isFont2); pristina = PDType0Font.load(document, isFont3); if (listaParticipantes.size() % 2 == 0 && listaParticipantes.size() >= 2) { while (it.hasNext()) { p1 = it.next(); p2 = it.next(); imprimirDiplomaDoble(p1, p2, c, d, document, templatePageDoble, calibri, calibriBold, pristina, logoObject, firmaObject, instructor); } } else { if (listaParticipantes.size() > 1) { //Lista es impar y contiene mas de 2 participantes. while (it.hasNext()) { if (it.nextIndex() == listaParticipantes.size() - 1) { p1 = it.next(); imprimirDiplomaArriba(p1, c, d, document, templatePageSingle, calibri, calibriBold, pristina, logoObject, firmaObject, instructor); break; } p1 = it.next(); p2 = it.next(); imprimirDiplomaDoble(p1, p2, c, d, document, templatePageDoble, calibri, calibriBold, pristina, logoObject, firmaObject, instructor); } } else if (listaParticipantes.size() == 1) { p1 = it.next(); imprimirDiplomaArriba(p1, c, d, document, templatePageSingle, calibri, calibriBold, pristina, logoObject, firmaObject, instructor); } } Format formatter = new SimpleDateFormat("ddMMMYYYY", new Locale("es", "MX")); String formatedDate = formatter.format(c.fecha_inicio); String abrev = abreviaturas.get(c.nombre_curso); if (c.walmart) { document.save(savePath + File.separator + "Diplomas_" + d.formato + "_" + d.unidad + "_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf"); document.close(); dosc.put(savePath + File.separator + "Diplomas_" + d.formato + "_" + d.unidad + "_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf", d.determinante); } else { document.save(savePath + File.separator + "Diplomas_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf"); document.close(); dosc.put(savePath + File.separator + "Diplomas_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf", d.determinante); } }
From source file:cdiscisa.StreamUtil.java
private static void imprimirDC3_individual(Participante p, Curso c, String chkDC3Firmaa, String chkDC3Logoa, String savePath, Map<String, String> dosc, Map<String, String> abreviaturas) throws IOException { //JOptionPane.showMessageDialog(null, "entrando a imrpimir individual"); PDDocument document;//w ww . j a v a 2 s. c o m //BufferedInputStream file; InputStream file = null; try { file = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/DC3_blank.pdf"); //file = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/DC3_base_firma.pdf"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el una forma DC3 \nfile: " + String.valueOf(file) + "\n" + ex.toString()); } document = PDDocument.load(file); BufferedImage logo = null; BufferedImage firma = null; try { //logo = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/logo.png").getFile()); logo = ImageIO.read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png")); //logo = StreamUtil.stream2file(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png")); if (c.capacitador.equalsIgnoreCase("Ing. Jorge Antonio Razn Gutierrez")) { //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaCoco.png").getFile()); firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaCoco.png")); } else if (c.capacitador.equalsIgnoreCase("Manuel Anguiano Razn")) { firma = ImageIO.read( cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaManuel.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaManuel.png").getFile()); } else { firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaJorge.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaJorge.png").getFile()); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar la imagen del logo o la firma \nfile: " + String.valueOf(logo) + "\n" + String.valueOf(firma) + "\n" + ex.toString()); } PDImageXObject firmaObject = null; PDImageXObject logoObject = null; try { if (chkDC3Firmaa.equalsIgnoreCase("true")) { firmaObject = LosslessFactory.createFromImage(document, firma); //firmaObject = PDImageXObject.createFromFile(firma, document); } if (chkDC3Logoa.equalsIgnoreCase("true")) { logoObject = LosslessFactory.createFromImage(document, logo); //logoObject = PDImageXObject.createFromFile(logo, document); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al crear objetos de logo o firma \nfile: " + String.valueOf(logoObject) + "\n" + String.valueOf(firmaObject) + "\n" + ex.toString()); } PDPage page = (PDPage) document.getDocumentCatalog().getPages().get(0); PDFont helvetica = PDType1Font.HELVETICA_BOLD; PDFont helvetica_normal = PDType1Font.HELVETICA; PDPageContentStream contentStream = new PDPageContentStream(document, page, true, true); contentStream.beginText(); contentStream.setFont(helvetica_normal, 13); contentStream.setNonStrokingColor(Color.BLACK); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 602)); contentStream.showText(p.apellidos + " " + p.nombre); String temp; if (p.curp.length() > 18) { temp = p.curp.substring(0, 18); } else { temp = p.curp; } char[] curpArray = temp.toCharArray(); float[] xPosition = { 32, 49, 63, 77, 92, (float) 106.5, 120, (float) 134.5, 149, 163, 177, (float) 191.5, 205, 223, 241, 255, 269, 286 }; float charWidth; for (int i = 0; i <= curpArray.length - 1; i++) { charWidth = helvetica_normal.getStringWidth(String.valueOf(curpArray[i])) / 1000 * 13; //System.out.println("Char " + i + " width: " + charWidth); float x = xPosition[i] - (charWidth / 2); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, x, 572)); contentStream.showText(String.valueOf(curpArray[i])); } contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 548)); contentStream.showText(p.area_puesto); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 486)); if (c.walmart) { contentStream.showText("OPERADORA WALMART S DE RL DE CV"); } else { contentStream.showText(c.nombre_empresa); } char[] rfc_emprea_array; if (c.walmart) { rfc_emprea_array = "OWM011023AWA".toCharArray(); } else { rfc_emprea_array = c.rfc_empresa.toCharArray(); } try { int j = 0; for (int i = 0; i <= rfc_emprea_array.length - 1; i++) { charWidth = helvetica_normal .getStringWidth(String.valueOf(rfc_emprea_array[rfc_emprea_array.length - i - 1])) / 1000 * 13; //System.out.println("Char " + i + " width: " + charWidth); if (j == 3 || i == 9) { j = j + 1; } float x = xPosition[xPosition.length - j - 4] - (charWidth / 2); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, x, 458)); contentStream.showText(String.valueOf(rfc_emprea_array[rfc_emprea_array.length - i - 1])); j = j + 1; } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "El RFC de la empresa esta mal formado. \n\nex.toString : " + ex.toString()); return; } contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 405)); contentStream.showText(c.nombre_curso); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 381)); contentStream.showText(c.horas_texto); //if (c.walmart){ contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 356)); contentStream.showText("6000 SEGURIDAD"); //} else{ // contentStream.setTextMatrix(new Matrix(1,0,0,1,30,356 )); // contentStream.showText(p.area_tematica); //} contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 30, 332)); contentStream.showText(c.uCapacitadora); Calendar cal = Calendar.getInstance(); cal.setTime(c.fecha_inicio); String month = String.format("%02d", cal.get(Calendar.MONTH) + 1); String year = String.format("%04d", cal.get(Calendar.YEAR)); String day = String.format("%02d", cal.get(Calendar.DAY_OF_MONTH)); String date = year + month + day; cal.setTime(c.fecha_termino); month = String.format("%02d", cal.get(Calendar.MONTH) + 1); year = String.format("%04d", cal.get(Calendar.YEAR)); day = String.format("%02d", cal.get(Calendar.DAY_OF_MONTH)); date = date + year + month + day; char[] date_array = date.toCharArray(); float[] xPos = { 256, 272, 288, 304, 322, 343, 365, 386, 428, 447, 467, 486, 507, 528, 549, 570 }; for (int i = 0; i <= date_array.length - 1; i++) { charWidth = helvetica_normal.getStringWidth(String.valueOf(date_array[i])) / 1000 * 13; //System.out.println("Char " + i + " width: " + charWidth); float x = xPos[i] - (charWidth / 2); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, x, 381)); contentStream.showText(String.valueOf(date_array[i])); } charWidth = helvetica_normal.getStringWidth(p.area_tematica) / 1000 * 13; //System.out.println(p.area_tematica + " bold : " + charWidth); if (charWidth >= 255) { contentStream.setFont(helvetica_normal, 10); charWidth = helvetica_normal.getStringWidth(p.area_tematica) / 1000 * 10; //System.out.println(p.area_tematica + " : " + charWidth); if (charWidth >= 260) { contentStream.setFont(helvetica_normal, 8); //charWidth = helvetica_normal.getStringWidth(p.area_tematica) /1000 * 8; //System.out.println(p.area_tematica + " : " + charWidth); } } contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 310, 572)); contentStream.showText(p.area_tematica); contentStream.endText(); //xPosition = 256, 272, 288, 304, 322, 343, 365, 386, 428, 447, 467, 486, 507, 528, 549, 570 //year: 256, 272, 288, 304 //month: 322, 343 //day: 365, 386 //year: 428, 447, 467, 486 //month: 507, 528 //day: 549, 570 // 32, 49, 63, 77, 92, 106.5, 120, 134.5, 149, 163, 177, 191.5, 205, 223, 241, 255, 269, 286 /*Esto es para medir las casillas del curp contentStream.setStrokingColor(Color.BLACK); contentStream.moveTo(286,569); contentStream.lineTo(286,580); contentStream.stroke(); */ /* PDImageXObject logo = PDImageXObject.createFromFile("src/files/logo.png", document); PDImageXObject firma = PDImageXObject.createFromFile("src/files/firmasola.png", document); System.out.println("logoWidth: " + logo.getWidth()); System.out.println("logoHeight: " + logo.getHeight()); System.out.println("firmaWidth: " + firma.getWidth()); System.out.println("firmaHeight: " + firma.getHeight()); */ contentStream.addRect(50, 750, 500, 100); contentStream.setNonStrokingColor(Color.WHITE); contentStream.fill(); contentStream.addRect(50, 224, 150, 10); contentStream.setNonStrokingColor(Color.WHITE); contentStream.fill(); if (logoObject != null && !logoObject.isEmpty()) { contentStream.drawImage(logoObject, 430, 700, 150, 75); } if (firmaObject != null && !firmaObject.isEmpty()) { contentStream.drawImage(firmaObject, 80, 223, 110, 42); contentStream.setStrokingColor(Color.BLACK); contentStream.setLineWidth((float) .8); contentStream.moveTo(50, (float) 235.6); contentStream.lineTo(200, (float) 235.6); contentStream.stroke(); } contentStream.beginText(); contentStream.setFont(helvetica_normal, 8); contentStream.setNonStrokingColor(Color.BLACK); charWidth = helvetica_normal.getStringWidth(c.capacitador) / 1000 * 8; float x = 126 - charWidth / 2; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, x, 228)); contentStream.showText(c.capacitador); //GIS100219KK8003 String regUnidad; if (c.uCapacitadora.equalsIgnoreCase("TSI. Jorge Antonio Razn Gil")) { regUnidad = "RAGJ610813BIA005"; } else { regUnidad = "GIS100219KK8003"; } charWidth = helvetica_normal.getStringWidth(regUnidad) / 1000 * 8; x = 126 - charWidth / 2; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, x, 219)); contentStream.showText(regUnidad); contentStream.endText(); // Make sure that the content stream is closed: contentStream.close(); Format formatter = new SimpleDateFormat("ddMMMYYYY", new Locale("es", "MX")); String formatedDate = formatter.format(c.fecha_inicio); String abrev = abreviaturas.get(c.nombre_curso); // Save the results and ensure that the document is properly closed: document.save(savePath + File.separator + "p_DC3_" + p.curp + "_" + p.determinante + "_" + p.nombre.replaceAll(" ", "_") + "_" + p.apellidos.replaceAll(" ", "_") + "_" + abrev + "_" + formatedDate + ".pdf"); document.close(); dosc.put(savePath + File.separator + "p_DC3_" + p.curp + "_" + p.determinante + "_" + p.nombre.replaceAll(" ", "_") + "_" + p.apellidos.replaceAll(" ", "_") + "_" + abrev + "_" + formatedDate + ".pdf", p.determinante); }
From source file:cdiscisa.StreamUtil.java
private static void imprimirUnaConstancia(ArrayList<Participante> listaParticipantes, Curso c, Directorio d, String chkConstFirma, String chkConstLogo, String savePath, Map<String, String> dosc, String instructor, Map<String, String> abreviaturas) throws IOException { String contanciaTemplate = ""; switch (c.nombre_curso) { case "PREVENCIN Y COMBATE DE INCENDIOS I": contanciaTemplate = "files/certificado_vacio_incendio_basico_nf_nl.pdf"; break; case "BUSQUEDA Y RESCATE": contanciaTemplate = "files/certificado_vacio_busq_rescate_nf_nl.pdf"; break; case "EVACUACIN, BUSQUEDA Y RESCATE": contanciaTemplate = "files/certificado_vacio_evac_busq_resc_nf_nl.pdf"; break; case "EVACUACIN": contanciaTemplate = "files/certificado_vacio_evacuacion_nf_nl.pdf"; break; case "PREVENCIN Y COMBATE DE INCENDIOS II": contanciaTemplate = "files/certificado_vacio_incendio_intermedio_nf_nl.pdf"; break; case "PREVENCIN Y COMBATE DE INCENDIOS III": contanciaTemplate = "files/certificado_vacio_incendio_avanzado_nf_nl.pdf"; break; case "FORMACION DE BRIGADAS MULTIFUNCIONALES DE EMERGENCIA": contanciaTemplate = "files/certificado_vacio_multi_nf_nl.pdf"; break; case "FORMACIN DE BRIGADA MULTIFUNCIONAL DE EMERGENCIA": contanciaTemplate = "files/certificado_vacio_multi_nf_nl.pdf"; break; case "FORMACION DE BRIGADA MULTIFUNCIONAL DE EMERGENCIAS": contanciaTemplate = "files/certificado_vacio_multi_nf_nl.pdf"; break; case "PRIMEROS AUXILIOS": contanciaTemplate = "files/certificado_vacio_primeros_auxilios_nf_nl.pdf"; break; default://from w w w . ja v a 2 s . co m contanciaTemplate = "files/cerificado_vacio.pdf"; break; } InputStream file = null; try { file = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream(contanciaTemplate); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el certificado base. \nconstancia: " + contanciaTemplate + "\nfile: " + String.valueOf(file) + "\n" + ex.toString()); } PDDocument document = PDDocument.load(file); PDPage page1 = (PDPage) document.getDocumentCatalog().getPages().get(0); PDPage page2 = (PDPage) document.getDocumentCatalog().getPages().get(1); PDPageContentStream contentStream = new PDPageContentStream(document, page1, true, true); PDPageContentStream contentStream2 = new PDPageContentStream(document, page2, true, true); float pageWidth = page1.getMediaBox().getWidth(); BufferedImage logo = null; BufferedImage firma = null; try { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); //logo = new File(classLoader.getResource("files/logo.png").getFile()); //logo = StreamUtil.stream2file(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png")); logo = ImageIO.read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/logo.png")); if (instructor.equalsIgnoreCase("Ing. Jorge Antonio Razn Gutierrez")) { firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaCoco.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaCoco.png").getFile()); } else if (instructor.equalsIgnoreCase("Manuel Anguiano Razn")) { firma = ImageIO.read( cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaManuel.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaManuel.png").getFile()); } else { firma = ImageIO .read(cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/firmaJorge.png")); //firma = new File(cdiscisa.Cdiscisa.class.getClassLoader().getResource("files/firmaJorge.png").getFile()); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar la imagen del logo o la firma \nfile: " + String.valueOf(logo) + "\n" + String.valueOf(firma) + "\n" + ex.toString()); } PDImageXObject firmaObject = null; PDImageXObject logoObject = null; try { if (chkConstFirma.equalsIgnoreCase("true")) { firmaObject = LosslessFactory.createFromImage(document, firma); //firmaObject = PDImageXObject.createFromFile(firma, document); } if (chkConstLogo.equalsIgnoreCase("true")) { logoObject = LosslessFactory.createFromImage(document, logo); //logoObject = PDImageXObject.createFromFile(logo, document); } } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al crear objetos de logo o firma \nfile: " + String.valueOf(logoObject) + "\n" + String.valueOf(firmaObject) + "\n" + ex.toString()); } InputStream isFont1 = null, isFont2 = null; try { isFont1 = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/Calibri.ttf"); isFont2 = cdiscisa.Cdiscisa.class.getClassLoader().getResourceAsStream("files/CalibriBold.ttf"); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Error al cargar el una fuente \nisFont1: " + String.valueOf(isFont1) + "\nisFont2: " + String.valueOf(isFont2) + "\n" + ex.toString()); } PDFont calibri = PDType0Font.load(document, isFont1); PDFont calibriBold = PDType0Font.load(document, isFont2); contentStream.beginText(); DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, new Locale("es", "MX")); contentStream.setFont(calibri, 9); contentStream.setNonStrokingColor(Color.BLACK); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 465, 656)); contentStream.showText(df.format(new Date())); contentStream.setFont(calibriBold, 11); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 135, 585)); contentStream.showText(c.razon_social); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 120, (float) 572.5)); if (c.walmart) { contentStream.showText(d.determinante + " " + d.unidad); } else if (d.sucursal.isEmpty() || d.sucursal.equalsIgnoreCase("")) { contentStream.endText(); contentStream.addRect(30, 572, 150, 10); contentStream.setNonStrokingColor(Color.WHITE); contentStream.fill(); contentStream.beginText(); contentStream.setNonStrokingColor(Color.BLACK); } else { contentStream.showText(d.sucursal); } if (!c.walmart) { contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 527)); contentStream.showText(d.RFC); contentStream.setFont(calibri, 11); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 72, 527)); contentStream.showText("RFC: "); contentStream.setFont(calibriBold, 11); } /* if (c.walmart){ contentStream.showText(p1.determinante + " " + d.unidad); } else if (d.sucursal.isEmpty() || d.sucursal.equalsIgnoreCase("")){ contentStream.endText(); contentStream.addRect(100, 590, 400, 20); contentStream.setNonStrokingColor(Color.WHITE); contentStream.fill(); contentStream.beginText(); contentStream.setNonStrokingColor(Color.BLACK); } else{ contentStream.showText(d.sucursal); } */ float charWidth = calibriBold.getStringWidth(d.direccion) / 1000 * 11; //System.out.println(charWidth + " " + d.direccion.length() + " " + d.direccion); if (charWidth <= 400) { contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 549)); contentStream.showText(d.direccion); } else { contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 552)); contentStream.showText(d.direccion.substring(0, d.direccion.indexOf(" ", 82))); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 541)); contentStream.showText(d.direccion.substring(d.direccion.indexOf(" ", 82) + 1, d.direccion.length())); } charWidth = calibriBold.getStringWidth(c.nombre_curso) / 1000 * 11; float xPosition = (pageWidth - charWidth) / 2; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 490)); contentStream.showText(c.nombre_curso); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 160, 465)); contentStream.showText(c.fecha_certificado); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 160, (float) 450.5)); contentStream.showText(c.horas_texto); ListIterator<Participante> it = listaParticipantes.listIterator(); float y = 0; while (it.hasNext()) { Participante p = it.next(); if (p.determinante.equalsIgnoreCase(d.determinante)) { contentStream.setFont(calibri, 11); charWidth = calibri.getStringWidth(p.nombre + " " + p.apellidos) / 1000 * 11; //System.out.println(charWidth + " " + p.nombre + " " + p.apellidos); if (charWidth > 165) { contentStream.setFont(calibri, 9); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 135, (float) 376.5 - y)); contentStream.showText(p.nombre + " " + p.apellidos); contentStream.setFont(calibri, 11); } else { contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 135, (float) 376.5 - y)); contentStream.showText(p.nombre + " " + p.apellidos); } charWidth = calibri.getStringWidth(p.area_puesto) / 1000 * 11; //System.out.println(charWidth + " " + p.area_puesto); if (charWidth > 112) { contentStream.setFont(calibri, 9); contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 360, (float) 376.5 - y)); contentStream.showText(p.area_puesto); } else { contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, 360, (float) 376.5 - y)); contentStream.showText(p.area_puesto); } y = y + (float) 12.7; } } contentStream.endText(); float nameWidth; if (logoObject != null && !logoObject.isEmpty()) { contentStream.drawImage(logoObject, 30, 700, 156, 78); } if (firmaObject != null && !firmaObject.isEmpty()) { xPosition = (pageWidth - 100) / 2; contentStream.drawImage(firmaObject, xPosition, 55, 110, 42); contentStream.beginText(); contentStream.setFont(calibriBold, 10); contentStream.setNonStrokingColor(Color.BLACK); nameWidth = calibriBold.getStringWidth(instructor) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 55)); contentStream.showText(instructor); if (instructor.equalsIgnoreCase("Manuel Anguiano Razn")) { nameWidth = calibriBold.getStringWidth(c.registro_manuel) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream.showText(c.registro_manuel); } else if (instructor.equalsIgnoreCase("Ing. Jorge Antonio Razn Gutierrez")) { nameWidth = calibriBold.getStringWidth(c.registro_coco) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream.showText(c.registro_coco); } else { nameWidth = calibriBold.getStringWidth(c.registro_jorge) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream.showText(c.registro_jorge); } contentStream.endText(); } // Make sure that the content stream is closed: contentStream.close(); contentStream2.beginText(); contentStream2.setFont(calibri, 11); contentStream2.setNonStrokingColor(Color.BLACK); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 465, 656)); contentStream2.showText(df.format(new Date())); contentStream2.setFont(calibriBold, 11); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 135, 585)); contentStream2.showText(c.razon_social); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 120, (float) 572.5)); if (c.walmart) { contentStream2.showText(d.determinante + " " + d.unidad); } else { contentStream2.showText(d.sucursal); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 527)); contentStream2.showText(d.RFC); contentStream2.setFont(calibri, 11); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 73, 527)); contentStream2.showText("RFC: "); contentStream2.setFont(calibriBold, 11); } charWidth = calibriBold.getStringWidth(d.direccion) / 1000 * 11; //System.out.println(charWidth + " " + d.direccion.length() + " " + d.direccion); if (charWidth <= 400) { contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 549)); contentStream2.showText(d.direccion); } else { contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 555)); contentStream2.showText(d.direccion.substring(0, d.direccion.indexOf(" ", 82))); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 120, 540)); contentStream2.showText(d.direccion.substring(d.direccion.indexOf(" ", 82) + 1, d.direccion.length())); } charWidth = calibriBold.getStringWidth(c.nombre_curso) / 1000 * 11; pageWidth = page2.getMediaBox().getWidth(); xPosition = (pageWidth - charWidth) / 2; contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 490)); contentStream2.showText(c.nombre_curso); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 160, 465)); contentStream2.showText(c.fecha_certificado); contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, 160, (float) 450.5)); contentStream2.showText(c.horas_texto); contentStream2.endText(); if (logoObject != null && !logoObject.isEmpty()) { contentStream2.drawImage(logoObject, 30, 700, 156, 78); } if (firmaObject != null && !firmaObject.isEmpty()) { xPosition = (pageWidth - 100) / 2; contentStream2.drawImage(firmaObject, xPosition, 55, 110, 42); contentStream2.beginText(); contentStream2.setFont(calibriBold, 10); contentStream2.setNonStrokingColor(Color.BLACK); nameWidth = calibriBold.getStringWidth(instructor) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 55)); contentStream2.showText(instructor); if (instructor.equalsIgnoreCase("Manuel Anguiano Razn")) { nameWidth = calibriBold.getStringWidth(c.registro_manuel) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream2.showText(c.registro_manuel); } else if (instructor.equalsIgnoreCase("Ing. Jorge Antonio Razn Gutierrez")) { nameWidth = calibriBold.getStringWidth(c.registro_coco) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream2.showText(c.registro_coco); } else { nameWidth = calibriBold.getStringWidth(c.registro_jorge) / 1000 * 10; xPosition = (pageWidth - nameWidth) / 2 + 9; contentStream2.setTextMatrix(new Matrix(1, 0, 0, 1, xPosition, 40)); contentStream2.showText(c.registro_jorge); } contentStream2.endText(); } contentStream2.close(); //"Capacitacion_BAE_Centro de Huinala_2631_MULTI_19ago2015" //Capacitacin + formato tienda + nombre sucursal + numero sucursal + nombre curso + ddmmaaaa Format formatter = new SimpleDateFormat("ddMMMYYYY", new Locale("es", "MX")); String formatedDate = formatter.format(c.fecha_inicio); String abrev = abreviaturas.get(c.nombre_curso); // Save the results and ensure that the document is properly closed: if (c.walmart) { document.save(savePath + File.separator + "Certificado_" + d.formato + "_" + d.unidad + "_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf"); document.close(); dosc.put(savePath + File.separator + "Certificado_" + d.formato + "_" + d.unidad + "_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf", d.determinante); } else { document.save(savePath + File.separator + "Certificado_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf"); document.close(); dosc.put(savePath + File.separator + "Certificado_" + d.determinante + "_" + abrev + "_" + formatedDate + ".pdf", d.determinante); } }
From source file:com.evanbelcher.DrillBook.display.DBDesktopPane.java
License:Open Source License
/** * Prints the current page to a pdf file * * @throws IOException if the file cannot be found or the pdf cannot be created *//*from w w w .j av a2 s . co m*/ protected void printCurrentPageToPdf() throws IOException { io.clearActivePoints(); ddf.updateAll(io.getActivePoints()); String fileName = DBMenuBar.cleanseFileName( Main.getState().getCurrentFileName().substring(0, Main.getState().getCurrentFileName().length() - 6) + ": " + Main.getCurrentPage().toDisplayString().replaceAll("\\|", "-")); File f = new File(Main.getFilePath()); f.mkdirs(); f = new File(Main.getFilePath() + fileName + ".pdf"); BufferedImage bi = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_ARGB); Graphics g = bi.createGraphics(); paintComponent(g); g.dispose(); PDDocument doc = null; try { doc = new PDDocument(); boolean crop = true; State.print(field); for (Point p : Main.getCurrentPage().getDots().keySet()) if (p.getX() < field.getWidth() * 0.1 + field.getX() || p.getX() > field.getWidth() * 0.9 + field.getX()) { crop = false; break; } if (Main.getCurrentPage().getTextPoint().getX() < field.getWidth() * 0.1 + field.getX() || Main.getCurrentPage().getTextPoint().getX() + 100 > field.getWidth() * 0.9 + field.getX()) crop = false; float scale = 1.0f; if (crop) scale = 0.8f; PDPage page = new PDPage(new PDRectangle((float) field.getWidth() * scale, (float) field.getHeight())); doc.addPage(page); PDImageXObject pdImage = LosslessFactory.createFromImage(doc, bi); PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true); contentStream.drawImage(pdImage, -1 * field.x - (float) (((1 - scale) / 2.0f) * field.getWidth()), -1 * field.y, pdImage.getWidth(), pdImage.getHeight()); contentStream.close(); doc.save(f); } finally { if (doc != null) doc.close(); } }
From source file:com.evanbelcher.DrillBook.display.DBDesktopPane.java
License:Open Source License
/** * Prints every page to a pdf file//from w w w . ja va 2s. co m * * @throws IOException if the file cannot be found or the pdf cannot be created */ protected void printAllPagesToPdf() throws IOException { io.clearActivePoints(); ddf.updateAll(io.getActivePoints()); File f = new File(Main.getFilePath()); f.mkdirs(); String fileName = DBMenuBar.cleanseFileName(Main.getState().getCurrentFileName().substring(0, Main.getState().getCurrentFileName().length() - 6)); f = new File(Main.getFilePath() + fileName + " full show" + ".pdf"); boolean crop = true; a: for (int pageNum : Main.getPages().keySet()) { for (Point p : Main.getPages().get(pageNum).getDots().keySet()) { if (p.getX() < field.getWidth() * 0.1 + field.getX() || p.getX() > field.getWidth() * 0.9 + field.getX()) { crop = false; break a; } } if (Main.getPages().get(pageNum).getTextPoint().getX() < field.getWidth() * 0.1 + field.getX() || Main.getPages().get(pageNum).getTextPoint().getX() + 100 > field.getWidth() * 0.9 + field.getX()) { crop = false; break; } } float scale = 1.0f; if (crop) scale = 0.8f; PDDocument doc = null; try { doc = new PDDocument(); for (int i : Main.getPages().keySet()) { Main.setCurrentPage(i); BufferedImage bi = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_ARGB); Graphics g = bi.createGraphics(); paintComponent(g); g.dispose(); PDPage page = new PDPage( new PDRectangle((float) field.getWidth() * scale, (float) field.getHeight())); doc.addPage(page); PDImageXObject pdImage = LosslessFactory.createFromImage(doc, bi); PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true); contentStream.drawImage(pdImage, -1 * field.x - (float) (((1 - scale) / 2.0f) * field.getWidth()), -1 * field.y, pdImage.getWidth(), pdImage.getHeight()); contentStream.close(); } doc.save(f); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (doc != null) doc.close(); pdf.updateAfterPrintAll(); } }
From source file:com.fileOperations.ImageToPDF.java
/** * create PDF from image and scales it accordingly to fit in a single page * * @param folderPath String/*from ww w . j ava 2s. c o m*/ * @param imageFileName String * @return String new filename */ public static String createPDFFromImage(String folderPath, String imageFileName) { String pdfFile = FilenameUtils.removeExtension(imageFileName) + ".pdf"; String image = folderPath + imageFileName; PDImageXObject pdImage = null; File imageFile = null; FileInputStream fileStream = null; BufferedImage bim = null; File attachmentLocation = new File(folderPath); if (!attachmentLocation.exists()) { attachmentLocation.mkdirs(); } // the document PDDocument doc = null; PDPageContentStream contentStream = null; try { doc = new PDDocument(); PDPage page = new PDPage(PDRectangle.LETTER); float margin = 72; float pageWidth = page.getMediaBox().getWidth() - 2 * margin; float pageHeight = page.getMediaBox().getHeight() - 2 * margin; if (image.toLowerCase().endsWith(".jpg")) { imageFile = new File(image); fileStream = new FileInputStream(image); pdImage = JPEGFactory.createFromStream(doc, fileStream); // } else if ((image.toLowerCase().endsWith(".tif") // || image.toLowerCase().endsWith(".tiff")) // && TIFFCompression(image) == COMPRESSION_GROUP4) { // imageFile = new File(image); // pdImage = CCITTFactory.createFromFile(doc, imageFile); } else if (image.toLowerCase().endsWith(".gif") || image.toLowerCase().endsWith(".bmp") || image.toLowerCase().endsWith(".png")) { imageFile = new File(image); bim = ImageIO.read(imageFile); pdImage = LosslessFactory.createFromImage(doc, bim); } if (pdImage != null) { if (pdImage.getWidth() > pdImage.getHeight()) { page.setRotation(270); PDRectangle rotatedPage = new PDRectangle(page.getMediaBox().getHeight(), page.getMediaBox().getWidth()); page.setMediaBox(rotatedPage); pageWidth = page.getMediaBox().getWidth() - 2 * margin; pageHeight = page.getMediaBox().getHeight() - 2 * margin; } Dimension pageSize = new Dimension((int) pageWidth, (int) pageHeight); Dimension imageSize = new Dimension(pdImage.getWidth(), pdImage.getHeight()); Dimension scaledDim = PDFBoxTools.getScaledDimension(imageSize, pageSize); float startX = page.getMediaBox().getLowerLeftX() + margin; float startY = page.getMediaBox().getUpperRightY() - margin - scaledDim.height; doc.addPage(page); contentStream = new PDPageContentStream(doc, page); contentStream.drawImage(pdImage, startX, startY, scaledDim.width, scaledDim.height); contentStream.close(); doc.save(folderPath + pdfFile); } } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } finally { if (doc != null) { try { doc.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } } } if (fileStream != null) { try { fileStream.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } } if (bim != null) { bim.flush(); } if (imageFile != null) { imageFile.delete(); } return pdfFile; }
From source file:com.fileOperations.ImageToPDF.java
/** * create PDF from image and scales it accordingly to fit in a single page * * @param folderPath String/*from www. j a v a 2 s .c o m*/ * @param imageFileName String * @return String new filename */ public static String createPDFFromImageNoDelete(String folderPath, String imageFileName) { String pdfFile = FilenameUtils.removeExtension(imageFileName) + ".pdf"; String image = folderPath + imageFileName; PDImageXObject pdImage = null; File imageFile = null; FileInputStream fileStream = null; BufferedImage bim = null; File attachmentLocation = new File(folderPath); if (!attachmentLocation.exists()) { attachmentLocation.mkdirs(); } // the document PDDocument doc = null; PDPageContentStream contentStream = null; try { doc = new PDDocument(); PDPage page = new PDPage(PDRectangle.LETTER); float margin = 72; float pageWidth = page.getMediaBox().getWidth() - 2 * margin; float pageHeight = page.getMediaBox().getHeight() - 2 * margin; if (image.toLowerCase().endsWith(".jpg")) { imageFile = new File(image); fileStream = new FileInputStream(image); pdImage = JPEGFactory.createFromStream(doc, fileStream); // } else if ((image.toLowerCase().endsWith(".tif") // || image.toLowerCase().endsWith(".tiff")) // && TIFFCompression(image) == COMPRESSION_GROUP4) { // imageFile = new File(image); // pdImage = CCITTFactory.createFromFile(doc, imageFile); } else if (image.toLowerCase().endsWith(".gif") || image.toLowerCase().endsWith(".bmp") || image.toLowerCase().endsWith(".png")) { imageFile = new File(image); bim = ImageIO.read(imageFile); pdImage = LosslessFactory.createFromImage(doc, bim); } if (pdImage != null) { if (pdImage.getWidth() > pdImage.getHeight()) { page.setRotation(270); PDRectangle rotatedPage = new PDRectangle(page.getMediaBox().getHeight(), page.getMediaBox().getWidth()); page.setMediaBox(rotatedPage); pageWidth = page.getMediaBox().getWidth() - 2 * margin; pageHeight = page.getMediaBox().getHeight() - 2 * margin; } Dimension pageSize = new Dimension((int) pageWidth, (int) pageHeight); Dimension imageSize = new Dimension(pdImage.getWidth(), pdImage.getHeight()); Dimension scaledDim = PDFBoxTools.getScaledDimension(imageSize, pageSize); float startX = page.getMediaBox().getLowerLeftX() + margin; float startY = page.getMediaBox().getUpperRightY() - margin - scaledDim.height; doc.addPage(page); contentStream = new PDPageContentStream(doc, page); contentStream.drawImage(pdImage, startX, startY, scaledDim.width, scaledDim.height); contentStream.close(); doc.save(folderPath + pdfFile); } } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } finally { if (doc != null) { try { doc.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } } } if (fileStream != null) { try { fileStream.close(); } catch (IOException ex) { ExceptionHandler.Handle(ex); return ""; } } if (bim != null) { bim.flush(); } return pdfFile; }
From source file:com.github.gujou.deerbelling.sonarqube.service.PdfApplicationGenerator.java
License:Open Source License
private static PDImageXObject createFromFile(String path, PDDocument doc) throws IOException { System.out.println("path : " + PdfApplicationGenerator.class.getResource(path).getPath()); return LosslessFactory.createFromImage(doc, ImageIO.read(PdfApplicationGenerator.class.getResourceAsStream(path))); }
From source file:de.redsix.pdfcompare.CompareResult.java
License:Apache License
protected void addPageToDocument(final PDDocument document, final ImageWithDimension diffImage) throws IOException { PDPage page = new PDPage(new PDRectangle(diffImage.width, diffImage.height)); document.addPage(page);/*from www. j a va2 s . com*/ final PDImageXObject diffXImage = LosslessFactory.createFromImage(document, diffImage.bufferedImage); /* final PDImageXObject actualXObject = LosslessFactory.createFromImage(document, actualImage.bufferedImage); final PDImageXObject expectedXObject = LosslessFactory.createFromImage(document, expectedImage.bufferedImage); */ try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { int x = (int) page.getCropBox().getWidth(); //System.out.println("X value "+x); int y = (int) page.getCropBox().getHeight(); //System.out.println("Y value "+y); contentStream.drawImage(diffXImage, 0, 0, x, y); /* contentStream.setLineWidth(0.5F); contentStream.moveTo(x, 2); contentStream.lineTo(x, y); contentStream.drawImage(expectedXObject, x+2, 0, x, y); contentStream.moveTo(x+x, 2); contentStream.lineTo(x+x, y+y); contentStream.drawImage(expectedXObject, x+x+2, 0, x, y); contentStream.stroke();*/ } }