Я конвертирую DocX в Html и обратно в DocX. Окончательный Docx успешно сгенерирован. Однако преобразование исказило форматирование таблицы в конечном документе. Таблица, сгенерированная в конечном docx, имеет ширину ячейки, удлиненную, что приводит к тому, что таблица выходит из границы документа.DOCX4J: Преобразование HTML в Docx - форматирование таблицы
- Оригинальный стол в docx имеет ширину столбца 8.15 см (ширина стола, 16,30 см).
- Преобразованный в html стол имеет ширину: 6.42in.
- Конвертированный назад в docx столбец шириной 10,76 см (таблица ширина, 21,52 см).
Есть ли способ для меня сохранить тот же формат после преобразования? Любые советы приветствуются.
Ниже мой код:
private void convertHtmlToDocx() throws IOException, JAXBException, Docx4JException{
//convert back to docx
String inputfilepath = System.getProperty("user.dir") + "myPath";
String baseURL = "file:///"+System.getProperty("user.dir")+"path";
String stringFromFile = FileUtils.readFileToString(new File(inputfilepath), "UTF-8");
String unescaped = stringFromFile;
if (stringFromFile.contains("</")) {
unescaped = StringEscapeUtils.unescapeHtml(stringFromFile);
}
System.out.println("Unescaped: " + unescaped);
// Setup font mapping
RFonts rfonts = Context.getWmlObjectFactory().createRFonts();
rfonts.setAscii("Century Gothic");
XHTMLImporterImpl.addFontMapping("Century Gothic", rfonts);
// Create an empty docx package
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
ndp.unmarshalDefaultNumbering();
// Convert the XHTML, and add it into the empty docx we made
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
XHTMLImporter.setTableFormatting(FormattingOption.IGNORE_CLASS);
XHTMLImporter.setParagraphFormatting(FormattingOption.IGNORE_CLASS);
XHTMLImporter.setHyperlinkStyle("Hyperlink");
wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert(unescaped, baseURL));
wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "myPath"));
}
Да. Это точно мой прецедент. Да, ширина таблицы фиксирована. Я просмотрел руководство, и у меня есть несколько вопросов. Если бы я использовал эту библиотеку, мне все равно нужно будет преобразовать docx, html и обратно в docx? Я использую в качестве своего внешнего интерфейса, и у него есть CKEditor. Использую ли я тот, который предоставляется с помощью интерфейсов, или мне нужно его установить? – user2533611
Проект https://github.com/plutext/docx-html-editor выполняет преобразование. Попробуйте запустить его автономно, и как только вы начнете работать, интегрируйте его в свой проект. Как говорится в этой странице, он использует CKeditor v3.6.6.1, поэтому я предполагаю, что тот, который предоставляется с помощью первичностей, может работать, если он близок. – JasonPlutext