from tkinter import * from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import PDFPageAggregator, TextConverter from pdfminer.layout import LAParams, LTTextBoxHorizontal from pdfminer.pdfpage import PDFPage class PDFViewer: def init(self, master): self.master = master master.title("PDF Viewer") # 创建文本框和滚动条 self.text = Text(master) self.scrollbar = Scrollbar(master, command=self.text.yview) self.text.configure(yscrollcommand=self.scrollbar.set) self.text.pack(side=LEFT, fill=BOTH, expand=True) self.scrollbar.pack(side=RIGHT, fill=Y) # 打开 PDF 文件 fp = open('x1/2023凯程333教育综合应试解析-外国教育史(OCR).pdf', 'rb') # 创建 PDF 解析器 parser = PDFParser(fp) # 创建 PDF 文档对象 document = PDFDocument(parser) # 获取页面布局参数 laparams = LAParams() # 创建 PDF 资源管理器 rsrcmgr = PDFResourceManager() # 创建聚合器对象 device = PDFPageAggregator(rsrcmgr, laparams=laparams) # 创建 PDF 解释器 interpreter = PDFPageInterpreter(rsrcmgr, device) # 处理每一页 PDF 页面 for page in PDFPage.create_pages(document): interpreter.process_page(page) # 获取页面布局 layout = device.get_result() # 提取每一页的文本内容 for x in layout: if isinstance(x, LTTextBoxHorizontal): text = x.get_text().strip() self.text.insert(END, text + '\n') # 关闭 PDF 文件 fp.close() root = Tk() pdf_viewer = PDFViewer(root) root.mainloop()上述文本框添加保存到本地功能的完整代码
时间: 2024-01-03 14:03:23 浏览: 169
tkinter-gui-programming-example.pdf
以下是添加保存功能的完整代码:
```python
from tkinter import *
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator, TextConverter
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.pdfpage import PDFPage
from tkinter.filedialog import asksaveasfilename
class PDFViewer:
def __init__(self, master):
self.master = master
master.title("PDF Viewer")
# 创建文本框和滚动条
self.text = Text(master)
self.scrollbar = Scrollbar(master, command=self.text.yview)
self.text.configure(yscrollcommand=self.scrollbar.set)
self.text.pack(side=LEFT, fill=BOTH, expand=True)
self.scrollbar.pack(side=RIGHT, fill=Y)
# 创建“保存”按钮
self.save_button = Button(master, text="保存", command=self.save_file)
self.save_button.pack(side=BOTTOM, pady=10)
# 打开 PDF 文件
fp = open('x1/2023凯程333教育综合应试解析-外国教育史(OCR).pdf', 'rb')
# 创建 PDF 解析器
parser = PDFParser(fp)
# 创建 PDF 文档对象
document = PDFDocument(parser)
# 获取页面布局参数
laparams = LAParams()
# 创建 PDF 资源管理器
rsrcmgr = PDFResourceManager()
# 创建聚合器对象
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建 PDF 解释器
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 处理每一页 PDF 页面
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
# 获取页面布局
layout = device.get_result()
# 提取每一页的文本内容
for x in layout:
if isinstance(x, LTTextBoxHorizontal):
text = x.get_text().strip()
self.text.insert(END, text + '\n')
# 关闭 PDF 文件
fp.close()
def save_file(self):
# 弹出文件保存对话框
filename = asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")])
if filename:
# 保存文本框中的内容到文件
with open(filename, 'w') as file:
file.write(self.text.get("1.0", END))
root = Tk()
pdf_viewer = PDFViewer(root)
root.mainloop()
```
在上述代码中,我们添加了一个“保存”按钮和相应的函数 `save_file()`,该函数会弹出文件保存对话框,让用户选择保存的文件名和类型,然后将文本框中的内容写入文件。注意,我们使用了 `asksaveasfilename` 函数来弹出文件保存对话框,该函数需要从 `tkinter.filedialog` 模块中导入。
阅读全文