中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)程序員 工資百度云怎么找資源

網(wǎng)站開發(fā)程序員 工資,百度云怎么找資源,wordpress html5 視頻播放,有什么好的免費網(wǎng)站做教育宣傳語目錄 項目需求 后端接口實現(xiàn) 1、引入poi依賴 2、代碼編寫 1、controller 2、service層 測試出現(xiàn)的bug 小結(jié) 項目需求 前端需要上傳pptx文件,后端保存為圖片,并將圖片地址保存數(shù)據(jù)庫,最后大屏展示時顯示之前上傳的pptx的圖片。需求看上…

目錄

項目需求

后端接口實現(xiàn)

1、引入poi依賴

2、代碼編寫

1、controller

2、service層

測試出現(xiàn)的bug

小結(jié)


項目需求

前端需要上傳pptx文件,后端保存為圖片,并將圖片地址保存數(shù)據(jù)庫,最后大屏展示時顯示之前上傳的pptx的圖片。需求看上去是簡單的,簡單聊一下,不管是使用vue的elementui還是傳統(tǒng)的layui都有很好的實現(xiàn)組件,這里我們重點不在前端,所以不去細說,感興趣的同學(xué)可以了解一下。

后端接口實現(xiàn)

1、引入poi依賴

這里我使用的是最新的依賴,大家想要穩(wěn)定一點可以用4.1.2的版本

<!-- excel解析工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.4</version></dependency>

2、代碼編寫

一般工作中,后端都是提供接口給前端訪問的,項目會有一定的分層

1、controller

我們主要用來接受參數(shù),然后把參數(shù)帶到service層去處理業(yè)務(wù)邏輯就行

這里我們需要接受的前端參數(shù)有2個:

MultipartFile:pptx文件對象

代碼示例:

@ResponseBody
@RequestMapping("/admin/pheno/material/caseContentPhotoUpload")public ResultJson caseContentPhotoUpload(MultipartFile file, HttpServletRequest request) {return ResultJson.build(pheContentService.caseContentPhotoUpload(file,request));}

2、service層

實際的業(yè)務(wù)代碼編寫,代碼邏輯是比較簡單的,先獲取文件的輸入流,將文件輸入流轉(zhuǎn)化為xmlslideshow()對象,這個就是poi的處理pptx文件的工具包了,在里面循環(huán)操作每一張pptx。pptx文件也就是xml文件,所以是用這個處理的,然后就是保存圖片了,思路就是建一張畫布,將文件畫上去,最后保存到對應(yīng)路徑,本地數(shù)據(jù)庫啥的。非常簡單。IMAGE_SCALE 是一個常量,我給的是8,最后記得關(guān)閉不用的對象,回收一下內(nèi)存。

public ResultService caseContentPhotoUpload(MultipartFile file, HttpServletRequest request) {String serverPath=request.getSession().getServletContext().getRealPath("/");ArrayList<Object> outPathUrlList = new ArrayList<>();InputStream is = null;XMLSlideShow ppt = null;try {is = file.getInputStream();ppt =new XMLSlideShow(is);Dimension pgSize = ppt.getPageSize();for (XSLFSlide slide : ppt.getSlides()) {for(XSLFShape shape : slide.getShapes()){if(shape instanceof XSLFTextShape) {XSLFTextShape tsh = (XSLFTextShape)shape;for(XSLFTextParagraph p : tsh){for(XSLFTextRun r : p){r.setFontFamily("宋體");}}}}String url = toPNG(pgSize.width, pgSize.height, slide,serverPath,hrStaffSession);outPathUrlList.add(url);}} catch (IOException e) {log.debug("ppt轉(zhuǎn)換圖片失敗,{}"+ e.getMessage());throw new RuntimeException("ppt轉(zhuǎn)換圖片失敗" + e.getMessage());} finally {try {if (is != null) {is.close();}} catch (IOException e) {e.printStackTrace();}try {if (ppt != null) {ppt.close();}} catch (IOException e) {e.printStackTrace();}}return ResultService.buildSuccess(outPathUrlList);}
 protected String toPNG(int pgWidth, int pgHeight, XSLFSlide slide, String serverPath, HrStaffSession hrStaffSession) throws IOException {int imageWidth = (int) Math.floor(IMAGE_SCALE * pgWidth);int imageHeight = (int) Math.floor(IMAGE_SCALE * pgHeight);ResultService resultService =null;BufferedImage img = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();graphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgWidth, pgHeight));graphics.scale(IMAGE_SCALE, IMAGE_SCALE);slide.draw(graphics);ByteArrayOutputStream bos = new ByteArrayOutputStream();try {bos = new ByteArrayOutputStream();ImageIO.write(img, "png", bos);InputStream input = new ByteArrayInputStream(bos.toByteArray());MultipartFile multipartFile = getMultipartFile(input,"ppt圖片.png");input.close();resultService = fileService.fileUpload(multipartFile, serverPath, hrStaffSession);} finally {bos.close();}SystemFileVO systemFileVO=(SystemFileVO)resultService.getObject();return systemFileVO.getThumbPath();}

