大佬,你的问题解决了没,我也遇到这个问题了
代码执行以下逻辑
1、调用域变量填充逻辑
MergeOption option = MergeOption.builder().mergeAll().required(false).build();
Document document = mergeFieldAndRegion(textByte, contractE, option, null);
2、 填充各种域变量
@Override
public Document mergeFieldAndRegion(byte[] fileBytes, ContractE contract, MergeOption option, ContractAttachmentE contractAttachment) {
Objects.requireNonNull(fileBytes);
Objects.requireNonNull(contract);
// 1. 域变量文档初始化
MergeDocument mergeDocument = null;
try (InputStream fis = new ByteArrayInputStream(fileBytes)) {
mergeDocument = MergeDocument.of(fis);
} catch (Exception e) {
log.error("文档载入失败", e);
throw new CommonException("error.contract.document.init");
}
// 2。添加普通域变量的值
addFieldVariables(mergeDocument, contract, option);
// 3。 添加表格域变量的值
addRegionVariables(mergeDocument, contract, option);
// 4。设置lovCallBack,处理lov的meaning替换问题, emptyHandler非空时,会作为lov的补充逻辑处理
LovFieldMergingCallback lovHandler = null;
if (Objects.isNull(option.getEmptyHandler())) {
lovHandler = new LovFieldMergingCallback(lovAdapter);
} else {
lovHandler = new LovFieldMergingCallback(lovAdapter, new EmptyMergingCallback(option.getEmptyHandler()));
}
mergeDocument.getMailMerge().setFieldMergingCallback(lovHandler);
// 5。开始填充
try {
mergeDocument.merge();
} catch (Exception e) {
log.error("域变量填充错误", e);
throw new CommonException("error.contract.document.merge");
}
// 6。填充结果判断
judgeResult(mergeDocument, option, contract, contractAttachment);
return mergeDocument.getDocument();
}
// 保存为pdf 之后,word文档(docx)格式的行间距就会变大
PdfSaveOptions options = new PdfSaveOptions();
options.setExportDocumentStructure(true);
document.save(outputStream, options);
原文件格式
image.png (69.1 KB)
保存为pdf之后的格式(行间距变大)
image.png (47.7 KB)
很遗憾,我们无法执行您的代码。 图像也没有清晰的内容。 .为确保及时准确的响应,请在此处附上以下资源进行测试:
- 您输入的 Word 文档。
- 请附上显示不良行为的输出文件。
- 请附上显示所需行为的预期输出文件。
- 请附上输出文档有问题部分的屏幕截图。
- 请创建一个简单的应用程序(没有编译错误的源代码),以帮助我们在我们端重现您的问题并将其附在此处进行测试。
一旦您准备好这些信息,我们将开始调查您的问题并为您提供更多信息。 谢谢你的配合。
PS:要附上这些资源,请压缩并上传它们。
请问下 subst.png 和 works.png 在哪里可以看到呢?