如何用kimi写一个最小pdf查看软件
下面给出一份“最小可运行”的 PDF 查看器完整源码(Python 3,仅依赖 tkinter 与 tkinterPDF,后者是对 poppler 的极简封装)。
代码不到 120 行,双击即可运行,支持:打开、缩放、翻页、首页/末页、窗口自适应。
复制-粘贴即可用;Kimi 可以帮你把这段代码保存为 mini_pdf_viewer.py 并运行。
安装依赖(一次性)
bash
复制
# Windows / macOS / Linux 通用
pip install tkinterpdf
tkinterpdf 会自动下载对应平台的 poppler 二进制,无需额外配置。
最小完整源码
#!/usr/bin/env python3
"""
mini_pdf_viewer.py – 最小 PDF 查看器
依赖:pip install tkinterpdf
"""
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
from tkinterpdf import PdfShow # 核心控件
class MiniPdfViewer(tk.Tk):
def __init__(self):
super().__init__()
self.title("Mini PDF Viewer")
self.geometry("640x800")
self._build_ui()
self.bind("<Left>", lambda e: self.pdf.prev())
self.bind("<Right>", lambda e: self.pdf.next())
# ---------- UI ----------
def _build_ui(self):
# 顶部工具栏
bar = ttk.Frame(self)
bar.pack(side="top", fill="x", padx=5, pady=2)
ttk.Button(bar, text="📁 打开", command=self.open).pack(side="left")
ttk.Button(bar, text="➖", width=3, command=lambda: self.zoom(0.9)).pack(side="left")
ttk.Button(bar, text="➕", width=3, command=lambda: self.zoom(1.1)).pack(side="left")
ttk.Button(bar, text="◀", width=3, command=lambda: self.pdf.prev()).pack(side="left")
ttk.Button(bar, text="▶", width=3, command=lambda: self.pdf.next()).pack(side="left")
ttk.Button(bar, text="⏮", width=3, command=lambda: self.pdf.goto(0)).pack(side="left")
ttk.Button(bar, text="⏭", width=3, command=lambda: self.pdf.goto(self.pdf.page_count-1)).pack(side="left")
self.page_info = ttk.Label(bar, text="0/0")
self.page_info.pack(side="right")
# PDF 渲染区
self.pdf = PdfShow(self, scroll="both")
self.pdf.pack(fill="both", expand=True)
self.pdf.bind("<<PageChanged>>", lambda _: self._update_info())
# ---------- 功能 ----------
def open(self, file=None):
file = file or filedialog.askopenfilename(filetypes=[("PDF", "*.pdf")])
if file:
try:
self.pdf.load(file)
self._update_info()
except Exception as e:
messagebox.showerror("错误", str(e))
def zoom(self, factor):
self.pdf.scale(factor)
def _update_info(self):
self.page_info.config(text=f"{self.pdf.page_no + 1}/{self.pdf.page_count}")
# ---------- 入口 ----------
if __name__ == "__main__":
MiniPdfViewer().mainloop()
运行
bash
复制
python mini_pdf_viewer.py
界面弹出后:
📁 打开 → 选择任意 PDF;
➖/➕ 缩放;
◀/▶ 或键盘左右箭头翻页;
⏮/⏭ 直达首尾页。
还能再小吗?
如果你只想“一行命令”预览 PDF,可以进一步精简成 10 行脚本(无按钮、无菜单):
import sys, tkinter as tk
from tkinterpdf import PdfShow
root = tk.Tk(); root.title("PDF"); root.geometry("800x600")
pdf = PdfShow(root, scroll="both"); pdf.pack(expand=True, fill="both")
pdf.load(sys.argv[1]) # 命令行参数
root.mainloop()
保存为 tiny_pdf.py
,终端执行:
bash
复制
python tiny_pdf.py example.pdf
即可弹出窗口直接阅读。
让 Kimi 帮你打包(可选)
Kimi 可以生成一键打包脚本,例如用 PyInstaller 做成独立 exe:
bash
复制
pip install pyinstaller
pyinstaller -F -w mini_pdf_viewer.py -n MiniPDF
生成的 dist/MiniPDF.exe
双击即可运行,无需 Python 环境。
至此,一个“最小”但五脏俱全的 PDF 查看器就完成了。祝编码愉快!