当前位置: 首页 > news >正文

如何用kimi写一个最小pdf查看软件

下面给出一份“最小可运行”的 PDF 查看器完整源码(Python 3,仅依赖 tkinter 与 tkinterPDF,后者是对 poppler 的极简封装)。
代码不到 120 行,双击即可运行,支持:打开、缩放、翻页、首页/末页、窗口自适应。
复制-粘贴即可用;Kimi 可以帮你把这段代码保存为 mini_pdf_viewer.py 并运行。


  1. 安装依赖(一次性)


bash

复制

# Windows / macOS / Linux 通用
pip install tkinterpdf

tkinterpdf 会自动下载对应平台的 poppler 二进制,无需额外配置。


  1. 最小完整源码

#!/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()

  1. 运行


bash

复制

python mini_pdf_viewer.py

界面弹出后:

  • 📁 打开 → 选择任意 PDF;

  • ➖/➕ 缩放;

  • ◀/▶ 或键盘左右箭头翻页;

  • ⏮/⏭ 直达首尾页。


  1. 还能再小吗?


如果你只想“一行命令”预览 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

即可弹出窗口直接阅读。


  1. 让 Kimi 帮你打包(可选)


Kimi 可以生成一键打包脚本,例如用 PyInstaller 做成独立 exe:

bash

复制

pip install pyinstaller
pyinstaller -F -w mini_pdf_viewer.py -n MiniPDF

生成的 dist/MiniPDF.exe 双击即可运行,无需 Python 环境。

至此,一个“最小”但五脏俱全的 PDF 查看器就完成了。祝编码愉快!

http://www.dtcms.com/a/393240.html

相关文章:

  • DTS和PTS
  • 【开题答辩实录分享】以《“平安行”驾校信息管理系统的设计与实现》为例进行答辩实录分享
  • Modbus RTU/TCP转EtherNet/IP网关配置:西门子PLC控制伦茨变频器
  • GEO完全指南:AI时代内容优化的新范式
  • 02-安装DRF框架
  • 浅谈矩阵在机器学习线性回归算法中的数学推导
  • Linux 系统编程中的Redis
  • 【OpenGL】绘制彩色立方体
  • 21.继承与混入
  • Python 开发!ImprovePdf 用算法提升PDF清晰度,免费开源工具
  • P1879 [USACO06NOV] Corn Fields G-提高+/省选-
  • 二分答案:跳石头
  • 注解学习,简单测试框架
  • python 自定义装饰器 + 框架
  • 【星闪】Hi2821 | KEYSCAN矩阵按键扫描
  • ​​[硬件电路-282]:PWM信号通用解读、应用场景及在步进电机中的应用详解
  • 给链表装上“后视镜”:深入理解双向链表的自由与高效
  • Off-Grid Direction of Arrival Estimation Using Sparse Bayesian Inference (II)
  • Unity中的渲染管线
  • PyMuPDF 库
  • 【故障】windows7开机后能出现windows启动界面,但停在黑屏很久才进入系统界面
  • tqdm 库
  • 模块化编程规范与分层设计指南
  • Photoshop - Photoshop 调整照片的颜色强度
  • 【ROS2】通讯机制 Topic 常用命令行
  • DeepSeek的GPU优化秘籍:解锁大规模AI训练的底层效率
  • Gemini in Chrome深度解析:反垄断胜诉后,Chrome开启AI智能浏览时代!
  • 如何修复 Google Chrome 上的白屏问题
  • Camera2原生api级 Demo答
  • 【Redis】Redis缓存与数据库DB数据如何保持同步?