将pdf文件压缩到指定大小

作者:雀斑姑娘
链接:https://www.zhihu.com/question/23941211/answer/490551864
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

在一个把167mb包含大量矢量图和栅格图的文件压缩到2mb的暴力需要下,总结的经验。

 

  1. 首先是大家强烈推荐的Small pdf (Smallpdf.com - A Free Solution to all your PDF Problems ),以及我个人非常爱用的i love pdf (iLovePDF | Online PDF tools for PDF lovers).

两者都可以非常优秀的把167mb文件压缩到40mb左右,并且他们都能很好的保留矢量图片(就是在AI中还能编辑),但我想这也是文件为什么再也将不下去的原因了。

我更喜欢ilovepdf原因是我从InDesign导出的对页文件不会被分割成单页,但Samll pdf就无情地把它裁成了单页。

 

2. 所以为了能统一把矢量和图片像素一起往下降,直接的方法就是全部转换为jpg图片格式,在打包合并成新的一个pdf,40mb立马掉到15mb左右。

我实现的方法就是福昕PDF编辑器:导出> jpg格式 > 新建空白pdf > 插入页到新pdf中 > 保存

在这里安利一波福昕pdf,最后导出的pdf存在文字错误或者字体需要更改,我都懒得回InDesign里改原文件了,直接通过福昕就可以删除文字再插入新的或者直接修改字体,矢量图在里面小改动也完全没问题。

 

3. 有了一个全是jpg组成的pdf后,可以重复第一步或者再推荐一个网站online2pdf.com

因为我希望文件到达2mb的同时,图片最小化的压缩,相比前两个网站,这个网站最大的好处就是可以选择图片的质量和分辨率,所以更加灵活。

而之所以没有把40mb文件直接过这个网站,和ilovepdf,smallpdf一样,它只压缩光栅图!!!

图片们都糊成狗了,矢量图还清晰如故,你说绝不绝望

online2pdf.com

 

最后来一波对比:

祝大家压缩愉快!╮(╯﹏╰)╭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用PyPDF2和shutil模块来压缩PDF文件,具体步骤如下: 1. 安装PyPDF2和shutil模块: ``` pip install PyPDF2 ``` 2. 编写Python代码: ```python import os import shutil from PyPDF2 import PdfFileReader, PdfFileWriter def compress_pdf(input_path, output_path, max_size): input_file = open(input_path, 'rb') input_pdf = PdfFileReader(input_file) output_pdf = PdfFileWriter() for i in range(input_pdf.getNumPages()): output_pdf.addPage(input_pdf.getPage(i)) # 压缩 PDF output_stream = open(output_path, 'wb') output_pdf.write(output_stream) output_stream.close() # 检查 PDF 大小是否符合要求 while os.path.getsize(output_path) > max_size: input_file = open(output_path, 'rb') input_pdf = PdfFileReader(input_file) output_pdf = PdfFileWriter() for i in range(input_pdf.getNumPages()): output_pdf.addPage(input_pdf.getPage(i)) output_stream = open(output_path, 'wb') output_pdf.write(output_stream) output_stream.close() input_file.close() if __name__ == '__main__': input_path = 'example.pdf' output_path = 'example_compressed.pdf' max_size = 1024 * 1024 # 1MB compress_pdf(input_path, output_path, max_size) ``` 其中,`input_path`为输入PDF文件路径,`output_path`为输出PDF文件路径,`max_size`为期望的最大文件大小(单位为字节)。该函数会读取输入PDF文件,并将每一页添加到输出PDF文件中,然后检查输出PDF文件大小是否符合要求,如果不符合,则继续压缩。最终输出的PDF文件大小不会超过期望的最大文件大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值