欢迎关注我们~

今天突然需要压缩pdf,网上都要收钱贼坑,于是乎决定一切的一切都要靠自己,给自己省几块钱的压缩费吧: )

基本思路就是,把pdf拆成jpg图片然后用SVD压缩图片,再拼接成PDF。

这次用的pdf是这个

import globimport fitzimport os pdffile = "123.pdf"doc = fitz.open(pdffile)width, height = fitz.PaperSize("a4") totaling = doc.pageCountfor pg in range(totaling):    page = doc[pg]    zoom = int(150)    rotate = int(0)    print(page)    trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)    pm = page.getPixmap(matrix=trans, alpha=False)     lurl='pdf{}.jpg'.format(str((pg+1)/10))    pm.writePNG(lurl)doc.close()

这一步就把pdf拆成图片了

然后用SVD批量压缩图片(这里有点慢···)

from PIL import Image import numpy as np def rebuild_img(u, sigma, v, p):#p表示奇异值的百分比     m = len(u)     n = len(v)     a = np.zeros((m, n))     count = (int)(sum(sigma))     curSum = 0     k = 0        while curSum <= count * p:        uk = u[:, k].reshape(m, 1)        vk = v[k].reshape(1, n)         a += sigma[k] * np.dot(uk, vk)        curSum += sigma[k]         k += 1    a[a < 0] = 0     a[a > 255] = 255    return np.rint(a).astype("uint8") PATH = []for i in range(58):    PATH.append(Image.open("pdf"+str((i+1)/10)+".jpg"))for i in range(len(PATH)):    a = np.array(PATH[i])    p=1    u, sigma, v = np.linalg.svd(a[:, :, 0])    R = rebuild_img(u, sigma, v, p)    u, sigma, v = np.linalg.svd(a[:, :, 1])    G = rebuild_img(u, sigma, v, p)    u, sigma, v = np.linalg.svd(a[:, :, 2])    B = rebuild_img(u, sigma, v, p)    I = np.stack((R, G, B), 2)    # 建个新的文件夹,路径要改    path = 'C:/Users/yzzpp/Desktop/python 1/练手/lian/out/'    Image.fromarray(I).save(path+"pdf"+str((i+1)/10) + ".jpg

然后是这样的:

这些是压缩过的图片

然后把这些图片集合成pdf:

import globimport fitzimport osdef pictopdf():    doc = fitz.open()    for img in glob.glob('*.jpg'):          print(img)        imgdoc = fitz.open(img)                         pdfbytes = imgdoc.convertToPDF()                imgpdf = fitz.open("pdf", pdfbytes)        doc.insertPDF(imgpdf)                      if os.path.exists("newpdf.pdf"):                os.remove("newpdf.pdf")    doc.save("newpdf.pdf")    doc.close()pictopdf()

对比下压缩前后的图片大小和效果:

压缩前:

压缩后:

最后总大小对比:

因为本身这份123.pdf就在网上压缩过,所以效果就没那么明显了。

OK 给自己省了几块钱,舒服。

END

Miya

小小分享,期待更多

欢迎诸位讨论&指正

