开发平台:android studio,现在已经按照相关资料添加了代码,申请并添加了临时的total license,运行代码后,没有报错,但是所生成的word文档的内容并未替换,应该怎么实现呢?代码以及项目结构见附件截图.jpeg (67.2 KB)
截图
谢谢你的询问。 请压缩并上传您的示例输入Word文档和Aspose.Words生成的DOCX文件,在此处显示不需要的行为以进行测试。 然后,我们将在最后调查此问题,并为您提供更多信息。
出现此问题的原因是您的’templete.docx’Word文档不包含真正的合并字段。 我们已修复此模板并将其附在此处供您参考:
templete-fixed.zip (9.3 KB)
希望这可以帮助。
我更新了你的模板:
templete-fixed-again.zip (9.5 KB)
请尝试使用以下代码:
Document doc = new Document("D:\\templete-fixed.docx");
doc.getMailMerge().setFieldMergingCallback(new HandleMergeImageField());
doc.getMailMerge().execute(new String[]{"FullName", "Company", "MyImage"},
new Object[]{"FN", "CMP", ImageIO.read(new File("D:\\temp\\aspose.words.jpg"))});
doc.save("D:\\output.docx");
/////////////////////////////////////////////
static class HandleMergeImageField implements IFieldMergingCallback {
public void fieldMerging(FieldMergingArgs args) throws Exception {
// Do nothing.
}
/**
* This is called when mail merge engine encounters Image:XXX merge
* field in the document. You have a chance to return an Image object,
* file name or a stream that contains the image.
*/
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write((BufferedImage) e.getFieldValue(), "jpg", os);
InputStream is = new ByteArrayInputStream(os.toByteArray());
e.setImageStream(is);
}
}
根据你们提供的模板和代码测试了,没有问题,但是我加了一个表格,换了下名字,代码没有变动,只是模版里面的文字变动了,就不能替换内容,还有就是附件里面的图片超出了表格的边界,应该怎么解决呢?代码.png (13.3 KB)