吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 963|回复: 5
收起左侧

[Python 原创] 把某文件夹(d:/a)及其所有子孙后代文件夹中的pdf转换为jpg图片片

[复制链接]
zjg121 发表于 2024-4-8 15:03
本帖最后由 zjg121 于 2024-4-13 11:19 编辑

与下方的代码功能完全相反。把某文件夹(d:/a)及其所有子孙后代文件夹中的jpg图片合并为pdf(放在文件夹d:/b中),保证目录树不变。
[Python] 纯文本查看 复制代码
import os
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter


def merge_images_to_pdf(image_dir, pdf_dir):
    # 确保PDF目录存在
    if not os.path.exists(pdf_dir):
        os.makedirs(pdf_dir)

        # 遍历图片目录中的所有文件和子目录
    for root, dirs, files in os.walk(image_dir):
        # 过滤出图片文件(这里假设图片是.jpg或.png格式)
        image_files = [f for f in files if f.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff', '.gif'))]

        # 如果当前目录有图片文件
        if image_files:
            # 构建相对于源目录的相对路径
            rel_path = os.path.relpath(root, image_dir)
            # 构建PDF文件的路径
            pdf_path = os.path.join(pdf_dir, rel_path)
            # 如果PDF目录的相应子目录不存在,则创建它
            if not os.path.exists(pdf_path):
                os.makedirs(pdf_path)
                # 构建PDF文件的完整路径和名称(假设与目录名称相同,但扩展名为.pdf)
            pdf_file_name = os.path.join(pdf_path, os.path.basename(root) + '.pdf')

            # 创建PDF文件并添加图片
            c = canvas.Canvas(pdf_file_name, pagesize=letter)
            image_width, image_height = letter
            for image_file in image_files:
                image_path = os.path.join(root, image_file)
                c.drawImage(image_path, 0, 0, width=image_width, height=image_height)
                c.showPage()  # 开始新页面以放置下一张图片
            c.save()  # 保存PDF文件


# 使用示例
source_dir = 'd:/a'  # 源目录,包含图片和子目录
destination_pdf_dir = 'd:/b'  # 目标PDF目录

merge_images_to_pdf(source_dir, destination_pdf_dir)








把某文件夹(d:/a)及其所有子孙后代文件夹中的pdf转换为jpg图片(d:/b),保证目录树不变。
[HTML] 纯文本查看 复制代码
import os
import fitz  # PyMuPDF


def pdf_to_png(pdf_path, output_dir):
    # 打开PDF文件
    doc = fitz.open(pdf_path)

    # 获取PDF的页数
    num_pages = len(doc)

    # 遍历每一页
    for page_num in range(num_pages):
        # 获取当前页
        page = doc[page_num]

        # 获取页面的像素矩阵
        pix = page.get_pixmap()

        # 生成PNG文件的名称
        output_file = os.path.join(output_dir, f"page_{page_num + 1}.png")

        # 保存PNG文件
        pix.save(output_file)

        # 关闭PDF文件
    doc.close()


def convert_pdfs_in_dir(dir_path, output_dir):
    # 如果输出目录不存在,则创建它
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

        # 遍历目录中的文件
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            if file.lower().endswith('.pdf'):
                # 获取PDF文件的完整路径
                pdf_path = os.path.join(root, file)

                # 获取输出子目录的路径,以保留原始目录结构
                relative_path = os.path.relpath(root, dir_path)
                output_sub_dir = os.path.join(output_dir + '/' + file, relative_path)

                # 如果输出子目录不存在,则创建它
                if not os.path.exists(output_sub_dir):
                    os.makedirs(output_sub_dir)

                    # 转换PDF为PNG
                pdf_to_png(pdf_path, output_sub_dir)

            # 设置输入和输出目录


input_dir = 'path_to_your_input_directory'  # 替换为你的输入目录路径
output_dir = 'path_to_your_output_directory'  # 替换为你的输出目录路径
input_dir = 'd:/a'  # 替换为你的输入目录路径
output_dir = 'd:/b'  # 替换为你的输出目录路径
# 开始转换
convert_pdfs_in_dir(input_dir, output_dir)

免费评分

参与人数 2吾爱币 +8 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wapjsx + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小哲网络 发表于 2024-4-8 15:39
这个悬赏完全就是为你量身定做的啊!!!
[资源求助] 急求批量pdf转图片工具!!!!!
https://www.52pojie.cn/forum.php ... pecialtype%3Dreward
38342175 发表于 2024-4-8 15:23
lazychen 发表于 2024-4-8 16:26
大佬能不能开发一个 拖入程序就能输出JPG图片的    现在市面上能转化的太多了  直接拖入 配合 快捷启动那才美滋滋
wapjsx 发表于 2024-4-8 16:32
收藏一个,需要时使用,谢谢楼主!
jacob12138 发表于 2024-4-8 17:48
收藏了,很有用的工具,感谢楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 19:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表