PDF 内部構造 グラフィックス 新しいページはコチラ
提供: yonewiki
(→平行移動・拡大縮小・回転) |
|||
1行: | 1行: | ||
− | [[PDF 内部構造]]に戻る。 | + | [[PDF 内部構造#説明|PDF 内部構造]]に戻る。 |
== '''概要''' == | == '''概要''' == | ||
埋め込み画像を使えばいいじゃないってことですが、グラフィックスを記述することができます。拡大しても荒くならないベクター形式の図形を描くのが、このグラフィックスという項目で記述する内容です。それにしてもグラフィックスのベクター描画技術を使っているPDFってあんまり見かけないです。Illustratorのように完璧ってわけでもない機能だからと思います。でも、無駄にいろいろできるようにはなっています。ページの座標系は左下が原点で上と右に向かって座標値が増えていく感じです。この座標値を使って線の始点座標や終点座標を指定したり、矩形の左下座標と右上座標を指定したりして描きます。曲線はベジェ曲線を使います。線の考え方に、ベジェ曲線のハンドル座標を1ないしは2個指定をしたりします。あとはつながった線や曲線を閉じるという考え方があったりします。こういう操作は、PDFでは未経験でも画像処理に使うOpenGL/OpenCL/WebGL/OpenCVやHTML5やTeXやCanvas、3D検定や今はなきActionScriptでも扱うので、どこかで似たようなことを経験したことがある人もいると思います。行列をつかった変換行列・平行移動・回転・拡大なんかも経験した人もいるかもです。ちょっと独特な部分を覚えるっていう感じになるやもしれません。 | 埋め込み画像を使えばいいじゃないってことですが、グラフィックスを記述することができます。拡大しても荒くならないベクター形式の図形を描くのが、このグラフィックスという項目で記述する内容です。それにしてもグラフィックスのベクター描画技術を使っているPDFってあんまり見かけないです。Illustratorのように完璧ってわけでもない機能だからと思います。でも、無駄にいろいろできるようにはなっています。ページの座標系は左下が原点で上と右に向かって座標値が増えていく感じです。この座標値を使って線の始点座標や終点座標を指定したり、矩形の左下座標と右上座標を指定したりして描きます。曲線はベジェ曲線を使います。線の考え方に、ベジェ曲線のハンドル座標を1ないしは2個指定をしたりします。あとはつながった線や曲線を閉じるという考え方があったりします。こういう操作は、PDFでは未経験でも画像処理に使うOpenGL/OpenCL/WebGL/OpenCVやHTML5やTeXやCanvas、3D検定や今はなきActionScriptでも扱うので、どこかで似たようなことを経験したことがある人もいると思います。行列をつかった変換行列・平行移動・回転・拡大なんかも経験した人もいるかもです。ちょっと独特な部分を覚えるっていう感じになるやもしれません。 | ||
191行: | 191行: | ||
<ymath> | <ymath> | ||
( | ( | ||
− | x_{trans} = x_{orgin} \times \cos \theta | + | x_{trans} = x_{orgin} \times \cos \theta + y_{orgin} \times (-\sin \theta) |
) | ) | ||
</ymath> | </ymath> | ||
235行: | 235行: | ||
− | + | <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> | |
+ | <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> | ||
+ | <th style="width: 175px;">キー</th> | ||
+ | <th style="width: 175px;">型</th> | ||
+ | <th>指定する値の内容</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>/DeviceGray</td> | ||
+ | <td>オペレータ</td> | ||
+ | <td>線ストロークはCS、塗りはcs指定します。</td> | ||
+ | </tr> | ||
+ | <tr style=" background: #eeeeee;"> | ||
+ | <td>/DeviceRGB</td> | ||
+ | <td>オペレータ</td> | ||
+ | <td>線ストロークはCS、塗りはcs指定します。</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>/DeviceCMYK</td> | ||
+ | <td>オペレータ</td> | ||
+ | <td>線ストロークはCS、塗りはcs指定します。</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | 白黒カラースペースには/DeviceGray キーを使います。 ストリーム部で以下のようなキー定義をつかうことで 0 に相当する黒色に設定ができます。0 ~ 1の小数点表記を含めた表記で黒から白へ変化していく階調表現のひとつの色を指定します。 | ||
+ | |||
+ | |||
+ | 例 | ||
<Syntaxhighlight2 lang="text"> | <Syntaxhighlight2 lang="text"> | ||
− | + | /DeviceGray cs | |
+ | 0 sc | ||
+ | |||
+ | /DeviceGray CS | ||
+ | 0 SC | ||
</Syntaxhighlight2> | </Syntaxhighlight2> | ||
+ | 上記の2行の記述と以下の記述は同等です。2行をまとめることができます。 | ||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 0 g | ||
− | + | 0 G | |
+ | </Syntaxhighlight2> | ||
+ | |||
+ | |||
+ | 光の三原色を使ったRGBカラースペースには/DeviceRGB キーを使います。 ストリーム部で以下のようなキー定義をつかうことで RGB = 1 1 0 に相当する紫色に設定ができます。0 ~ 1の小数点表記を含めた表記で階調表現のひとつの色を指定します。0x00 = 0 ~ 0xff = 255 の 256 段階段階で表現するのも一般的ですが、ここでは0~1の割合で表現します。0xが先頭につく値は16進数表記を意味しています。コンピュータにおける16進数表記の意義については、別の部分で理解して下さい。 | ||
+ | |||
+ | 例 | ||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | /DeviceRGB cs | ||
+ | 1 1 0 sc | ||
+ | |||
+ | /DeviceRGB CS | ||
+ | 1 1 0 SC | ||
+ | </Syntaxhighlight2> | ||
+ | 上記の2行の記述と以下の記述は同等です。2行をまとめることができます。 | ||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 1 1 0 rg | ||
+ | |||
+ | 1 1 0 RG | ||
+ | </Syntaxhighlight2> | ||
+ | 印刷業界でよく使われるCMYKカラースペースには/DeviceCMYK キーを使います。 C=シアン(水色っぽい<span>)</span>、M=マゼンダ<span>(</span>紫色っぽい<span>)<span>、Y=イエロー、K=ブラックの分量で設定するカラーです。ストリーム部で以下のようなキー定義をつかうことで CMYK = 1 1 0 0 に相当する青色に設定ができます。0 ~ 1の小数点表記を含めた表記で階調表現のひとつの色を指定します。 | ||
+ | |||
+ | 例 | ||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | /DeviceCMYK cs | ||
+ | 1 1 0 0 sc | ||
+ | |||
+ | /DeviceCMYK CS | ||
+ | 1 1 0 0 SC | ||
+ | </Syntaxhighlight2> | ||
+ | 上記の2行の記述と以下の記述は同等です。2行をまとめることができます。 | ||
+ | <Syntaxhighlight2 lang="text"> | ||
+ | 1 1 0 0 k | ||
+ | |||
+ | 1 1 0 0 K | ||
+ | </Syntaxhighlight2> | ||
− | |||
258行: | 324行: | ||
<Syntaxhighlight2 lang="text"> | <Syntaxhighlight2 lang="text"> | ||
− | + | 0.5 G | |
+ | 100 100 200 200 re S | ||
+ | q | ||
+ | 0 G | ||
+ | 110 110 180 180 re S | ||
+ | Q | ||
+ | 120 120 160 160 re S | ||
</Syntaxhighlight2> | </Syntaxhighlight2> | ||
− | + | と、上記のようになります。上記の例では最初の 0.5 G<span>(</span>グレーのストローク<span>)</span>という状態をqでスタックして、覚えさせています。次に新しい状態の 0 G <span>(</span>黒色のストローク<span>)</span>という状態を設定して描画した後のQで状態をレストアします。これでスタックしておいたグレーのストロークの状態に戻ります。このような記憶がポップスタックの仕組み。お盆をある専用の保管場所において、どんどんつみあげるように記憶させ、保管場所からお盆を一枚づづ取り出すようにして、読み起こす仕組みです。目的の状態に戻すためにお盆を沢山取り外さないといけないこともあるし、お盆をどんどん取り出すと記録しておいたものはどんどん消えていきます。順番にうまくいったり来たりして使うという工夫を忘れてはいけないです。簡易的なグラフィックス状態の記憶ですね。 | |
− | + | ||
− | [[PDF 内部構造]]に戻る。 | + | [[PDF 内部構造#説明|PDF 内部構造]]に戻る。 |