当前位置: 首页 > article >正文

用python将pdf转成图片转换成对应的word文件

*科管系统**报告只能上传word,但是有些盖章文件只有pdf版本,因此有这个需求,目前市面上没这软件,只能自己python写一个。

要将PDF中的页面以图片的形式存储到Word文档中,你需要完成以下几个步骤:

从PDF中提取每一页的图像。
将这些图像插入到Word文档中。
这里提供一个使用Python实现的示例流程,其中使用PyMuPDF(也称为fitz)来读取PDF并提取图像,使用python-docx来创建Word文档并插入图像。

安装所需库
首先确保安装了所需的库:

pip install pymupdf python-docx

示例代码

以下是一个简单的脚本,演示如何将PDF中的页面作为图像保存,并将这些图像插入到Word文档中:

import fitz  # PyMuPDF
from docx import Document
from docx.shared import Inches

def pdf_to_images(pdf_path, output_folder):
    # 打开PDF文件
    with fitz.open(pdf_path) as doc:
        # 遍历每一页
        for page_num in range(len(doc)):
            page = doc[page_num]
            # 将PDF页面渲染为图像
            pix = page.get_pixmap(dpi=300)  # dpi可以根据需要调整
            image_path = f"{output_folder}/page_{page_num + 1}.png"
            pix.save(image_path)  # 保存图像到磁盘
            yield image_path

def images_to_word(image_paths, word_path):
    # 创建一个新的Word文档
    doc = Document()
    
    # 遍历所有图像并将它们插入到Word文档中
    for image_path in image_paths:
        doc.add_picture(image_path, width=Inches(6))  # 调整宽度以适应页面
        doc.add_page_break()  # 添加一个新页面
    
    # 保存Word文档
    doc.save(word_path)

# 主函数
def main(pdf_path, output_folder, word_path):
    # 从PDF中提取图像
    image_paths = list(pdf_to_images(pdf_path, output_folder))
    
    # 将图像插入到Word文档中
    images_to_word(image_paths, word_path)

if __name__ == "__main__":
    # 定义输入输出路径
    pdf_path = 'F:\python\pdf2word\测试分册.pdf' # PDF文件路径
    output_folder = "output_images"  # 图像输出文件夹
    word_path = "output_ceshi.docx"  # Word文档输出路径
    
    # 创建输出文件夹
    import os
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 调用主函数
    main(pdf_path, output_folder, word_path)


http://www.kler.cn/news/368863.html

相关文章:

  • MyBatis缓存详解(一级缓存、二级缓存、缓存查询顺序)
  • 【Orange Pi 5 Linux 5.x 内核编程】-字符设备文件与操作(IOCTL)
  • 【QT】Qt窗口(上)
  • 【Rust】环境搭建
  • 01.04、回文排序
  • 什么是AI神经网络?
  • 9.Three.js的光源
  • [C++11] 右值引⽤与移动语义
  • Python实践:爬取电影数据并进行数据分析
  • ORACLE数据库基于SQL*PLUS开启:闪回查询
  • 小程序中设置可拖动区域
  • Centos Stream 9部署Zabbix7.0LTS
  • Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control
  • RabbitMQ常见问题持续汇总
  • 无人机机载激光雷达横向对比表
  • Qt setWindowFlags窗口标志
  • LeetCode437. 路径总和 III(2024秋季每日一题 50)
  • 摄影爱好者的福音:基于Spring Boot的在线工作室
  • 【人工智能原理】合肥工业大学 宣城校区 实验三 神经网络之网络基础
  • Vmware虚拟机解决摄像头无效,相机失效
  • shodan3,vnc空密码批量连接,ip历史记录查找
  • ReactNative 简述(1)
  • aws(学习笔记第八课) 使用AWS的S3,ACL和存储桶策略
  • C++——输入3个字符串,按由小到大的顺序输出。用指针或引用方法处理。
  • Matlab学习01-矩阵
  • 动态IP是什么?