[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)
相关推荐
JavaEdge在掘金6 分钟前
启动nginx报错,80 failed (97: Address family not supported by protocol)
python
纪元A梦13 分钟前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
钢铁男儿16 分钟前
C# 深入理解类:面向对象编程的核心数据结构
开发语言·数据结构·c#
程序员小远25 分钟前
接口测试和单元测试详解
自动化测试·软件测试·python·测试工具·单元测试·测试用例·接口测试
Tech Synapse34 分钟前
电商商品推荐系统实战:基于TensorFlow Recommenders构建智能推荐引擎
人工智能·python·tensorflow
聿小翼38 分钟前
selenium-wire 与 googletrans 的爱恨情仇
python
咖啡调调。40 分钟前
模板引擎语法-算术运算
python·django·sqlite
CodeCraft Studio41 分钟前
Excel处理控件Spire.XLS系列教程:Java设置Excel活动工作表或活动单元格
java·python·excel
Doker 多克41 分钟前
Python-Django系列—部件
开发语言·python
Linux运维老纪43 分钟前
Python文件操作及数据库交互(Python File Manipulation and Database Interaction)
linux·服务器·数据库·python·云计算·运维开发