4作者: simoneamico5 个月前
嗨,HN! 我刚刚部署了一个工具,可以在不破坏图像的情况下以深色模式渲染 PDF。内部和外部链接保持不变,并且我决定实现导出功能,因为我不喜欢平台锁定:你可以在你喜欢的阅读器上、任何设备上查看你的深色 PDF。 这首先是一个源于个人需求的副项目。 当我在工厂里阅读最终帮助我摆脱困境的书籍时,我遇到了一个问题,许多学习材料和书籍包含图像和图表,这迫使我,使用当时可用的深色阅读器,总是保持原始文件在多任务处理中,因为图像变得,说得委婉一点,很奇怪。 我希望它可以帮助一些有同样需求的人。我认为它对研究人员可能非常有用,但只有未来的采用才能说明问题。 基于这个前提,我想分享一下促成这一切的选择。为此,我将介绍 veil 从原始 PDF 中创建的三个层: * **第 1 层:CSS 滤镜。** 我在主画布上使用 `invert(0.86) hue-rotate(180deg)`。我使用 0.86 而不是 1.0,因为我发现完全反转会产生纯黑和纯白,这对于长时间阅读来说过于刺眼。0.86 产生柔和的深灰色(大约 #242424,尽管这取决于文档的白色)和柔和的白色(大约 #DBDBDB)用于文本,我发现这是阅读数小时最舒适的值。 * **第 2 层:图像保护。** 第二个画布放置在第一个画布的顶部,这次没有滤镜。 通过 PDF.js 的公共 API `getOperatorList()`,我遍历 PDF 的操作符列表并重建 CTM 堆栈,即 PDF 用于定位页面上每个对象的保存、恢复和变换操作。当我遇到 `paintImageXObject`(PDF.js v5 中的操作码 85)时,当前的变换矩阵会给我图像的确切边界。此时,我将这些像素从干净的渲染复制到覆盖层上。我没有 fork PDF.js,因为考虑到代码库的长度和频繁的更新,这将成为一场维护噩梦。图像也会接受 OCR 处理:图表和图像中包含的文本变得可选择,就像页面上的任何其他文本一样。此时,我们有反转的文本和完好的图像。但是如果页面已经是深色的呢?也许章节标题页面是黑色背景和白色文本?下一层处理这个问题。 * **第 3 层:已是深色页面检测。** 渲染后,通过对页面的边缘和角落进行采样来测量背景亮度(在那里你最有可能找到纯背景,没有文本或图像)。使用 BT.601 公式通过加权三个颜色通道来计算感知亮度,就像人眼看到的那样:绿色占 58.7%,红色占 29.9%,蓝色占 11.4%。这些权重反映了生物学:眼睛在自然环境中进化,区分绿色阴影(植被,草中的捕食者)是生存问题,而蓝色(天空,水)则不太关键。如果平均亮度低于 40%,则页面被标记为已是深色,并跳过反转,返回原始页面。带有深色背景的演示幻灯片保持原样,而不是被反转成刺眼的东西。 扫描的文档会被自动检测到,并通过 Tesseract.js 接收 OCR,即使在本质上是图像的 PDF 上,文本也可以被选择和复制。 所有操作都在本地运行,没有使用任何框架,只有原生 JS,这就是为什么它是一个可安装的 PWA,也可以离线工作。 这是该应用程序的链接以及存储库:[https://veil.simoneamico.com](https://veil.simoneamico.com) | [https://github.com/simoneamico-ux-dev/veil](https://github.com/simoneamico-ux-dev/veil) 我希望 veil 能让你的阅读更愉快。我欢迎任何反馈。谢谢大家
3作者: kathir055 个月前
我们都从一个想法开始,0 个客户,0 个关注者,对我们初创企业的长期发展方向也毫无头绪。<p>在某个时刻,你坚信这个想法会成功,值得全职投入,即使一开始没有任何收入。<p>对于 HuntYourTribe 来说,在 2 个月后,我们收到了 10 个由陌生人构建的作品集,有些人甚至在他们的 Github 个人资料中保留了链接。就是它了!<p>即使没有付费客户,我们还是决定全职投入这个创业迷宫,现在已经有 10 多个付费客户了。<p>你的转折点是什么?
2作者: plawlost5 个月前
rses claude with codex --last 就是这样。读取 Codex 会话(任务、git log、最后 N 轮对话、会话文件指针),构建结构化的交接信息,然后用它作为第一条消息启动 Claude。在 Claude Code、Codex CLI 和 OpenCode 之间实现所有 6 个方向的交互。 为高级用户提供的简写:rses cc w cdx --last 约 1200 行代码,一个 npm 依赖(commander),无需配置。使用 Node 22+ 内置的 SQLite 进行会话索引。 npm i -g rses-cli https://github.com/yazcaleb/rses