2016-03-22 5 views
0

DocXをHtmlに変換してDocXに戻しています。最終的なDocxは正常に生成されます。しかし、変換によって、最終的な文書の表の書式設定が歪曲していました。最終的なdocxで生成されたテーブルのセル幅は長くなり、テーブルはドキュメントの境界から外れます。DOCX4J:HTMLをDocxテーブル形式に変換する

  • docxの元のテーブルの列幅は8.15cm(表幅、16.30cm)です。
  • htmlに変換されたテーブルの幅は6.42インチです。
  • docxに変換された表の列の幅は10.76cmです(表 幅、21.52cm)。

変換後も同じ形式を維持する方法はありますか? アドバイスをいただければ幸いです。以下は

は私のコードです:

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の往復経由でご利用の場合のWebベースの編集はありますか?

もしそうなら、おそらくdocx-html-editorが役立ちます。ラウンドトリッププロセスで使用される状態/ヒントを保存することによって機能します。

これとは別に、Wordの表は固定セル幅であるかどうかです。あなたは、固定幅テーブルで発生すると記述しているかどうか?

固定幅は大丈夫です(またはそれを作成するのに十分簡単です)。固定されていないと難しく...

+0

はい。それはまさに私の使用例です。はい、テーブルの幅は固定されています。私はマニュアルを見て、私はいくつかの質問があります。 もし私がこのライブラリを使用するなら、私はまだdocxをhtmlに変換してdocxに戻す必要がありますか? 私はフロントエンドとしてprimefacesを使用しており、CKEditorを持っています。私はprimefacesが提供するものを使用するのですか、それともインストールする必要がありますか? – user2533611

+0

プロジェクトhttps://github.com/plutext/docx-html-editorが変換を行います。それをスタンドアロンで実行してみて、それを作業したらプロジェクトに統合してください。ページには、CKeditor v3.6.6.1が使用されているので、primefaceによって提供されているものが近いと動作するかもしれません。 – JasonPlutext