Online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序员在线工具网

      本文要推荐的[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

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>

值得一試的三個理由:

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

简洁美观大气的网站页面

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容