使用poi docx转html,图片没有展示

yang7678287 2015-03-18 04:50:41
我用poi 把docx转html,对应文字格式都正确,但是图片不回展示出来,
源码:
XWPFDocument document = new XWPFDocument( new FileInputStream("D:\\crm.docx") );
XHTMLOptions options = XHTMLOptions.create().indent( 4 );
// Extract image
List<XWPFPictureData> pics=document.getAllPictures();
for (XWPFPictureData pic : pics) {
System.out.println(pic.getPictureType() + file.separator + pic.suggestFileExtension()
+file.separator+pic.getFileName());
byte[] bytev = pic.getData();
FileOutputStream fos = new FileOutputStream("d:\\"+pic.getFileName());
fos.write(bytev);
}
File imageFolder = new File( "D:/vfsroot/1000000/ueditor_upload/images" + fileInName );
options.setExtractor( new FileImageExtractor( imageFolder ) );
// URI resolver
options.URIResolver( new FileURIResolver( imageFolder ) );

File outFile = new File( fileOutName );
outFile.getParentFile().mkdirs();
OutputStream out = new FileOutputStream( outFile );
XHTMLConverter.getInstance().convert( document, out, options );

通过 for (XWPFPictureData pic : pics) {
System.out.println(pic.getPictureType() + file.separator + pic.suggestFileExtension()
+file.separator+pic.getFileName());
byte[] bytev = pic.getData();
FileOutputStream fos = new FileOutputStream("d:\\"+pic.getFileName());
fos.write(bytev);
}我可以获取到对应图片,但是怎么在html里面正确的位置展示出来?
...全文
2836 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
viaco2love 2016-11-24
  • 打赏
  • 举报
回复
然后你爱怎么保存就怎么保存,爱怎访问就怎么访问了
viaco2love 2016-11-24
  • 打赏
  • 举报
回复


通过 new IImageExtractor
new  IURIResolver
#####################################
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		String ymd = sdf.format(new Date());
		savePath += ymd + "/";
		saveUrl += ymd + "/";

		 XHTMLOptions options = XHTMLOptions.create();
		// Extract image  
	      //  File imageFolder = new File( FileTools.getInstance().getRoot() + savePath);  
	        IImageExtractor extractor=   new IImageExtractor() {
				private String savePath="";
				public IImageExtractor setSavePath(String savePath) {
					this.savePath = savePath;
					return this;
				}
				@Override
				public void extract(String arg0, byte[] arg1) throws IOException {
					   byte[] bytev =arg1;
					   String fileName = arg0.substring(arg0.lastIndexOf("/")+1);  
						FileTools.getInstance().saveFile(savePath, fileName,bytev);
				}
			}.setSavePath(savePath) ;
	        options.setExtractor(extractor );  
	        options.URIResolver( new  IURIResolver() {
	        	private String savePath="";
	        	public IURIResolver init(String savePath) {
					this.savePath = savePath;
					return this;
				}
				@Override
				public String resolve(String arg0) {
					 String fileName = arg0.substring(arg0.lastIndexOf("/")+1);  
					return savePath+ fileName + ".html";
				}
			} .init(saveUrl));  
	        ByteArrayOutputStream out = new ByteArrayOutputStream();  
	        XHTMLConverter.getInstance().convert( doc, out, options );  
	        String str = out.toString();  
viaco2love 2016-11-24
  • 打赏
  • 举报
回复
通过 new IImageExtractor new IURIResolver ##################################### SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; XHTMLOptions options = XHTMLOptions.create(); // Extract image // File imageFolder = new File( FileTools.getInstance().getRoot() + savePath); IImageExtractor extractor= new IImageExtractor() { private String savePath=""; public IImageExtractor setSavePath(String savePath) { this.savePath = savePath; return this; } @Override public void extract(String arg0, byte[] arg1) throws IOException { byte[] bytev =arg1; String fileName = arg0.substring(arg0.lastIndexOf("/")+1); FileTools.getInstance().saveFile(savePath, fileName,bytev); } }.setSavePath(savePath) ; options.setExtractor(extractor ); options.URIResolver( new IURIResolver() { private String savePath=""; public IURIResolver init(String savePath) { this.savePath = savePath; return this; } @Override public String resolve(String arg0) { String fileName = arg0.substring(arg0.lastIndexOf("/")+1); return savePath+ fileName + ".html"; } } .init(saveUrl)); ByteArrayOutputStream out = new ByteArrayOutputStream(); XHTMLConverter.getInstance().convert( doc, out, options ); String str = out.toString();
mojlong 2016-09-23
  • 打赏
  • 举报
