python压缩pdf(指定缩放比例)
python压缩pdf(指定缩放比例)
原理
pdf文件处理使用https://pymupdf.readthedocs.io/en/latest/index.html库可以轻松实现,该库的官方说明文档见
https://pymupdf.readthedocs.io/en/latest/index.html
之前博主在[https://blog.csdn.net/qq_41280654/article/details/117770187]{Python实现PDF文件压缩}中介绍的方法是pdf转jpg图片,压缩jpg图片后转pdf。
安装PyMuPDF库
在[https://blog.csdn.net/qq_41280654/article/details/117770187]{Python实现PDF文件压缩}给出了python脚本,但是由于PyMuPDF版本不同出现了很多报错。我将其中的函数进行了一些修改,可以成功跑通。
首先安装最新版的pymupdf
pip install pymupdf=1.20.2
pdf任意比例压缩或放大
注意需要在运行前修改三个参数,并且在zoom指定放大或缩小的比例。
import fitz
import os
def covert2pic(zoom):
if os.path.exists('.pdf'):
os.removedirs('.pdf')
os.mkdir('.pdf')
for pg in range(totaling):
page = doc.load_page(pg)
zoom = int(zoom)
lurl = '.pdf/%s.png' % str(pg+1)
trans = fitz.Matrix(zoom/100.0,zoom/100.0)
pm = page.get_pixmap(matrix=trans,alpha=False)
pm.save(lurl)
print(page)
doc.close()
def pic2pdf(obj):
doc = fitz.open()
for pg in range(totaling):
img = '.pdf/%s.png' % str(pg+1)
imgdoc = fitz.open(img)
pdfbytes = imgdoc.convert_to_pdf()
imgpdf = fitz.open("pdf",pdfbytes)
os.remove(img)
doc.insert_pdf(imgpdf)
if os.path.exists(obj):
os.remove(obj)
doc.save(obj)
doc.close()
def pdfz(sor,obj,zoom):
covert2pic(zoom)
pic2pdf(obj)
if __name__ == "__main__":
# ===============================================
# 运行前修改以下三个参数
zoom = 100 #50代表缩小50%,200代表放大200%,100代表既不放大也不缩小
sor = "Input.pdf" #输入文件名
obj = "Input_Compressed.pdf" #输出文件名
# ===============================================
doc = fitz.open(sor)
totaling = doc.page_count
pdfz(sor,obj,zoom)
os.removedirs('.pdf')
python压缩pdf(指定缩放比例)的更多相关文章
- Python压缩指定文件及文件夹为zip
Python压缩指定的文件及文件夹为.zip 代码: def zipDir(dirpath,outFullName): """ 压缩指定文件夹 :param dirpat ...
- python制作pdf电子书
python制作pdf电子书 准备 制作电子书使用的是python的pdfkit这个库,pdfkit是 wkhtmltopdf 的Python封装包,因此在安装这个之前要安装wkhtmltopdf 安 ...
- 使用 opencv 将图片压缩到指定文件尺寸
前言 图片压缩应用很广泛,如生成缩略图等.前期我在进行图片处理的过程中碰到了一个问题,就是如何将图片压缩到指定尺寸,此处尺寸指的是生成图片文件的大小. 我使用 opencv 进行图片处理,于是想着直接 ...
- 疯狂Python讲义PDF高清完整版免费下载|百度网盘
百度网盘:疯狂Python讲义PDF高清完整版免费下载 提取码:uzba 内容简介 <疯狂Python讲义>既是一本适合初学者入门Python的图书(一个8岁的小朋友在未出版前已学习了本书 ...
- python程序设计PDF高清完整版免费下载|百度云盘
百度云盘:python程序设计PDF高清完整版免费下载 提取码:bvsz Python 程序设计基础难易程度适中.除Python应用开发基础知识之外,还适当介绍了Python标准库以及内置对象的工作原 ...
- Python绘制PDF文件~超简单的小程序
Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...
- Python Locust对指定网站“一键压测”
[本文出自天外归云的博客园] 前篇 前篇:Python Locust性能测试框架实践 本篇 承上——归纳过程 在前篇的基础上,我们可以利用Locust性能测试框架编写python脚本对指定网站或者接口 ...
- python多线程监控指定目录
import win32file import tempfile import threading import win32con import os dirs=["C:\\WINDOWS\ ...
- python之对指定目录文件夹的批量重命名
python之对指定目录文件夹的批量重命名 import os,shutil,string dir = "/Users/lee0oo0/Documents/python/test" ...
随机推荐
- Quartus II 13.0 sp1的官方下载页面
今天为了下个ModelSim跑到网上去找下载资源,清一色的百度网盘,下载速度60k/s,简直有病,于是跑到Intel官网上把连接挖出来了,供各位直接下载 实测使用IDM多线程下载速度可以轻松上到数MB ...
- 20.LVS负载均衡群集—NAT模式实例
LVS负载均衡群集-NAT模式实例 目录 LVS负载均衡群集-NAT模式实例 群集引用概述 群集的含义 问题 解决方法 企业群集分类 群集的三种类型 负载均衡群集(Load Balance Clust ...
- Java集合框架(四)-HashMap
1.HashMap特点 存放的元素都是键值对(key-value),key是唯一的,value是可以重复的 存放的元素也不保证添加的顺序,即是无序的 存放的元素的键可以为null,但是只能有一个key ...
- (win环境)使用Electron打造一个桌面应用翻译小工具
初始化项目 npm init 修改package.json {"name": "trans","version": "1.0.0& ...
- ABAP CDS DDHEADANNO
- UiPath循环活动Do While的介绍和使用
一.Do While的介绍 先执行循环体, 再判断条件是否满足, 如果满足, 则再次执行循环体, 直到判断条件不满足, 则跳出循环 二.Do While在UiPath中的使用 1. 打开设计器,在设计 ...
- Visdom
安装visdom pip install visdom 启动visdom服务 python -m visdom.server visdom绘制各种图形: visdom属性介绍: 实例: from vi ...
- Java变量和Scanner类
1.变量的分类1)按数据类型分类 详细说明: 1. 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节) ① byte范围:-128 ~ ...
- 数据结构-查找-二叉排序查找(平衡二叉树,B树,B+树概念)
0.为什么需要二叉排序树 1)数组存储方式: 优点:通过下标访问元素,速度快,对于有序数组,可以通过二分查找提高检索效率: 缺点:如果检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低: 2 ...
- JetBrains系列IDE创建文件模板
#coding:utf-8 ''' @version: python3.6 @author: '$USER' @license: Apache Licence @contact: steinven@q ...