我一直在努力在將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中適當添加它。