吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22465|回复: 349
收起左侧

[Windows] 不会编程的我,用GPT写了一个【PDF压缩工具1.0版本】(附部分源码&成品)

    [复制链接]
baoshan685 发表于 2024-5-24 11:42
本帖最后由 baoshan685 于 2024-6-3 14:38 编辑

2024年5月27日12:38:43更新

感谢大家的支持,评论我基本都有看。关于大家关心的几个问题回复如下:

1. 码农被淘汰

我觉得目前码农被淘汰的情况肯定还不会发生。我做的只是一个简单的项目,代码只有120行,就一个.py文件,整体基本就是乐高式的拼接。我理解的话,对于一些简单的程序,类似示例的这个,GPT是可以胜任的。但是对于复杂的项目,暂时还不行(代码量、问题量疯狂增加)。包括现在,GPT也没告诉我为什么我用PyQt5不行。如果没有别的解决方案,我也无法完成这个帖子。再回到这个帖子的初衷,我其实只是想试试能不能做出来。从长远来看,这个压缩工具肯定不是最优解。不少小伙伴在压缩PDF的时候可能还会选择某捷等专业的软件,所以更多是交流分享。

2. 关于怎么用GPT,为什么模型选用GPT4o

GPT在国内有很多镜像,基本上都能用。另外,也可以使用原生的GPT。想了解的话,论坛内应该能搜到一些资料。我个人建议直接在某宝上购买一个账号来体验原版。选择使用GPT4o的原因是因为它可以处理截图,而且回复速度较快。当然,当前版本的GPT3.5和GPT4也可以使用,只不过GPT4o更高效一些。

3. 至于0基础等

我没有编程经验,自己写的代码这辈子不超过100行。但我知道Python的文件后缀是.py,其他基本就无了。

4. 对话过程

  • 其实就像我说的,就是提出需求,然后把命令行/cmd或者VSCode等编辑器的反馈页面截图给GPT,不断进行PDCA(Plan-Do-Check-Act)的过程。
  • 基本上就是将GPT给出的代码复制粘贴到编辑器中(一字不改)。

对话过程新开一帖:不会编程的我,用GPT写了一个PDF压缩工具(对话过程)



最后感谢以下提问和帮助的朋友:
- @violentpig 说想看对话过程
- @oldarmy 等问怎么用GPT
- @fmamcn@jupiterhxf 分别提供了PDF工具 [PDF24](https://tools.pdf24.org/zh/) 和 pdfFactory
- @nojon 提供了转存链接:
  - [蓝奏云](https://luojiang.lanzouw.com/ihIYj1zusuwh)
  - [123网盘](https://www.123pan.com/s/sXtA-WuTkh.html)

---

希望这些更新能更好地回答大家的疑问和关注点![/md]


原贴

起因

起因是某天要投标,文件必须30M以下,就在论坛上翻找,耗时40分钟下载几个软件仍无果,于是换了个思路,最后找到了两个解决方案:一个论坛里一个小伙伴发的在线版(有文件大小限制),另一个是某捷6.8版本的PDF处理工具。

第二天想着是不是可以借助GPT自己写一个,于是便得到了以下程序,现在回顾下整个过程。

初始需求

我的需求很简单:压缩一个PDF文件的大小到30MB以下。最初,我让GPT-4o帮我写一个简单的PDF压缩程序,使用Python实现。然而,在运行过程中,出现了找不到文件的错误:

FileNotFoundError: No such file or directory: 'input.pdf'

GPT-4o指导我检查文件路径是否正确,并确保文件存在于指定路径。

使用Ghostscript进行压缩

路径问题之后,我发现实际虽然产生了新的文件,但并没有压缩;向GPT-4o反馈后,其推荐使用Ghostscript来压缩PDF文件,因为它的压缩效果更好。我按照指导下载并安装了Ghostscript,并更新了Python脚本以调用Ghostscript进行压缩。

打包问题解决

这个时候基本基于已经能够解决我的问题了,然后我想换了设备测试,便想打包程序。

打包后在其他设备上运行时遇到了DLL加载错误:

Can't load Ghostscript DLL

GPT-4o建议我在PyInstaller打包时包含Ghostscript的bin和lib目录(之前只打包了Ghostscript程序)。于是,我更新了打包命令:

pyinstaller --onefile --add-data "D:/soft/gs10.03.1/bin/*;gs/bin" --add-data "D:/soft/gs10.03.1/lib/*;gs/lib" compress_pdf_gui.py

添加图形用户界面

为了让工具更易用,我请GPT-4o帮我用tkinter创建了一个图形用户界面(之前用PyQt5生成好像,但一直不行,不知道为什么,GPT也没能归因,只告诉我重装试试)。界面允许我选择输入和输出文件夹,并选择压缩质量。以下是部分代码:

import tkinter as tk
from tkinter import filedialog, messagebox

def browse_input_file():
    filename = filedialog.askopenfilename(filetypes=[("PDF 文件", "*.pdf")])
    if filename:
        input_path.set(filename)

def browse_output_folder():
    foldername = filedialog.askdirectory()
    if foldername:
        output_folder.set(foldername)

def start_compression():
    compress_pdf(input_path.get(), output_folder.get(), quality.get())

root = tk.Tk()
root.title("PDF 压缩工具")

解决图标和显示问题

为了让界面更美观,我希望添加一个图标,并隐藏图形用户界面之外的控制台窗口。GPT-4o告诉我,可以在代码中设置图标路径,并在打包时指定图标文件:

root.iconbitmap('D:/help/py/11.ico')

并且更新打包命令以隐藏控制台窗口:

pyinstaller --onefile --noconsole --icon="D:/help/py/11.ico" --add-data "D:/soft/gs10.03.1/bin/*;gs/bin" --add-data "D:/soft/gs10.03.1/lib/*;gs/lib" --add-data "D:/help/py/11.ico;." compress_pdf_gui.py

然而,在更换设备后,我发现程序无法找到图标文件:

_tkinter.TclError: bitmap "C:\Users\dist\compress_pdf_gui\_internal\11.ico" not defined

GPT-4o建议在打包时包含图标文件,并在运行时动态获取图标路径:

# 设置窗口图标
if getattr(sys, 'frozen', False):  # 如果程序是打包的
    icon_path = os.path.join(sys._MEIPASS, '11.ico')
else:  # 如果程序在源代码模式下运行
    icon_path = 'D:/help/py/11.ico'
root.iconbitmap(icon_path)

处理Windows安全报毒问题

我发现,Windows安全防护会报毒。GPT-4o提供了一些建议来解决这个问题,包括:

  • 使用虚拟环境打包
  • 更新PyInstaller到最新版本
  • 使用--onedir选项打包
  • 将应用程序添加到Windows Defender的排除列表
  • 使用代码签名来提高可信度

最终,我使用--onedir选项打包,并将应用程序添加到Windows Defender的排除列表,解决了报毒问题。

结束语

整个过程大概2~3个小时,我从什么都没有,到有了下方的可以压缩PDF的附件,这个过程中也就是提出需求,同时把VScode、cmd和windows的一些报错反馈截图或复制发送给GPT,不断PDCA的过程。如果是有经验的开发者其实会更快,但因为我0基础,所以出了很多常识性的问题,比如相对路径、绝对路径等等;

技术原理

本工具主要依赖以下技术实现:

  • Python编程语言:用于编写逻辑代码。
  • Ghostscript:一个强大的PDF处理工具,用于PDF的压缩。
  • tkinter:Python的标准GUI库,用于创建用户界面。
  • PyInstaller:用于将Python脚本打包成独立的可执行文件。

主要步骤

  1. 用户选择文件:用户通过GUI选择需要压缩的PDF文件和输出文件夹。
  2. 调用Ghostscript:通过Python脚本调用Ghostscript,使用适当的压缩选项对PDF进行压缩。
  3. 输出结果:将压缩后的PDF文件保存到用户指定的文件夹,并显示操作结果。

使用说明

  1. 下载并运行程序:下载打包好的可执行文件,双击运行程序。
  2. 选择输入文件:点击“浏览”按钮,选择需要压缩的PDF文件。
  3. 选择输出文件夹:点击“浏览”按钮,选择保存压缩后文件的文件夹。
  4. 选择压缩质量:从下拉菜单中选择合适的压缩质量(最小、中等、高、非常高)。
  5. 开始压缩:点击“开始压缩”按钮,等待压缩完成,程序会弹出提示框显示压缩结果。

PS-效果&使用注意:

  1. 我的话分别从30m压缩到9m,150m压缩到15m,楼下有个60m压缩到3m的,要看文件;
  2. Ghostscript的原理是压缩图像以及移除不必要的图像,所以对于一些文件压缩效果并没有那么好。
  3. 文件压缩完后建议对比一下,我用论坛中一个其他程序压缩后,有缺图的情况,所以一些正式的场景请压缩后检查。
  4. 当压缩文件过大的时候,时间会有点长。

附件

[md]

1716521288943.png

免费评分

参与人数 103吾爱币 +91 热心值 +90 收起 理由
DREAM_ + 1 哪位好心人提供个32位的
colestar + 1 + 1 谢谢@Thanks!
tengtong2 + 1 + 1 共同成长
longfeiert918 + 1 + 1 我很赞同!
xfkj777 + 1 + 1 用心讨论,共获提升!
曇天 + 1 + 1 感谢,工作中用得到
e813519 + 1 + 1 我很赞同!
wangyongdesign + 1 + 1 谢谢@Thanks!
zpzwz + 1 + 1 谢谢@Thanks!
yinanyou + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gqdsc + 1 这个真的厉害了
liuwei21cn + 1 + 1 谢谢@Thanks!
ag129 + 1 + 1 谢谢@Thanks!
sjbmljr1 + 1 谢谢@Thanks!
babucff + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ForeverAng + 1 + 1 我很赞同!
Koardor + 1 + 1 瑟瑟发抖,自己养大的龙,快把自己吃了。
2011lwx + 1 + 1 用心讨论,共获提升!
woshidbjman + 1 + 1 热心回复!
lsbczd + 1 + 1 谢谢@Thanks!
Kamunion + 1 + 1 谢谢@Thanks!
yxpp + 1 谢谢@Thanks!
xxxxli + 1 + 1 谢谢@Thanks!
ws001980 + 1 + 1 谢谢@Thanks!
燕缘堂 + 1 + 1 我很赞同!
heju + 1 + 1 谢谢@Thanks!
zif1993 + 1 + 1 我很赞同!
acecttgd + 1 + 1 我很赞同!
ztw138 + 1 + 1 热心回复!
sijifeng + 1 + 1 虽然对于我来说没用,但是感觉你这样特别牛逼
小橙紫 + 1 + 1 我很赞同!
xuna2009 + 1 + 1 谢谢@Thanks!
su27_jx + 1 + 1 我很赞同!
娟然俊逸 + 2 + 1 用心讨论,共获提升!
无尘浪子 + 1 用心讨论,共获提升!
qq9953 + 1 谢谢@Thanks!
Fencer + 1 鼓励转贴优秀软件安全工具和文档!
夜的钢琴师 + 1 + 1 用心讨论,共获提升!
asdfcyt + 1 用心讨论,共获提升!
天涯89 + 1 + 1 谢谢@Thanks!
卡尔999 + 1 + 1 用心讨论,共获提升!
bbkxm + 1 + 1 用心讨论,共获提升!
梦里lm + 1 + 1 谢谢@Thanks!
SunKiwi + 1 + 1 用心讨论,共获提升!
2232539 + 1 + 1 我很赞同!
gzalmost + 1 我很赞同!
aipiaoxu + 1 + 1 用心讨论,共获提升!
Voccoo + 1 + 1 热心回复!
18696358796 + 1 用心讨论,共获提升!
嘻哈星星 + 1 + 1 我很赞同!
LuckyDouer + 1 + 1 热心回复!
jingyinruyun + 1 + 1 钮币啊!手残的我看不懂
ewangjf + 1 用心讨论,共获提升!
thext528 + 1 + 1 热心回复!
heao1996 + 1 + 1 热心回复!
phe889 + 1 谢谢@Thanks!
waterel + 1 + 1 用心讨论,共获提升!
紫辰 + 1 + 1 我很赞同!
la2364 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
teslaski + 1 用心讨论,共获提升!
南宫葉 + 1 + 1 热心回复!
bydlyzx + 1 + 1 你完全可以出一套教程了,很有市场。
nndyky + 1 + 1 鼓励转贴优秀软件安全工具和文档!
darktianZ + 1 + 1 我很赞同!
柒點 + 1 + 1 用心讨论,共获提升!
lijianhuied + 1 + 1 热心回复!
rdzym + 1 用心讨论,共获提升!
xinxinlinux + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shenmiyihao + 1 谢谢@Thanks!
Issacclark1 + 1 谢谢@Thanks!
1024Jessica + 1 我很赞同! 希望更多的朋友也一起来编程!
mmqk + 1 谢谢@Thanks!
冰封的记忆~ + 1 我很赞同!
tmkill + 1 + 1 谢谢@Thanks!
yangon + 1 + 1 谢谢@Thanks!
voila。 + 1 + 1 热心回复!
hybcrp + 1 + 1 我很赞同!
jamessteed + 1 + 1 用心讨论,共获提升!
锂电是信仰 + 1 + 1 我很赞同!
zuicai + 1 + 1 我很赞同!
lyslxx + 1 + 1 我很赞同!
Forward + 1 + 1 用心讨论,共获提升!
dreamcrazy + 1 + 1 谢谢@Thanks!
地缺天残 + 1 + 1 用心讨论,共获提升!
1zsz + 1 + 1 热心回复!
caihuachaorou87 + 1 + 1 谢谢@Thanks!
aa20221101 + 1 + 1 热心回复!
追风-鹄 + 1 我很赞同!
archanfel + 1 我很赞同!
windong + 1 + 1 用心讨论,共获提升!
yy19917 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xiu123 + 1 + 1 热心回复!
一大夹子 + 1 热心回复!
youarehen + 1 + 1 谢谢@Thanks!
yang4384 + 1 热心回复!
LiveOnLove + 1 + 1 谢谢@Thanks!
zyl162180 + 1 + 1 精神可嘉,有个软件叫NXPowerLite支持的格式比较多。
abc2805011 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tx444219233 + 1 + 1 热心回复!
NoelCornehl + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

violentpig 发表于 2024-5-24 14:10
高级!应该把整个聊天过程po上来一起供学习
oldarmy 发表于 2024-5-24 12:13
fmamcn 发表于 2024-5-24 15:46
cyy201 发表于 2024-5-24 11:47
厉害啊!码农的危机来了
+12027988887 发表于 2024-5-24 12:11
楼主,能不能制作个 压缩工具,把300m教程视频压缩到100m以内???
flybird2007 发表于 2024-5-24 11:48
楼主云南的,不错,GPT很有用
fuxingjun674 发表于 2024-5-24 12:00
厉害啊!60M的PDF文件压缩到了3M。
porrima223 发表于 2024-5-24 12:12
lz厉害,下来试试
SU150228 发表于 2024-5-24 12:16
顺便提取pdf有数字开头的一行文字并建立pdf书签
fs000x 发表于 2024-5-24 12:20
有危机感了
fcby 发表于 2024-5-24 12:21
厉害的哥们,我连如何正确提问gtp都不会
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 02:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表