我有一个模板DOCX文件,我正在使用。模板文件包含两个图像占位符(徽标和条形码图像)。如何使用BufferedImage替换这些图像,或者仅仅从URL中获取图像?在这方面似乎没有多少资源。
发布于 2022-11-21 07:06:13
我终于用书签让它开始工作了。很明显,在发布这个问题之前,我并没有深入挖掘。代码在下面。虽然我没有找到控制图像宽度和高度的方法,这一点很重要,但下面的代码确实回答了我的问题。
public void addLogoAndBarCode(WordprocessingMLPackage pack, String agencyID)
{
MainDocumentPart documentPart = pack.getMainDocumentPart();
Document wmlDoc = (Document) documentPart.getJaxbElement();
Body body = wmlDoc.getBody();
List<Object> paragraphs = body.getContent();
RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
new TraversalUtil(paragraphs, rt);
for(CTBookmark bm:rt.getStarts())
{
if(bm.getName().equals("agencyLogo"))
{
logger.info("i found bookmark");
try
{
InputStream is = new FileInputStream(agencyLogoPath+agencyID+".jpg");
byte[] bytes = IOUtils.toByteArray(is);
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(pack, bytes);
Inline inline = imagePart.createImageInline(null, null, 0,1, false, 800);
P p = (P)(bm.getParent());
ObjectFactory factory = new ObjectFactory();
R run = factory.createR();
Drawing drawing = factory.createDrawing();
drawing.getAnchorOrInline().add(inline);
run.getContent().add(drawing);
p.getContent().add(run);
}
catch(Exception er)
{
er.printStackTrace();
}
}
}
}https://stackoverflow.com/questions/74512294
复制相似问题