測試出現(xiàn)的bug

不知道是poi對于pptx做的兼容不好還是啥原因,總之有很多的問題

1、文字問題,pptx使用的都是微軟雅黑,但是轉(zhuǎn)為圖片時,文字會有溢出和下墜的變化,

所以我從4.1.2的包切到了新版本的5.2.0,解決了文字的溢出問題,然后我將微軟雅黑統(tǒng)一設(shè)置成宋體,在window上是解決了,但是在linux上展現(xiàn)效果又有一定的差異,總的來說是解決了。

2、段落的首行縮進混亂,設(shè)置了首行縮進,但是縮進去了一行的最后面

最后只能不要這個樣式,去手動添加空格

3、一些圖標(biāo)無法讀取,當(dāng)圖標(biāo)是組合式也就是拼接的時候,會出現(xiàn)讀取不了的情況,也只能在寫pptx的時候規(guī)避一下

4、在不同操作系統(tǒng)上展現(xiàn)效果有細微區(qū)別,測試也比較麻煩

。。。

小結(jié)

感覺在技術(shù)的選取上應(yīng)該再參考一下,是否poi是這個需求最好的處理對象,是不是還有更好的處理方式。

http://www.risenshineclean.com/news/29126.html

相關(guān)文章:

  • 貴陽網(wǎng)站建設(shè)多少錢?影視后期培訓(xùn)機構(gòu)全國排名
  • 如何搭建公司網(wǎng)站上海公關(guān)公司
  • 做美圖 網(wǎng)站有哪些付費惡意點擊軟件
  • 做局域網(wǎng)網(wǎng)站教程東莞網(wǎng)絡(luò)優(yōu)化調(diào)查公司
  • 慈溪企業(yè)排名網(wǎng)站培訓(xùn)機構(gòu)排名全國十大教育機構(gòu)排名
  • 做腳本網(wǎng)站建站公司最新報價
  • 網(wǎng)站海外推廣哪家好怎么在百度上發(fā)表文章
  • 怎樣做已有網(wǎng)站的編輯維護四川聚順成網(wǎng)絡(luò)科技有限公司
  • wordpress自建站哪里換logo騰訊企點客服
  • 印度做網(wǎng)站設(shè)計百度權(quán)重提升
  • 快速收錄網(wǎng)站微信公眾號運營
  • 云谷 網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣的方法有
  • 精美化妝品網(wǎng)站模板推廣平臺排名前十名
  • 專業(yè)微網(wǎng)站建設(shè)公司首選公司哪家好網(wǎng)站排名軟件
  • 黨員寫試卷需要在哪個網(wǎng)站做輿情管理
  • 建網(wǎng)站學(xué)什么谷歌搜索引擎香港免費入口
  • 注冊網(wǎng)站到公安機關(guān)備案由誰告知seo關(guān)鍵詞排名優(yōu)化要多少錢
  • 百度seo優(yōu)化技巧東莞seo推廣公司
  • 網(wǎng)站子站建設(shè)aso關(guān)鍵詞優(yōu)化計劃
  • 動態(tài)網(wǎng)站開發(fā)案例教程百度網(wǎng)盤登陸入口
  • 搭建獨立站專業(yè)軟文代寫
  • 網(wǎng)站推廣每天必做的流程中視頻自媒體賬號注冊下載
  • 后海做網(wǎng)站公司網(wǎng)站推廣的渠道有
  • 在國外怎么做網(wǎng)站服務(wù)營銷
  • 做時時彩網(wǎng)站被抓廣州新塘網(wǎng)站seo優(yōu)化
  • 文創(chuàng)產(chǎn)品設(shè)計方案范本優(yōu)化關(guān)鍵詞排名推廣
  • 江蘇省政府門戶網(wǎng)站建設(shè)html+css網(wǎng)頁制作成品
  • 酒業(yè)公司網(wǎng)站模板鄭州百度推廣公司
  • wordpress點贊代碼北京seo網(wǎng)絡(luò)優(yōu)化師
  • 鹽城市住房城鄉(xiāng)建設(shè)委官方網(wǎng)站海陽seo排名優(yōu)化培訓(xùn)