回复
楼主demo能发一个么?发下邮箱吧1149331767@qq.com 谢谢啦
qq_35309738 2016-08-08
  • 打赏
  • 举报
回复
楼主,改好了吗?我的也是出不来图片
爽大大先生 2016-04-26
  • 打赏
  • 举报
回复
引用 3 楼 u011341218 的回复:
       
            options.URIResolver( new BasicURIResolver("uri/folder")); 
改用上面这个类,修改字符串为项目URI即可
正解
qq_32027369 2016-01-22
  • 打赏
  • 举报
回复
如果解决了,能发否发一下代码啊?
qq_32027369 2016-01-22
  • 打赏
  • 举报
回复
请问楼主,docx转html的问题怎么解决啊
jasonxzy 2016-01-02
  • 打赏
  • 举报
回复
poi接口问题导致,上述方法解决不了问题。docx文件中,把visio类的图片,包括emf,wmf图片大部分做成object 对象,poi无法识别这类图片。解决方法是修改poi源码,或者是对docx预处理,将object转图片。我采用了后者
Hey_乐乐 2015-12-28
  • 打赏
  • 举报
回复
楼主解决了吗?求图片保存方法
zt147522 2015-10-16
  • 打赏
  • 举报
回复
楼主大人,,请问我的poi jar包中没有XHTMLOptions怎么办??3.13的
随风而叼 2015-05-28
  • 打赏
  • 举报
回复
引用 5 楼 chqing21 的回复:

InputStream is = null;
		try {
			is = new FileInputStream(src);
			XWPFDocument document = new XWPFDocument(is);
			XHTMLOptions options = XHTMLOptions.create().indent(4);
			
			//img的src属性 后面会自动添加/word/media
			//这里就是images/word/media/ + 图片名字
			options.URIResolver(new BasicURIResolver("images"));
			//>> 文件的保存路径 之后自动会添加 word\media子路径
			FileImageExtractor extractor = new FileImageExtractor(new File(
					htmlImagesPath));
			options.setExtractor(extractor);
			XHTMLConverter.getInstance().convert(document,
					new FileOutputStream(des), options);

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
不需要手动添加代码保存图片
你好,请问下htmlImagesPath这个是什么地址呢?
chqing21 2015-05-26
  • 打赏
  • 举报
回复
顺便问下org.apache.poi.xwpf.converter.xhtml-1.0.4.jar这个包有没有官方下载地址以及api。 网上找半天也没有找到
chqing21 2015-05-26
  • 打赏
  • 举报
回复

InputStream is = null;
		try {
			is = new FileInputStream(src);
			XWPFDocument document = new XWPFDocument(is);
			XHTMLOptions options = XHTMLOptions.create().indent(4);
			
			//img的src属性 后面会自动添加/word/media
			//这里就是images/word/media/ + 图片名字
			options.URIResolver(new BasicURIResolver("images"));
			//>> 文件的保存路径 之后自动会添加 word\media子路径
			FileImageExtractor extractor = new FileImageExtractor(new File(
					htmlImagesPath));
			options.setExtractor(extractor);
			XHTMLConverter.getInstance().convert(document,
					new FileOutputStream(des), options);

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
不需要手动添加代码保存图片
attilax 2015-04-02
  • 打赏
  • 举报
回复
这个你要把图片保存到html可访问的地方,把地址填入进去。。或者使用内嵌资源的方式。。。 还有个简单方法,就是调用com接口或者Openoffice 直接word转换html即可。。 自己书写word转html简单的情况可以应付,复杂的布局文档等是比较麻烦的。。
罗尘 2015-04-01
  • 打赏
  • 举报
回复
       
options.URIResolver( new BasicURIResolver("uri/folder"));

改用上面这个类,修改字符串为项目URI即可
罗尘 2015-04-01
  • 打赏
  • 举报
回复
我也遇到楼主的问题,请问解决了吗
yang7678287 2015-03-19
  • 打赏
  • 举报
回复
没人啊。。。。。

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