#有中文和图片乱码问题
import tkinter as tk
from tkinter import filedialog, messagebox
from docx import Document
from reportlab.pdfgen import canvas
import fitz
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
class FileConverterGUI:
def __init__(self, root):
self.root = root
self.root.title("文件转换小程序")
self.root.geometry("400x200+200+200")
self.var = tk.IntVar()
self.word_radio = tk.Radiobutton(self.root, text="Word转换PDF", variable=self.var, value=1)
self.word_radio.pack()
self.pdf_radio = tk.Radiobutton(self.root, text="PDF转换Word", variable=self.var, value=2)
self.pdf_radio.pack()
self.convert_button = tk.Button(self.root, text="开始转换", command=self.choose_file_type)
self.convert_button.pack()
def choose_file_type(self):
file_type = self.var.get()
if file_type == 1: # Word to PDF
input_file = filedialog.askopenfilename(title="选择Word文件:", filetypes=[("Word files", "*.docx")])
if input_file:
output_file = filedialog.asksaveasfilename(title="保存为PDF", defaultextension=".pdf", filetypes=[("PDF files", "*.pdf")])
if output_file:
self.convert_to_pdf(input_file, output_file)
messagebox.showinfo("Success", "转换成功!")
elif file_type == 2: # PDF to Word
input_file = filedialog.askopenfilename(title="选择PDF文件:", filetypes=[("PDF files", "*.pdf")])
if input_file:
output_file = filedialog.asksaveasfilename(title="保存为Word", defaultextension=".docx", filetypes=[("Word files", "*.docx")])
if output_file:
self.convert_to_word(input_file, output_file)
messagebox.showinfo("Success", "转换成功!")
def convert_to_pdf(self, input_docx, output_pdf):
doc = Document(input_docx)
pdf_canvas = canvas.Canvas(output_pdf)
pdfmetrics.registerFont(UnicodeCIDFont("STSong-Light"))
pdf_canvas.setFont("STSong-Light", 12)
for para in doc.paragraphs:
pdf_canvas.drawString(100, 800, para.text.encode('latin-1', 'replace').decode('latin-1'))
pdf_canvas.save()
def convert_to_word(self, input_pdf, output_docx):
pdf_document = fitz.open(input_pdf)
word_document = Document()
for page_num in range(pdf_document.page_count):
page = pdf_document[page_num]
text = page.get_text("text").encode('latin-1', 'replace').decode('latin-1')
word_document.add_paragraph(text)
word_document.save(output_docx)
if __name__ == "__main__":
root = tk.Tk()
app = FileConverterGUI(root)
root.mainloop()
python写一个GUI小程序:Word和PDF互转。但是有中文乱码以及图片乱码问题,求大佬解决!
该文章介绍了一个基于Tkinter的小程序,用于将Word文档转换为PDF或反之,通过处理编码问题确保文本在转换过程中的正确显示。
摘要由CSDN通过智能技术生成