如何使用 Apache POI 将带边框的图像添加到 Word 中的 table 单元格中?
How to add image with border into table cell in Word with Apache POI?
我正在尝试使用 Apache POI 在 Microsoft Word 中将带边框的图片插入 table。我可以使用以下代码将图像添加到单元格中:
// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\ [filepath for the image]");
run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", 6217920, 3474720);
我尝试寻找给图像添加边框的方法,但我无法在网上找到任何资源。我遇到了这个 link: 但在这种情况下它没有帮助。
(具体来说,我想在图像周围添加一条 2 1/4 磅粗的黑色实线)
有人知道怎么做吗?提前致谢。
一如既往如果当前高级 apache poi
类 不提供某些 Office Open XML
功能,请执行以下操作:
首先执行提供的操作,然后查看您创建的基础 XML
。在这种情况下,执行:
// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\ [filepath for the image]");
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());
你会得到类似的东西:
<xml-fragment xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:rel="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<pic:nvPicPr>
<pic:cNvPr id="0" name="Picture 0" descr="Name"/>
<pic:cNvPicPr>
<a:picLocks noChangeAspect="true"/>
</pic:cNvPicPr>
</pic:nvPicPr>
<pic:blipFill>
<a:blip rel:embed="rId2"/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
<pic:spPr>
<a:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="2857500" cy="1428750"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
</pic:spPr>
</xml-fragment>
现在打开 Word
中的结果并添加您想要的内容。在这种情况下,请在图片周围添加边框。然后保存结果,解压缩 *.docx
Zip
存档并查看 /word/document.xml
以了解更改内容。
你会发现类似:
<a:ln w="28575">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
</a:ln>
已添加到 <pic:spPr>
。
现在尝试使用 apache poi
的低级别 ooxml-schema
类 创建它:
...
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());
picture.getCTPicture().getSpPr().addNewLn().setW(Units.toEMU(2.25));
picture.getCTPicture().getSpPr().getLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[]{0,0,0});
System.out.println(picture.getCTPicture());
...
我正在尝试使用 Apache POI 在 Microsoft Word 中将带边框的图片插入 table。我可以使用以下代码将图像添加到单元格中:
// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\ [filepath for the image]");
run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", 6217920, 3474720);
我尝试寻找给图像添加边框的方法,但我无法在网上找到任何资源。我遇到了这个 link:
(具体来说,我想在图像周围添加一条 2 1/4 磅粗的黑色实线)
有人知道怎么做吗?提前致谢。
一如既往如果当前高级 apache poi
类 不提供某些 Office Open XML
功能,请执行以下操作:
首先执行提供的操作,然后查看您创建的基础 XML
。在这种情况下,执行:
// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\ [filepath for the image]");
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());
你会得到类似的东西:
<xml-fragment xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:rel="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<pic:nvPicPr>
<pic:cNvPr id="0" name="Picture 0" descr="Name"/>
<pic:cNvPicPr>
<a:picLocks noChangeAspect="true"/>
</pic:cNvPicPr>
</pic:nvPicPr>
<pic:blipFill>
<a:blip rel:embed="rId2"/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
<pic:spPr>
<a:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="2857500" cy="1428750"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
</pic:spPr>
</xml-fragment>
现在打开 Word
中的结果并添加您想要的内容。在这种情况下,请在图片周围添加边框。然后保存结果,解压缩 *.docx
Zip
存档并查看 /word/document.xml
以了解更改内容。
你会发现类似:
<a:ln w="28575">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
</a:ln>
已添加到 <pic:spPr>
。
现在尝试使用 apache poi
的低级别 ooxml-schema
类 创建它:
...
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());
picture.getCTPicture().getSpPr().addNewLn().setW(Units.toEMU(2.25));
picture.getCTPicture().getSpPr().getLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[]{0,0,0});
System.out.println(picture.getCTPicture());
...