使用js批量下载图片,并转为pdf 最后合并 转word 可以复制内容

下载图片的方法

说明imgUrls就是一个数组,保存了需要下载图片的url地址。

javascript 复制代码
//下载方法
const downloadRes = async (url, name) => {
  let response = await fetch(url) // 内容转变成blob地址
  let blob = await response.blob() // 创建隐藏的可下载链接
  let objectUrl = window.URL.createObjectURL(blob)
  let a = document.createElement("a")
  a.href = objectUrl
  a.download = name
  a.click()
  a.remove()
}

//自动下载图片
imgUrls.forEach((url, index) => {
  setTimeout(() => {
    downloadRes(url, index+".jpg")
  }, 1000 * index)
})

效果

图片转pdf

这里借助的是nodejs。

需要安装两个库

用来实现图片转pdf

js 复制代码
npm install puppeteer

合并的js,下面有两个参数 convertImagesToPDF('E:\ChromeDownLoad', 'E:\pdf\') 第一个参数是图片保存的地方,如果用我上面的js保存的图片,图片将以下面的方式保存 我们的js代码也会按照0.jpg,1.jpg,2.jpg..的顺序生成,0.pdf,1.pdf,2.pdf..最后合并为merge.pdf。保存的位置为convertImagesToPDF 方法第二个参数指定的地方。 生成的pdf(背景色为pdf软件自带的) 需要执行的js。可以保存为jpg2pdf.js

javascript 复制代码
const puppeteer = require('puppeteer');
const fs = require('fs');
const path = require('path');


async function convertImagesToPDF(imageDir, outputPDFPath) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 设置PDF页面大小  
  await page.setViewport({ width: 842, height: 595 }); // A4尺寸  

  // 读取图片目录中的图片文件  
  const imageFiles = fs.readdirSync(imageDir).filter(file => /\.jpg$/.test(file));

  // 对图片文件名进行排序  
  imageFiles.sort((a, b) => {
    const numA = parseInt(a.match(/(\d+)/)[0], 10);
    const numB = parseInt(b.match(/(\d+)/)[0], 10);
    return numA - numB;
  });

  // 初始化一个Buffer数组来收集所有页面的内容  
  const pdfBuffers = [];
  var index = 0;
  // 为每张图片创建一个PDF页面  
  let pdfFiles = [];
  const htmlTemp = `  
  <!DOCTYPE html>  
  <html>  
    <head>  
      <style>  
        body, html {  
          margin: 0;  
          padding: 0;  
          width: 100%;  
          height: 100%;  
        }  
        img {  
          width: auto;  
          height: 100%;  
          object-fit: cover;  
        }  
      </style>  
    </head>  
    <body>  
        <imgHolder>
    </body>  
  </html>  
`;
  let htmlContent = "";
  let pdfPath = outputPDFPath + "merge.pdf"
  for (const imageFile of imageFiles) {
    const imagePath = path.join(imageDir, imageFile);
    console.log(`Processing image: ${imagePath}`); // 打印当前处理的图片路径
    const page = await browser.newPage();
    // 设置视口大小(可选,根据图片大小调整)  
    await page.setViewport({ width: 800, height: 600 });

    pdfFiles.push(pdfPath);
    // 创建包含图片的 HTML 内容  
    htmlContent += `<p> <img src="${path.resolve(__dirname, imagePath)}" alt="Fullscreen Image">  </p>`;
  }
  // 将 HTML 内容写入临时文件  
  htmlContent = htmlTemp.replace("<imgHolder>", htmlContent);
  const tempHtmlFile = fs.createWriteStream('./temp.html');
  tempHtmlFile.write(htmlContent);
  await tempHtmlFile.end();

  // 打开临时文件并生成 PDF  
  await page.goto(`file://${path.resolve(__dirname, 'temp.html')}`, { waitUntil: 'networkidle0' });
  await page.pdf({ path: pdfPath, format: 'A4' }); // 可以根据需要调整格式  

  // 清理临时文件  
  fs.unlinkSync('./temp.html');
  // 关闭浏览器  
  await browser.close();

}


// 使用示例  
convertImagesToPDF('E:\\ChromeDownLoad', 'E:\\pdf\\')
  .then(() => console.log('PDF created successfully!'))
  .catch(err => console.error('Error:', err));

node js的执行

只需要在cmd中执行 node jpg2pdf.js 即可 需要把上面的jpg2pdf.js保存在node 保存包的地方。也就是我们在那个目录执行。node install xxx 就在那个目录执行 jpg2pdf.js 因为这个目录有node_modules 文件夹,里面有我们安装的第三方包

转word

使用这个网站,微信扫码登录,每天三次免费机会。可以使用OCT将图片转为文字。 超级PDF

转换后的效果

文字可以选择复制了

相关推荐
菜鸟小码5 分钟前
MapReduce 核心思想:分而治之,大数据处理的智慧之源
前端·javascript·mapreduce
前端那点事9 分钟前
Cookie和Token的核心区别(附使用场景,易懂好记)
前端·vue.js
前端那点事12 分钟前
Vue设计模式实战解析:6种高频模式+源码拆解,面试/开发双适用
前端·vue.js
墩墩大魔王丶13 分钟前
VS Code 如何使用 DeepSeek
前端
木斯佳14 分钟前
前端八股文面经大全:TME QQ音乐前端二面(2026-04-22)·面经深度解析
前端
敲代码的彭于晏26 分钟前
感谢掘金,我的书又出版了
前端·vue.js·react.js
龙猫里的小梅啊34 分钟前
CSS(五)CSS盒模型
前端·css·html
明月_清风1 小时前
Nginx 生产环境配置完全指南:从安全加固到性能调优
前端·nginx
用户600071819101 小时前
【翻译】用 Reanimated CSS 动画为 TextInput 添加发光效果
前端
李剑一1 小时前
前后端命名冲突?驼峰与下划线的统一方案(附可直接复用代码)
前端