<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Adobe on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/adobe/</link>
		<description>Recent content in Adobe on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Tue, 05 Jul 2016 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/adobe/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>PDFで作られたブロック崩し</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/</link>
				<pubDate>Tue, 05 Jul 2016 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/</guid>
				<description>&lt;p&gt;pdfファイルといえば様々な環境でなるべく同じに見えるようにレイアウトを固定した文書を配る時のフォーマットだと思いますが、そのpdf形式で作られたブロック崩しゲームが公開されました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://rawgit.com/osnr/horrifying-pdf-experiments/master/breakout.pdf&#34;&gt;breakout.pdf&lt;/a&gt; (Chromeブラウザでのみ動作)&lt;/p&gt;&#xA;&lt;p&gt;画面下の青い部分でマウスを動かすと、自機を左右に動かすことができます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/pdf-breakout.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/pdf-breakout_hu_e1a7d7bd9232a306.webp 480w, https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/pdf-breakout_hu_e06d1b1830ec5636.webp 768w, https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/pdf-breakout_hu_838443c1852663e6.webp 812w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2016/07/pdf-breakout/pdf-breakout.png&#34; width=&#34;812&#34; height=&#34;528&#34; alt=&#34;pdf-breakout&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://rsnous.com/&#34;&gt;Omar Rizwanさん&lt;/a&gt;による&lt;a href=&#34;https://github.com/osnr/horrifying-pdf-experiments&#34;&gt;ソースコードおよび解説&lt;/a&gt;によると、PDFは仕様上はFlashやら音声やら動画やらJavaScriptやら、いろんなものを内蔵できるようになっているのだそうです。&lt;/p&gt;&#xA;&lt;p&gt;ただ、ほとんどのPDFビューワーでは、そういった本流でない部分の仕様は実装していません。しかし、Chromeブラウザ内蔵のpdfビューワーでは、&lt;a href=&#34;https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf#page=709&#34;&gt;pdfがサポートしているJavaScriptの仕様&lt;/a&gt;のうちのいくつかが実装されているそうです。&lt;a href=&#34;https://mariomalwareanalysis.blogspot.jp/2012/02/how-to-embed-javascript-into-pdf.html&#34;&gt;pdfからJavaScriptを呼び出せるというブログ&lt;/a&gt;を見たRizwanさんは、使えるAPIだけを使って、ブロック崩しゲームを実装してしまった、というわけです。&lt;/p&gt;&#xA;&lt;p&gt;このChrome pdfビューワの実装においても、データベースに接続するとか、接続されたモニターを検出するとか、外部リソースにアクセスするとか、そういったほとんどの機能は「サポートしない」となっていて、pdfの内部で計算をすることはできても、外部とのやりとりをする手段の多くは使えないのだとか。&lt;/p&gt;&#xA;&lt;p&gt;この限定されたAPIから、テキストの背景色を動的に変えることはできないけれど、その枠の大きさと枠のスタイルは変えられる、ということで、ブロックの表示・非表示を制御したそうです。&lt;/p&gt;&#xA;&lt;p&gt;また、マウスの正確な位置を検出する手段はないけれど、PDF作成時に配置したフィールドへのマウスカーソルの出入りは検出できるということで、これを使ってマウスの場所を取得しているそうです。&lt;/p&gt;&#xA;&lt;p&gt;フィールドも後で追加することはできず、PDFに最初から持たせておく必要があるそうで、自機、ブロック、ボール、得点、残機のそれぞれを、大量のフィールドとしてPDF上に配置するスクリプトを書き、それでゲーム画面のPDFを生成させているということ。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://plus.google.com/&amp;#43;FrancoisBeaufort/posts/9wwSiWDDKKP&#34;&gt;Chromeブラウザ上のpdfビューワは、もともとGoogleがFoxitから買い取ったpdfビューワーを基にしたものらしい&lt;/a&gt;ということで、Foxitの時代にその顧客がこの小さなJavaScriptセットを使っていたのではないか、とRizwanさんは推測しています。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;http://thenextweb.com/apps/2016/07/05/know-can-play-games-pdf-files/&#34;&gt;TheNextWeb&lt;/a&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
