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