用python裁切PDF文件中的图片

news/2024/10/3 17:16:38 标签: python, pdf, 服务器

想把所有pdf文件的图片下边裁切掉一块,用Adobe Acrobat只能一页页处理,于是想到了用python进行批处理。

代码如下:

python">"""
Title: cutPdfImage
Author: JackieZheng
Date: 2024-09-26 20:51:24
LastEditTime: 2024-09-26 22:14:24
LastEditors:
Description:
FilePath: \\pythonCode\\cutPdfImage.py
"""


import fitz  # pip install pymupdf


def cut_images_and_replace(pdf_path):
    doc = fitz.open(pdf_path)
    for page_num in range(len(doc)):
        if page_num > 147:  # 从哪页开始处理
            page = doc[page_num]
            img_xrefs = page.get_images(full=True)
            for img_index, img in enumerate(img_xrefs):
                xref = img[0]
                base_image = doc.extract_image(xref)
                pix = fitz.Pixmap(doc, xref)

                # 假设裁切后图像大小
                new_width = pix.width
                new_height = pix.height - 150

                # 创建新图像
                new_pix = fitz.Pixmap(fitz.csRGB,
                                      fitz.Rect(0, 0, new_width, new_height),
                                      pix.alpha)
                # 将原图像复制到新图像中
                new_pix.copy(pix, fitz.Rect(0, 0, new_width, new_height))
                # 删除原图片
                page.delete_image(xref)
                # 插入裁切后的图片
                page.insert_image(
                    (0, 0, page.rect.width, page.rect.height - 20),
                    pixmap=new_pix,
                    keep_proportion=True)
                print(
                    f"Processed and replaced image {img_index + 1} on page {page_num + 1}."
                )
    doc.save(pdf_path[:-4] + '_processed.pdf')
    doc.close()


pdf_file_path = "C:\\Users\\JackieZheng\\Desktop\\22.pdf"
cut_images_and_replace(pdf_file_path)

PS:处理后的文件会变大,有兴趣的同学可以优化下。


http://www.niftyadmin.cn/n/5688742.html

相关文章

HCIP-HarmonyOS Application Developer 习题(四)

1、以下哪个Harmonyos的AI能力可以提供文档翻拍过程中的辅助增强功能? A.文档检测矫正 B.通用文字识别 C.分词 D.图像超分辨率 答案:A 分析:文档校正提供了文档翻拍过程的辅助增强功能,包含两个子功能: 文档检测:能够…

【Godot4.3】图形碰撞相关函数库ShapeTests

概述 最近积累了一些图形重叠检测,以及求图形的轴对齐包围盒Rect2,还有求Rect2的外接圆等函数。感觉可以作为一个单独的函数库,提供日常的使用,所以汇总成了ShapeTests。 注意:函数名和写法可能会不断改进。 代码 …

OPENCV判断图像中目标物位置及多目标物聚类

文章目录 在最近的项目中,又碰到一个有意思的问题需要通过图像算法来解决。就是显微拍摄的到的医疗图像中,有时候目标物比较偏,也就是在图像的比较偏的位置,需要通过移动样本,将目标物置于视野正中央,然后再…

DolphinScheduler 资源中心无法上传大文件

服务:dolphinscheduler 版本:v3.16 问题描述:资源中心-文件管理中使用文件上传是出现中断或上传失败 排除思路: 测试小文件或其他类型文件时是否正常;F12查看接口调用成功以及失败时的对比,发现接口调用…

几个十六进制位表示一个字节

在计算机中一个二进制位表示一个bite位,bite就是二进制中最小的一位。那么什么是一字节呢?一个字节就是8个bite位 二进制位 顾名思义,二进制位就只能用1和0进行表示,假如我要存放数字2,并用二进制位进行表示&#xff…

简单介绍Wiki和历史

Wiki 是一种基于网络的协作工具,它允许多个用户创建、编辑和分享信息。Wiki 的特点是页面内容可以由用户自由修改,并且这些修改会立即生效,促进了集体协作和知识共享。Wiki 的本质是一种内容管理系统,支持版本控制,使得…

Kotlin 处理字符串和正则表达式(二十一)

导读大纲 1.1 处理字符串和正则表达式1.1.1 分割字符串1.1.2 正则表达式和三引号字符串1.1.3 多行三引号字符串IntelliJ IDEA 和 Android Studio 中三重引号字符串内部的语法高亮显示 1.1 处理字符串和正则表达式 Kotlin 字符串与 Java 字符串完全相同 可以将 Kotlin 代码中创建…

Microsoft 解釋修改後的 Recall 將如何保障隱私與安全

Microsoft 為 Copilot AI 電腦推出的 Recall 功能,本意是藉由定期進行螢幕截圖,並分析上面的資訊,來協助用戶找到查看過的網頁、工作過的文件等各種資訊。然而雖然立意很好,但 Microsoft 推出之初似乎完全沒有考慮到用戶的隱私安全…