当前位置: 首页 > 知识库问答 >
问题:

如何利用java中的DOCX4J在Word(.docx)文件中的某个位置放置图像

颛孙昆
2023-03-14

我有一个要求,我有一个Word(.docx)文件。通过使用java程序,我需要使用docx4j将图像放在文档中的某个位置。有人能帮帮我吗!!!

我在尝试下面的代码...

 final String XPATH = "//w:t";
String image_Path = "D:\\Temp\\ex.png";
String template_Path = "D:\\Temp\\example.docx";

WordprocessingMLPackage  package =  WordprocessingMLPackage.createPackage();
List texts = package.getMainDocumentPart().getJAXBNodesViaXPath(XPATH, true);
for (Object obj : texts) {
  Text text = (Text) ((JAXBElement) obj).getValue();

  ObjectFactory factory = new ObjectFactory();         
  P paragraph = factory.createP();         
  R run = factory.createR();         
  paragraph.getContent().add(run);         
  Drawing drawing = factory.createDrawing();         
  run.getContent().add(drawing);         
  drawing.getAnchorOrInline().add(image_Path); 
  package.getMainDocumentPart().addObject(paragraph);
  package.save(new java.io.File("D:\\Temp\\example.docx"));here

共有1个答案

萧业
2023-03-14

您只是使用该代码将图像附加到文档的末尾。如果在文档中的某个位置需要它,则需要获得位置的句柄(例如,可以使用mainDocumentPart.getJaxbNodeSviaxPath())定位特定的P节点),然后简单地将新内容插入文档中的该“索引”处,如下所示:

package.getMainDocumentPart().getContent().add(index, imageParagraph);

(您可以使用类似MainDocumentPart.getContent().indexOf(OldParage)的方法来派生'index'的值,并且可能还希望移除找到的节点,这可以通过remove()调用)。

 类似资料: