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

查看 85|回复 5
作者:zjg121   
与下方的代码功能完全相反。把某文件夹(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)
[i]
把某文件夹(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)

文件, 目录

小哲网络   

这个悬赏完全就是为你量身定做的啊!!!
[资源求助] 急求批量pdf转图片工具!!!!!
https://www.52pojie.cn/forum.php ... pecialtype%3Dreward
38342175   

这个是用来转换韩国H漫画吧?
lazychen   

大佬能不能开发一个 拖入程序就能输出JPG图片的    现在市面上能转化的太多了  直接拖入 配合 快捷启动那才美滋滋
wapjsx   

收藏一个,需要时使用,谢谢楼主!
jacob12138   

收藏了,很有用的工具,感谢楼主
您需要登录后才可以回帖 登录 | 立即注册

返回顶部