合并多个 PDF 文件。这款 PDF 合并工具允许用户浏览文件夹、选择 PDF 文件,并将其合并为一个新的 PDF 文件。我们将详细分析代码结构和如何一步步实现每个功能。
C:\pythoncode\new\PDFFileInFolderMergeToNewPDFFile.py
全部代码
import os
import wx
import PyPDF2
class PDFMergerFrame(wx.Frame):
def __init__(self, parent, title):
super(PDFMergerFrame, self).__init__(parent, title=title, size=(900, 600))
# Create main panel
self.panel = wx.Panel(self)
# Create toolbar
self.toolbar = self.CreateToolBar()
# Add toolbar buttons
browse_tool = self.toolbar.AddTool(wx.ID_ANY, "浏览", wx.ArtProvider.GetBitmap(wx.ART_FOLDER_OPEN), "浏览文件夹")
merge_tool = self.toolbar.AddTool(wx.ID_ANY, "合成", wx.ArtProvider.GetBitmap(wx.ART_NEW), "合成PDF文件")
self.toolbar.Realize()
# Bind toolbar events
self.Bind(wx.EVT_TOOL, self.on_browse, browse_tool)
self.Bind(wx.EVT_TOOL, self.on_merge, merge_tool)
# Create main sizer
main_sizer = wx.BoxSizer(wx.HORIZONTAL)
# Create left panel for folders
left_panel = wx.Panel(self.panel)
left_sizer = wx.BoxSizer(wx.VERTICAL)
folder_label = wx.StaticText(left_panel, label="文件夹:")
self.folder_listbox = wx.ListBox(left_panel, size=(200, -1), style=wx.LB_SINGLE)
left_sizer.Add(folder_label, 0, wx.ALL, 5)
left_sizer.Add(self.folder_listbox, 1, wx.EXPAND | wx.ALL, 5)
left_panel.SetSizer(left_sizer)
# Create middle panel for files
middle_panel = wx.Panel(self.panel)
middle_sizer = wx.BoxSizer(wx.VERTICAL)
file_label = wx.StaticText(middle_panel, label="子文件:")
self.file_listbox = wx.ListBox(middle_panel, size=(200, -1), style=wx.LB_SINGLE)
middle_sizer.Add(file_label, 0, wx.ALL, 5)
middle_sizer.Add(self.file_listbox, 1, wx.EXPAND | wx.ALL, 5)
middle_panel.SetSizer(middle_sizer)
# Create button panel
button_panel = wx.Panel(self.panel)
button_sizer = wx.BoxSizer(wx.VERTICAL)
add_button = wx.Button(button_panel, label=">")
remove_button = wx.Button(button_panel, label="<")
button_sizer.Add(add_button