4

我要求我有一个 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
4

2 回答 2

2

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

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

(您将通过使用类似的东西来导出“索引”的值MainDocumentPart.getContent().indexOf(oldParagraph),并且可能还想删除您找到的节点,这可以通过remove()调用来实现)。

于 2013-06-12T11:51:03.583 回答
2

添加图像比添加空的绘图对象更多。查看并了解docx4j ImageAdd 示例

您发布的代码看起来就像您只是复制/粘贴了东西,而没有尝试了解您在做什么。我这样说是因为您正在遍历一堆 XPath 结果,而没有对它们做任何事情。

于 2013-06-08T08:27:57.463 回答