2016-03-22 9 views
0

Я конвертирую 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")); 

    } 

ответ

0

Ваш случай использования веб-редактирования с помощью XHTML туда и обратно?

Если да, возможно, docx-html-editor помогает. Он работает, сохраняя состояние/подсказки, которые используются в процессе прохождения туда и обратно.

Кроме того, таблицы в Word являются либо фиксированными ячейками, либо нет. Является ли поведение, которое вы описываете, с таблицей фиксированной ширины, или нет?

Фиксированная ширина должна быть в порядке (или достаточно проста, чтобы сделать так). Не исправлено труднее ...

+0

Да. Это точно мой прецедент. Да, ширина таблицы фиксирована. Я просмотрел руководство, и у меня есть несколько вопросов. Если бы я использовал эту библиотеку, мне все равно нужно будет преобразовать docx, html и обратно в docx? Я использую в качестве своего внешнего интерфейса, и у него есть CKEditor. Использую ли я тот, который предоставляется с помощью интерфейсов, или мне нужно его установить? – user2533611

+0

Проект https://github.com/plutext/docx-html-editor выполняет преобразование. Попробуйте запустить его автономно, и как только вы начнете работать, интегрируйте его в свой проект. Как говорится в этой странице, он использует CKeditor v3.6.6.1, поэтому я предполагаю, что тот, который предоставляется с помощью первичностей, может работать, если он близок. – JasonPlutext

Смежные вопросы