首页 > 编程语言 >python pdf 转图片

python pdf 转图片

时间:2024-10-23 18:43:59浏览次数:1  
标签:get python zoom height width path pdf 图片

1.需要安装requests,PyMuPDF 依赖 pip install requests , PyMuPDF。可以通过定义的缩放因子和旋转因子去缩放图片和旋转。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import datetime
import os
import requests

import fitz  # fitz就是 pip install PyMuPDF

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/61.0.3163.100 Safari/537.36",
    "Connection": "keep-alive",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8"
}


def get_pdf(url: str):
    download_pdf = requests.get(url, headers=headers)
    with open("demo1.pdf", 'wb') as p:
        p.write(download_pdf.content)


def reset_width_height(width: int, height: int, carrier_code: str, rotate: int = 0):
    from sacle import scale
    carrier = scale.get(carrier_code)
    if carrier is not None:
        if carrier.get("fixed"):
            return carrier.get("zoom"), carrier.get("zoom")
        # 包含了此图片的标准大小,等到图片的缩放比
        scale_dict = carrier.get("scale")
        # 判断是是否需要旋转:
        stander_width = scale_dict.get("stander_width")
        stander_height = scale_dict.get("stander_height")
        # 当是奇数的时候才需要 对换长宽的数据
        if rotate % 2 == 1 and width >= height:
            width, height = height, width
        return stander_width / width, stander_height / height


def decompose_pdf(pdf_path, image_path, rotate: int = 0):
    """
    可定义缩放因子,根据不同的承运商去定态缩放
    :param rotate: 旋转因子 默认为0,既不需要旋转 值在这三个里面(1,2,3) 1-->90°  2-->180°  3-->270°
    :param pdf_path:
    :param image_path:
    :return:
    """
    # 开始时间
    start_time = datetime.datetime.now()
    # open pdf
    pdf_doc = fitz.open(pdf_path)
    for pg in range(pdf_doc.page_count):
        # current pdf page content
        page = pdf_doc[pg]
        pixmap = page.get_pixmap()
        width, height = pixmap.width, pixmap.height
        print(rotate)
        zoom_x, zoom_y = reset_width_height(width, height, "EXPRESS", rotate)
        print(f"pix原来的的宽度: {width}, 高度: {height}")
        print(f"缩放因子zoom_x:{zoom_x}, zoom_y:{zoom_y}")
        # 可定义旋转因子
        mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate * 90)
        pix = page.get_pixmap(matrix=mat, alpha=False)
        width, height = pix.width, pix.height
        print(f"pix 的宽度: {width}, 高度: {height}")
        if not os.path.exists(image_path):  # 判断存放图片的文件夹是否存在
            os.makedirs(image_path)  # 若图片文件夹不存在就创建
        img_path = f"{image_path}/images_zoom_{pg}.png"
        pix.save(img_path)  # 将图片写入指定的文件夹内
    end_time = datetime.datetime.now()  # 结束时间
    print('pdf2img时间=', (end_time - start_time).seconds)


if __name__ == "__main__":
    # get_pdf("https://file.minio.com/7d8-92bb-469350c17b1d-1729670297074_0.pdf")
    # 1、PDF地址
    pdf_path_ = 'demo1.pdf'
    # 2、需要储存图片的目录
    image_path_ = './imgs'
    decompose_pdf(pdf_path_, image_path_)

scale.python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

scale = {
    "UPS": {
        "fixed": True,
        "zoom": 15
    },
    "FEDEX": {
        "fixed": True,
        "zoom": 4
    },
    "USPS": {
        "fixed": True,
        "zoom": 4
    },
    "EXPRESS": {
        "fixed": False,
        "scale": {
            "stander_width": 600,
            "stander_height": 1000
        }
    }
}

``

标签:get,python,zoom,height,width,path,pdf,图片
From: https://www.cnblogs.com/lyuSky/p/18498052

相关文章

  • Python——量化交易的得力助手
    在当今的金融领域,量化交易正逐渐成为一种重要的交易方式。而在众多编程语言中,Python似乎成为了量化交易的首选,今天我们总结下在量化交易中Python常用的的库和工具。数据处理与分析1.Pandas:这是一个用于数据处理和分析的强大库。在量化交易中,它可以用来读取、清洗和处......
  • PYTHON处理时间数据
    目录模块简介1.datetime模块2.pandas库操作示例datetime模块pandas处理时间序列dateutil解析时间在Python中处理时间数据,你可以使用标准库中的datetime模块,或者使用第三方库如pandas和dateutil。模块简介在Python中处理时间数据,通常会用到datetime模块和pandas库。以下是......
  • 《Python游戏编程入门》注-第3章2
    《Python游戏编程入门》的“3.2.2获取用户输入”部分介绍了input()函数的用法;“3.2.3异常处理”部分介绍了try...except语句的用法。1input()函数的用法input()函数用于接受用户的输入,该函数的参数可以在等待用户输入之前显示文本。该函数主要有两种用法:第一个是将当前程......
  • 《Python游戏编程入门》注-第3章1
    《Python游戏编程入门》的第三章是“I/O、数据和字体:Trivia游戏”,介绍了print()函数、input()函数、异常处理以及文件的输入输出,最后根据以上内容完成了Trivia游戏。本章的“3.1了解Trivia游戏”介绍了Trivia游戏的界面和玩法。“3.2Python数据类型”中讲解了print()函数、i......
  • 基于卷积神经网络的瓶盖状态识别系统,resnet50,mobilenet模型【pytorch框架+python源码
    更多目标检测和图像分类识别项目可看我主页其他文章功能演示:卷积神经网络,瓶盖状态识别系统,resnet50,mobilenet【pytorch框架,python】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的瓶盖状态识别系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型权重,......
  • flask+python+html+mongodb
     python运行此文件,跳转到index.htmlfromflaskimportFlask,render_template,request,jsonify,json,url_for,redirectapp=Flask(__name__)@app.route('/',methods=['GET','POST'])defindex():returnrender_template('index.......
  • 基于python的足球比赛数据及可视化 python 足球预测
    那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。软件免费下载:http://lcsjfx.com/SoccerPredictor/DownLoad今天小编就通过Python数据分析以及机器......
  • 安工PTA自主智能体1-10题python
    7-1jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出a=input()b=[]whilea!="!!!!!":a=a.split()foriinrange(len(a)):b.append(a[i])a=input()b=list(set(b))b=sorted(b)print(len(b))iflen(b)<......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在网络小说的要求下,开发一款整体式结构的小说网站,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保......
  • 计算机毕业设计项目推荐,基于协同过滤算法的短视频推荐系统设计与实现30213(开题答辩+程
    摘 要现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的信息,以简单的模式转化并传递给人们,使得人们的生产及生活质量得以显著提升......