R pdf大小_免费的pdf压缩大法
生活随笔
收集整理的這篇文章主要介紹了
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压缩大法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python写网络爬虫的环境搭建(win
- 下一篇: 从浮华的管理驾驶舱,到务实的企业信息化