macOS 虚拟打印机三步搞定:RWTS-PDFwriter 把任何文档一键打印成 PDF
macOS 虚拟打印机三步搞定RWTS-PDFwriter 把任何文档一键打印成 PDF【免费下载链接】RWTS-PDFwriterAn OSX print to pdf-file printer driver项目地址: https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter你一定遇到过这种时刻网页上看到一篇干货想存档、合同要转成 PDF 发给客户、手头二三十份报告要统一转成电子版。macOS 自带的打印为 PDF虽然能用但每次都要手动选位置、敲文件名批量场景下更是点到手酸。RWTS-PDFwriter 就是为消灭这类重复劳动而生的免费开源项目它往系统里装一台看不见的打印机之后任何应用里按下打印、选中它PDF 就会自动落到你指定的文件夹连文件名都不用管。它支持 macOS 11.0 及以上系统Intel 与 Apple Silicon 芯片通吃源码完全开放GPL v2 协议可以看作是 Windows 上 CutePDF 在 Mac 世界的对应物。先弄明白这台虚拟打印机是怎么工作的普通打印机把电子文档变成纸上的墨迹而 PDFwriter 把打印这一步的输出从纸张换成了 PDF 文件。它本身不是一个应用而是 macOS 打印服务 CUPS即系统里负责所有打印流程的组件下的一个后端程序。当你选中 PDFwriter 并点击打印流程是这样的CUPS 把打印数据交给后端的 Swift 程序源码在pdfwriter/main.swift后端先检查数据是不是真正的 PDF——只看文件头四个字节是不是%PDF是就写入目标目录不是就报错并取消这个打印任务。这个只认 PDF的设计保证了落盘的每一个文件都是有效 PDF。而由于几乎所有 macOS 应用都支持打印你等于获得了一条通用的文档转 PDF通道Safari、Word、Numbers、预览、邮件……任何能调出打印对话框的地方都能用。安装包是通用二进制无需担心芯片架构问题。项目源自 Lisanet PDFWriter再往前可追溯到经典的 CUPS-PDF属于久经考验的技术路线。三步上手安装、选址、打出第一份 PDF第一步安装有两种方式二选一直接安装项目提供的 pkg 安装包推荐安装器会自动完成驱动注册或者克隆源码自行编译编译方法见文末卸载与源码编译一节。第二步指定 PDF 输出位置安装完成后安装器会自动打开PDFWriter Utility配置工具。界面很简洁就两个按钮点击Create PDF Destination Folder在弹出的面板里选一个你顺手的文件夹比如文稿/PDF_Output。这里有两个小坑要提前知道如果系统提示需要先打印一份文档说明你的个人目录还没生成——随便用 PDFwriter 打印一份测试文档再回来操作即可选好文件夹后务必退出QuitUtility安装流程才算真正收尾。第三步打印之后的使用就简单到极致在任何应用里按⌘ P打印机选PDFwriter点击打印。文档就会以 PDF 形式自动出现在你指定的文件夹里全程不需要再碰一次文件对话框。同一台 Mac 的其他人怎么用如果这台电脑还有别的用户他们不需要重新安装——在系统设置 → 打印机与扫描仪里选中 PDFwriter通过Options Supplies → Utility标签页的Open Printer Utility按钮就能打开同一个配置工具创建属于自己的输出目录。打印出来的文件都存在哪儿一人一个专属抽屉这里有个值得了解的细节你选的那个目标文件夹其实是一个符号链接——真正的文件物理上存放在/var/spool/pdfwriter/用户名/目录下。为什么要绕这么一圈因为这种设计把存储位置和用户入口分开了系统路径稳定后端永远往固定的 spool 目录写文件权限清晰可控你喜欢的路径只是入口Finder 里看到的文件夹指向同一个位置两边都能访问。更重要的是多用户隔离。每个用户拥有独立目录彼此看不到对方的文件打印来源输出目录目录权限文件权限本机账户用户/var/spool/pdfwriter/用户名/700仅本人可进600仅本人可读写匿名打印任务/var/spool/pdfwriter/anonymous users/777666文件属主与你的系统账户严格绑定同时归属打印组_lp。后端还会给目录配上 PDF 文件夹图标方便你在 Finder 里一眼认出。顺带一提所有文件都在本机硬盘上不经过任何云端对注重隐私的场景很友好。文件名的小聪明自动命名与重名冲突处理这个项目在起名上花了不少心思值得专门说说。默认情况下PDF 文件名直接取打印任务的标题也就是文档名自动补上.pdf后缀。但真实世界的文档标题千奇百怪于是后端做了几层防护防路径注入标题里的/会被替换成:避免文件名里藏路径的问题防超长标题超过 200 字符会被截断兜底命名从命令行管道输入且没指定标题时标题显示为(stdin)此时文件统一命名为Untitled.pdf重名不覆盖如果目标文件名已存在自动追加-1、-2这样的数字后缀旧文件永远不会被悄悄覆盖。最后一条的实现也值得一提后端用O_CREAT|O_EXCL标志原子地创建文件——先探测再创建的传统写法存在检查与执行之间的时间差而原子创建从根上消灭了并发覆盖的可能。也就是说即使多个打印任务同时到达也不会出现两个任务争抢同一个文件名的状况。这几行代码是main.swift里最值得读的部分。进阶玩法用命令行批量转换 PDF图形界面适合单发操作但如果你有一批文件要处理命令行才是效率之王。lpr是 macOS 自带的打印命令配合 PDFwriter 可以这样用# 把一批 PDF 批量打印到输出目录 for f in ~/待处理/*.pdf; do lpr -P PDFwriter $f done这段命令逐个把文件交给 PDFwriter生成的 PDF 会以原标题落在输出目录。如果想自定义文件名用-T参数指定任务标题即可cat 报告.pdf | lpr -P PDFwriter -T 季度报告-2026这里需要注意后端只认%PDF文件头如果输入的不是 PDF比如纯文本CUPS 会尝试用系统自带的文本转 PDF 过滤器处理格式不兼容的任务会被直接取消。所以批量转换时源文件最好是 PDF或者先经过能导出 PDF 的应用。再进一步你还可以把它接进自动化工作流——比如用 Automator 建一个文件夹操作监听某个目录新文件出现就自动执行lpr -P PDFwriter实现扔进去就转成 PDF的免手动体验。核心命令就一条剩下的是组合想象力。你想做的事推荐做法偶尔存一两个网页/文档应用里⌘ P选 PDFwriter一批 PDF 统一转存循环执行lpr -P PDFwriter想自定义输出文件名lpr -T 自定义标题新文件自动转 PDFAutomator 文件夹操作 / fswatch 监听后 lpr常见问题答疑新手最容易踩的四个坑Q1打印对话框里找不到 PDFwriter 打印机先确认安装完成后是否退出了 Utility没有退出的话安装流程未收尾再检查驱动目录/Library/Printers/RWTS/PDFwriter/是否存在都不行就重新运行一次安装包。Q2创建目标文件夹时报先打印一份文档这是正常的引导提示——你的个人 spool 目录还没生成。随便用 PDFwriter 打印一份测试文档再回来创建文件夹即可。Q3想换个输出目录怎么办配置工具明确提示替换已存在的位置不受支持。正确的做法是删掉旧的符号链接重新打开 Utility 创建新位置或者直接手动用ln -s把新目录指向/var/spool/pdfwriter/用户名。Q4生成的 PDF 打不开多半是打印了不兼容的输入格式。后端会因为数据不是有效 PDF 而取消任务排查时可以查看 CUPS 日志/var/log/cups/error_log里面会有具体原因。Q5同一台电脑的其他人能看到我的 PDF 吗不能。个人目录权限是 700只有文件属主本人能进入多用户之间天然隔离。卸载与源码编译装上容易卸下也容易卸载同样走配置工具打开 PDFWriter Utility点击Reveal Uninstall script在 Finder 打开的目录里运行uninstall脚本输入管理员密码即可。卸载会移除打印机配置、驱动文件和 CUPS 后端注册但保留你已经生成的 PDF 文件不用担心数据丢失。想从源码自己编译也简单git clone https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter cd RWTS-PDFwriter ./build/buildscript.sh需要先装好 Xcode 命令行工具。脚本会调用xcodebuild编译驱动与配置工具再用pkgbuild/productbuild打出一个带安装界面的 pkg 安装包。如果你有 Apple 开发者账号想签名公证加上-n 你的钥匙串配置文件参数即可。整个构建流程很干净值得对照build/buildscript.sh读一遍能学到不少 macOS 安装包制作的知识。延伸方向与资源清单目前 RWTS-PDFwriter 刻意保持单功能极简——只做打印转 PDF 这一件事但它的架构为扩展留足了空间输出到云存储、生成 PDF/A 归档格式、自动加水印与数字签名、提供 REST API 供第三方调用都是可以探索的方向。如果你动手能力强完全可以 fork 一份做自己的定制版。最后附上项目的核心资源路径按需取用pdfwriter/main.swift—— CUPS 后端核心实现文件校验、命名、权限都在这里PDFWriter Utility/ContentView.swift—— SwiftUI 配置工具源码build/PDFWriter.drv—— 打印机驱动定义PPD 源文件可了解打印机如何注册进系统build/buildscript.sh—— 一键打包安装器的构建脚本README.md—— 官方使用说明。给不同人群的下一步建议普通用户直接安装官方 pkg享受打印即存档的便利技术用户把lpr命令接进自己的脚本和自动化流程开发者则可以从main.swift入手学习如何用 Swift 写一个生产级的 CUPS 后端。一台免费、本地、开源的虚拟打印机换来的是每天省下的无数次另存为这笔账怎么算都划算。【免费下载链接】RWTS-PDFwriterAn OSX print to pdf-file printer driver项目地址: https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考