当前位置: 首页 > news >正文

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

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

原图:
在这里插入图片描述

裁剪后的图像:

请添加图片描述

代码粘贴如下。将input_folder和output_folder替换即可。(x1, y1),
(x2, y2) 分别代表裁剪框的像素位置。

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)

相关文章:

  • 写点东西《什么是网络抓取?》
  • 音乐人声分离工具:极简的人声和背景音乐分离工具
  • OB OCP工具
  • Linux消息队列
  • C盘满了,我用什么思路清理?
  • git add -u 什么意思
  • AEB滤镜再破碎,安全焦虑「解不开」?
  • Redis 持久化
  • 20个超实用的JavaScript高级技巧
  • 前端_we码
  • Java 8 简化代码(1)
  • Python-基础篇-类与对象/面向对象程序设计
  • 技术硬实力,阿里巴巴为什么要开源Spring Cloud Alibaba?
  • spring boot学习第八篇:kafka
  • 架设一台NFS服务器,并按照以下要求配置
  • openlayers [六] 地图交互 interaction 详解
  • 开源云真机平台-Sonic平台-python自定义脚本-config.json方式实现全局配置参数的读写操作
  • Redis的key过期策略是怎么实现的
  • 广和通AI解决方案“智”赋室外机器人迈向新天地!
  • 大数据StarRocks(八):集群扩缩容
  • 公元1058年:柳永词为什么时好时坏?
  • 西安市未央区委书记刘国荣已任西咸新区党工委书记
  • 风雨天涯梦——《袁保龄公牍》发微
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂
  • 阿坝州委书记徐芝文已任四川省政府党组成员
  • 经济日报:美国滥施汽车关税损人不利己