pdf保存为img

简介: 【9月更文挑战第06天】

-- coding: utf-8 --

import os
import fitz
import PyPDF2
import aspose.pdf as ap

--------------------------------------通过转换图片实现压缩------------------------------------

def convert_img(path1, dpi, work_path):
file = fitz.open(path1)
page_count = file.page_count
if os.path.exists(work_path): # 临时文件夹,需要为空
os.removedirs(work_path)
os.mkdir(work_path)
for i in range(page_count):
page = file[i]
dpi = int(dpi) # 值越大,分辨率越高,文件越清晰
rotate = int(0)
print(page)
trans = fitz.Matrix(dpi / 100.0, dpi / 100.0).prerotate(rotate)
pm = page.get_pixmap(matrix=trans, alpha=False)
img_path = work_path + '/%s.jpg' % str(i + 1)
pm.save(img_path) # 保存为图像文件
file.close()

def img_for_pdf(path1, path2, work_path):
file1 = fitz.open(path1)
page_count = file1.page_count
file2 = fitz.open()
for i in range(page_count):
img_path = work_path + '/%s.jpg' % str(i + 1)
img = fitz.open(img_path) # 打开图片
pdf = img.convert_to_pdf() # 使用图片创建单页的PDF
os.remove(img_path)
pdf_temp = fitz.open("pdf", pdf)
file2.insert_pdf(pdf_temp) # 将当前页插入文档
if os.path.exists(path2): # 若文件存在先删除
os.remove(path2)
file2.save(path2) # 保存PDF文件
file2.close()

def Compress_by_img(path1, path2, dpi, work_path):
"""
:param path1: 需要压缩的pdf文件路径
:param path2: 保存的pdf文件路径
:param dpi: 分辨率
:param work_path: 临时工作路径
:return: None
无水印,效果较好!
"""
convert_img(path1, dpi, work_path)
img_for_pdf(path1, path2, work_path)
os.removedirs(work_path)

if name == "main":
url = "D:\BaiduNetdiskDownload\Download\dd.pdf"
work_path1 = r'D:\BaiduNetdiskDownload\Download.pdf'
in_path = r"D:/BaiduNetdiskDownload/Download/dd.pdf" # 需要压缩的PDF文件
out_path = r"D:\BaiduNetdiskDownload\Download\11.pdf" # 压缩后的PDF文件路径
zoom = 1500 # 清晰度调节,缩放比率
Compress_by_img(in_path, out_path, zoom, work_path1)

目录
相关文章
|
JavaScript
Vue~在线预览doc、docx、pdf、img文件
Vue~在线预览doc、docx、pdf、img文件
6346 0
|
4月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
274 0
|
2月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
2月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
244 1
|
2月前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
|
2月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
|
2月前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
|
2月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
87 2
|
2月前
|
人工智能 计算机视觉 Python
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
|
2月前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据