Bạn có thể nghĩ rằng PDF chỉ đơn thuần là một định dạng tài liệu tĩnh dùng để đọc và ký kết. Nhưng thực tế, khả năng của PDF đã vượt xa những gì chúng ta vẫn hình dung, bởi lẽ bạn hoàn toàn có thể chạy các ứng dụng ngay bên trong chúng. Nếu bạn cũng ngạc nhiên như chúng tôi, hãy cùng khám phá những dự án công nghệ đột phá đã biến điều tưởng chừng không thể này thành hiện thực.
Tetris Trong PDF: Khởi Đầu Một Kỷ Nguyên Mới
“Viên gạch” đầu tiên: Thomas Rinsma và dự án Tetris
Vào đầu năm 2025, một điều kỳ diệu đã bắt đầu được hé lộ trong cộng đồng công nghệ. Thomas Rinsma đã công bố một dự án trên nền tảng X, nơi anh ấy thành công trong việc chạy tựa game kinh điển Tetris ngay trong một tài liệu PDF. Để chứng minh thành quả của mình, anh thậm chí đã chia sẻ tài liệu này để mọi người có thể tự mình trải nghiệm.
Giao diện game Tetris đang chạy trực tiếp bên trong tài liệu PDF
Vậy làm thế nào mà Thomas có thể thực hiện được điều phi thường này? Bạn có thể tìm hiểu chi tiết trên blog của anh ấy, nơi Thomas đã giải thích cặn kẽ về quá trình đạt được thành tựu này. Một điểm đáng chú ý là:
“…hóa ra cả PDFium (trình đọc PDF của Chromium) và PDF.js (của Firefox) đều triển khai một chút hỗ trợ kịch bản. Điều này đã khơi gợi sự tò mò của tôi, vì tôi thường coi chúng là những công cụ hiện đại/tĩnh/an toàn hơn. Cả hai công cụ đều cung cấp một môi trường chạy JavaScript được giới hạn (sandboxed runtime), chỉ có quyền truy cập vào một số API cụ thể của PDF. Tuy nhiên, nhiều API từng được quy định (và thậm chí được một số trình đọc hỗ trợ) lại không được triển khai, có lẽ vì chúng không thực sự có ý nghĩa (bảo mật) từ góc độ trình duyệt web. Những gì được triển khai chủ yếu liên quan đến việc xác thực biểu mẫu.”
Do đó, chỉ cần bạn mở tài liệu PDF bằng trình duyệt Chrome hoặc Firefox, một đoạn mã bổ sung được nhúng vào môi trường cho phép bạn thực hiện các tác vụ như điều khiển game và cập nhật hiển thị. Đây là một dự án xuất sắc, và như dự đoán, nhiều người trong phần bình luận của bài đăng gốc trên X đã hỏi liệu có thể chạy Doom trên PDF không. Tuy nhiên, Doom là một trò chơi phức tạp hơn nhiều so với Tetris, với nhiều phần chuyển động và yêu cầu điều khiển đa dạng. Việc chạy Doom trong PDF dường như là một thách thức lớn.
Doom Trong PDF: “Bất Khả Thi” Đã Thành Hiện Thực
Bước tiến ngoạn mục của vk6_
Đây là lúc vk6 xuất hiện. Anh ấy nhận thấy những gì Tetris PDF đã đạt được và quyết định chấp nhận thử thách chuyển Doom sang định dạng tài liệu này. Bằng cách tận dụng nhiều nguyên lý làm nên thành công của Tetris PDF, vk6 đã đạt được những điều vĩ đại hơn.
Điểm thú vị khi đưa Doom vào tài liệu PDF là trò chơi này được thiết kế mà không cần đến chuột. Mặc dù có thể kích hoạt điều khiển chuột trong cài đặt game, bạn hoàn toàn có thể chơi thoải mái chỉ bằng bàn phím. Do đó, vk6_ đã sử dụng cùng công nghệ chụp tín hiệu đầu vào từ bàn phím như trong game Tetris để tạo ra một phiên bản Doom có thể chơi được đầy đủ.
Nếu bạn muốn thử sức, hãy truy cập trang GitHub của DoomPDF để xem mã nguồn hoặc ghé thăm trang tài liệu DoomPDF để trực tiếp trải nghiệm.
Không Chỉ Game: Linux Chạy “Mượt Mà” Trong PDF
Đỉnh cao kỹ thuật: Hệ điều hành trên tài liệu
Để kết thúc chuỗi bất ngờ này, vk6_ tiếp tục port (chuyển đổi) toàn bộ một bản phân phối Linux vào một tài liệu PDF, và điều đáng kinh ngạc là nó hoàn toàn có thể sử dụng được. Mặc dù không có giao diện người dùng đẹp mắt, nhưng khi bạn đang sử dụng một hệ điều hành chạy bên trong thứ mà thường được dùng cho hợp đồng hay thông cáo báo chí, bạn thực sự không có gì để phàn nàn.
Dưới đây là cách mà vk6_ đã thực hiện:
Mã C có thể được biên dịch để chạy trong PDF bằng cách sử dụng một phiên bản Emscripten cũ hơn, nhắm mục tiêu asm.js thay vì WebAssembly. Với cách này, tôi có thể biên dịch một phiên bản đã sửa đổi của trình giả lập TinyEMU RISC-V sang asm.js, và nó có thể chạy trong PDF. Đối với đầu vào và đầu ra, tôi tái sử dụng cùng mã hiển thị mà tôi đã dùng cho DoomPDF. Nó hoạt động bằng cách sử dụng một trường văn bản riêng cho mỗi hàng pixel trên màn hình, với nội dung được đặt thành các ký tự ASCII khác nhau. Đối với đầu vào, có một bàn phím ảo được triển khai với nhiều nút bấm, và một hộp văn bản bạn có thể gõ vào để gửi các phím bấm đến máy ảo.
Nếu bạn muốn khám phá, hãy truy cập trang GitHub của LinuxPDF để tìm liên kết đến tài liệu.
PDF: Hơn Cả Một Tài Liệu Đơn Thuần
Với việc khám phá ra rằng PDF có thể chạy mã thông qua Chrome hoặc Firefox, nhiều người đã rất hào hứng thử nghiệm những khả năng mới mẻ này. Công nghệ này vẫn còn tương đối mới, và ai biết được, trong tương lai, chúng ta sẽ còn chứng kiến những ứng dụng độc đáo nào nữa mà mọi người có thể phát triển với định dạng PDF? Hãy chia sẻ ý kiến của bạn về những khả năng tiềm ẩn của PDF trong phần bình luận bên dưới nhé!