【JAVA】使用jacob生成的html,关于文字乱码处理,图片无法显示等问题。

最近项目中需要把word和excel直接通过ext导入到服务器上。用到了jacob,然后放在服务器目录上,问题出现了:

jacob网上例子很多就不说了,但是jdk版本和jar包版本必须保持一致。


1.图片无法显示:

因为生成html的时候会生成一个files文件,就和文件另存为网页一样会产生一个files文件一样,因为里面用了vml矢量!vml始终为false显示无法显示图片。

最后只有用自己又重新用流读写了此数据,替换掉了里面的vml矢量这样图片可以显示。

方法:

	/**
	 * 
	 * @Title: writeHtmlReplaceVml
	 * @Description: TODO(word转html后替换vml矢量,否则无法显示图片)
	 * @param vmlFilePath
	 * @throws
	 */
	private static void writeHtmlReplaceVml(String vmlFilePath) {

		String strInfo = null;
		// 读取网页文件
		try {
			FileInputStream fis = new FileInputStream(vmlFilePath);
			InputStreamReader isr = new InputStreamReader(fis);
			BufferedReader buf = new BufferedReader(isr);
			int i = 0;
			String c;
			try {
				while ((c = buf.readLine()) != null) {
					if (i == 0) {
						strInfo = c;
					} else {
						strInfo = strInfo + "\n" + c;
					}
					i++;
				}
				buf.close();
				isr.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		// 处理网页内容,并重新生成新的网页文件
		try {
			File write = new File(vmlFilePath);
			//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(write),"utf-8"));
			BufferedWriter bw = new BufferedWriter(new FileWriter(write));
			strInfo = strInfo.replace("<![if !vml]>", "");
			strInfo = strInfo.replace("<![endif]>", "  ");
			//strInfo = strInfo.replace("charset=gb2312", "charset=gb2312");
			// strInfo=strInfo.replace("<td","<td nowrap");
			bw.write(strInfo);
			bw.close();
		} catch (IOException ee) {
			System.out.println(ee.getMessage());
		}

		// 删除临时生成的网页文件及其附属文件夹
		// try
		// {
		// File fl = new File(strFile);
		// if(fl.exists() && fl.isFile()){fl.delete();}//删除临时网页
		// int intLen=strFile.lastIndexOf(".");
		// String strFileFolder=strFile.substring(0,intLen+1)+"files";
		// delFolder(strFileFolder);//删除临时网页附属的文件夹
		// }
		catch (Exception ee) {
			System.out.println(ee.getMessage());
		}
	}

2.文字乱码。

在显示的时候嵌套在了iframe里面,生成的html文件格式为gb2312,项目为utf-8,显示的时候word正常,excel正文正常,但是下面若有sheet分页的话,分页中文乱码,开始时候思路是写入的时候改变为utf-8,但是在处理后发现部分文字正常,但是某些文字还是乱码。无奈之下又去寻找答案,想了下当时使用mht显示的时候配置如下代码:web配置:

<!-- 页面可以访问mht文件配置 -->
	<mime-mapping>
		<extension>mht</extension>
		<mime-type>message/rfc822</mime-type>
	</mime-mapping>

在网上有找了下,发现需配置web:

<web-app>  <!-- 页面可以访问html文件配置 --> 
  <jsp-config>    
    <jsp-property-group>  
      <description>HTML Encoding</description>  
      <display-name>HTML Encoding Config</display-name>  
      <url-pattern>*.html</url-pattern>  
      <el-ignored>true</el-ignored>  
      <page-encoding>gbk</page-encoding>  
      <scripting-invalid>true</scripting-invalid>  
    </jsp-property-group>  
  </jsp-config>  
</web-app>  

这样gb2312也可以显示正常。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值