日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pdfjs转图片_PDF转图片,在线PDF转JPG/PNG

發(fā)布時(shí)間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pdfjs转图片_PDF转图片,在线PDF转JPG/PNG 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原理

使用pdf.js預(yù)覽圖片,pdf.js將pdf通過canvas將每一頁渲染出來,然后我們通過canvas的toDataURL方法保存為jpg或png格式。

pdf.js是Mozilla開源的一個(gè)js庫,無需任何本地支持就可以在瀏覽器上顯示pdf文檔。唯一的要求就是瀏覽器必須支持HTML5。

依賴

需要pdf.min.js和pdf.worker.min.js兩個(gè)js文件

全部代碼實(shí)現(xiàn)

pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdn.bootcss.com/pdf.js/2.2.228/pdf.worker.min.js';

const preview = document.getElementById('preview');

const page_num = document.getElementById('page_num');

const out_type = document.getElementById('out_type');

let pdfFile, pdf, pageNum, context = preview.getContext('2d');

out_type.querySelectorAll('.button').forEach(function (btn) {

btn.onclick = function () {

out_type.querySelector('.primary').classList.remove('primary');

btn.classList.add('primary');

}

});

// 加載PDF文件

function loadPDF(file) {

pdfFile = file;

file_name.innerHTML = file.name;

let reader = new FileReader();

reader.onload = (e) => showPDF(e.target.result);

reader.readAsDataURL(file);

}

// 預(yù)覽PDF

function showPDF(url) {

let loadingTask = pdfjsLib.getDocument(url);

loadingTask.promise.then(function (doc) {

pdf = doc;

pageNum = 1;

preview.hidden = false;

readerPage()

}, function (reason) {

alert(reason)

});

}

// 預(yù)覽上一頁

function prevPage() {

if (pageNum <= 1) {

return;

}

pageNum--;

readerPage()

}

//預(yù)覽下一頁

function nextPage() {

if (pageNum >= pdf.numPages) {

return;

}

pageNum++;

readerPage()

}

//渲染頁面

function readerPage(callback) {

pdf.getPage(pageNum).then(function (page) {

let scale = 1.5;

let viewport = page.getViewport({scale: scale});

preview.height = viewport.height;

preview.width = viewport.width;

let renderContext = {

canvasContext: context,

viewport: viewport

};

page.render(renderContext).promise.then(callback);

});

page_num.innerText = `頁碼 : ${pageNum} / ${pdf.numPages}`;

}

// 保存當(dāng)前頁

function save() {

let a = document.createElement('a');

let event = new MouseEvent('click');

let type = out_type.querySelector('.primary').innerText.toLowerCase();

a.download = pdfFile.name + '-' + pageNum + '.' + type;

a.href = preview.toDataURL(type === 'png' ? 'image/png' : 'image/jpeg');

a.dispatchEvent(event)

}

//保存全部頁面

function saveAll() {

pageNum = 1;

savePage()

}

function savePage() {

if (pageNum > pdf.numPages) {

alert('全部保存成功');

return

}

readerPage(function () {

save();

pageNum++;

savePage();

});

}

預(yù)覽:

總結(jié)

以上是生活随笔為你收集整理的pdfjs转图片_PDF转图片,在线PDF转JPG/PNG的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。