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でも扱うので、どこかで似たようなことを経験したことがある人もいると思います。行列をつかった変換行列・平行移動・回転・拡大なんかも経験した人もいるかもです。ちょっと独特な部分を覚えるっていう感じになるやもしれません。 | ||
139行: | 139行: | ||
− | + | 自分もそう思ってたときがありました。ペンの世界が変わるみたいな感じです。ペンを使う前に世界を変えるので、描き終わったものを動かすわけではないこと気がつければ理解しやすいと思います。よく使うグラフィックアプリケーションの大抵は描いてから、全体を選択して、回転や拡大の変形操作を行います。描く前に変換するやり方では、難しいですが、PDFのソースに記述する場合は見ながら描くのではなく、予想して描くわけですから、先に指定することのほうが助かるという訳ですね。 | |
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> | ||
220行: | 220行: | ||
− | + | と、上記のようになります。前の例でしめしたような曲線についても、もともとの描画をシフトして、そのまま2倍にした場合にすると以下のようになるでしょう。前の例で使ったいろいろな座標を2倍にした状態で計算しなくて済みます。平行移動は回転の原点を移動することに関係することも注意してください。また拡大・縮小、回転、平行移動の順番を変更すると最終結果は変わりますので、その点にも注意が必要です。グラフィック業界では、位置調整の感覚がわかりやすいという意味で、平行移動→回転→拡大・縮小の順で動かすことを推奨していて、元の位置に戻す操作を入れる場合は、平行移動→回転→拡大・縮小→<span>(</span>回転戻し or 平行移動戻し or 回転戻し→平行移動戻し<span>)</span>のように、操作した順を折り返すように戻すといいでしょう。 | |
232行: | 232行: | ||
+ | 色の指定方法にはRGB系やCMYKや白黒 白黒階調指定あり、といった指定方法があります。まずはこの分類でどういう色空間を扱うかを指定することから始まります。オペランドとオペレータには以下のようなものがあります。 | ||
+ | |||
+ | |||
+ | <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> | ||
− | |||
252行: | 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 内部構造]]に戻る。 |