ممکن است PDF ها را به عنوان اسناد ثابتی تصور کنید که فقط برای کلمات، تصاویر و گاهاً فرم ها در نظر گرفته شده اند. با این حال، مرورگرهای مدرن می توانند قفل ویژگی های بیشتری را برای اسناد PDF باز کنند، همانطور که توسط پورت های جدید Tetris و DOOM ثابت شده است.
توماس رینسما، تحلیلگر و توسعهدهنده امنیتی، نمایشی از بازی پازل کلاسیک Tetris را منتشر کرد که به طور کامل در قالب PDF اجرا میشود. در Google Chrome و سایر مرورگرهای مبتنی بر Chromium و همچنین Mozilla Firefox قابل پخش است. می توانید آن را امتحان کنید فایل PDF در وب سایت Rinsma.
پست وبلاگ توضیح میدهد: «به خوبی شناخته شده است که فایلهای PDF زمانی که در Adobe Acrobat/Reader باز میشوند، با پشتیبانی از اسکریپت برای فرمها و سایر محتوای پویا، میتوانند از ویژگیهای کامل برخوردار باشند. با این حال، به نظر می رسد که هم PDFium (خواننده PDF Chromium) و هم PDF.js (Firefox) اندکی از اسکریپت نویسی نیز پشتیبانی می کنند. (…) فایلهای PDF میتوانند شامل فیلدهای ورودی متن، دکمهها، چک باکسها و غیره باشند. کنترلکنندههای جاوا اسکریپت را میتوان به رویدادهای آن ویجتها («فیلدها») متصل کرد و ویژگیهای این فیلدها را میتوان از داخل جاوا اسکریپت تغییر داد.
اساساً، توابع اسکریپتنویسی که برای بررسی محتوای فرمها در نظر گرفته شدهاند را میتوان برای تغییر محتوای PDF تغییر داد. این سند شبکهای از دکمهها را ایجاد میکند که میتوانند به صورت برنامهنویسی نشان داده یا پنهان شوند و مانند پیکسل عمل کنند. بازی از طریق دکمه های قابل کلیک یا کلیدهای صفحه کلید تایپ شده در یک فیلد متنی کنترل می شود.
سپس Rinsma این مفهوم را یک قدم فراتر برد و یک پورت از بازی تیراندازی اول شخص DOOM در سال ۱۹۹۳ را به یک PDF تکمیل کرد. بر اساس آن است پروژه DOOM-ASCII، یک نسخه کاربردی از DOOM قابل پخش در محیط های متنی با کاراکترهای ASCII، که برای مرورگرهای وب با استفاده از WebAssembly و نوشته ها. شما می توانید DoomPDF را در مرورگر وب خود امتحان کنید– این مورد در حال حاضر فقط با مرورگرهای مبتنی بر Chrome و Chromium کار می کند.
پورت DOOM قطعا در کروم ۱۳۴ در M1 Mac Mini من کند است، اما کار می کند. در پست وبلاگ اشاره شده است که نمایشگر بازی تک رنگ است، نه رنگی مانند پروژه اصلی DOOM-ASCII، زیرا رنگ دکمهها «پیکسلها» را نمیتوان بدون تعویض آنها با عناصر دیگر بهروزرسانی کرد. Rinsma توضیح داد: «حتی برای صفحه نمایش GameBoy (160x144x3)، این تقریباً ۷۰K میدان است که سرعت کار را بسیار کند می کند.»
کد منبع برای پی دی اف تتریس و DoomPDF در GitHub در دسترس هستند. این کاملاً با موارد اخیر مطابقت دارد پورت DOOM II روی دستگاه پین بال.
منبع: توماس رینسما
منبع