pdf合并以及拆分


theme: juejin

在网上冲浪的时候发现有这样的网站,可以将pdf拆分也可以合并,还能将其转为word、表格以及PPT等文件,增加水印也是可以的。当时在看到这些网站的时候觉得这么博主真的太好了,全都是免费的,可以帮助到好多人哦!然后我就用了几次,很不错,不管是速度还是质量都能满足我的需求,但是当我多用几次一个发现开始收费了。必须充值会员这些才能用,还有一些其他的各种限制等等。然后我就想既然如此那我就自己研究研究,如果可以那我也弄一个软件或者网站就免费。哈哈哈哈

当一个人不论风雨都要去做一件事的时候,说明他很想去做一件得到大家认可的事情。否则谁还不想躺平啊!

目前我研究出来的有以下一些功能。

  • 合并
  • 拆分
  • 转图片
  • 加水印 等

而今天给大家带来的是,合并和拆分;因为转图片和加水印目前还没整理好,只是实现了功能!

技术

由于我是在electron中开发的,所以自带node环境。 如果你不要electron的话,在node相关的框架中都是可以实现的(如:eggjs等)

  • electron
  • vue2
  • pdf-lib

合并

引入:

javascript const fs = require('fs'); const path = require('path'); const { PDFDocument, PDFFont, PNGImage, StandardFonts } = require('pdf-lib');

主要代码:

```javascript async run() { // 获取文件 const a1 = path.join('C:\Users\zh\Desktop', 'ip.pdf'); const a2 = path.join('C:\Users\zh\Desktop', 'ui.pdf');

const cover = await PDFDocument.load(fs.readFileSync(a1));
const content = await PDFDocument.load(fs.readFileSync(a2));

// 创建一个新文档
const doc = await PDFDocument.create();

// 将封面添加到新文档中
const [coverPage] = await doc.copyPages(cover, [0]);
doc.addPage(coverPage);

// 添加单独的内容页面
const contentPages = await doc.copyPages(content, content.getPageIndices());
for (const page of contentPages) {
  doc.addPage(page);
}

// 将pdf写入文件
const a3 = path.join('C:\\Users\\zh\\Desktop', 'test.pdf');
fs.writeFileSync(a3, await doc.save());

}, ```

拆分

完整代码:

```javascript /** * 拆分pdf */ async pdfResolution() { // 读取 PDF 文件 const pdfFile = fs.readFileSync('C:\Users\zh\Desktop\test1.pdf');

// 创建 PDFDocument 对象
const pdfDoc = await PDFDocument.load(pdfFile);

// 遍历每一页,将每一页保存为单独的 PDF 文件
for (let i = 0; i < pdfDoc.getPageCount(); i++) {
  const pdfBytes = await PDFDocument.create();
  const [copiedPage] = await pdfBytes.copyPages(pdfDoc, [i]);
  pdfBytes.addPage(copiedPage);

  const a3 = path.join('C:\\Users\\zh\\Desktop', `page_${i + 1}.pdf`);
  fs.writeFileSync(a3, await pdfBytes.save());
}

},

```

总结

以上的功能都相对比较简单,并且在pdf-lib官网中也是可以查看相关的api的,只要根据相关的api都是可以做出相对应的功能。

pdf-lib很强大,基本上我们在网上看到的一些关于pdf的功能都可以实现。只是文档全是英文暂时没有找到中文的文档,看文档确实有点费劲。

我也希望小伙伴们如果对pdf有兴趣的话,也可以多了解一些;大家相互探讨,相互学习。期待我们在pdf的运用上更上一层楼。

期待能与大家交流与学习。

往期文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值