Bạn có thể nghĩ rằng các tài liệu PDF chỉ là những tệp tin tĩnh chứa văn bản, hình ảnh và đôi khi là các biểu mẫu. Tuy nhiên, các trình duyệt web hiện đại đang dần mở khóa nhiều tính năng tiềm ẩn hơn cho tài liệu PDF, minh chứng rõ ràng nhất là việc port thành công các tựa game kinh điển như Tetris và DOOM trực tiếp vào định dạng này. Đây là một khám phá thú vị, thay đổi cách chúng ta nhìn nhận về khả năng của file PDF.
Tetris Chơi Được Trực Tiếp Trong PDF: Điều Tưởng Chừng Không Thể
Thomas Rinsma, một nhà phân tích bảo mật và nhà phát triển, đã công bố bản demo hoạt động của trò chơi xếp gạch kinh điển Tetris chạy hoàn toàn trong một file PDF. Trò chơi này có thể chơi được trên Google Chrome và các trình duyệt dựa trên Chromium khác, cũng như Mozilla Firefox. Bạn có thể tự mình trải nghiệm với tệp PDF trên trang web của Rinsma.
Game Tetris cổ điển đang chạy trên trình duyệt web, được nhúng hoàn toàn trong một file PDF với các nút điều khiển.
Blog của Thomas Rinsma giải thích rằng: “Khá nhiều người đã biết rằng PDF có thể có nhiều tính năng phong phú khi mở trong Adobe Acrobat/Reader, với hỗ trợ script cho các biểu mẫu và nội dung động khác. Tuy nhiên, hóa ra cả PDFium (trình đọc PDF của Chromium) và PDF.js (của Firefox) cũng triển khai một chút hỗ trợ script. Các tệp PDF có thể chứa các trường nhập văn bản, nút bấm, hộp kiểm, v.v. Các bộ xử lý JavaScript có thể được gắn với các sự kiện trên các widget này (trường), và các thuộc tính của các trường này có thể được sửa đổi từ bên trong JavaScript.”
Về cơ bản, các chức năng scripting ban đầu được dùng để kiểm tra nội dung biểu mẫu có thể được tận dụng để sửa đổi nội dung của file PDF. Tài liệu tạo ra một lưới các nút có thể được hiển thị hoặc ẩn theo lập trình, hoạt động như các “pixel”. Trò chơi được điều khiển thông qua các nút bấm có thể nhấp chuột hoặc các phím bàn phím được gõ vào một trường văn bản.
Đưa DOOM Lên PDF: Một Bước Tiến Đáng Kinh Ngạc
Rinsma sau đó đã nâng ý tưởng này lên một tầm cao mới khi hoàn thành việc port tựa game bắn súng góc nhìn thứ nhất năm 1993, DOOM, vào một file PDF. Dự án này dựa trên DOOM-ASCII, một phiên bản DOOM hoạt động được trong môi trường chỉ có văn bản với các ký tự ASCII, được biên dịch cho trình duyệt web bằng WebAssembly và Emscripten. Bạn có thể thử nghiệm DoomPDF trong trình duyệt web của mình—hiện tại, phiên bản này chỉ hoạt động với Chrome và các trình duyệt dựa trên Chromium.
Giao diện game bắn súng DOOM hiển thị bên trong trình duyệt Google Chrome, được phát triển dưới dạng file DoomPDF với đồ họa ASCII.
Phiên bản DOOM port chắc chắn chạy chậm trên Chrome 134 trên M1 Mac Mini, nhưng nó thực sự hoạt động. Bài viết trên blog của Rinsma cũng đề cập rằng màn hình game chỉ hiển thị đơn sắc, không có màu như dự án DOOM-ASCII gốc. Lý do là màu sắc của các “pixel” nút bấm không thể được cập nhật nếu không phải thay thế chúng bằng các phần tử khác. Rinsma giải thích: “Ngay cả đối với một màn hình GameBoy (160x144x3) thì con số này cũng lên tới gần 70K trường, làm chậm mọi thứ quá nhiều.”
Mã nguồn của PDF Tetris và DoomPDF đều có sẵn trên GitHub. Những dự án độc đáo này hoàn toàn phù hợp với các bản port DOOM thú vị gần đây như DOOM II trên máy pinball.
Kết Luận
Những dự án như Tetris và DOOM trong PDF đã chứng minh rằng file PDF không chỉ là tài liệu tĩnh mà còn có thể chứa đựng những ứng dụng tương tác phức tạp. Khả năng scripting giới hạn trong các trình duyệt hiện đại đã mở ra một hướng đi mới đầy bất ngờ cho định dạng tài liệu quen thuộc này. Mặc dù vẫn còn những hạn chế về hiệu suất và khả năng đồ họa, nhưng đây là một minh chứng ấn tượng cho sự sáng tạo và khả năng tận dụng công nghệ của các nhà phát triển.
Bạn nghĩ sao về khả năng chạy game ngay trong file PDF? Liệu điều này có mở ra những ứng dụng mới nào trong tương lai? Hãy chia sẻ ý kiến của bạn trong phần bình luận bên dưới và đừng quên khám phá thêm các thủ thuật công nghệ độc đáo khác trên tincongnghemoi.com!
Nguồn tham khảo: Thomas Rinsma