[python]裁剪文件夹中所有pdf文档并按名称保存到指定的文件夹

最近在写论文的实验部分,由于latex需要pdf格式的文档,审稿专家需要对pdf图片进行裁剪放大,以保证图片质量。

原图:

裁剪后的图像:

代码粘贴如下。将input_folder和output_folder替换即可。(x1, y1),

(x2, y2) 分别代表裁剪框的像素位置。

bash 复制代码
import os
import PyPDF2
from PIL import Image

def crop_and_save_pdf(input_folder, output_folder, x1, y1, x2, y2):
    # Ensure output folder exists
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # Process each PDF file in the input folder
    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_pdf_path = os.path.join(input_folder, filename)
            output_png_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".png")
            output_pdf_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".pdf")
            with open(input_pdf_path, 'rb') as file:
                pdf_reader = PyPDF2.PdfReader(file)
                pdf_writer = PyPDF2.PdfWriter()

                for page_num in range(len(pdf_reader.pages)):
                    page = pdf_reader.pages[page_num]
                    page.cropbox.lower_left = (x1, y1)
                    page.cropbox.upper_right = (x2, y2)

                    pdf_writer.add_page(page)

                with open(output_pdf_path, 'wb') as output_file:
                    pdf_writer.write(output_file)

            # Convert the first page to PNG format for visualization
            # first_page = Image.open(output_pdf_path)
            # first_page.save(output_png_path, 'PNG')

# Specify input and output folders, and crop coordinates
input_folder = '/home/lxy/data_link2/evaluate/clip/HU_Compare'
output_folder = '/home/lxy/data_link2/evaluate/clip/HU_Compare2'
x1, y1 = 50, 400  # Left bottom coordinates
x2, y2 = 130, 550  # Right top coordinates

# Call the function to crop and save PDF pages as PNG
crop_and_save_pdf(input_folder, output_folder, x1, y1, x2, y2)
相关推荐
梵刹古音1 天前
【C语言】 字符型变量
c语言·开发语言·嵌入式
草履虫建模1 天前
A13 String 详解:不可变、常量池、equals 与 ==、性能与常见坑
java·开发语言·spring·jdk·intellij-idea·java基础·新手
阿部多瑞 ABU1 天前
`tredomb`:一个面向「思想临界质量」初始化的 Python 工具
前端·python·ai写作
u0109272711 天前
Python虚拟环境(venv)完全指南:隔离项目依赖
jvm·数据库·python
m0_686041611 天前
Python类型提示(Type Hints)详解
jvm·数据库·python
知无不研1 天前
内存碎片与内存优化
开发语言·c++·内存优化·内存碎片·内存操作
invicinble1 天前
学习的门道和思路
java·开发语言·学习
m0_561359671 天前
C++模块接口设计
开发语言·c++·算法
矢志航天的阿洪1 天前
从GitHub到本地:Python IGRF库环境配置完全指南
开发语言·python·github
从此不归路1 天前
Qt5 进阶【11】图形视图框架:用 QGraphicsView 搭一个流程图编辑器
开发语言·c++·qt