Bạn có biết rằng file PDF – định dạng tài liệu quen thuộc mà chúng ta thường dùng để đọc sách, ký hợp đồng hay chia sẻ thông tin – lại có thể làm được nhiều điều hơn thế? Trong thế giới công nghệ luôn đổi mới, những nhà phát triển sáng tạo đã biến PDF thành một môi trường chạy ứng dụng, từ các trò chơi kinh điển đến cả một hệ điều hành Linux hoàn chỉnh. Điều này có thể khiến nhiều người bất ngờ, nhưng đây là một thực tế đang mở ra những khả năng thú vị cho tương lai của định dạng tài liệu tưởng chừng tĩnh này.
Bài viết này sẽ đưa bạn đi sâu vào những dự án đột phá, nơi các lập trình viên tài năng đã thách thức giới hạn của PDF, biến nó từ một định dạng tài liệu đơn thuần thành một nền tảng thực thi mã độc đáo. Chúng ta sẽ cùng khám phá cách thức họ thực hiện điều này và những tiềm năng chưa được khai thác mà công nghệ này mang lại.
PDF Không Chỉ Là Tài Liệu: Sự Ra Đời của JavaScript Trong PDF
Sự thay đổi quan điểm về PDF bắt nguồn từ một khám phá thú vị về khả năng hỗ trợ scripting (viết mã) của các trình đọc PDF hiện đại. Cụ thể, các công cụ hiển thị PDF tích hợp sẵn trong trình duyệt như PDFium (của Chromium, dùng cho Chrome) và PDF.js (của Firefox) có khả năng thực thi một phần mã JavaScript.
Mặc dù các engine này cung cấp một môi trường JavaScript được “sandbox” (cô lập để đảm bảo an toàn), chỉ có quyền truy cập vào một số API cụ thể của PDF, nhưng nó đã đủ để tạo nên những điều phi thường. Nhiều API từng được quy định nhưng không được triển khai (do lo ngại về bảo mật trong bối cảnh trình duyệt web) thì lại có các API liên quan đến xác thực biểu mẫu được hỗ trợ. Chính khả năng thực thi JavaScript trong môi trường giới hạn này đã mở ra cánh cửa cho những dự án sáng tạo sau đây.
Tetris Trong PDF: Bước Khởi Đầu Đầy Bất Ngờ
Đầu năm 2025, một hiện tượng lạ bắt đầu nhen nhóm trong cộng đồng công nghệ khi Thomas Rinsma công bố dự án của mình trên X (trước đây là Twitter). Anh đã thành công trong việc đưa tựa game Tetris kinh điển chạy được ngay bên trong một tài liệu PDF. Để chứng minh điều này, Thomas thậm chí còn công khai tài liệu PDFris.pdf để 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 trong một file PDF trên trình duyệt.
Vậy làm thế nào mà Thomas có thể làm được điều đó? Anh đã chia sẻ chi tiết trên blog cá nhân của mình. Về cơ bản, dự án này tận dụng chính khả năng JavaScript sandboxed được triển khai trong PDFium (Chrome) và PDF.js (Firefox). Mã JavaScript thêm vào tài liệu PDF cho phép người dùng điều khiển trò chơi và cập nhật hiển thị màn hình một cách linh hoạt.
Đây thực sự là một dự án xuất sắc, và ngay lập tức, nhiều người dùng đã đặt câu hỏi liệu có ai đó sẽ port được tựa game Doom phức tạp hơn vào PDF hay không. Điều này dường như là một thách thức lớn, bởi Doom có nhiều thành phần chuyển động và yêu cầu hệ thống điều khiển phức tạp hơn Tetris rất nhiều.
Doom Trong PDF: Thử Thách Tưởng Chừng Bất Khả Thi
Câu trả lời cho câu hỏi về Doom không lâu sau đó đã xuất hiện, nhờ vào nhà phát triển vk6. Anh ấy đã nhận thấy những gì Tetris PDF đạt được và quyết tâm đưa tựa game bắn súng huyền thoại Doom lên định dạng tài liệu này. vk6 đã tận dụng phần lớn các kỹ thuật được sử dụng trong dự án Tetris PDF để đạt được những thành tựu lớn hơn.
Một điểm thuận lợi khi đưa Doom vào PDF là trò chơi này ban đầu đượ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 trò chơi, người chơi vẫn có thể trải nghiệm thoải mái chỉ với bàn phím. Nhờ đó, vk6_ đã sử dụng công nghệ nắm bắt đầu vào bàn phím tương tự như trong Tetris để tạo ra một phiên bản Doom có thể chơi được đầy đủ chức năng. Bạn có thể tự mình trải nghiệm bằng cách truy cập trang GitHub của DoomPDF hoặc tải trực tiếp tài liệu DoomPDF.
Linux Trong PDF: Đỉnh Cao Của Sự Sáng Tạo
Để khép lại chuỗi dự án đầy bất ngờ này, vk6_ tiếp tục đẩy xa giới hạn khi port toàn bộ một bản phân phối Linux vào 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 việc một hệ điều hành chạy bên trong một file PDF – thứ mà thông thường chỉ dùng cho hợp đồng hay thông cáo báo chí – đã là một kỳ tích đáng nể.
vk6_ đã giải thích cách anh ấy thực hiện điều này:
“Mã C có thể được biên dịch để chạy trong PDF bằng cách sử dụng phiên bản cũ của Emscripten 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 thử trải nghiệm, hãy truy cập trang GitHub của LinuxPDF để tìm liên kết đến tài liệu.
Tiềm Năng Chưa Được Khai Phá Của PDF
Với những khám phá đáng kinh ngạc rằng PDF có thể chạy mã thông qua các trình đọc của Chrome hoặc Firefox, cộng đồng công nghệ đã có rất nhiều niềm vui khi đưa các ứng dụng độc đáo vào định dạng này. Điều này chứng tỏ PDF không còn là một tài liệu tĩnh mà đã trở thành một nền tảng linh hoạt, mở ra cánh cửa cho vô vàn khả năng mới.
Khi công nghệ này còn tương đối mới, thật khó để dự đoán những gì mọi người sẽ làm được với PDF trong tương lai. Liệu chúng ta có thể thấy các ứng dụng phức tạp hơn, các công cụ tương tác chuyên nghiệp hay thậm chí là một hình thức phân phối phần mềm mới thông qua định dạng này? Chỉ thời gian mới có thể trả lời, nhưng chắc chắn rằng, PDF đã chứng minh nó còn nhiều điều để chúng ta khám phá.
Bạn nghĩ sao về khả năng chạy ứng dụng trong file PDF này? 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 theo dõi dancongnghe.net để cập nhật những thông tin công nghệ mới nhất!