2015-07-11 29 views
0

我一直在努力在將docx內容轉換爲html並通過webview讀取它時使用Docx4j庫讀取Docx文件。然而,當我嘗試加載Android Rich Text Editor時,我沒有得到任何格式的文本和圖像。我發現CSS樣式進行了評論,所以我刪除了,以及使用使用下面的代碼串的html:Android Rich Text Editor中的CSS樣式不起作用

html = html.replace("<!--", ""); 
html = html.replace("-->", ""); 

這還沒有解決我的問題,我沒有收到格式相同的純文本。但是,HTML包含良好定義的CSS代碼。快照

我已經檢查HTML在工作中RTEditor:

代碼:

String subject = "";Spanned description = null; 
    String message = null; 
    String signature = null;String withCharacters; 
    String tsx="";String html = null; 
    if (savedInstanceState == null) { 
     Intent intent = getIntent(); 
     subject = getIntent().getStringExtra("textReportFileName"); 
     message = getStringExtra(intent, "message"); 
     signature = getStringExtra(intent, "signature"); 
     mUseDarkTheme = intent.getBooleanExtra("mUseDarkTheme", false); 
     mSplitToolbar = intent.getBooleanExtra("mSplitToolbar", false); 
    } else { 
     subject = savedInstanceState.getString("subject", ""); 
     mUseDarkTheme = savedInstanceState.getBoolean("mUseDarkTheme", false); 
     mSplitToolbar = savedInstanceState.getBoolean("mSplitToolbar", false); 
    } 

    final long startTime = System.currentTimeMillis(); 
    final long endTime; 
    try { 
     final LoadFromZipNG loader = new LoadFromZipNG(); 
     WordprocessingMLPackage wordMLPackage = (WordprocessingMLPackage)loader.get(new FileInputStream(new File(Environment.getExternalStorageDirectory()+"/"+getIntent().getStringExtra("textReportFileName")))); 
     //getIntent().getStringExtra("textReportFileName") 
     String IMAGE_DIR_NAME = "images"; 

     String baseURL = this.getDir(IMAGE_DIR_NAME, Context.MODE_WORLD_READABLE).toURL().toString(); 
     System.out.println(baseURL); // file:/data/data/com.example.HelloAndroid/app_images/ 

     // Uncomment this to write image files to file system 
     ConversionImageHandler conversionImageHandler = new AndroidFileConversionImageHandler(IMAGE_DIR_NAME, // <-- don't use a path separator here 
       baseURL, false, this); 

     // Uncomment to use a base 64 encoded data URI for each image 
     // ConversionImageHandler conversionImageHandler = new AndroidDataUriImageHandler(); 

     HtmlExporterNonXSLT withoutXSLT = new HtmlExporterNonXSLT(wordMLPackage, conversionImageHandler); 

     html = XmlUtils.w3CDomNodeToString(withoutXSLT.export()); 
     html = html.replace("<!--", ""); 
     html = html.replace("-->", ""); 
     withCharacters = StringEscapeUtils.unescapeHtml(html); 
     description = Html.fromHtml(withCharacters); 

     //WebView webview = (WebView)this.findViewById(R.id.webpage); 
     //webview.loadDataWithBaseURL(baseURL, html , "text/html", null, null); 


     // TabHost mTabHost = getTabHost(); 
     // mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Web Page").setContent(R.id.webpage)); 
     // mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("View Source").setContent(tv.getId())); 
     // mTabHost.setCurrentTab(0); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(),"Invalid Format Exception",Toast.LENGTH_SHORT).show(); 
    } finally { 
     endTime = System.currentTimeMillis(); 
    } 
    final long duration = endTime - startTime; 
    System.err.println("Total time: " + duration + "ms"); 


    message = String.valueOf(description); 

    Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show(); 

    // set theme 
    setTheme(mUseDarkTheme ? R.style.ThemeDark : R.style.ThemeLight); 

    super.onCreate(savedInstanceState); 

    // set layout 
    setContentView(mSplitToolbar ? R.layout.rte_demo_2 : R.layout.rte_demo_1); 

    // initialize rich text manager 
    RTApi rtApi = new RTApi(this, new RTProxyImpl(this), new RTMediaFactoryImpl(this, true)); 
    mRTManager = new RTManager(rtApi, savedInstanceState); 

    ViewGroup toolbarContainer = (ViewGroup) findViewById(R.id.rte_toolbar_container); 

    // register toolbar 0 (if it exists) 
    HorizontalRTToolbar rtToolbar0 = (HorizontalRTToolbar) findViewById(R.id.rte_toolbar); 
    if (rtToolbar0 != null) { 
     mRTManager.registerToolbar(toolbarContainer, rtToolbar0); 
    } 

    // register toolbar 1 (if it exists) 
    HorizontalRTToolbar rtToolbar1 = (HorizontalRTToolbar) findViewById(R.id.rte_toolbar_character); 
    if (rtToolbar1 != null) { 
     mRTManager.registerToolbar(toolbarContainer, rtToolbar1); 
    } 

    // register toolbar 2 (if it exists) 
    HorizontalRTToolbar rtToolbar2 = (HorizontalRTToolbar) findViewById(R.id.rte_toolbar_paragraph); 
    if (rtToolbar2 != null) { 
     mRTManager.registerToolbar(toolbarContainer, rtToolbar2); 
    } 

    // set subject 
    mSubjectField = (EditText) findViewById(R.id.subject); 
    mSubjectField.setText(subject); 

    // register message editor 
    mRTMessageField = (RTEditText) findViewById(R.id.rtEditText_1); 
    mRTManager.registerEditor(mRTMessageField, true); 
    if (message != null) { 
     mRTMessageField.setRichTextEditing(true, message); 
    } 

    // register signature editor 
    mRTSignatureField = (RTEditText) findViewById(R.id.rtEditText_2); 
    mRTManager.registerEditor(mRTSignatureField, true); 
    if (signature != null) { 
     mRTSignatureField.setRichTextEditing(true, signature); 
    } 

    mRTMessageField.requestFocus(); 
} 

更新: 我覺得編輯器不支持的東西。我想簡單的HTML代碼,低於:

<html><head><style>div{background-color: blue}</style></head> <body>Hello <h1>How are you?</h1> <p>My name is <b> Abhishek</b></p><div>Whats up?</div> 

它不顯示任何風格無論是在線還是外部。現在唯一的方法是逐字讀取docx文件並檢查每個文件的字體並在RTEditor中適當添加它。

回答

0

富文本編輯器支持readme.md中提到的格式。從和到HTML的轉換隻是爲了能夠保存和加載編輯的文本,但不是一個支持每個屬性的通用html轉換器。該組件可以使用任何格式來保存文本(rtf,markdown,您自己的格式)。如果你想從docx文件導入文本,你必須編寫自己的導入/導出轉換器。如果要導入特定的html格式,可以增強現有的html轉換器(例如,支持樣式表中的彩色文本)。您可以導入/轉換富文本編輯器支持的所有內容,但在嘗試導入時沒有意義。因爲編輯器不支持這些表(沒有跨表的等價表)。