R pdf大小_免费的pdf压缩大法相关推荐

  1. R pdf大小_免费、开源、多平台支持的PDF文档处理软件 PDFsam Basic

    今天给大家推荐的是一款免费.开源.多平台支持的PDF文档处理软件-- PDFsam Basic PDFsam Basic是为普通用户提供的免费开源解决方案,提供了PDF文档拆分.合并.混合.提取页面和 ...

  2. R pdf大小_怎样给PDF添加批注并同步到手机里?

    一般在查看电子版的PDF资料时需要实时添加一些笔记,这种笔记一般称为批注或注释?手机一般很少有软件能直接操作,我们可以通过电脑版添加后再同步到手机,下面看一下具体操作方法. 首先用极速PDF阅读器打开 ...

  3. 压缩pdf大小的方法?pdf文档怎么压缩最小?怎么压缩pdf文件大小?

    压缩pdf大小的方法?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用怎么压压缩pdf大小的方法?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用次数非常多,但是有 ...

  4. R pdf大小_限时免费获取 Mac上PDF压缩工具《Enolsoft PDF Compressor》

    文章末尾有获取方式,按照以下步骤就能得到. 我们不破解软件,所有优秀软件均来源于网络 你的pdf文件太大使用不方便吗?赶紧来试试专业PDF压缩工具Enolsoft PDF Compressor破解版吧 ...

  5. R pdf大小_全能格式转换工具分享,PDF 转 Word、视频图片格式转换等

    前言 经常有人问起 PDF 转 Word.视频格式转换方面的问题.如果日常需要和文档.视频打交道,那么格式转换也是经常会有的需求了. 下面分享几款「万能格式转换工具」,无论是视频.图片.音频,还是文档 ...

  6. 文档大小超出上传限制怎么办_压缩PDF大小该怎么操作?压缩PDF的软件有哪些?...

    压缩PDF大小该怎么操作?工作中使用的任何设备的储存空间都是有限制的,为了能让自己的电脑储存更多的文件,我们可以将多个PDF文件进行压缩再存储.那么我怎么压缩PDF文件呢?下面就小编就来告诉大家压缩P ...

  7. apk转换ipa在线转换工具_免费在线PDF转换成WORD转换器推荐

    想要对PDF文档再次编辑的话,就需要将PDF文档转换成WORD文档,现在将PDF转换成WORD文档主要是利用一些转换器的,平时如果转换的比较少的话,一般就用一下免费在线转换器就行了,如果经常转换的话, ...

  8. 如何压缩pdf大小?如何把pdf文件压缩变小?

    现在不管是工作还是学习,都经常会用到PDF文件,如果pdf图片过多或者体积太大,还会影响设备的运行速度,降低我们的工作和学习效率.其实我们可以使用pdf压缩工具来压缩pdf大小,下面是小编分享给大家的 ...

  9. 电脑上怎么做pdf文件_怎么合并PDF文件?PDF合并软件哪个好?

    怎么合并PDF文件?很多人现在在工作中都会使用到PDF格式的文件.在传输这些PDF文件时,如果一张一张的发送速度会很慢,也会给文件接收者造成麻烦.遇到这种情况时,我们最好将这些PDF文件先合并起来.P ...

最新文章

  1. 使用py2exe打包python脚本为exe可执行程序
  2. python 中的爬虫· scrapy框架 重要的组件的介绍
  3. python中match方法返回字符串的长度_Python re模块与正则表达式详解
  4. Java 重写与重载
  5. 《Windows核心编程》学习笔记(7)– 详解线程
  6. Python写入文件的工具类
  7. 【Spring】Spring 自定义scope
  8. 基于JAVA+Servlet+JSP+MYSQL的网络考试系统
  9. 如何在命令行下运行kettle的作业(job)和转换(transform)
  10. PostgreSQL逻辑优化——整体架构
  11. “CEPH浅析”系列之六——CEPH与OPENSTACK
  12. VUE+JAVA下载文件相关博客
  13. RF 无法连接到服务器,这可能由于连接的服务不存在,TCP 错误代码 10061
  14. html安卓修改器,让安卓面目全非:尖兵手机修改器
  15. 基于JavaEE的居民水电费管理系统_JSP网站设计_MySQL数据库设计
  16. 阿里一面:SQL 优化有哪些技巧?
  17. unity 世界坐标间角度_Unity 世界坐标局部坐标下的旋转
  18. 移动前端自适应适配布局解决方案和比较
  19. 记一次服务不能正常使用 tmp文件爆满
  20. 戴尔惠普联想笔记本性价比(戴尔和联想笔记本性价比)

热门文章

  1. 红楼梦里的槟榔是什么
  2. 全国青少年软件编程等级考试--scratch-三级-真题-五彩糖葫芦
  3. 蓝桥杯培训试题新解——计算两个日期之间的天数间隔
  4. Raki的读paper小记:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks
  5. 萧洁云:SAP中国重上快车道
  6. 【对比Java学Kotlin】object 关键字
  7. 深入理解机器学习——概率图模型(Probabilistic Graphical Model):马尔可夫随机场(Markov Random Field,MRF)
  8. Russia Proposes First Multinational Cryptocurrency
  9. 跨行交易的一些常见的知识
  10. Python之10人比赛分组