PDF加密权限解除实战:用qpdf免费命令行一键解锁
上周同事甩过来一个PDF说打印店打不了让我帮忙看看。我一看文件本身没坏是加了权限限制——允许查看但打印和复制都被锁了。这种问题我一年能遇到几十次文档在手机上看一点毛病没有真要用起来就处处受制复制不行、打印不行、想转成Word重新排版更不行。今天就把我处理这类PDF的真实经验完整分享出来不花一分钱、没有弹窗、不需要装什么“破解版神器”用几条命令加一套免费开源工具把限制解除顺便把打印、复制、转Word、合并拆分、压缩这些衍生需求一起打通。1. 先把“限制”看懂PDF加密与权限的真实机制很多用户一看到PDF无法复制、无法打印就默认自己是“遇到加密文档了”。这个判断其实只对了一半。PDF的“限制”在技术上分成两种完全不同的东西一种是打开文档需要密码另一种是文档能打开、但功能被权限参数限制。搞混这两者后面所有操作都会走弯路。1.1 打开密码和权限密码到底有什么区别PDF的加密体系里有两个角色user password打开密码和owner password权限密码。打开密码很好理解——不知道密码PDF连看都看不了渲染器根本不会解密内容所有文字对你来说就是一堆无法解码的字节。权限密码则是另一回事文档正常打开但“是否允许打印”“是否允许复制文本”“是否允许修改页面”这些开关被人为关掉了。这里有个关键知识点PDF的查看器在渲染文档之前会先读取文档加密字典里的权限标志位。Adobe Reader根据这些标志决定菜单里哪些按钮置灰、哪些操作被拦截。所以很多加密PDF并不是内容被高大上的算法保护了而是查看器“听令行事”而已。如果把权限标志位清掉或者把文件内容重新封装成一份不带权限限制的新PDF用户立刻就能自由使用。对于正规的免费工具来说解除权限密码并不算“破解”。这是PDF规范允许的文档自我管理手段文档所有者设置权限同样也有权移除权限。你处理自己创建的文件、或者手里有合法密码的文件这样操作完全合理合法。但反过来如果是打开密码都不知道的文档任何正规工具都不会给你开后门暴力破解既慢又不可靠而且大概率涉及非法获取他人受保护文档别碰。1.2 权限标记是怎么记录在PDF文件里的PDF的加密参数集中存放在根对象里的Encrypt字典中。加密的时候PDF会根据一套标准的权限位定义用数值记录哪些操作被允许。常见的权限控制包括是否允许打印是否允许复制文本和图形是否允许修改文档内容是否允许填写表单或添加注释是否允许提取文字供残障人士辅助工具使用查看器在打开文档时先解密这个字典拿到权限位之后严格“照章办事”。如果权限位被设置为“不允许打印”那么打印图标置灰快捷键也无效。有意思的是权限位和真正的加密并不是强绑定的有些PDF制作工具导出时勾选“禁止打印”但默认不设权限密码只有一串空的owner password。对这种文档解锁工具几乎是一条命令秒秒钟就能处理完因为它只要把加密字典重写一遍、权限位全部放开然后重新输出文件即可。很多朋友在这一步容易卡住是因为他们拿到的PDF同时设置了打开密码和权限密码。这时必须知道打开密码才能继续否则连第一步解密都过不去。这一点后面实操部分还会再展开。先把机制说透大家才知道自己在和什么打交道。2. 工具选型复盘为什么我放弃了网页转换站和“破解版神器”我自己处理PDF也有一个演变过程一开始图省事直接在搜索引擎找“在线PDF解锁”后来遭过几次罪才把工具链全部换成本地开源方案。这个过程踩过的坑挺典型值得单独说说。2.1 网页免费工具方便是真方便坑也是真多在线网站的第一大问题不是广告而是隐私。你把手里的合同、标书、银行流水上传到别人服务器等于默认把这些内容交给了第三方。很多网页工具的服务条款里白纸黑字写着“用户上传的内容可能被用于改进服务”翻译成大白话就是你的文件可能被留存、被分析、被转卖。机密文件的PDF我强烈建议永远不要上传到任何在线网站。第二大问题是效率。我几年前用过一个号称免费的在线解锁工具上传一个30MB的PDF排队等了十几分钟结果下载下来的文件右下角被盖了一个大大的网站logo水印。想去除水印请开会员。这种“免费”套路到今天依然是主流。另外大多数在线工具还有文件大小限制超过50MB就要付费批量处理更是想都别想。第三大问题是环境依赖。在线工具要求有网、有浏览器、有上传下载的耐心。万一遇到网络波动传一半断了又得重新来。在办公室临时处理文件时这体验真的很糟。2.2 “破解版神器”的暗面广告捆绑与安全隐患我说的“破解版神器”指的是网上常看到的“某公司PDF编辑器破解版”“全能PDF工具箱绿色版”这类东西。这一类的安装包很多来自第三方下载站套路五花八门下载按钮藏得极深点了真实链接直接开始下全家桶安装过程中默认勾选一堆推广软件装完打开浏览器发现首页被改了桌面多出三五个“精美壁纸”。而且这些工具的来源不明你根本不知道它除了显示出来的功能之外还在后台干什么。有些安装包本身就被植入了挖矿模块或者远控后门跑起来风扇狂转。我自己见过不止一例用户的电脑装了这种“破解版”之后邮箱开始往外发垃圾邮件公司文件被莫名其妙访问。光冲这两点我就不赞成碰这类工具。正规免费方案完全够用没必要为了一个右键菜单把整台电脑的安全搭进去。2.3 我最终留下的三件套qpdf、PDFtk Free、LibreOffice折腾到最后我电脑上固定留了三样免费开源工具全部没有广告、没有弹窗、不联网也能用。工具用途适合场景qpdf查看加密信息、解密解锁、拆分合并主力工具命令行操作支持批量PDFtk Free图形界面合并拆分、旋转、加背景水印给不愿意敲命令的同事准备LibreOffice打开PDF后另存为DOCX/ODT、编辑文本、导出图片PDF转Word、轻度内容修改Ghostscript压缩PDF体积、重写输出超大PDF瘦身poppler-utils提供pdfunite、pdftoppm等小工具拆分合并、PDF转图片这些工具里qpdf承担了“一键解锁”这个标题里最核心的活后面重点讲它。PDFtk是备用因为某些同事对命令行天然拒绝GUI点两下就能合并文件也够用。LibreOffice则解决了解锁后“还要继续加工文档”的诉求。整套组合下来日常90%的PDF需求都能在本地解决。3. 从“一次性点击”到“批量脚本”qpdf命令行解锁实操qpdf是专门操作PDF结构的老牌开源工具用C写的Windows、macOS、Linux都有版本。它的功能很纯粹读取PDF、解密重新加密、检查结构、拆分合并。我用它处理PDF已经快十年了从来没有因为它本身踩过坑可以说非常稳。3.1 安装与环境准备Windows用户去qpdf的GitHub Release页面下Windows版压缩包即可解压后里面有bin、include、lib目录。我们只需要bin目录里的qpdf.exe。为了方便我把qpdf.exe所在目录加到系统的PATH环境变量里右键“此电脑”打开“属性”里的“高级系统设置”点击“环境变量”在“Path”里新增一条指向解压后的bin目录。这样之后在命令行里直接敲qpdf就能用不用每次写全路径。macOS用户可以直接brew install qpdf。Linux用户用apt/qpdf或dnf install qpdf一句话装完。验证是否装好打开命令行窗口输入qpdf --version能输出版本号就说明环境没问题。3.2 解锁权限密码一条命令的底层逻辑先说最常见的场景文档能打开、但打印和复制被禁用而且你自己知道权限密码或者根本就是制作软件设了空权限密码。查看加密状态可以用qpdf --show-encryption in.pdf这条命令会列出文档是标准加密还是AES加密、用了多长的密钥、权限标志是什么。然后直接解密qpdf --decrypt in.pdf out.pdf就这么简单。如果PDF设置了权限密码需要在解密时告诉qpdfqpdf --decrypt --password你的权限密码 in.pdf out.pdf如果没有设置权限密码就是空密码可以省略--password也可以显式写成--password。这里的底层逻辑是qpdf读入源文件时先按密码或空密码把加密字典解开再把内容对象全部读取出来最后用不加密的方式写入一个全新PDF文件。新文件里不包含原来的Encrypt字典自然也就不包含任何权限限制了。输出文件名不要和输入相同因为qpdf不会覆盖原文件建议用in_unlocked.pdf这样的命名保留一份原始文件做备份是特别重要的一个好习惯。3.3 做成“一键”拖拽批处理脚本标题里说“一键解锁”命令行虽然快但对不熟悉终端的人还是有一定门槛。我的做法是写一个简单的Windows批处理脚本把PDF文件拖上去自动解出无限制版本全程不需要输入任何命令。新建一个文本文件改名为unlock-pdf.bat内容如下echo off chcp 65001 nul setlocal EnableDelayedExpansion set QPDFqpdf.exe if %~1 ( echo 请把PDF文件拖到本脚本上再运行。 pause exit /b ) for %%f in (%*) do ( echo 正在解锁%%~nf %QPDF% --decrypt --password %%~f %%~dpn%%~nf_unlocked.pdf if !errorlevel!0 ( echo 已生成%%~dpn%%~nf_unlocked.pdf ) else ( echo 解锁失败可能需要权限密码或打开密码。 ) ) pause脚本逻辑很简单把拖进来的每个PDF作为输入调用qpdf生成一个以_unlocked.pdf结尾的新文件同时保留原文件。这里的chcp 65001是把命令行编码切到UTF-8避免中文文件名乱码。需要说明的是批处理脚本本身跑在Windows上不要用文本文档默认的ANSI编码直接保存建议用记事本另存时选择UTF-8编码否则中文提示可能显示成乱码。拖拽调用时qpdf加上引号里如果qpdf.exe不在PATH里把set QPDF那一行改成你的qpdf.exe绝对路径即可。日常使用中这个小脚本帮了大忙我处理一份禁止打印的PDF只需要把文件从桌面拖进脚本图标两秒钟后旁边就多出一个_unlocked.pdf打印店、同事、客户那边通通无阻碍。3.4 常见报错与处理qpdf处理PDF时偶尔会碰上两个典型报错。一个是“invalid password”意思是密码不对。如果你知道打开密码可以在--password后面填真正的打开密码如果连打开密码都没有那就别硬来了这个文档属于用户加密保护状态不是权限限制正规手段处理不了。另一个是“file is not encrypted”意思是这个PDF压根没加密。有些用户拿到的PDF不能复制其实是扫描件/图片PDF文字根本不存在不是权限问题。这时解锁命令当然不会报权限错误——因为报错的信息是“这文件没加密”而用户还一脸懵。真正的解法是识别文字也就是OCR这个跟解锁是两码事别混。macOS和Linux用户也有一段很顺手的批量命令for f in *.pdf; do qpdf --decrypt --password $f ${f%.pdf}_unlocked.pdf; done把当前目录下所有PDF一次性解锁实测处理几百个文件也就几十秒比任何在线网站都快。4. 解锁后的一整套工作流打印、复制、转换、合并、压缩解锁只是第一步真实工作场景里PDF解锁之后通常紧跟着一堆后续操作。很多时候用户以为“PDF转Word”“PDF合并”要专门下一个大软件其实用解锁的同一套免费工具链完全可以搞定。4.1 保留原文件所有后续操作的第一前提我强烈建议任何处理都建立在“保留原始PDF”的基础上。原因有三第一解锁工具即使再稳也会有意外比如辛勤工作到一半发现输出文件损坏原文件没动随时可以再来一次第二原始PDF里可能包含一些注释、书签、表单字段、隐藏图层某些操作重写后会丢掉这些信息保留原件随时能回退第三如果文件涉及法律效力原始形态是最好的证据。所以我在所有流程的开头都是同一个动作先复制一份带_unlocked后缀的副本所有加工都对着副本做绝不动原件。4.2 PDF转Word的两种靠谱路线和坑解锁后的PDF转Word我试过很多种方案。如果你用的是Office 2013或更高版本可以直接用Word打开PDFWord会把内容重新排版成可编辑文档。这个方案免费、本地、无广告但有个前提源PDF里的文字必须是真实文本不能是扫描图片。对于纯文字版式简单的PDFWord打开后的识别度还可以但对复杂双栏排版、带文本框的文档Word转换后版面会和原文件差得比较远。第二条路线是用LibreOffice。命令行版本可以这样转soffice --headless --infilterpdf:writer_pdf_import --convert-to docx in_unlocked.pdfLibreOffice对PDF的导入处理比较稳尤其适合那种带大量图形的文件。脚本可以在同一目录批量转多个文件逐个调用soffice即可。但要坦白说任何免费工具转Word遇到复杂表格、竖排文字、学术公式、特殊字体嵌入时都会有一定概率发生错位。我自己的经验是优先抽原文里的文字复制到新的Word文档里重新整理比依赖自动转换更可靠。如果必须用转换工具先用小样测试一下字体和表格表现再批量处理。4.3 合并、拆分、压缩开源链条里的常用搭档合并PDFqpdf自己就能做命令是qpdf --empty --pages a.pdf b.pdf c.pdf -- merged.pdf也可以使用poppler-utils里的pdfunite命令更直观pdfunite a.pdf b.pdf merged.pdf拆PDF一个常见需求是“只要这个文件里的第5页到第10页”qpdf这样写qpdf --pages in.pdf 5-10 -- out_part.pdf这个命令的语义是把in.pdf的第5到10页拿出来放进新文件out_part.pdf。压缩PDF我一般用Ghostscriptgs -sDEVICEpdfwrite -dCompatibilityLevel1.4 -dPDFSETTINGS/ebook -dNOPAUSE -dBATCH -dQUIET -o compressed.pdf in_unlocked.pdf-dPDFSETTINGS/ebook会按电子书质量做压缩适合不需要印刷精度的场景。如果源PDF里有大量扫描图片压缩效果会很明显几十MB的文件能压到几MB。转图片更简单poppler-utils里的pdftoppmpdftoppm -png -r 150 in_unlocked.pdf page这条命令会把每一页渲染成150 DPI的PNG图片命令生成page-1.png、page-2.png这样的文件用来做PPT素材、发送预览版都挺合适。这些都是顺手掌握的小工具但凑在一起就是一套完整的PDF工作流解锁→提取→转Word→合并→压缩→转图片全程本地完成无弹窗无上传不限文件大小。5. 免费无广的真正代价本地化处理意识与文件权限底线很多人看到“免费无广”四个字第一反应是“是不是有什么隐藏收费”。真正用了这一套开源工具之后你会明白它们不收钱、没广告代价只是需要你稍微学习一下命令行掌握几个基础操作。这个代价在我看来很值因为换回的是隐私、稳定和自由。5.1 为什么要坚持本地处理我的原则很简单涉及个人隐私、公司业务、合同文件、证件扫描件的PDF一律本地处理。在线工具永远不适合处理这些内容。你可能觉得自己上传的扫描件很不起眼但一家商业公司如果是把客户合同上传到某个在线转换网站一旦泄露后果就是法律和信誉上的双重损失。所以我宁可花10分钟安装qpdf和LibreOffice把处理能力握在自己手里。另外本地处理还有一个隐藏优势可以批量。网页工具一次处理一个文件本地命令一次跑完整个文件夹。遇到那种几十页甚至几百页的招投标文件、毕业论文、技术手册本地工具的处理速度是碾压级的。5.2 权限边界哪些操作可以放心做这里必须划清界限。用qpdf移除权限加密适用于以下情形文档是你的自己设了权限密码又忘了或者你明确知道该密码。文档是你所在单位内部流转的受限文件你本身对内容和处理有授权的。文档由第三方工具生成无意中勾选了“禁止打印/复制”需要清除限制以便正常使用。不适用于以下情形不知道打开密码的他人文档。从商业渠道下载、明确要求付费或授权才能操作的文件。任何试图绕过版权保护、获取非法利益的操作。判断标准并不复杂如果你是这份文件的合法拥有者或授权使用者那解除限制没有任何问题如果你没有这个权利任何工具都不能成为借口。这个底线做技术的朋友尤其要记住。我长期使用的体会是这套本地工具组合让PDF处理回归了工具本身的意义一键不是靠破解别人的保护而是让自己的合法文件回归自由。下载、解压、写一个批处理脚本花半小时配置一遍之后不管是在联网状态下还是断网状态下都能稳定、安全、无广告地处理各类PDF。这比任何“免费神器”都踏实。

