当前位置: 首页 > news >正文

网站开发查找漏洞的工具市场调研流程

网站开发查找漏洞的工具,市场调研流程,网站建设有哪几种形式,杭州国外网站推广公司最近做一个富文本的需求,要求把文档内容转换到富文本内,文档中的格式也好,样式也好,图片啥的都要一致展示;踩了不少坑,据说word文档其实是一个压缩包,我不是特别清楚但是也能理解,自…

        最近做一个富文本的需求,要求把文档内容转换到富文本内,文档中的格式也好,样式也好,图片啥的都要一致展示;踩了不少坑,据说word文档其实是一个压缩包,我不是特别清楚但是也能理解,自己借鉴参考凑合看的,大佬勿喷

        啥都不说了看代码吧;其中关于图片的导出有两种方式比较大的那种是用的jdk8自带的base

64搞的,大小有差别同一个图片的话我这个实测的图片是差200k左右,有要求的你可以换着来引用;jar的引用pom中有

        <!--注意版本保持一致 poi poi-ooxml  poi-scratchpad--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><!-- 操作doc ppt xls  --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency><!-- 操作docx pptx xlsx  --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.poi.xwpf.converter.xhtml</artifactId><version>2.0.2</version></dependency>

import fr.opensagres.poi.xwpf.converter.core.BasicURIResolver;
import fr.opensagres.poi.xwpf.converter.core.FileImageExtractor;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLConverter;
import fr.opensagres.poi.xwpf.converter.xhtml.XHTMLOptions;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.Document;
import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Base64;/*** @author :Xiaoning Fan* @date :Created in 2023-10-16 下午 3:49* @description: 上传word文档并转换为html字符串返回,保持样式不变,图片替换为base64* @version: 1.0*/
@Slf4j
public class WordToHtmlStringConverter {/*** wordToHtml** @return* @throws IOException* @throws ParserConfigurationException* @throws TransformerException*/public static String wordToHtml(MultipartFile file) {
//        提取出word文档名称和后缀String filename = file.getOriginalFilename();try {if (filename.endsWith(".docx")) {// 将上传的文件传入Document转换return new WordToHtmlStringConverter().docxToHtmlText(file);} else if (filename.endsWith(".doc")) {return new WordToHtmlStringConverter().docToHtmlText(file);} else {log.error("不支持的文件格式!");return null;}} catch (FileNotFoundException e) {log.error("文件找不到异常!");e.printStackTrace();} catch (IOException e) {log.error("io转换异常!");e.printStackTrace();} catch (Exception e) {log.error("文件转换异常!");e.printStackTrace();}return null;}/*** 上传Word文档,返回解析后的Html*/public static String docToHtmlText(MultipartFile file) throws Exception {//使用字符数组流获取解析的内容ByteArrayOutputStream baos = new ByteArrayOutputStream();OutputStream outStream = new BufferedOutputStream(baos);try {//将上传的文件传入Document转换HWPFDocument wordDocument = new HWPFDocument(file.getInputStream());Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document);//将读取到的图片上传并添加链接地址wordToHtmlConverter.setPicturesManager((imageStream, pictureType, name, width, height) -> {try {//首先要判断图片是否能识别if (pictureType.equals(PictureType.UNKNOWN)) {return "[不能识别的图片]";}//此处转换图片文件为Base64return Base64.getEncoder().encodeToString(imageStream).trim();} catch (Exception e) {log.info("upload exception", e);}return "[图片上传失败]";});// word文档转Html文档wordToHtmlConverter.processDocument(wordDocument);Document htmlDocument = wordToHtmlConverter.getDocument();DOMSource domSource = new DOMSource(htmlDocument);StreamResult streamResult = new StreamResult(outStream);TransformerFactory factory = TransformerFactory.newInstance();Transformer serializer = factory.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult);String content = baos.toString();log.info("docToHtmlText--->{}", content);return content;} catch (Exception e) {log.error("docToHtmlText 异常", e);} finally {baos.close();outStream.close();}return null;}/*** 上传docx文档,返回解析后的Html*/public static String docxToHtmlText(MultipartFile file) throws Exception {ByteArrayOutputStream htmlStream = new ByteArrayOutputStream();ByteArrayOutputStream htmlImg = new ByteArrayOutputStream();String htmlStr = null;try {// 将上传的文件传入Document转换XWPFDocument docxDocument = new XWPFDocument(file.getInputStream());XHTMLOptions options = XHTMLOptions.create();// 设置图片存储路径String path = System.getProperty("java.io.tmpdir");String firstImagePathStr = path + "/" + System.currentTimeMillis();options.setExtractor(new FileImageExtractor(new File(firstImagePathStr)));options.URIResolver(new BasicURIResolver(firstImagePathStr));// 转换htmldocxDocument.createNumbering();XHTMLConverter.getInstance().convert(docxDocument, htmlStream, options);htmlStr = htmlStream.toString();String middleImageDirStr = "/word/media";String imageDirStr = firstImagePathStr + middleImageDirStr;File imageDir = new File(imageDirStr);String[] imageList = imageDir.list();if (imageList != null) {for (int i = 0; i < imageList.length; i++) {try {String oneImagePathStr = imageDirStr + "/" + imageList[i];File fileImage = new File(oneImagePathStr);if (fileImage.exists()) {log.info("处理图片开始。。。。。。。。");// 处理图片成为Base64格式// 读取图片字节数组InputStream in = new FileInputStream(fileImage);byte[] data = new byte[in.available()];in.read(data);String encode = new BASE64Encoder().encode(data);log.info("处理图片结束。。。。。。。" + encode);//修改文档中的图片信息htmlStr = htmlStr.replace(oneImagePathStr, "data:image/png;base64,"+encode);/* BufferedImage bi = ImageIO.read(fileImage);// 图片存储大小比较大ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(bi, "png", baos);byte[] bytes = baos.toByteArray();String sd =  Base64.getEncoder().encodeToString(bytes).trim();log.info("处理图片结束。。。。。。。" + sd);htmlStr = htmlStr.replace(oneImagePathStr, "data:image/png;base64,"+sd);*/}} catch (Exception e) {log.info("upload docxToHtmlText exception", e);}}}log.info("处理结果:{}", htmlStr);} catch (Exception e) {log.error("docxToHtmlText 解析异常", e);} finally {if (htmlStream != null) {htmlStream.close();}return htmlStr;}}
}

直接引用就行,但是有一点,一定要注意接口返回的时候,如果直接返回页面接口上要加

@ResponseBody不然就悲剧了;当然如果直接存库的那就无所谓了

这次就先这样,自娱自乐,手下留情勿喷!!

http://www.ds6.com.cn/news/28476.html

相关文章:

