Online PDF to image tool, support online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序

版权声明:来,访问这里,www.hihubs.com https://blog.csdn.net/w116858389/article/details/85910415

      本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。ToolFk还支持  BarCode条形码在线生成、 QueryList采集器、 PHP代码在线运行、 PHP混淆、加密、解密、 Python代码在线运行JavaScript在线运行YAML格式化工具HTTP模拟查询工具HTML在线工具箱JavaScript在线工具箱CSS在线工具箱JSON在线工具箱Unixtime时间戳转换Base64/URL/Native2Ascii转换CSV转换工具箱XML在线工具箱WebSocket在线工具Markdown 在线工具箱Htaccess2nginx 转换进制在线转换在线加密工具箱在线伪原创工具在线APK反编译在线网页截图工具在线随机密码生成在线生成二维码Qrcode在线Crontab表达式生成在线短网址生成在线计算器工具Linux常用命令大全在线文本比较工具在线思维导图工具在线数据库设计工具免费CDN加速服务在线压力测试工具地图拾取坐标工具在线SQL转换工具。等20多个日常程序员开发工具,算是一个非常全面的程序员工具箱网站。

網站名稱:ToolFk
網站鏈結:https://www.toolfk.com/
工具链接:https://www.toolfk.com/tool-convert-pdf

代码教學

本工具[Online PDF to image tool, support online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序员在线工具网]依赖https://xxlllq.github.io/pdf2img/库

STEP 1

pdf.png

STEP 2

核心代码如下

<script>
    $("#export").attr("disabled", "disabled");
    var pdfFile;
    var txtArr =[];
    $('#pdf').change(function() {
        var load_index = layer.load();
        var pdfFileURL = $('#pdf').val();
        if(pdfFileURL) {
            $("#imgDiv").empty();
            var files = $('#pdf').prop('files');
            var fileSize = files[0].size;
            var mb;
            if(fileSize) {
                mb = fileSize / 1048576;
            }

            $("#export").removeAttr("disabled", "disabled");
            $("#pdfName").text(files[0].name).attr("title",files[0].name);
            $("#sizeText").text(mb.toFixed(2) + "Mb");

            /*pdf.js无法直接打开本地文件,所以利用FileReader转换*/
            var reader = new FileReader();
            reader.readAsArrayBuffer(files[0]);
            var load_inner = layer.load();
            reader.onload = function(e) {
                var typedarray = new Uint8Array(this.result);
                PDFJS.getDocument(typedarray).then(function(pdf) {
                    $("#imgDiv").css("border", "0");
                    if(pdf) {
                        var pageNum = pdf.numPages;
                        $("#pagesText").text(pageNum);

                        for(var i = 1; i <= pageNum; i++) {
                            var canvas = document.createElement('canvas');
                            canvas.id = "pageNum" + i;
                            $("#imgDiv").append(canvas);
                            var context = canvas.getContext('2d');
                            openPage(pdf, i, context);
                        }
                    }
                    layer.close(load_inner);
                });
            };
        }
        layer.close(load_index);

    });

    function wt(wmContext,origCanvas){
        wmContext.save();
        wmContext.globalAlpha=0.5;
        wmContext.textBaseline = 'middle';
        wmContext.textAlign = 'center';
        wmContext.font = "18px Comic Sans MS" ;
        wmContext.fillStyle = "red";
        wmContext.rotate(180*Math.PI/180);
        wmContext.fillText("WaterMark Demo",200,60);
        wmContext.restore();
    }

    function openPage(pdfFile, pageNumber, context) {
        var scale = 2;

        pdfFile.getPage(pageNumber).then(function(page) {

            page.getTextContent().then((textContent) => {
                let pageText = [];
                textContent.items.forEach((textItem) => {
                    pageText.push(textItem.str);
                });
                pageText.join(' ');
                txtArr[pageNumber] = pageText;
            });


            viewport = page.getViewport(scale);
            var canvas = context.canvas;
            canvas.width = viewport.width;
            canvas.height = viewport.height;
            canvas.style.width = "96%";
            canvas.style.height = "100%";
            canvas.className = 'c_class';

            var renderContext = {
                canvasContext: context,
                viewport: viewport
            };
            page.render(renderContext);

        });
    };

    function exportType(images,ext,url_ext){
        $("canvas").each(function(index, ele) {
            var canvas = document.getElementById("pageNum" + (index + 1));
            images.file("image-" + (index + 1) + ext, dataURLtoBlob(canvas.toDataURL(url_ext, 1.0)), {
                base64: true
            });
        });
    }

    $("#export").click(function() {
        var modules     =   $("#modules");
        var pdfFileURL = $('#pdf').val();
        if(!pdfFileURL){
            layer.msg("@lang('toolfk.lang_convert_pdf_upload').");
            return false;
        }

        var module_val  =   modules.val();
        if(!module_val){
            layer.msg("@lang('toolfk.lang_convert_pdf_convert').");
            return false;
        }

        var zip = new JSZip();
        var images = zip.folder("toolfk-images");

        if(module_val == "png"){
            exportType(images,".png","image/png");
        }else if(module_val == "jpeg"){
            exportType(images,".jpeg","image/jpeg");
        }else if(module_val == "webp"){
            exportType(images,".webp","image/webp");
        }else if(module_val == "txt"){
            var fullTxt = "";
            $.each(txtArr,function(index,ele){
                if (typeof(ele) != "undefined"){
                    fullTxt+=ele;
                }
            });
            images.file($("#pdfName").text() + ".txt",""+fullTxt);
        }else{
            layer.msg("@lang('toolfk.lang_convert_pdf_convert').");
            return false;
        }
        zip.generateAsync({
            type: "blob"
        }).then(function(content) {
            saveAs(content, "toolfk_com_pdf_convert.zip");
        });
    });


    function dataURLtoBlob(dataurl) {
        var arr = dataurl.split(','),
            mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]),
            n = bstr.length,
            u8arr = new Uint8Array(n);
        while(n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], {
            type: mime
        });
    }
</script>

值得一試的三個理由:

  1. 整合各種程序员开发中经常使用的开发测试工具。

  2. 简洁美观大气的网站页面

  3. 支持 在线格式化执行代码、APK在线反编译、在线高强度密码生成、在线网页截图 等二十多種工具服务

  4. 同时还推荐一下它的姐妹网 www.videofk.com 视频下载工具箱 

本文链接:http://www.hihubs.com/article/400

猜你喜欢

转载自blog.csdn.net/w116858389/article/details/85910415