本文要推荐的[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/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视频下载工具箱