python批量转PDF(转换pdf)

import os
from win32com.client import Dispatch, constants, gencache, DispatchEx

class PDFConverter:
    def __init__(self, pathname, export='.'):
        self._handle_postfix = ['xlsx']  # ,'doc', 'docx', 'ppt', 'pptx', 'xls'
        self._filename_list = list()
        self._export_folder = os.path.abspath("F:\\python代码\\批量插图\\PDF\\")  # 转换后的PDF文件的存储
        if not os.path.exists(self._export_folder):
            os.mkdir(self._export_folder)
        self._enumerate_filename(pathname)

    def _enumerate_filename(self, pathname):
        # '''  读取所有文件名  '''
        full_pathname = os.path.abspath(pathname)
        if os.path.isfile(full_pathname):
            if self._is_legal_postfix(full_pathname):
                self._filename_list.append(full_pathname)
            else:
                raise TypeError('文件 {} 后缀名不合法!仅支持如下文件类型:{}。'.format(pathname, '、'.join(self._handle_postfix)))
        elif os.path.isdir(full_pathname):
            for relpath, _, files in os.walk(full_pathname):
                for name in files:
                    filename = os.path.join(full_pathname, relpath, name)
                    if self._is_legal_postfix(filename):
                        self._filename_list.append(os.path.join(filename))
        else:
            raise TypeError('文件/文件夹 {} 不存在或不合法!'.format(pathname))

    def _is_legal_postfix(self, filename):
        return filename.split('.')[-1].lower() in self._handle_postfix and not os.path.basename(filename).startswith(
            '~')

    def run_conver(self):
        #  ''' 进行批量处理,根据后缀名调用函数执行转换 '''
        print('需要转换的文件数:', len(self._filename_list))
        for filename in self._filename_list:
            postfix = filename.split('.')[-1].lower()
            funcCall = getattr(self, postfix)
            filename = os.path.abspath(filename)
            print('原文件:', filename)
            funcCall(filename)
        print('转换完成!')

    def xlsx(self, filename):
        #  ''' xls 和 xlsx 文件转换 '''
        name = os.path.basename(filename).split('.')[0] + '.pdf'
        exportfile = os.path.join(self._export_folder, name)
        # pythoncom.CoInitialize()
        xlApp = DispatchEx("Excel.Application")
        # pythoncom.CoInitialize()
        xlApp.Visible = False
        xlApp.DisplayAlerts = 0
        books = xlApp.Workbooks.Open(filename, False)
        books.ExportAsFixedFormat(0, exportfile)
        books.Close(False)
        print('保存 PDF 文件:', exportfile)
        xlApp.Quit()

if __name__ == "__main__":
    # 支持文件夹批量导入
    pathname = os.path.join("F:\\python代码\\批量插图\\拆分\\")  # 取用要装换PDF的源文件
    # 也支持单个文件的转换
    # pathname = 'test.doc'
    pdfConverter = PDFConverter(pathname)
    pdfConverter.run_conver()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你好!你可以使用Python中的PyPDF2库来将PDF文件转换为文本文件。 以下是一个简单的示例代码: ``` import PyPDF2 pdf_file = open('example.pdf', 'rb') # 打开PDF文件 pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 创建PDF阅读器对象 page_count = pdf_reader.getNumPages() # 获取页数 with open('example.txt', 'w') as txt_file: # 打开文本文件 for page_num in range(page_count): page = pdf_reader.getPage(page_num) # 获取页面对象 text = page.extractText() # 提取文本内容 txt_file.write(text) # 将文本写入文件 pdf_file.close() # 关闭PDF文件 ``` 请将`example.pdf`替换为你想要转换PDF文件名,并将`example.txt`替换为你想要保存的文本文件名。运行此代码后,你将在指定的文件夹中找到生成的文本文件。 希望这可以帮助到你! ### 回答2: PDF是一种非常流行的文档格式,但是有些情况下需要将PDF转换成文本格式(如.txt),以方便对文本内容进行编辑或分析。Python是一种流行的编程语言,它具有丰富的库和模块,可以帮助我们简便地批量PDF转换成TXT。 首先,我们需要安装一个名为PyPDF2的库,它可以帮助我们读取PDF文件,提取文本内容,并将其转换成TXT格式。在安装PyPDF2之前,需要确保计算机上已经安装了Python解释器。 在安装了PyPDF2后,使用Python的os模块可以遍历指定目录下的所有PDF文件,并将PDF文件转换成TXT格式。以下是一个例子: ``` import os import PyPDF2 #指定目录 folder_path = 'path/to/folder' for filename in os.listdir(folder_path): if filename.endswith('.pdf'): pdf_file = open(folder_path + '/' + filename, 'rb') # 二进制读取PDF文件 pdf_reader = PyPDF2.PdfFileReader(pdf_file) text = '' for page in range(pdf_reader.getNumPages()): # 获取PDF文件的所有页数 text += pdf_reader.getPage(page).extractText() + '\n' # 将转换后的文本保存为TXT文件 with open(folder_path + '/' + filename[:-4] + '.txt', 'w') as txt_file: txt_file.write(text) ``` 代码中,我们用PyPDF2读取PDF文件,并将每一页的文本内容合并为一个字符串,最后将这个字符串写入同名的TXT文件。 值得注意的是,PDF文件和TXT文件可能具有不同的编码方式,所以在将文本写入TXT文件时需要指定文件的编码方式(如'utf-8'或'gbk')。另外,PDF文件中的表格、图片等内容转换成TXT格式时可能会失真,需要根据具体情况进行调整。 ### 回答3: Python是一种高级编程语言,因其简单易学,代码易于阅读、理解和维护,以及丰富的第三方库和工具而受到广泛的欢迎。其中,将PDF转换为TXT是一个常见且有用的功能,因为TXT文件可以更方便地进行文本处理和分析,而PDF格式则较难处理和提取。 要用Python批量PDF转换成TXT,需要使用Pythonpdfminer库。pdfminer是Python的第三方库,用于提取PDF文件中的文本数据。它提供一些用于操作PDF文件的工具,包括将PDF转换为TXT的工具。 以下是将PDF转换为TXT的步骤: 1.安装pdfminer库。可以使用pip命令来安装pdfminer库,如下所示: pip install pdfminer 2.导入pdfminer库。在Python脚本中引入pdfminer库,如下所示: from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfpage import PDFPage from io import StringIO 3.编写转换函数。编写处理PDF文件的函数,该函数将PDF文件转换为文本格式并保存为TXT文件,如下所示: def convert_pdf_to_txt(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = open(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) for page in PDFPage.get_pages(fp): interpreter.process_page(page) fp.close() device.close() text = retstr.getvalue() retstr.close() return text 4.遍历文件路径和名称。使用os库遍历需要转换PDF文件路径和名称。 5.调用转换函数。将遍历的PDF文件路径和名称传递给convert_pdf_to_txt()函数,将其转换为TXT格式文件。 6.保存TXT文件。使用Python文件处理api,将转换后的TXT文本保存为一个文本文件。(同名不同后缀名) 上述步骤完成后,就可以使用Python批量PDF文件转换为TXT文件。需要注意的是,在遍历文件时,需要注意文件格式,文件路径和名称的写法,以及转换函数的使用,并根据实际需要进行其他配置调整。此外,PDF转换为文本是一个复杂的过程,需要耗费较多的计算资源,而且因PDF文件格式种类繁多,因此可能会有一些转换问题,需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值