相关新闻

大数据缓存实战:Redis与Alluxio定位配置与踩坑

大数据缓存实战:Redis与Alluxio定位配置与踩坑

干大数据这行的人,迟早会被一个词拦住:慢。任务跑得慢、查询出得慢、报表刷得慢,追根问底,大多不是因为计算引擎不给力,而是存储访问拖了后腿。我在几个大数据平台的项目里折腾过缓存方案,常用的两样是Redi…

2026/10/11 23:39:46 阅读更多 →
基于蝴蝶优化算法的IEEE30节点无功优化Matlab实现与参数调优

基于蝴蝶优化算法的IEEE30节点无功优化Matlab实现与参数调优

1. 从"网损"到算法:先搞懂无功优化到底在优化什么说到电力系统优化调度,"有功优化"大家都很熟——机组出多少钱、发多少有功,直接影响运行成本。但大部分人第一次接触"无功优化"时都会有一个疑问:无…

2026/10/11 23:39:46 阅读更多 →
四月修复版H5农场养殖鸡蛋理财鸡源码部署与支付对接避坑指南

四月修复版H5农场养殖鸡蛋理财鸡源码部署与支付对接避坑指南

简介:最新修复版H5农场牧场养殖理财鸡游戏运营源码,定位为可直接运营的网站游戏项目,适合有建站基础、希望搭建休闲理财类H5游戏的个人或团队二次开发。资源包共2271个文件,约88.4MB,主体由HTML页面、JavaScript逻辑、…

