zjg121 发表于 2024-3-25 10:56

文件夹中图片合并为一个pdf,然后删除文件夹

本帖最后由 zjg121 于 2024-3-25 14:45 编辑

20240325:1.增加一个函数:把pdf文件拆开成图片,放在一个文件夹里。原pdf就不删除了。这个函数和原来的函数正好相反:图片2pdf;pdf2图片。
2.先安装PyMuPDF: pip install pymupdf

import fitz# PyMuPDF
import os


def pdf_to_images(pdf_path1):

    directory_path = os.path.dirname(pdf_path1)

    # 使用os.path.join拼接文件夹路径和新子文件夹名称
    output_folder = os.path.join(directory_path, 'PDF分页图片')

    # 如果输出文件夹不存在,则创建它
    if not os.path.exists(output_folder):
      os.makedirs(output_folder)

      # 打开PDF文件
    doc = fitz.open(pdf_path)

    # 遍历PDF的每一页
    for page_num in range(len(doc)):
      page = doc
      pix = page.get_pixmap()

      # 生成图片的文件名
      image_filename = os.path.join(output_folder, f'page_{str(page_num + 1).zfill(4)}.png')

      # 将图片保存到文件
      pix.save(image_filename)

      # 关闭PDF文件
    doc.close()
    print(f'PDF {pdf_path} has been successfully converted to images and saved in {output_folder}')


# 使用示例
pdf_path = 'd:/20240325104126.pdf'# 替换为你的PDF文件路径
pdf_to_images(pdf_path)






https://static.52pojie.cn/static/image/hrline/1.gif

制作了一个python函数:把一个文件夹中的所有jpg/jpeg图片合并为一个pdf文件,然后删除这个文件夹。相当于用pdf替换图片文件夹。
先安装pillow和fpdf:pip install pillow fpdf

import os
from PIL import Image
from fpdf import FPDF
import shutil
from datetime import datetime

def merge_jpg_to_pdf_and_delete_folder(folder_path):
    # 创建一个FPDF对象
    pdf = FPDF()

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
      if filename.endswith(".jpg") or filename.endswith(".jpeg"):
            # 打开图片并获取其尺寸
            image_path = os.path.join(folder_path, filename)
            with Image.open(image_path) as img:
                # 将图片添加到PDF中,这里假设图片尺寸适应PDF页面大小
                pdf.add_page()
                pdf.image(image_path, 0, 0, 210)# 假设PDF页面大小为A4,即210mm宽

    # 获取当前日期和时间
    now = datetime.now()
    # 格式化日期和时间,例如:2023-04-01_15-30-45.jpg
    timestamp = now.strftime("%Y%m%d%H%M%S")
    # 创建文件名,假设文件扩展名为.jpg
    filename = f"{timestamp}.pdf"

    # 使用os.path.dirname来获取父目录
    folder_path1 = os.path.dirname(folder_path)

    # 拼接文件夹路径和文件名
    pdf_path = os.path.join(folder_path1, filename)

    # 保存PDF文件,这里假设PDF文件名为merged.pdf,保存在当前目录下
    pdf.output(pdf_path, "F")

    # 删除文件夹及其内容
    shutil.rmtree(folder_path)

    print(f"PDF file {pdf_path} created and folder {folder_path} deleted.")


# 使用函数,传入包含JPG图片的文件夹路径
merge_jpg_to_pdf_and_delete_folder("d:/图片")

侃遍天下无二人 发表于 2024-3-25 19:59

我直接用布丁扫描处理的,带压缩,还能顺便给画质增强一下

Tiana丶Tiana 发表于 2024-3-25 13:39

我最近刚做了一个 PDF 拆分图片 并放至对应文件夹功能!。好家伙你又给我合进去了!

zjg121 发表于 2024-3-25 13:59

Tiana丶Tiana 发表于 2024-3-25 13:39
我最近刚做了一个 PDF 拆分图片 并放至对应文件夹功能!。好家伙你又给我合进去了!

嗯。这是一个思路。以后就弄两个函数:函数和反函数。;www

O2H2O 发表于 2024-3-25 14:11

这个总会用到的呢!{:1_921:}

Yjyjyj 发表于 2024-3-25 16:01

拿走拿走,一个字母都不留

dhsfb 发表于 2024-3-26 08:30

感谢高手,收藏编译一下

Lch1986 发表于 2024-3-26 09:23

这个工作上应该可以用到,部分类似功能还得收费才能用。

zlp123 发表于 2024-3-30 23:33

这个应该用得用,谢谢分享
页: [1]
查看完整版本: 文件夹中图片合并为一个pdf,然后删除文件夹