婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)

html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)

熱門標簽:貴陽ai外呼系統(tǒng) 電話機器人批發(fā) 強訊外呼系統(tǒng) 智能電銷機器人廣告語 長春極信防封電銷卡公司 愛巢地圖標注 crm外呼系統(tǒng)好不好 電銷外呼線路改不外呼線路 重慶人工智能電銷機器人報價

使用技術(shù)

itext.jar  : 將byte文件輸入流轉(zhuǎn)換為圖片,pdf等

html2canvas.js :將html頁面區(qū)域截圖為base64編碼的圖片資源

java+js

1. 準備資源

itext.jar
 www.baidu.com

html2canvas.js
www.baidu.com

2.前端代碼:

//進行截圖操作,document.querySelector("body") 為要截圖的區(qū)域
     function test() {
            html2canvas(document.querySelector("body"), {
                onrendered: function (canvas) {
                    var dataUrl = canvas.toDataURL('image/png');
                    var formData = new FormData(); //模擬表單對象
                    formData.append("imgData", convertBase64UrlToBlob(dataUrl)); //寫入數(shù)據(jù)
                    var xhr = new XMLHttpRequest(); //數(shù)據(jù)傳輸方法
                    xhr.open("POST", "http://localhost:8080/pdf"); //配置傳輸方式及地址
                    xhr.send(formData);
                    xhr.onreadystatechange = function () { //回調(diào)函數(shù)
                    };
                }
            });
        }

        //格式化圖片base64編碼轉(zhuǎn)換為byte文件流
        function convertBase64UrlToBlob(urlData){
            //去掉url的頭,并轉(zhuǎn)換為byte
            var bytes=window.atob(urlData.split(',')[1]);
            //處理異常,將ascii碼小于0的轉(zhuǎn)換為大于0
            var ab = new ArrayBuffer(bytes.length);
            var ia = new Uint8Array(ab);
            for (var s = 0;s<bytes.length;s++){
                ia[s] = bytes.charCodeAt(s);
            }
            return new Blob( [ab] , {type : 'image/png'});
        }
        
        <body onclick="test()">//調(diào)用截圖方法即可

3.后端代碼:

@RequestMapping(value = "/pdf",method = RequestMethod.POST)
    public void test(MultipartHttpServletRequest request, HttpServletResponse response) throws IOException {
        String filePath = "D:\\blog\\exportPdf2.pdf";
        String imagePath = "D:\\blog\\exportImg2.png";
        Document document = new Document();
        try{
            Map getMap = request.getFileMap();
            MultipartFile mfile = (MultipartFile) getMap.get("imgData"); //獲取數(shù)據(jù)
            InputStream file = mfile.getInputStream();
            byte[] fileByte = FileCopyUtils.copyToByteArray(file);

            FileImageOutputStream imageOutput = new FileImageOutputStream(new File(imagePath));//打開輸入流
            imageOutput.write(fileByte, 0, fileByte.length);//生成本地圖片文件
            imageOutput.close();

            PdfWriter.getInstance(document, new FileOutputStream(filePath)); //itextpdf文件
            document.open();
            document.add(new Paragraph("JUST TEST ..."));
            Image image = Image.getInstance(imagePath); //itext-pdf-image
            float heigth = image.getHeight();
            float width = image.getWidth();
            int percent = getPercent2(heigth, width);  //按比例縮小圖片
            image.setAlignment(Image.MIDDLE);
            image.scalePercent(percent+3);
            document.add(image);
            document.close();

        }catch (DocumentException de) {
            System.err.println(de.getMessage());
        }
        catch (Exception e) {
            e.printStackTrace();

        }
    }

    private static int getPercent2(float h, float w) {
        int p = 0;
        float p2 = 0.0f;
        p2 = 530 / w * 100;
        p = Math.round(p2);
        return p;
    }

4 包名

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.imageio.stream.FileImageOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

4 前端截圖,訪問后端接口,保存截圖文件到本地為pdf或者其他格式的文件。

 有興趣的同學(xué)可以把后端改為下載文件到本地

5 項目源碼地址

https://github.com/zhangjy520/learn_java/tree/master/boot 

到此這篇關(guān)于html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)的文章就介紹到這了,更多相關(guān)html轉(zhuǎn)pdf截圖保存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標簽:山南 內(nèi)蒙古 保定 陜西 廣安 清遠 上海 吳忠

