linuxpdf开源项目通过嵌入 RISC-V 仿真器到 PDF 文件中,实现在 PDF 阅读器中启动和交互 Linux 系统的功能。该项目延续了作者此前”DoomPDF”的创新思路(即在PDF中运行《毁灭战士》游戏),将动态计算能力注入传统认知中的静态文档格式,在浏览器中即可体验完整的Linux系统操作。项目遵守GPL3.0开源协议。

技术实现原理

  1. PDF的隐藏潜力
    虽然现代浏览器仅支持有限的JavaScript API,但Adobe Acrobat实现的完整PDF规范包含3D渲染、HTTP请求等强大功能。该项目利用这一特性,通过受限的API层构建计算环境。
  2. 模拟器移植
    • 使用Emscripten 1.39.20将C语言编写的TinyEMU模拟器编译为asm.js
    • 创新显示方案:通过每行像素对应独立文本框,用ASCII字符模拟图形界面
    • 虚拟化交互:按钮式虚拟键盘+文本输入框实现键鼠模拟
  3. 系统支持
    • 32位Buildroot系统(默认)
    • 64位Alpine Linux系统(速度减半)

功能亮点

  • 跨平台运行:支持Chromium/Firefox等现代浏览器
  • 完整系统体验:包含命令行操作、文本编辑等基础功能
  • 开源可拓展:支持自定义系统镜像编译

这个实验性项目不仅展示了PDF格式的潜在可能性,更突破了文档与操作系统的传统边界。尽管受限于性能,但其在浏览器沙箱环境实现完整系统模拟的思路,为WebAssembly应用、在线教育演示等场景提供了新的技术想象空间。

源代码:https://github.com/ading2210/linuxpdf

官网演示:https://linux.doompdf.dev/