Я работаю с Aspose и сталкиваюсь с этими проблемами:
Стиль, примененный к полям слияния, которые все теряются после слияния: пример
Затем я попытался сдругой подход - удаление ключевого слова MERGEFIELD из кода поля, применяемый стиль сохраняется должным образом, но не совсем.Поля слияния, которые были удалены, эти ключевые слова накапливаются в верхней части документа (Пожалуйста, игнорируйте предупреждение об авторских правах): пример
(У меня нет полного разрешения вставлять изображения сюда,поэтому, пожалуйста, пройдите по ссылке, которую я прикрепил в этом сообщении)
Это мой код для выполнения процесса слияния:
public static void generateMailMergePdfFromJson(Document template, String json, String outputFilePath) throws ParserConfigurationException, SAXException, IOException, Exception {
//Remove merge field with empty value and if the row are empty=> remove paragraph
template.getMailMerge().setCleanupOptions(MailMergeCleanupOptions.REMOVE_UNUSED_FIELDS
| MailMergeCleanupOptions.REMOVE_EMPTY_PARAGRAPHS
| MailMergeCleanupOptions.REMOVE_UNUSED_REGIONS
| MailMergeCleanupOptions.REMOVE_CONTAINING_FIELDS);
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(json);
ArrayNode arrayNode = objectMapper.createArrayNode();
arrayNode.add(jsonNode);
JsonNode rootNode = objectMapper.createObjectNode();
((ObjectNode) rootNode).set(Dictionary.ROOT_TAG_NAME, arrayNode);
//To call custom merge data with html code
template.getMailMerge().setFieldMergingCallback(new HandleMergeFieldInsertHtml());
// Add main merge field based of main root tag name
template.accept(new TableTagHandler(Dictionary.ROOT_TAG_NAME));
// Merge fields
template.getMailMerge().executeWithRegions(new JsonMailMergeDataSet(new JsonDocument(rootNode, Dictionary.ROOT_TAG_NAME)));
template.save(outputFilePath, SaveFormat.PDF);
}
Всем, кто работал с Aspose, пожалуйста, дайте мнесовет по этому вопросу.