#java #docx4j
#java #docx4j
Вопрос:
Я пытаюсь прикрепить верхний, нижний колонтитулы и стили шаблонов к документам docx из dotx, но docx4j применяет только стили и игнорирует верхний и нижний колонтитулы. Я делаю что-то не так? Есть ли способ сделать это?
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
JAXBContext jc = JAXBContext.newInstance(bindClass);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(bindingInstance, writer);
String inputXML = writer.toString();
System.out.println(inputXML);
// Load input_template
WordprocessingMLPackage wordMLPackage = Docx4J.load(getDocx("doc.docx"));
wordMLPackage.attachTemplate(getDotx("template.dotx").getAbsolutePath());
Docx4J.bind(wordMLPackage, inputXML, Docx4J.FLAG_BIND_BIND_XML | Docx4J.FLAG_BIND_INSERT_XML | Docx4J.FLAG_BIND_REMOVE_XML);
Docx4J.save(wordMLPackage, bos, Docx4J.FLAG_BIND_BIND_XML | Docx4J.FLAG_BIND_INSERT_XML | Docx4J.FLAG_BIND_REMOVE_XML);
System.out.println("DocumentPrintHandler.bindData() ==>" wordMLPackage.getDocPropsExtendedPart().getContents().getPages()); //$NON-NLS-1$
} catch (JAXBException e) {
Logging.i("DocumentPrintHandler.bindData() (JAXBException)", e); //$NON-NLS-1$
return null;
} catch (Docx4JException e) {
Logging.i("DocumentPrintHandler.bindData() (Docx4JException)", e); //$NON-NLS-1$
return null;
} catch (Exception e) {
Logging.i("DocumentPrintHandler.bindData() (Exception)", e); //$NON-NLS-1$
return null;
}
return bos.toByteArray();
}```
Комментарии:
1. attachTemplate устанавливает соответствующее свойство только в DocumentSettingsPart. Если вы хотите скопировать верхние и нижние колонтитулы, для этого вам понадобится код. docx4java.org/forums/docx-java-f6 / … содержит некоторый код для этого, но не будет делать это рекурсивно (например, для копирования изображений). Я напишу некоторый код для этого в течение праздничного периода.
2. Отлично, но в моем верхнем и нижнем колонтитулах есть изображения.