巨人網(wǎng)絡(luò)通訊聲明:本文標題《html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)》,本文關(guān)鍵詞  html,轉(zhuǎn),pdf,截圖,保存,功能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于html轉(zhuǎn)pdf截圖保存功能的實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    七七婷婷婷婷精品国产| 精品国产成人在线影院| 国产乱理伦片在线观看夜一区| 日本最新不卡在线| 国产伦理精品不卡| 99久久99久久免费精品蜜臀| 在线免费不卡电影| 欧美一区二区国产| 国产欧美精品一区二区色综合朱莉 | 欧美一级视频精品观看| 久久在线观看免费| 一区二区三区色| 黄色资源网久久资源365| 91女厕偷拍女厕偷拍高清| 91麻豆精品国产91久久久使用方法 | 国产91高潮流白浆在线麻豆| 色婷婷综合中文久久一本| 日韩三级在线免费观看| 中文字幕亚洲成人| 日韩精品欧美精品| 91浏览器在线视频| 久久日一线二线三线suv| 亚洲一二三区在线观看| 盗摄精品av一区二区三区| 6080日韩午夜伦伦午夜伦| 最新国产精品久久精品| 久久精工是国产品牌吗| 欧美日韩视频在线第一区| 亚洲国产精品传媒在线观看| 日韩av电影免费观看高清完整版| 成人深夜视频在线观看| 日韩欧美一区二区免费| 亚洲成在人线免费| 91美女片黄在线观看| 日本一区二区三区国色天香| 男女男精品网站| 欧美日韩国产综合一区二区| 亚洲激情av在线| 北条麻妃一区二区三区| wwww国产精品欧美| 日本成人超碰在线观看| 欧美女孩性生活视频| 亚洲激情在线播放| 欧美亚洲综合另类| 亚洲一区二区五区| 欧美三级三级三级爽爽爽| 亚洲天堂中文字幕| 91一区一区三区| 国产精品卡一卡二| 99在线精品免费| 国产精品成人在线观看| 成人激情校园春色| 欧美激情综合五月色丁香小说| 久久成人免费电影| 久久嫩草精品久久久精品| 久久电影国产免费久久电影| 精品久久久久久久久久久院品网 | 国产乱子轮精品视频| 日韩欧美一级二级| 麻豆免费精品视频| 欧美一级黄色录像| 男女男精品视频| 日韩精品一区二区三区视频| 老司机精品视频导航| 精品国产伦理网| 国产乱码精品一区二区三区av| 国产目拍亚洲精品99久久精品| 粉嫩av一区二区三区粉嫩| 国产精品国产三级国产| 色婷婷综合在线| 天天免费综合色| 日韩一区二区免费电影| 国产一区福利在线| 综合在线观看色| 欧美男同性恋视频网站| 精品无人区卡一卡二卡三乱码免费卡| 精品国产sm最大网站免费看| 国产福利一区二区三区在线视频| 亚洲欧洲美洲综合色网| 欧美熟乱第一页| 精品一区二区在线免费观看| 中文文精品字幕一区二区| 91论坛在线播放| 麻豆国产一区二区| 亚洲欧洲精品天堂一级| 欧美少妇性性性| 国产尤物一区二区| 国产精品成人一区二区艾草 | 日韩不卡一二三区| 国产欧美精品一区| 欧美影院一区二区三区| 韩国在线一区二区| 一区二区三区中文字幕电影| 日韩欧美综合在线| 99视频精品免费视频| 日本人妖一区二区| 中文字幕一区二区三区四区| 欧美喷潮久久久xxxxx| 成人在线视频一区二区| 天堂久久一区二区三区| 亚洲欧美自拍偷拍| 久久综合色一综合色88| 欧美性大战久久| 波多野结衣在线一区| 久久www免费人成看片高清| 亚洲精品久久嫩草网站秘色| 精品国产髙清在线看国产毛片| 在线观看三级视频欧美| 粉嫩嫩av羞羞动漫久久久| 婷婷夜色潮精品综合在线| 国产精品激情偷乱一区二区∴| 日韩精品中文字幕在线一区| 在线视频你懂得一区二区三区| 国产精品一级片在线观看| 香蕉久久夜色精品国产使用方法 | 成人毛片在线观看| 经典一区二区三区| 日韩精品午夜视频| 一区二区三区成人| 国产精品国产成人国产三级 | 欧美丰满少妇xxxxx高潮对白| 成人动漫视频在线| 国产主播一区二区| 日本视频一区二区| 婷婷综合五月天| 亚洲第一会所有码转帖| 一区二区欧美在线观看| 中文字幕亚洲不卡| 国产精品嫩草影院com| 国产日产欧美精品一区二区三区| 欧美一级欧美三级在线观看| 欧美日韩国产一区| 欧美日韩一区在线观看| 欧美视频在线一区| 欧美视频一区二| 欧美色综合影院| 欧美精品一级二级三级| 欧美日本在线一区| 欧美群妇大交群中文字幕| 欧美日韩国产一级片| 欧美一级电影网站| 日韩免费视频线观看| 精品国产凹凸成av人网站| 久久先锋资源网| 中文字幕第一区| 亚洲图片欧美激情| 亚洲国产成人av好男人在线观看| 亚洲一区在线电影| 午夜免费欧美电影| 奇米色一区二区| 国产一区二区三区久久久| 国产二区国产一区在线观看| 99久久精品国产麻豆演员表| 日本久久电影网| 制服.丝袜.亚洲.中文.综合| 日韩欧美国产电影| 久久亚洲二区三区| 亚洲色图清纯唯美| 五月天激情综合网| 精品亚洲免费视频| 99在线热播精品免费| 欧美在线一区二区| 欧美二区三区91| 久久久噜噜噜久久人人看| 亚洲欧美自拍偷拍色图| 性久久久久久久久| 国产精品影视网| 色哟哟国产精品免费观看| 在线电影国产精品| 欧美激情一区二区三区| 亚洲最大成人网4388xx| 麻豆精品国产传媒mv男同| 不卡视频在线观看| 欧美一卡二卡在线观看| 国产精品三级av| 午夜欧美在线一二页| 国产福利一区在线| 538prom精品视频线放| 久久久久亚洲蜜桃| 一区二区三区在线看| 九色综合狠狠综合久久| 色婷婷精品久久二区二区蜜臂av| 日韩视频免费观看高清完整版在线观看 | 亚洲欧美经典视频| 午夜精品福利在线| 不卡欧美aaaaa| 精品少妇一区二区三区视频免付费 | 亚洲成人免费av| 国产不卡高清在线观看视频| 欧美色成人综合| 中文字幕av一区 二区| 免费成人深夜小野草| 91丨九色丨国产丨porny| 日韩视频在线一区二区| 亚洲精品中文在线| 91色.com| 亚洲精品免费播放| 久久成人综合网| 欧美三级电影在线观看| 国产无一区二区|