¿Cómo cambiar el tamaño de la imagen al tamaño de párrafo usando Apache POI?

Eduardo

Estoy tratando de agregar una imagen a un archivo docx usando Apache POI, pero la imagen es más grande que el tamaño del párrafo. ¿Hay alguna forma de saber el tamaño del párrafo para poder cambiar el tamaño de la imagen para que se ajuste al párrafo? A continuación se muestra cómo intento agregar la imagen.

XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();

String imgFile = "img.png";
BufferedImage img = ImageIO.read(new FileInputStream(imgFile));
int width = img.getWidth();
int height = img.getHeight();
double scaling = 1.0;
// Calculate scaling based on width and paragraph size
XWPFRun run = paragraph.createRun();
run.addPicture(new FileInputStream(imgFile), 
        XWPFDocument.PICTURE_TYPE_PNG, 
        imgFile, 
        Units.toEMU(width*scaling), 
        Units.toEMU(height*scaling));
Eduardo

Después de investigar un poco, descubrí que, de forma predeterminada, el tamaño del papel y los márgenes no se establecen al crear un archivo docx. Por lo tanto, es necesario configurarlos y usar el mismo valor para configurar el tamaño de la imagen.

int pageW = 500;
int pageH = 1000;
int pageM = 100;

CTDocument1 ctDoc = document.getDocument();
CTBody body = ctDoc.getBody();
if (!body.isSetSectPr()) {
    CTSectPr section = body.addNewSectPr();
    if (!section.isSetPgSz()) {
        CTPageSz size = section.addNewPgSz();
        size.setW(BigInteger.valueOf(pageW));
        size.setH(BigInteger.valueOf(pageH));
    }

    if (!section.isSetPgMar()) {
        CTPageMar margin = section.addNewPgMar();
        margin.setBottom(BigInteger.valueOf(pageM));
        margin.setTop(BigInteger.valueOf(pageM));
        margin.setLeft(BigInteger.valueOf(pageM));
        margin.setRight(BigInteger.valueOf(pageM));
    }
}

XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
String imgFile = "img.png";
FileInputStream fis = new FileInputStream(imgFile);
BufferedImage img = ImageIO.read(fis);
int width = img.getWidth();
int height = img.getHeight();
double scaling = 1.0;
if (width > pageW - 2*pageM) {
    scaling = ((double)(pageW - 2*pageM)) / width;
}
run.addPicture(new FileInputStream(imgFile), 
        XWPFDocument.PICTURE_TYPE_PNG, 
        imgFile, 
        Units.toEMU(width * scaling / 20), 
        Units.toEMU(height * scaling / 20));

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cambiar el tamaño de la imagen de Qlabel al cambiar el tamaño de la ventana usando resizeEvent

cómo cambiar el modelo cnn al reducir el tamaño de la imagen

cómo cambiar el tamaño de la imagen en la memoria usando el comando convertir

¿Cómo cambiar el tamaño de la imagen QR?

La imagen de fondo desaparece al cambiar el tamaño

OutOfMemory al cambiar el tamaño de la imagen

¿Cambiar el tamaño de la imagen proporcionalmente usando CSS?

CSS FlexBox: la imagen no cambia de tamaño al cambiar el tamaño de la ventana

Cómo cambiar el tamaño de la imagen usando nextjs

cómo cambiar el tamaño de la imagen usando openpyxl

Al cambiar el tamaño, cargando una imagen usando la función de activos en laravel

¿Cómo ajustar el tamaño de la imagen al tamaño de JFrame?

¿Cómo puedo cambiar el tamaño de la imagen para que se ajuste al cuadro de imagen?

El color de la imagen se arruinó al cambiar su tamaño usando una copia de la imagen

El color de la imagen se arruinó al cambiar su tamaño usando una copia de la imagen

Cambiar el tamaño de la imagen en C #

¿Cómo puedo mantener la imagen de fondo estirada al panel de cuadrícula al cambiar el tamaño?

¿Cómo asegurarse de que el texto siempre se mantenga encima de la imagen (incluso al cambiar el tamaño)?

¿Cómo coloco la imagen debajo del párrafo cuando cambio el tamaño de la pantalla del navegador?

¿Cómo cambiar el tamaño de la imagen original a un tamaño de imagen común en Java?

¿Cómo cambiar el tamaño de la imagen en webworker usando OffscreenCanvas dada la URL local y devolver los datos redimensionados al hilo principal?

¿Cómo cambiar el tamaño de la imagen $ cordovaCapture.captureImage antes de subirla al servidor?

La imagen se desplaza hacia la izquierda o hacia la derecha al cambiar el tamaño de la página

¿Cómo cambiar el tamaño de la imagen en php según el tamaño de la pantalla?

¿Cómo cambiar el número de imágenes en cada fila al cambiar el tamaño de la página a 450px usando CSS?

Cómo cambiar el tamaño de ImageView al cambiar el tamaño de la ventana en javafx gui

Android Studio: ¿Cómo cambiar el tamaño de una imagen antes de subirla al servidor?

Cómo cambiar el tamaño de la imagen y reducir DPI usando Imagemagick en el nodo

Cómo cambiar el tamaño de la imagen y reducir DPI usando Imagemagick en el nodo

TOP Lista

CalienteEtiquetas

Archivo