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

两个还算好用的ppt转word和PDF转word的python脚本

PPT转word:

import re
from pptx import Presentation
from docx import Document
from docx.shared import Inches
from io import BytesIO
from PIL import Image

def clean_text(text):
    # 使用正则表达式删除控制字符和NULL字节
    return re.sub(r'[\x00-\x1F\x7F]', '', text)

def ppt_to_word(ppt_file, word_file):
    prs = Presentation(ppt_file)
    doc = Document()

    for slide in prs.slides:
        for shape in slide.shapes:
            if shape.has_text_frame:
                text = shape.text_frame.text
                cleaned_text = clean_text(text)  # 清理文本中的无效字符
                doc.add_paragraph(cleaned_text)

            # shape.shape_type==13 表示图片
            if shape.shape_type == 13:
                image = shape.image
                # 使用图片原始的 blob 数据构建 BytesIO
                image_stream = BytesIO(image.blob)
                # 插入图片到Word文档
                doc.add_paragraph().add_run().add_picture(image_stream, width=Inches(3))

    doc.save(word_file)
    print(f"转换完成,文件保存为 {word_file}")

# 示例
ppt_to_word("PPTs/Fixed Asset.pptx", "Documents/fixed asset.docx")

PDF转word:

import sys
import PyPDF2
from docx import Document

def extract_text_from_pdf(pdf_path):
    """
    从 PDF 文件中提取文本内容
    :param pdf_path: PDF 文件的路径
    :return: 提取的文本,字符串类型
    """
    text = ""
    with open(pdf_path, 'rb') as file:
        reader = PyPDF2.PdfReader(file)
        # 遍历每一页,并提取文字
        for page in reader.pages:
            page_text = page.extract_text()
            if page_text:
                text += page_text + "\n"
    return text

def write_text_to_docx(text, docx_path):
    """
    将文本写入到 Word 文档中
    :param text: 需要写入的文本内容
    :param docx_path: 输出 docx 文件的路径
    """
    document = Document()
    document.add_paragraph(text)
    document.save(docx_path)

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print("用法: python extract_pdf_text.py 输入文件.pdf [输出文件.docx]")
        sys.exit(1)

    pdf_path = sys.argv[1]
    # 如果传入了输出文件名则使用,否则默认 "output.docx"
    output_path = sys.argv[2] if len(sys.argv) > 2 else "output.docx"

    try:
        print("正在提取 PDF 文本...")
        text = extract_text_from_pdf(pdf_path)
        print("正在写入到 Word 文档...")
        write_text_to_docx(text, output_path)
        print(f"转换成功!输出文档为:{output_path}")
    except Exception as e:
        print("转换失败:", e)

原文地址:https://blog.csdn.net/qq_55018264/article/details/146457118
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/598841.html

相关文章:

  • 【操作系统安全】任务7:服务与进程
  • 【原创首发】开源基于AT32 SIP/VOIP电话
  • 代码重构的基本思想和示例(Python)
  • HarmonyOS 开发中条件渲染的选择:if/else 与取反操作的对比与实践
  • 【形态学梯度的详解】
  • 爬虫框架Scrapy从入门到实战
  • 基于分类算法的学习失败预警(下)
  • 基于深度学习的光场调控简介
  • 参数问题~
  • Spring Boot 与 Couchbase 整合教程
  • Sqoop安装部署
  • 详解MySQL的事务实现机制
  • Android第五次面试总结(网络篇)
  • linux按照nginx
  • 【MyDB】7-客户端服务端通信之2-Server的实现
  • 【IDEA】热部署SpringBoot项目
  • MySQL 中,聚合函数、连表查询、GROUP BY、ORDER BY、LIMIT 和 HAVING
  • 同旺科技USB to SPI 适配器 ---- 指令之间延时功能
  • 鸿蒙Next性能优化分析
  • 直观理解ECC椭圆曲线加密算法