Online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序員在線工具網(wǎng)

? ? ? 本文要推薦的[ToolFk]是一款程序員經(jīng)常使用的線上免費(fèi)測試工具箱,ToolFk 特色是專注于程序員日常的開發(fā)工具,不用安裝任何軟件,只要把內(nèi)容貼上按一個(gè)執(zhí)行按鈕,就能獲取到想要的內(nèi)容結(jié)果。ToolFk還支持??BarCode條形碼在線生成、?QueryList采集器、?PHP代碼在線運(yùn)行、?PHP混淆、加密、解密、?Python代碼在線運(yùn)行、JavaScript在線運(yùn)行、YAML格式化工具、HTTP模擬查詢工具、HTML在線工具箱、JavaScript在線工具箱、CSS在線工具箱、JSON在線工具箱、Unixtime時(shí)間戳轉(zhuǎn)換、Base64/URL/Native2Ascii轉(zhuǎn)換、CSV轉(zhuǎn)換工具箱XML在線工具箱、WebSocket在線工具、Markdown 在線工具箱Htaccess2nginx 轉(zhuǎn)換、進(jìn)制在線轉(zhuǎn)換、在線加密工具箱、在線偽原創(chuàng)工具、在線APK反編譯、在線網(wǎng)頁截圖工具在線隨機(jī)密碼生成、在線生成二維碼Qrcode在線Crontab表達(dá)式生成、在線短網(wǎng)址生成、在線計(jì)算器工具、Linux常用命令大全在線文本比較工具、在線思維導(dǎo)圖工具、在線數(shù)據(jù)庫設(shè)計(jì)工具、免費(fèi)CDN加速服務(wù)在線壓力測試工具、地圖拾取坐標(biāo)工具、在線SQL轉(zhuǎn)換工具。等20多個(gè)日常程序員開發(fā)工具,算是一個(gè)非常全面的程序員工具箱網(wǎng)站。

網(wǎng)站名稱:ToolFk

網(wǎng)站鏈結(jié):https://www.toolfk.com/

工具鏈接:https://www.toolfk.com/tool-convert-pdf

代碼教學(xué)

本工具[Online PDF to image tool, support online PDF to PNG, PDF to JPEG, PDF to WEBP, PDF to TXT - toolfk程序員在線工具網(wǎng)]依賴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轉(zhuǎn)換*/

????????????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>

值得一試的三個(gè)理由:

整合各種程序員開發(fā)中經(jīng)常使用的開發(fā)測試工具。

簡潔美觀大氣的網(wǎng)站頁面

支持 在線格式化執(zhí)行代碼、APK在線反編譯、在線高強(qiáng)度密碼生成、在線網(wǎng)頁截圖 等二十多種工具服務(wù)

同時(shí)還推薦一下它的姐妹網(wǎng)www.videofk.com視頻下載工具箱

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容