1. 程式人生 > >Online PDF to PNG、JPEG、WEBP、 TXT - toolfk

Online PDF to PNG、JPEG、WEBP、 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

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 視訊下載工具箱