R pdf大小_免费的pdf压缩大法
欢迎关注我们~
今天突然需要压缩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压缩大法相关推荐
- R pdf大小_免费、开源、多平台支持的PDF文档处理软件 PDFsam Basic
今天给大家推荐的是一款免费.开源.多平台支持的PDF文档处理软件-- PDFsam Basic PDFsam Basic是为普通用户提供的免费开源解决方案,提供了PDF文档拆分.合并.混合.提取页面和 ...
- R pdf大小_怎样给PDF添加批注并同步到手机里?
一般在查看电子版的PDF资料时需要实时添加一些笔记,这种笔记一般称为批注或注释?手机一般很少有软件能直接操作,我们可以通过电脑版添加后再同步到手机,下面看一下具体操作方法. 首先用极速PDF阅读器打开 ...
- 压缩pdf大小的方法?pdf文档怎么压缩最小?怎么压缩pdf文件大小?
压缩pdf大小的方法?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用怎么压压缩pdf大小的方法?pdf已经是网络上常用的文件格式了,尤其是日常办公当中,pdf使用次数非常多,但是有 ...
- R pdf大小_限时免费获取 Mac上PDF压缩工具《Enolsoft PDF Compressor》
文章末尾有获取方式,按照以下步骤就能得到. 我们不破解软件,所有优秀软件均来源于网络 你的pdf文件太大使用不方便吗?赶紧来试试专业PDF压缩工具Enolsoft PDF Compressor破解版吧 ...
- R pdf大小_全能格式转换工具分享,PDF 转 Word、视频图片格式转换等
前言 经常有人问起 PDF 转 Word.视频格式转换方面的问题.如果日常需要和文档.视频打交道,那么格式转换也是经常会有的需求了. 下面分享几款「万能格式转换工具」,无论是视频.图片.音频,还是文档 ...
- 文档大小超出上传限制怎么办_压缩PDF大小该怎么操作?压缩PDF的软件有哪些?...
压缩PDF大小该怎么操作?工作中使用的任何设备的储存空间都是有限制的,为了能让自己的电脑储存更多的文件,我们可以将多个PDF文件进行压缩再存储.那么我怎么压缩PDF文件呢?下面就小编就来告诉大家压缩P ...
- apk转换ipa在线转换工具_免费在线PDF转换成WORD转换器推荐
想要对PDF文档再次编辑的话,就需要将PDF文档转换成WORD文档,现在将PDF转换成WORD文档主要是利用一些转换器的,平时如果转换的比较少的话,一般就用一下免费在线转换器就行了,如果经常转换的话, ...
- 如何压缩pdf大小?如何把pdf文件压缩变小?
现在不管是工作还是学习,都经常会用到PDF文件,如果pdf图片过多或者体积太大,还会影响设备的运行速度,降低我们的工作和学习效率.其实我们可以使用pdf压缩工具来压缩pdf大小,下面是小编分享给大家的 ...
- 电脑上怎么做pdf文件_怎么合并PDF文件?PDF合并软件哪个好?
怎么合并PDF文件?很多人现在在工作中都会使用到PDF格式的文件.在传输这些PDF文件时,如果一张一张的发送速度会很慢,也会给文件接收者造成麻烦.遇到这种情况时,我们最好将这些PDF文件先合并起来.P ...
最新文章
- 使用py2exe打包python脚本为exe可执行程序
- python 中的爬虫· scrapy框架 重要的组件的介绍
- python中match方法返回字符串的长度_Python re模块与正则表达式详解
- Java 重写与重载
- 《Windows核心编程》学习笔记(7)– 详解线程
- Python写入文件的工具类
- 【Spring】Spring 自定义scope
- 基于JAVA+Servlet+JSP+MYSQL的网络考试系统
- 如何在命令行下运行kettle的作业(job)和转换(transform)
- PostgreSQL逻辑优化——整体架构
- “CEPH浅析”系列之六——CEPH与OPENSTACK
- VUE+JAVA下载文件相关博客
- RF 无法连接到服务器,这可能由于连接的服务不存在,TCP 错误代码 10061
- html安卓修改器,让安卓面目全非:尖兵手机修改器
- 基于JavaEE的居民水电费管理系统_JSP网站设计_MySQL数据库设计
- 阿里一面:SQL 优化有哪些技巧?
- unity 世界坐标间角度_Unity 世界坐标局部坐标下的旋转
- 移动前端自适应适配布局解决方案和比较
- 记一次服务不能正常使用 tmp文件爆满
- 戴尔惠普联想笔记本性价比(戴尔和联想笔记本性价比)
热门文章
- 红楼梦里的槟榔是什么
- 全国青少年软件编程等级考试--scratch-三级-真题-五彩糖葫芦
- 蓝桥杯培训试题新解——计算两个日期之间的天数间隔
- Raki的读paper小记:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks
- 萧洁云:SAP中国重上快车道
- 【对比Java学Kotlin】object 关键字
- 深入理解机器学习——概率图模型(Probabilistic Graphical Model):马尔可夫随机场(Markov Random Field,MRF)
- Russia Proposes First Multinational Cryptocurrency
- 跨行交易的一些常见的知识
- Python之10人比赛分组