17 ms·
Show HN: Tetris in a PDF
I realized that the PDF engines of modern desktop browsers (PDFium and PDF.js) support JavaScript with enough I/O primitives to make a basic game like Tetris.
It was a bit tricky to find a union of features that work in both engines, but in the end it turns out that showing/hiding annotation "fields" works well to make monochrome pixels, and keyboard input can be achieved by typing in a text input box.
All in all it's quite janky but a nice reminder of how general purpose PDF scripting can be. The linked PDF is all ASCII so you can just open it in a text editor, or have a look at the source code here: https://github.com/ThomasRinsma/pdftris/blob/main/gengrid.py https://github.com/ThomasRinsma/pdftris/blob/main/gengrid.py
- maalber 2y agoThis is hilarious
- revskill 2y agoGenius you mean ?
- runnr_az 2y agoObviously a talented individual. Nice to see them wasting time making something ridiculous
- freedomben 2y agoI don't know how serious you are, but for others projects like this are virtually never a waste of time. There's opportunity cost of course, but that's very difficult to measure. I'm sure OP learned a ton about PDFs in the process, and there is/are no shortage of needs for PDF creation. More broadly they also deepened their knowledge of javascript and other things.
- lucianbr 2y agoWell, it's quite cool, but if PDF supports javascript, putting a javascript game in a PDF is something obviously possible. I don't know if it qualifies as genius. If the game was made from PostScript commands somehow, that would be genius. Anyway, I love this content on Hacker news, as opposed to people explaining how they want Apple to take their freedom away, because freedom is dangerous.
- swiftcoder 2y ago> as opposed to people explaining how they want Apple to take their freedom away, because freedom is dangerous May I be the first to reply that I am glad that this works in neither Safari nor Preview.app :)
- nickcageinacage 2y agoSo cool
- josefritzishere 2y agoBrilliant!
- frizlab 2y agoFortunately this does not work in Safari where the rendering is done natively.
- anothername12 2y agoDoes not even seem to be a valid PDF according to Preview.app
- swiftcoder 2y agoPreview implements a subset of the full capabilities of PDF, and in particular it does not implement the javascript interpreter.
- p0w3n3d 2y agoI like how you used "fortunately". For me too the most important in PDF is to print a good and accurate text and graphics (preferably vector graphics), which recently is not as easy as it would be possible
- bityard 2y agoNot just web browsers, Acrobat (and probably other PDF readers) have supported executing Javascript in PDFs for decades.
- unnouinceput 2y agoI was joking in 2007, when I was working at Siemens, to my boss, that an Excel cell can contain God and the Multiverse when I put an ActiveX inside that was basically a program I made which would draw a 3D animation based on parameters contained on other cells. Let's say the boss was impressed though for me was just basic OLE. I see from time to time that younger generations reinvent/rediscover the wheel and I chuckle.
- deleted 2y ago[deleted]
- brumar 2y agoThis is even in the ISO standard now
- pimlottc 2y agoWhich makes sense, why would browsers randomly add JS to PDF if it wasn’t already part of the standard?
- kzrdude 2y agoWhat a nightmare that JS is a part of the PDF standard. I suppose that it's optional.
- Aaron2222 2y agoDoesn't work in Preview unfortunately.
- jeffhuys 2y agoFortunately*
- Fernicia 2y agoBack in school pdfs would circulate that had a bunch of flash games on them. I have no idea how or who made them, but they let us play dolphin olympics on lab computers with no internet connection.
- doublerabbit 2y agoExcel for games and PowerPoint for stick animations. You'd spend hours in CAD class just creating PowerPoint animations and not doing any CAD. I regret this decision now and wish that I had paid some attention. 3D printers are cool and I have no idea how to design objects for it.
- phkahler 2y ago>> I do wish I did pay some attention to CAD now. I want a 3D printer and have no idea how to design objects for it. Get Solvespace: https://solvespace.com/index.pl https://solvespace.com/index.pl Do the tutorials. If/when you outgrow it, the concepts will carry over to FreeCAD which otherwise has a steeper learning curve but has more capabilities.
- smj-edison 2y agoAn aside, but I found FreeCAD to be a real pain. The dependency tracking across sketches is really quite horrid. If I have sketch2 linked to sketch1, and I delete a line in sketch1, it will arbitrarily reassign all the sketch2->sketch1 dependencies. Maybe they fixed that since I've used it, but I've transferred over to Onshape for all my hobby stuff... EDIT: looks like they finally addressed the topological naming problem, I guess I better give it a second chance!
- phkahler 2y agoSolvespace handles topological naming almost flawlessly. Even in a repeat group, the first and last copies of a sketch are "named" first and last rather than given a number. This is because constraints are often applied to those copies. This way they won't break if you go back and change the number of copies.
- amytimed 2y agoThis is awesome! I think you should add the explanation of how it works in the PDF itself as well
- seany 2y agoThis is great. Will probably give the fun police in r/k12sysadmin a heart attack.
- illegalmemory 2y agoNot only web but majorly all OS pdf renderers support JS. It used to be a major source of malware long back.
- autoexec 2y agoPDFs are still used to delver malware. Adobe gets picked on less often now since everyone has PDF readers in the browser but that just makes chrome the new target of choice (not that alternative viewers don't get attention too https://thehackernews.com/2024/05/foxit-pdf-reader-flaw-exploited-by.html https://thehackernews.com/2024/05/foxit-pdf-reader-flaw-expl...) but what I see most often in malicious PDF files recently are just links to websites that contain malware since they can work no matter what your viewer is.
- ykonstant 2y ago"used to be"
- MartinMond 2y agohttps://www.nutrient.io/blog/how-to-program-a-calculator-pdf/ https://www.nutrient.io/blog/how-to-program-a-calculator-pdf... See here for how we did a calculator in a PDF
- meddah 2y agoOops. I realized now, unknown PDFs are not safe.
- deleted 2y ago[deleted]
- alana314 2y agoWow, I had no idea PDFs could be this dynamic. Doesn't work in Mac OS preview or quicklook but works great in chrome.
- danudey 2y agoThe Canadian passport application PDF has Javascript that updates a QR code in the top-right corner of the first page whenever you change or fill in a field. https://www.canada.ca/content/dam/ircc/migration/ircc/english/passport/forms/pdf/pptc153.pdf https://www.canada.ca/content/dam/ircc/migration/ircc/englis... Seems like a pretty genius way of avoiding transcription errors. When I dropped my passport application off yesterday the passport officer marked up a few things on the PDF and then scanned it in, so I assume that they use the QR code to automatically fill in the data as I entered it and then make any updates necessary from after-the-fact modifications manually. Only seemed to work correctly in Acrobat Reader, but I haven't tried others (like Foxit) or anything.
- audiodude 2y agoYes, elsewhere in this thread people were complaining about how Canadian government PDFs only work in Acrobat Reader on Windows and what a PITA that is.
- cool-RR 2y agoI printed it but it doesn't work :(
- deleted 2y ago[deleted]
- weinzierl 2y ago"It was a bit tricky to find a union of features that work in both engines [..]" I am curious what the constraints are to make this work and in which environments it does? Does it work in PDF viewers outside the browser? Is there documentation what is available in which environment? What is enabled by default, can be switched on or off?
- ThomasRinsma 2y agoI barely looked at Adobe Reader so not sure about that one, it definitely does not work with this PDF though, likely because it's not compliant in several ways. Besides that I wouldn't be surprised if it supports all the required JS APIs and more, just possibly behind some permission prompts. It might work in Foxit as I believe it supports some scripting. Most of the other native PDF renderers are more static, as far as I know. In either case, I was most interested in the browser-native engines, as I always thought of them as more "static"/limited. As for documentation on specific features: to be honest, I just looked at the implementations of PDF.js and PDFium. Both only support a subset of the "standard" API, likely for security reasons. But PDF.js for example allows changing a field's background color (colored pixels!), and PDFium allows modifying their position/bounding box (I tried a high res color display by moving a row vertically as if it's a scanline, but things become quite laggy).
- throwaway86530 2y agoI got the same conclusions. Unless I misunderstood, Pdfium is based on Foxit so that should work. And as both pdf.js and pdfium decided to implement only a thin part of the adobe js sdk, then there are good chances that it works there too.
- KeplerBoy 2y agoI guess it should read intersection instead of union.
- ThomasRinsma 2y agoOops, yeah :)
- chaps 2y agoThey also support iframes! The absolute madness of PDFs is a world wonder. But I'm really still not sure we could do without them.
- bityard 2y agoGzipped PostScript documents were fairly popular during the 90's and are functionally identical to PDFs for 99% of use cases. (PDF is essentially PostScript, but with more features.)
- btown 2y agoI, for one, was surprised that Chrome's PDF renderer would allow persistent JS code like this to run - not just limited code in response to user actions, but a real game loop. But there's a spec for all this and everything! https://www.t10.org/ftp/js_api_reference.pdf https://www.t10.org/ftp/js_api_reference.pdf (2007) - be warned, the light of Ecma TC39 standardization does not extend to this place. Chromium's implementation of setInterval for instance (which, in this world, takes a string to evaluate): https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fxjs/cjs_app.cpp#54 https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fxj... -> https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fxjs/cjs_app.cpp#302 https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fxj... From a security perspective, they're able to build on top of V8 isolate primitives and Chrome's sandboxing systems - but from the logs, security improvements in PDFium are being continuously developed as recently as the past few weeks! I feel like I've stumbled upon a parallel universe, in the best possible way.
- internetter 2y agoAtari Breakout for PDF: https://cdn.jsdelivr.net/gh/osnr/horrifying-pdf-experiments@master/breakout.pdf https://cdn.jsdelivr.net/gh/osnr/horrifying-pdf-experiments@...
- a3w 2y agoI see only a red half of the page, and then two pages of text.
- mati365 2y agoSo it's possible to port C compiler to PDF. Compiler is already done https://github.com/Mati365/ts-c-compiler https://github.com/Mati365/ts-c-compiler. We can run DOS in PDF basically..
- ohnoAmsorry 2y ago[flagged]
- drdeca 2y agoHuh? Did you comment this in reply to something other than what you intended to reply to?
- mati365 2y agoThese 'tricks' are exactly what makes programming the passion I love. Thanks for capturing the difference between coding for joy and coding for a paycheck so succinctly. Also, it's not a wrapper—it's a full parser and compiler.
- bowmessage 2y agoAdobe Acrobat DOOM Pro™
- GaggiX 2y agoKinda happy that Evince doesn't start executing JS when opening a PDF.
- freedomben 2y agoYou glorious bastard, what a cool project! This is already a contender for most hacker project of the year :-) (below is not serious) I would advise people against using this in production though because it's still missing some critical features. For example: 1. The Javascript stops working when printed to physical paper. The resulting paper just has a static image and the controls no longer work. 2. It doesn't work properly in Evince. It just shows an error "The document contains only empty pages"
- zknowledge 2y agohahaha I wish you almost didn't include the parenthesis. I've had some clients who would definitely email me that point #1.
- ChrisMarshallNY 2y agoNo. They would fax it to you.
- nadis 2y ago"The Javascript stops working when printed to physical paper. The resulting paper just has a static image and the controls no longer work." -- this comment made my me laugh/choke on my coffee and I have no regrets.
- ikari_pl 2y agoYou must have never browsed IT support tickets. Oh the horrors...
- nadis 2y agoInternally laughing and crying at the same time. "Oh the horrors..." is exactly right.
- VagabundoP 2y ago"Its broke" What's broke? How is it broke. Why send a one liner?!? So many questions.
- miningape 2y agoI just wish I could print this
- potatoman22 2y agoThis is a good reminder for why to not download random PDFs. One of the mechanisms of the Pegasus spyware was emulating a computer inside a PDF. https://en.wikipedia.org/wiki/Pegasus_(spyware)#Vulnerabilities https://en.wikipedia.org/wiki/Pegasus_(spyware)#Vulnerabilit...
- geor9e 2y agoA tetris PDF could be in a 1 pixel iframe right on this page and you'd never know it. So it doesn't require any user action to download one.
- sexy_seedbox 2y agoThat's why you run NoScript along side with UBO
- geor9e 2y agoI'm pretty sure noscript will break 90% of the webpages I visit. I just rawdog the internet. If Chrome gets 0day'd then a lot of us are going down - at least I'll have company.
- throwaway2037 2y ago> If Chrome gets 0day'd then a lot of us are going down If anything, Google would have the correct incentive to protect itself from a zero-day exploit. I guess they could release a patched version internally only, but I doubt it. I do think they want the image of Chrome to be relatively positive and giant security hole (patched slowed) would do them no favours.
- grgergo 2y agoThis PDF still runs with JS disabled in both of those, and in Firefox about:config...
- poincaredisk 2y agoThe vulnerability was in images parsing, and exploit was distributed by sending an imessage to the target. So don't open any images, and don't read imessages. They are also known to use browser exploits, so don't visit random websites. That was sarcasm, in case it's not clear over the internet. Telling people to avoid "suspicious" pdfs/websites is common but ultimately not very useful advice. The real takeaway is: don't become a target of a nation state intelligence agency. If you own a phone, they can take over it, and there's nothing you can do.
- izakfr 2y agoThis is really awesome, great job!
- riffraff 2y agocould you use checkboxes for display? I'm no sure if you can style them, but I think you can access them in JS, and that should result in having basic "pixels" which you can use to draw anything.
- pbhjpbhj 2y agoThat sounds like something CodeBullet mighty have done!?
- brumar 2y agoI made a game of life in pdf using this technique, but pdf.js is less open to chromium to respect the standard on letting the pdf designer defining the ON and OFF state. One other way would be to use normal text fields and leveraging custom fonts. I think there are an enormous potential with fonts in the realm of pdf hacking. I think there is also a story of past vuln on pdf.js because fonts were evaluated outside the sandbox.
- jiveturkey 2y agodidn't work in safari's embedded reader. no text either, just a blank page. or did i not wait long enough?
- saagarjha 2y agoDoesn’t support JavaScript.
- brumar 2y agoI was considering doing exactly that ahah. We should connect to share our hacks and pains. One could project would be to run wasm4 games because, yes, pdfium and pdf.js can run webassembly.
- purpleidea 2y agoNeat! Sadly doesn't work in Evince.
- _joel 2y agoSo does that mean we can transpile PDFs to webassembly now?
- _yb2s 2y agoThis is horrifying, PDFs should not be able to execute code.
- cess11 2y agoOne should reject all PDF:s except /a-standards compliant ones.
- belval 2y agoMaybe if one enjoys endless conversations with unhappy customers. Easier to simply isolate the PDF rendering/parsing and move on.
- silon42 2y agoA conversion tool would be useful.
- martin_a 2y agoLet me tell you about the lord and savior of the printing industry, the PDF/X standard...
- cess11 2y agoIt allows external sources. I think even the ICC profile can sit outside the document, as well as stuff like video. I like the archivable series, the document comes with what is needed to render it.
- nejsjsjsbsb 2y agoHTMLs too :)
- crazygringo 2y agoSeriously, I hate it. I understand why it happened -- it made sense to allow PDF's to be used for form-filling, and once you can fill in forms it obviously makes sense to validate inputs, and to handle arbitrary validation complexity you need a scripting language, and obviously then you want to be able to automatically fill in fields based on other fields, or even produce a QR code so it can be printed and scanned... And they didn't want to create a new extension like ".ipdf" for interactive PDF. But still. I hate it.
- thih9 2y agoWould this work on a simple (non-android) eink reader, like a kindle?
- random_i 2y agoPlayable where? It doesn't work in the Adobe Chrome PDF viewer, or in Preview.
- grimgrin 2y agoplayable for me in firefox and chrome
- cryptozeus 2y agoworks for me in chrome
- icameron 2y agoSadly, Adobe Acrobat Viewer cannot load it, but if go to Chrome and choose Open.. That should use chrome PDF to display it in the browser (depending on your settings maybe) which worked for me.
- TMWNN 2y agoWorks in Edge's PDF viewer, after exiting the initial mode via the <- in the upper left corner. (If you know how to avoid this being the default, let me know.)
- kvirani 2y agoWow... It's only January. I'm so excited to see what you release in February and beyond!
- pmarreck 2y agothis is a horrible idea. which is why i am commenting to check it out later. since postscript is also a language that it literally runs to render, would it also be possible to use postscript to make interactive elements?
- lihaciudaniel 2y agoDoesn't work in pdf.js
- efitz 2y agoThis is amazing and terrifying (I am a security engineer and parsing complex document formats is a never-ending treasure trove of vulnerabilities).
- tashian 2y agoAI agents run in isolated VMs, but PDFs have been out here running in the open for 30 years!
- miohtama 2y agoBut can your PDF run an AI agent?
- freedomben 2y agoLooking forward to a day when you may not have a powerful enough GPU to open a PDF
- hnlmorg 2y agoIn my opinion the question isn’t so much “if” but rather “when”. When will AI research and hardware capabilities reach a point that it’s practical to embed something like that into a regular document? We’ve already seen proof of concept LLMs embedded into OpenType fonts. I guess the other question is then “what capabilities would these AI agents have?” You’d hope just permission to present within that document. But that depends entirely on what unpatched vulnerabilities are lurking (such as the Microsoft ANSI RCE also featured on the HN front page)
- btown 2y agoFor Chrome's PDF renderer, the runtime is V8, so we're literally one (hilarious) line of code away from this glorious future existing today: https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fpdfsdk/fpdf_view.cpp#1210 https://pdfium.googlesource.com/pdfium/+/refs/heads/main/fpd... > // Use interpreted JS only to avoid RWX pages in our address space. Also, --jitless implies --no-expose-wasm, which reduce exposure since no PDF should contain web assembly. > return "--jitless";
- abdibrokhim 2y agoWarning: Error during font loading: Font "HeBo" is not available.
- luismedel 2y agoAwesome. I don't do security stuff anymore but I feel chills when I see (great) things like this,
- bwjx 2y agoThis is awesome. Took a bit of prompting but was able to get a semi-working (only in Chrome) Flappy Bird out of Claude in ~10 minutes. Seems like the collision detection needs some work :) https://github.com/baileywjohnson/flapdfy-bird/blob/main/flapdfy_bird.pdf https://github.com/baileywjohnson/flapdfy-bird/blob/main/fla...
- Uptrenda 2y agoActually works, a bit buggy but its a good POC.
- ilvez 2y agoI'm probably lucky that Sumatra is showing them as static documents.
- Thoreandan 2y agoRelated: Ange Albertini, the creator of the .PDF/.ZIP/ELF reference diagrams (github/corkami) has started posting overview videos on his YT channel (@corkami-albertini) including creating .PDF+.PNG+.ZIP chimera files. The .PDF basics vid was the first in the series: https://www.youtube.com/watch?v=q6KgFezu8tw https://www.youtube.com/watch?v=q6KgFezu8tw
- deleted 2y ago[deleted]
- billiam 2y agoand this is why I can't read HN at work anymore........ I have increasing confidence that when AIs finally destroy the Internet the delivery vehicle will be the file format that was created, as the Internet itself was, as a form of digital paper.
- eximius 2y agoInteresting! Something neat I found, you're able to 'clip' the blocks into each other by spinning them right before the block settles.
- alphabet9000 2y agoamazing, i didn't know PDF supported javascript. i've tried making "interactive" PDFs before but using POST and server side rendering rather than client, e.g. a PDF typewriter i made a little while back on http://news.coffee http://news.coffee
- 0xKelsey 2y agoThat's both awesome and terrifying security-wise.
- krick 2y agoOk, I kinda knew it was possible (I guess, anybody did), but this should be a very illustrative example. And unfortunately it doesn't seem like PDFs are gonna go away (though, really, why the hell there isn't any alternative?!) So it raises the question: is there any way to handle this garbage safely? I.e. in a way it couldn't run JS? I'm pretty sure it is not really necessary to read 99.999% PDFs out there.
- BoingBoomTschak 2y agoYou can build mupdf with -javascript on Gentoo (I also bwrap it to hell, personally).
- freedomben 2y agoA few questions if you're willing: 1. What led you to want to do this project? 2. Have you worked with PDFs before? Do you work with PDFs as part of your day job? 3. Have you implemented Tetris before or is this your first time? 4. How long did it take you?
- casey2 2y agoI believe there is a bug with the T block, I think I managed to overlap some blocks
- rgmerk 2y agoThis is Evil Genius level work. Congratulations! Did you do the actual coding in Acrobat or is there a less painful way to write embedded JS in a PDF?
- theginger 2y agoI hope to see this evolved into doom by the end of the year. And it better not be just monochrome
- Elizabeth0147 2y ago[dead]
- nejsjsjsbsb 2y agoPDFs, Regexes and Typescript Compiler make great runtimes!
- Uptrenda 2y agoI did the same but with snake: https://roberts.pm/resume.pdf https://roberts.pm/resume.pdf (Game at bottom -- though only works in Firefox and adobe. Now I need to add chrome support, thanks op. lmao) Edit: here's the code for my snake game too, btw = https://github.com/robertsdotpm/resume/blob/main/snake.js https://github.com/robertsdotpm/resume/blob/main/snake.js
- toddm 2y agoThis is really cool and fun! I don't know much about the security issues others have raised, but if you're good enough to make this thing then I deserve to be pwned by you. Chapeau!
- Uptrenda 2y agoOP, I still don't really understand how you got it to work in Chrome?
- tonetheman 2y ago[dead]
- tamersalama 2y agoTake that RAG parser
- _bydex 2y agoI dont have a kindle to test, but i wonder if this works on a kindle
- wizzwizz4 2y agoAlmost certainly not. Kindle's native format is MOBI, not PDF.
- weddingbell 2y agoI printed the PDF on A4 paper, but Tetris doesn't work! lol
- 8mobile 2y agoplaying Tetris on a pdf is the last thing I would have thought of. Kudos for the idea and implementation. To start a new game do I have to reload the pdf? Thanks
- amunozo 2y agoLol, I love it. Why didn't you include points multipliers when more than one line is filled though?
- chimo777 2y agoThat's amazing! It goes beyond my understanding of PDFs.
- ustad 2y agoThat reminded to disable javascript in pdfjs that is used in firefox. Feel much safer!
- aoeb 2y agoOpen about:config Search for "pdfjs.enableScripting" Set to false.
- phforms 2y agoApparently, it is set to false by default in Zen Browser. In my Firefox it was still true.
- vasco 2y agoSo you also disable it for normal browsing?
- deleted 2y ago[deleted]
- aceazzameen 2y agoWhew! I didn't realize it was enabled already.
- Shinchy 2y agoThat's truly amazing! I knew you could do a lot with PDF but that not to this extent.
- Uptrenda 2y agoWell OP, you have definitely made me reconsider my assumptions about PDFium. I had assumed that JS didn't work altogether in Chrome. But clearly there's just bugs in the code I wrote. You've inspired me to have another crack at solving it. But definitely when the time is right. It's going to be a lot of hair pulling, I can see that now. I'm not sure what your process was for testing your scripts: but for me because there was no meaningful error output I had to incrementally build up my script line by line (which took forever.) So I thought I'd done well when I got my stuff working in Adobe + Firefox. I wonder if now everyone is going to add similar scripts to their resumes :p Doom will be next, maybe?
- stronglikedan 2y ago> Doom will be next, maybe? Prescient! (but I couldn't get it to work) https://80.lv/articles/you-can-now-run-doom-in-a-pdf-file/ https://80.lv/articles/you-can-now-run-doom-in-a-pdf-file/ https://doompdf.pages.dev/doom.pdf https://doompdf.pages.dev/doom.pdf
- jeffhuys 2y agoI actually am kind-of happy that this doesn't work on Mac (if you don't install Acrobat) / preview.
- deleted 2y ago[deleted]
- ReneFroger 2y agoI'm wondering if running Doom in PDF files might be achievable, or is that a step too far away?
- vanderZwan 2y agoProbably in the domain of technically possible but good luck trying to get it to run fast enough and with little enough memory that the PDF engine doesn't crash.
- vk6 2y agoIt's definitely achievable, and it even runs with a playable framerate: https://news.ycombinator.com/item?id=42678754 https://news.ycombinator.com/item?id=42678754
- darkce 2y agoso good
- fishstock25 2y ago[dead]
- deleted 2y ago[deleted]
- shekywakey 2y agoWill you call it the "Thomas Engine" that powers simple GUI games on PDF?
- LetsGetTechnicl 2y agoThis is an affront against god. Good work.
- weinzierl 2y agoIt's hard to overstate the ingenuity that went into this! Despite what people say in the comments here, both browsers really do not let you execute PDF JavaScript willy nilly. Outside of browser environments you are mostly safe anyway because JavaScript is rarely supported, with the big exception being Acrobat. The cleverness of pdftris is not so much Tetris in PDF but how it found its way around the restrictions that browser environments have put up to protect us. From what I understand pdftris also only works because of user interaction. I think there is no way to run JavaScript in a PDF without user interaction.
- brumar 2y agoYou can manipulate form fields at anytime, and setInterval is provided so you can have things that run in an infinite loop. But yeah, as a first approximation, the only things js in pdf can do is mutate form fields and react to events related to form fields, unless your pdf reader is acrobat and that's something else entirely.
- weinzierl 2y agoMy point is that nothing runs without at least one initial user interaction - which makes a big difference for security. I believe this is even true for Acrobat with default settings, because while you can trigger JavaScript when a document is opened (/OpenAction) Acrobat will ask for permission.
- shivekkhurana 2y agoBut can it run Doom ?
- ninalanyon 2y agoI'm very pleased that this did not work in Firefox on Linux Mint. Unfortunately it does work in Vivaldi.
- skykooler 2y agoIt works in Firefox on Manjaro.
- enews01 2y agoWow this was quite fun and impressive! Looks like it doesn't work on Firefox, I wonder why.
- rhokstar 2y agoI would be surprised if Doom was playable in a PDF that was being read in a LCD screen of a thermometer.
- brettermeier 2y agoYou would or wouldn't be surprised?
- swyx 2y ago... why exactly do PDF engines have to run javascript? wtf?
- kleiba 2y agoA friend of mine once applied for a job with the local PT operator. For that, I finagled the PDF of his CV such that after a minute or so, one of the company's trains would drive over the page from left to right at the very bottom. He never heard back from them.
- zombot 2y agoHoly crap, JS in a PDF! I wonder what mischief might be wrought with that.
- oneandonley1 2y agodoesn't work on mobile, is there a specific viewer for this