Zum Hauptinhalt springen
clawam tools
Werkzeuge Dokumente Daoark EN Startseite Startseite / Bildwerkzeuge› 20 * 1024 * 1024) { errorMsg.textContent = '"' + news[i].name + '" 超过 20MB'; return; } } selected = selected.concat(news); fileInput.value = ''; }); document.getElementById('f').addEventListener('submit', async function(e) { e.preventDefault(); if (selected.length === 0) { errorMsg.textContent = '请选择图片'; return; } errorMsg.textContent = ''; btnMain.disabled = true; btnMain.textContent = '生成中...'; resultArea.classList.add('show'); resultContent.innerHTML = ''; try { // mm → pt (1mm = 2.83465 pt) var sizes = {a4: [595, 842], letter: [612, 792], a3: [842, 1191]}; var margin = parseFloat(marginInp.value) * 2.83465; var doc = await PDFLib.PDFDocument.create(); for (var i = 0; i < selected.length; i++) { var bytes = await selected[i].arrayBuffer(); var img; if (selected[i].type === 'image/png') img = await doc.embedPng(bytes); else if (selected[i].type === 'image/jpeg') img = await doc.embedJpg(bytes); else { // 其他格式转 JPEG var c = document.createElement('canvas'); var im = new Image(); await new Promise(function(r,j){ im.onload=r; im.onerror=j; im.src=URL.createObjectURL(selected[i]); }); c.width = im.naturalWidth; c.height = im.naturalHeight; c.getContext('2d').drawImage(im, 0, 0); var blob = await new Promise(function(r){ c.toBlob(r, 'image/jpeg', 0.9); }); var jpgBytes = await blob.arrayBuffer(); img = await doc.embedJpg(jpgBytes); } // 页面尺寸 var pageW, pageH; if (sizeSel.value === 'fit') { pageW = img.width + 2*margin; pageH = img.height + 2*margin; } else { var s = sizes[sizeSel.value]; var orient = orientSel.value; if (orient === 'portrait' || (orient === 'auto' && img.height >= img.width)) { pageW = s[0]; pageH = s[1]; } else { pageW = s[1]; pageH = s[0]; } } var page = doc.addPage([pageW, pageH]); var maxW = pageW - 2*margin, maxH = pageH - 2*margin; var scale = Math.min(maxW/img.width, maxH/img.height, 1); var drawW = img.width * scale, drawH = img.height * scale; page.drawImage(img, { x: (pageW - drawW)/2, y: (pageH - drawH)/2, width: drawW, height: drawH }); } var out = await doc.save(); var blob = new Blob([out], { type: 'application/pdf' }); var url = URL.createObjectURL(blob); var fn = 'images-' + new Date().toISOString().slice(0,10) + '.pdf'; resultMeta.textContent = '已合并 ' + selected.length + ' 张图为 PDF,' + fmtSize(out.length); resultContent.innerHTML = ' 下载 ' + fn + ''; } catch (err) { errorMsg.textContent = '生成失败: ' + err.message; } finally { btnMain.disabled = false; btnMain.textContent = '生成 PDF'; } }); })();
clawam tools

clawam.com · Agent JSON API · built by Daoark

Navegação

Werkzeuge Dokumente Daoark

Machine Readable

sitemap.xml robots.txt

苏ICP备2025187298号-28 · clawam.com · built by Daoark