快速转换PDF文件: Python和PyMuPDF教程

这篇具有很好参考价值的文章主要介绍了快速转换PDF文件: Python和PyMuPDF教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 解决问题

有时候将文档上传Claude2做分析,有大小限制,所以需要切割pdf文档为几个小点的文档,故才有了本文章。

如何用Python和PyMuPDF制作你想要大小的PDF?

PDF是一种广泛使用的文件格式,可以在任何设备上查看和打印。但是,有时您可能只需要查看PDF文件中的前几页,而不是整个文件。在这种情况下,将PDF文件转换为只包含指定页数的新文件可能是有用的。本文将介绍如何使用Python和PyMuPDF模块来实现此任务。

  • 安装PyMuPDF模块

在使用PyMuPDF之前,我们需要先安装它。可以使用以下命令来安装PyMuPDF:

pip install PyMuPDF
  •  导入PyMuPDF和wxPython模块

接下来,我们需要导入PyMuPDF和wxPython模块:

import fitz
import wx
  • 创建GUI界面

为了方便用户输入PDF文件和页码数量,我们将创建一个简单的GUI界面。我们将使用wxPython模块来创建GUI界面。以下是代码示例:

class PDFExtractorFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(PDFExtractorFrame, self).__init__(*args, **kw)

        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)

        self.file_picker = wx.FilePickerCtrl(panel, message="选择PDF文件", wildcard="PDF Files (*.pdf)|*.pdf",
                                            style=wx.FLP_DEFAULT_STYLE | wx.FLP_USE_TEXTCTRL)
        vbox.Add(self.file_picker, 0, wx.EXPAND | wx.ALL, 10)

        self.page_input = wx.TextCtrl(panel, value="1", style=wx.TE_PROCESS_ENTER)
        vbox.Add(self.page_input, 0, wx.EXPAND | wx.ALL, 10)

        extract_button = wx.Button(panel, label="提取", size=(70, 30))
        extract_button.Bind(wx.EVT_BUTTON, self.on_extract)
        vbox.Add(extract_button, 0, wx.ALIGN_CENTER | wx.ALL, 10)

        panel.SetSizer(vbox)
        self.Bind(wx.EVT_TEXT_ENTER, self.on_extract, self.page_input)

快速转换PDF文件: Python和PyMuPDF教程,python,pdf,pymupdf

 此代码创建一个名为PDFExtractorFrame的wx.Frame类,并在其构造函数中创建GUI界面元素。它创建了一个wx.Panel对象和两个wx.BoxSizer对象来放置GUI元素。在此GUI界面中,用户可以选择PDF文件和输入要保留的页码数量。

  • 实现转换功能

接下来,我们需要实现转换功能。我们将使用PyMuPDF模块来打开PDF文件,并使用它来复制指定数量的页面。以下是代码示例:

def extract_pages(self, input_pdf, page_number, output_pdf):
        # 打开PDF文档
        pdf_document = fitz.open(input_pdf)
        total_pages = pdf_document.page_count

        # 确保页码不超过文档的总页数
        page_number = min(page_number, total_pages)

        # 创建新的PDF文档,只包含指定页码之前的内容
        pdf_writer = fitz.open()
        for page in range(page_number):
            pdf_writer.insert_pdf(pdf_document, from_page=page, to_page=page)

        # 保存新的PDF文档到指定路径
        pdf_writer.save(output_pdf)
        pdf_writer.close()
        pdf_document.close()

此代码使用PyMuPDF模块将PDF文件转换为只包含前N页的新PDF文件的函数。该函数将源PDF文件路径,要提取的页数和新PDF文件的输出路径作为参数,并返回无返回值。以下是该函数的详细说明:

  • input_pdf: 源PDF文件的路径。
  • page_number: 要提取的页数。
  • output_pdf: 新PDF文件的输出路径。

该函数使用fitz.open()函数打开输入PDF文件并获取其总页数。如果指定的页码数量超过文档的总页数,则将其设置为文档的总页数。

在创建新的PDF文档之前,该函数创建一个空的PDF文档对象。然后,它使用insert_pdf()函数从源PDF文件中复制每个页面,并将其插入到新的PDF文档对象中。该函数只复制指定数量的页面。

最后,该函数使用save()函数将新PDF文档保存到指定的输出路径,并使用close()函数关闭所有打开的PDF文档对象以释放资源。

  • 运行应用程序

快速转换PDF文件: Python和PyMuPDF教程,python,pdf,pymupdf 快速转换PDF文件: Python和PyMuPDF教程,python,pdf,pymupdf
  • 完整代码

import fitz  # PyMuPDF
import wx

class PDFExtractorApp(wx.App):
    def OnInit(self):
        self.frame = PDFExtractorFrame(None, title="PDF页面提取工具")
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True

class PDFExtractorFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(PDFExtractorFrame, self).__init__(*args, **kw)

        panel = wx.Panel(self)
        vbox = wx.BoxSizer(wx.VERTICAL)

        self.file_picker = wx.FilePickerCtrl(panel, message="选择PDF文件", wildcard="PDF Files (*.pdf)|*.pdf",
                                            style=wx.FLP_DEFAULT_STYLE | wx.FLP_USE_TEXTCTRL)
        vbox.Add(self.file_picker, 0, wx.EXPAND | wx.ALL, 10)

        self.page_input = wx.TextCtrl(panel, value="1", style=wx.TE_PROCESS_ENTER)
        vbox.Add(self.page_input, 0, wx.EXPAND | wx.ALL, 10)

        extract_button = wx.Button(panel, label="提取", size=(70, 30))
        extract_button.Bind(wx.EVT_BUTTON, self.on_extract)
        vbox.Add(extract_button, 0, wx.ALIGN_CENTER | wx.ALL, 10)

        panel.SetSizer(vbox)
        self.Bind(wx.EVT_TEXT_ENTER, self.on_extract, self.page_input)

    def on_extract(self, event):
        input_pdf = self.file_picker.GetPath()
        output_pdf = "output.pdf"
        try:
            page_number = int(self.page_input.GetValue())
            self.extract_pages(input_pdf, page_number, output_pdf)
            wx.MessageBox("PDF页面提取完成!", "成功", wx.OK | wx.ICON_INFORMATION)
        except ValueError:
            wx.MessageBox("无效的页码输入!", "错误", wx.OK | wx.ICON_ERROR)

    def extract_pages(self, input_pdf, page_number, output_pdf):
        # 打开PDF文档
        pdf_document = fitz.open(input_pdf)
        total_pages = pdf_document.page_count

        # 确保页码不超过文档的总页数
        page_number = min(page_number, total_pages)

        # 创建新的PDF文档,只包含指定页码之前的内容
        pdf_writer = fitz.open()
        for page in range(page_number):
            pdf_writer.insert_pdf(pdf_document, from_page=page, to_page=page)

        # 保存新的PDF文档到指定路径
        pdf_writer.save(output_pdf)
        pdf_writer.close()
        pdf_document.close()

if __name__ == '__main__':
    app = PDFExtractorApp()
    app.MainLoop()

C:\pythoncode\new\copypdfsaveas.py文章来源地址https://www.toymoban.com/news/detail-623865.html

到了这里,关于快速转换PDF文件: Python和PyMuPDF教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python将visio转换为 PDF 文件

    参考链接:在 Python 中將 Visio 轉換為 PDF | Python Visio 到 PDF 庫 (aspose.com) 下载软件包: 读取文件,保存为PDF

    2024年04月11日
    浏览(42)
  • 脚本:PDF文件批量转换成图片(python3)

    语言:python 3 用法:选择PDF文件所在的目录,点击 确定 后,自动将该目录下的所有PDF转换成单个图片,图片名称为: pdf文件名.page_序号.jpg 如运行中报错,需要 自行根据报错内容安装缺失的库 例如: 提供两种源码 第一种是在代码中手动添加pdf所在目录 第二种是点击运行后

    2024年02月11日
    浏览(53)
  • python小脚本——批量将PDF文件转换成图片

    语言:python 3 用法:选择PDF文件所在的目录,点击 确定 后,自动将 该目录下的所有PDF 转换成单个图片,图片名称为:   pdf文件名.page_序号.jpg 如运行中报错,需要自行根据报错内容按照缺失的库 例如: 这里提供两种源码,第一种是在代码中手动添加pdf所在目录 第二种是点

    2024年02月11日
    浏览(53)
  • python脚本——批量将word文档转换成pdf文件

    语言:python 3 用法:点击运行后,弹出窗口选择word文档所在文件夹,程序运行后对 该文件夹下所有的word文件 全部转换成pdf文件,生成的pdf文件名字与原wrod文件相同。 如运行中报错,需要自行根据报错内容按照缺失的库 例如: 完整代码如下:

    2024年02月11日
    浏览(62)
  • python | 将pdf文件转换为图片,这一招就够了

    部分情况下,需要将 PDF 页面转换为图片,例如 PNG 或 JPEG 格式。 python 的开源库 pdfplumber,提供了将 pdf 文件转换为图片的方法。 如果之前还没有安装和使用过pdfplumber库,pdfplumber的安装及基础使用,可参考往期文章: pdfplumber安装、导入及基础使用方法 pdfplumber 提供的方法:

    2024年02月07日
    浏览(53)
  • Python爬虫教程:使用requests、wget和urllib3下载图片和PDF文件

    本文介绍了如何使用Python中的requests、wget和urllib3库下载图片和PDF文件,通过示例代码演示了如何通过Selenium定位文件地址后,使用这三种方法进行文件下载操作。

    2024年02月09日
    浏览(70)
  • 【Python】Python 批量转换PDF到Excel

    PDF是面向展示和打印使用的,并未考虑编辑使用,所以缺少了很多编辑属性且非常难修改PDF里面的数据。当您需要分析或修改PDF文档数据时,可以将PDF保存为Excel工作簿,实现轻松编辑数据的需求。PDF转Excel,技术关键就是提取原文档内的表格数据,保证转换前后数据的一致性

    2024年02月04日
    浏览(54)
  • 使用PyMuPDF添加PDF水印

    使用Python添加PDF水印的博客文章。 C:pythoncodenewpdfwatermark.py 在日常工作中,我们经常需要对PDF文件进行处理。其中一项常见的需求是向PDF文件添加水印,以保护文件的版权或标识文件的来源。本文将介绍如何使用Python编程语言和PyMuPDF库在PDF文件中添加水印。 在开始之前,确

    2024年02月11日
    浏览(68)
  • 如何在 Python 中将图像转换为 PDF

            如何使得图像转化成pdf文件, 想要将一个或多个图像转换为 PDF 文档?看看 img2pdf 和 PyPDF2 软件包就是您的最佳选择。         首先,您只需要一个 Python 环境,最好是 3.10 或更高版本。本教程中的代码是在使用 Python 3.10.12 的 Google Colab 环境中执行的。     

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包