2026/10/11 23:39:46 阅读更多 →

最新新闻

拆解Amical的whisper.cpp封装:如何构建带Metal/CUDA/CPU自动回退的C++原生模块

拆解Amical的whisper.cpp封装:如何构建带Metal/CUDA/CPU自动回退的C++原生模块

【免费下载链接】amical 🎙️ AI Dictation App - Open Source and Local-first ⚡ Type 3x faster, no keyboard needed. 🆓 Powered by open source models, works offline, fast and accurate. 项目地址: https://gitcode.com/gh_mirrors/…

2026/10/12 0:27:12 阅读更多 →
基于YOLO的管道缺陷检测:980张图像训练实战与避坑指南

基于YOLO的管道缺陷检测:980张图像训练实战与避坑指南

简介:本资源为面向YOLO系列目标检测算法的下水管道缺陷检测数据集,适用于从事管道巡检、市政设施维护与工业视觉检测的开发者及研究人员,可解决缺陷样本稀缺、标注格式不统一等问题。压缩包共2000个文件,约33.89MB,包含…

2026/10/12 0:27:12 阅读更多 →
物联网模组柔性FPC天线方案全解析:选型、布局与调试

物联网模组柔性FPC天线方案全解析:选型、布局与调试

1. 项目背景与选型思路做物联网产品硬件设计的朋友,十有八九都遇到过同一个问题:模组选好了、主板画完了、结构堆叠也敲定了,结果天线没地方放。尤其是这两年,NB-IoT、Cat.1、BLE、LoRa 这些模组方案层出不穷,模组本身…