  • 备案的网站做跳转不影响备案把app开发自学
  • 网站建设是什么意思友链购买有效果吗
  • 有什么做网站优化公司企业网站建设步骤
  • 网站怎么做支付宝接口怎样做关键词排名优化
  • 长春定制建站企业网站有趣的软文
  • 高端人士福州seo优化排名推广
  • 西安网站设计建设公司 概况自己建网站要多少钱
  • 网站开发体会什么网站做推广比较好
  • 做网站怎么接广告赚钱吗怎么样把广告做在百度上
  • wordpress只显示标题插件seo经验
  • top后缀做网站好不好传统营销与网络营销的整合方法
  • e4a怎么做点击跳转网站网站策划书怎么写
  • 做网站的心得体会国际新闻消息
  • 做网站公司如何赚钱搜外seo视频 网络营销免费视频课程
  • 音乐网站后台管理模板朝阳区搜索优化seosem
  • 怎么做同城购物网站bt最佳磁力搜索引擎
  • 中文绿色环保网站模板下载网络服务平台
  • 投注网站是怎么建设seo网站优化培训公司
  • 公司网站建设找谁做云搜索app官网
  • 搭建一个购物网站百度推广费用怎么算
  • 温州做微网站设计中国培训网官网
  • 网站开发过什么软件链接生成器
  • 湛江做网站公司产品推广找哪家公司
  • 金阊网站建设友情链接检测659292
  • 天津网站制作策划sem账户托管公司
  • 做淘客需要网站seo优化团队
  • 做网站需要留什么条件品牌营销方案
  • 网站推广策划报告广告传媒公司经营范围
  • 手机站和微网站的区别怎么建网站赚钱
  • 怎么做外贸网站需注意哪些百度引流怎么推广