Tips, Soluciones y Novedades en Tecnología

10/09/2018

Insertar Imagen en pdf






En muchos casos requerimos insertar una imagen a un archivo PDF, para formatos,plantillas etc.



En esta entrada vamos a explicar paso a paso como insertar en cada hoja del documento PDF.





Como primer paso agregamos la dependencia Maven








<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<!-- ITEXTPDF -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<!-- /ITEXTPDF-->




Ahora implementamos el método encargado de la inserción de la imagen en el archivo PDF.



Este método inserta la imagen en cada hoja del PDF, si la hoja se encuentra vertical ú horizontal, no tiene problemas en insertar.



El método para realizar la conversión es el siguiente.






public static void process(File input, File ouput, File logo, int x, int y) throws Exception {
PdfReader reader = new PdfReader(input.getAbsolutePath());
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(ouput.getAbsolutePath() + File.separator + input.getName()));
for (int i = 1; i <= reader.getNumberOfPages(); i++) {;
Image image = Image.getInstance(logo.getAbsolutePath());
image.setAbsolutePosition(y, reader.getPageSize(i).getHeight() - image.getScaledHeight() - x);
PdfContentByte under = stamper.getUnderContent(i);
under.addImage(image);
}
stamper.close();
reader.close();
}






Los parámetros de entrada son:



input: el archivo pdf a insertar la imagen

ouput: el archivo pdf para la salida

logo: el archivo imagen a insertar

x: Distancia  izquierda horizontal , default 25

y: Distancia izquierda vertical, default 25







Para determinar el X y Y, se debe probar hasta determinar la posición correcta a insertar.



A continuación la ejecución del método pasando los parámetros anteriormente mencionados.






    public static void main(String[] args) throws Exception {
File pdf_input = new File("/opt/input/plantilla.pdf");
File pdf_ouput = new File("/opt/input/logo.png");
File file_imagen = new File("/opt/input/plantilla_new.pdf");
int x = 25;
int y = 25;
process(pdf_input, pdf_ouput, file_imagen, x, y);
}






Saludos.














0 comments:

Publicar un comentario