2026/10/12 0:27:12 阅读更多 →
用Tauri构建桌面天气应用:从技术选型到打包发布的完整实践

用Tauri构建桌面天气应用:从技术选型到打包发布的完整实践

桌面天气应用这个需求,看起来挺简单,但真做起来会发现它横跨了数据接口、桌面端集成、界面设计、异常处理好几个层面的问题。我前后用了两个周末把一套完整方案跑通,过程中踩了不少坑,这里把从选型到发布的完整链路梳理出来&#…

2026/10/12 0:27:12 阅读更多 →
UML四层建模实战:从用例图到部署图构建教务管理系统

UML四层建模实战:从用例图到部署图构建教务管理系统

简介:本资源是南京邮电大学软件工程课程设计的完整实验报告,面向高校计算机类专业本科生及软件工程初学者,聚焦教务管理系统的面向对象分析与UML建模实践。报告系统呈现了从需求分析到UML建模的全流程:涵盖用例图(管理…

2026/10/12 0:26:12 阅读更多 →
UML用例图与顺序图建模核心:抓准动作主体与交互时序

UML用例图与顺序图建模核心:抓准动作主体与交互时序

简介:本资源是一份面向软件工程专业学生、UML初学者及备考人员的系统性试题汇编,聚焦用例图、顺序图与协作图等核心交互建模技能,帮助读者深入理解UML动态建模原理与实际应用差异。资料以1个62KB的Word文档形式呈现,内容涵盖7大知…

2026/10/12 0:26:12 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →