Alterar o layout da imagem ou moldar no DOCX com Apache POI
Eu colo a imagem no docx programaticamente. Mas, como resultado, o layout não combina comigo. Enfrentou uma falta de documentação. Preciso alterar o contorno da imagem (layout). Por exemplo, agora eu tenho isso:
Mas quero isso:
UPD1: O que faço: itere pelos parágrafos, depois pelas execuções e encontre determinada execução com marcador especial. Nesta corrida, adiciono uma imagem:
XWPFPicture pic = run.addPicture(
new ByteArrayInputStream(picSource),
Document.PICTURE_TYPE_PNG,
"pic",
Units.toEMU(100),
Units.toEMU(30));
UPD2: Investigou algo interessante dentro desta classe:
org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor
métodosetWrapTight(CTWrapTight var1)
. Pode ser é isso. Por ainda não sei como aplicá-lo ao meu código.
UPD3: Finalmente cheguei a isso (currentRun - corra com a nossa foto):
CTWrapTight ctWrapTight = currentRun.getCTR().getDrawingList().get(0).addNewAnchor().addNewWrapTight();
CTWrapPath ctWrapPath = ctWrapTight.addNewWrapPolygon();
CTPoint2D ctStart = ctWrapPath.addNewStart();
ctStart.setX(0L);
ctStart.setY(0L);
CTPoint2D ctLineTo1 = ctWrapPath.addNewLineTo();
CTPoint2D ctLineTo2 = ctWrapPath.addNewLineTo();
CTPoint2D ctLineTo3 = ctWrapPath.addNewLineTo();
ctLineTo1.setX(21384L);
ctLineTo1.setY(20520L);
ctLineTo2.setX(21384L);
ctLineTo2.setY(0L);
ctLineTo3.setX(0L);
ctLineTo3.setY(0L);
ctWrapTight.setWrapText(STWrapText.BOTH_SIDES);
Mas é um documento dividido quando tento abri-lo:
Nós lamentamos. Não podemos abrir o documento porque encontramos um problema com seu conteúdo.
Dependência são:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.3</version>
</dependency>