1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          利用Docx4j插件將文件word轉pdf添加水印

          來源:互聯網轉載 時間:2024-01-29 08:25:58
          public void testWordToPDF(HttpServletResponse response) throws Exception {        String FILE_NAME = "E:\\1111.docx";        InputStream inputStream = new FileInputStream(FILE_NAME);        InputStream is = DocxToPdf.docToPdf(inputStream);        InputStream aa = PdfWaterMark.addWaterMark(is, "admin", 10);        //將XWPFDocument文件變為MultipartFile        String reportName = "企業123";        MultipartFile multipartFile = inputStreamToCommonsMultipartFile(aa, reportName + ".pdf");            String fileName = multipartFile.getOriginalFilename();        File file = new File("E:\\"+fileName);        OutputStream out = null;        try{            //獲取文件流,以文件流的方式輸出到新文件            out = new FileOutputStream(file);            byte[] ss = multipartFile.getBytes();            for(int i = 0; i < ss.length; i++){                out.write(ss[i]);            }        }catch(IOException e){            e.printStackTrace();        }finally {            if (out != null){                try {                    out.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }
          /**     *     * @param is 輸入流     * @return     */    public static InputStream docToPdf(InputStream is) {        try {            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);            Mapper fontMapper = new IdentityPlusMapper();            if(PhysicalFonts.get("SimSun") == null){                PhysicalFonts.addPhysicalFonts("SimSun", WordUtils.class.getResource("/simsun.ttc"));            }            fontMapper.put("隸書", PhysicalFonts.get("LiSu"));            fontMapper.put("宋體", PhysicalFonts.get("SimSun"));            fontMapper.put("微軟雅黑", PhysicalFonts.get("Microsoft Yahei"));            fontMapper.put("黑體", PhysicalFonts.get("SimHei"));            fontMapper.put("楷體", PhysicalFonts.get("KaiTi"));            fontMapper.put("新宋體", PhysicalFonts.get("NSimSun"));            fontMapper.put("仿宋", PhysicalFonts.get("FangSong"));            fontMapper.put("幼圓", PhysicalFonts.get("YouYuan"));            fontMapper.put("方正小標宋簡體", PhysicalFonts.get("SimHei"));            fontMapper.put("仿宋_GB2312", PhysicalFonts.get("SimHei"));            wordMLPackage.setFontMapper(fontMapper);            FastByteArrayOutputStream os = new FastByteArrayOutputStream();            FOSettings foSettings = Docx4J.createFOSettings();            foSettings.setWmlPackage(wordMLPackage);            Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);            return os.getInputStream();        } catch (Exception e) {            log.error("word轉pdf失敗==", e);            throw new RuntimeException("word轉pdf失敗");        }    }
          /**     * pdf生成水印     * @param is    字節輸入流     * @param WaterMarkContent  水印文案     * @param numberOfPage      每頁需要插入的條數     * @throws Exception     */    public static InputStream addWaterMark(InputStream is, String WaterMarkContent, int numberOfPage)throws Exception {        PdfReader reader = new PdfReader(is);        FastByteArrayOutputStream os = new FastByteArrayOutputStream();        PdfStamper stamper = new PdfStamper(reader, os);        PdfGState gs = new PdfGState();        //設置字體        BaseFont font =  BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);        // 設置透明度        gs.setFillOpacity(0.4f);        int total = reader.getNumberOfPages() + 1;        PdfContentByte content;        for (int i = 1; i < total; i++) {            content = stamper.getOverContent(i);            content.beginText();            content.setGState(gs);            //水印顏色            content.setColorFill(BaseColor.LIGHT_GRAY);            //水印字體樣式和大小            content.setFontAndSize(font, 35);            //插入水印  循環每頁插入的條數            for (int j = 0; j < numberOfPage; j++) {                content.showTextAligned(Element.ALIGN_CENTER, WaterMarkContent, 300, 200 * (j + 1), 30);            }            content.endText();        }        stamper.close();        return os.getInputStream();    }
          <!--word 轉 pdf -->        <dependency>            <groupId>org.docx4j</groupId>            <artifactId>docx4j</artifactId>            <version>${docx4j.version}</version>        </dependency>        <dependency>            <groupId>org.docx4j</groupId>            <artifactId>docx4j-export-fo</artifactId>            <version>${export.fo.version}</version>        </dependency>

          參考鏈接:
          https://blog.csdn.net/qq_26772309/article/details/127018051

          標簽:word轉pdf插件-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          vivo小布同學怎么喚醒?1/4點擊小布再打開手機設置界面,然后點擊Breeno選項。2/4點擊語音在小布設置界面然后點擊Breeno語音選項。3/4你選擇沉睡在新界面再點上方語音操控選項。4/4自動打開功能在新界面再開啟語音喚醒功能,即可結束。vivo手機怎么打開語音助手?伴隨著科學技術的高速發展,我們的手機更新換代很快地,新的功能,新的使用層出不窮,有些時候一些使用技巧我們都需要慢慢慢慢才能能...

          二級路由器設置教程?1. 我們登錄到第二路由器頁面。2. 然后單擊路由器設置按鈕進入設置頁面。3. 在設置頁面中,單擊LAN端口設置。4. 進入LAN設置頁面后,我們選擇手動設置。5. 進入手動設置頁面后,我們將路由器的LAN地址更改為其他網段。6. 更改完成后,單擊保存按鈕。然后將WAN端口設置為與主路由器連接。二級路由wan口如何設置?不要設置靜態,實現二級路由器的構造:第一個路由器的廣域網端...

          如何在ppt中插入滾動的圖片和音樂?是什么樣子滾動的圖片,滾動的音樂是指從幻燈片開始一直播放到幻燈片結束??自動播放的話這在PPT中最普通啦,自定義動畫中直接設置動畫的開始時間,一般給對象添加動畫后默認的是點擊鼠標開始動畫,然后你可以自己改成從上一項開始,也可以自己定義動畫從什么時間開始播放~~ PPT如何使多張圖片在一張幻燈片中循環滾動播放?使PPT中一張幻燈片中的多張圖片循環播放的步驟:1、選...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>