PDF 内部構造 グラフィックスのソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[PDF 内部構造]]に戻る。 == '''概要''' == 埋め込み画像を使えばいいじゃないってことですが、グラフィックスを記述することができます。拡大しても荒くならないベクター形式の図形を描くのが、このグラフィックスという項目で記述する内容です。それにしてもグラフィックスのベクター描画技術を使っているPDFってあんまり見かけないです。Illustratorのように完璧ってわけでもない機能だからと思います。でも、無駄にいろいろできるようにはなっています。ページの座標系は左下が原点で上と右に向かって座標値が増えていく感じです。この座標値を使って線の始点座標や終点座標を指定したり、矩形の左下座標と右上座標を指定したりして描きます。曲線はベジェ曲線を使います。線の考え方に、ベジェ曲線のハンドル座標を1ないしは2個指定をしたりします。あとはつながった線や曲線を閉じるという考え方があったりします。こういう操作は、PDFでは未経験でも画像処理に使うOpenGL/OpenCL/WebGL/OpenCVやHTML5やTeXやCanvas、3D検定や今はなきActionScriptでも扱うので、どこかで似たようなことを経験したことがある人もいると思います。行列をつかった変換行列・平行移動・回転・拡大なんかも経験した人もいるかもです。ちょっと独特な部分を覚えるっていう感じになるやもしれません。 PDFは印刷と画面表示の両方を上手く扱うので、そのあたりの処理もややこしいかもしれません。 PDFのグラフィックスを勉強するにあたって、左下原点の方眼紙があった方が、何をやっているかわかりやすくなると思いましたので、線を引き終わったPDFソースを準備しました。このファイルに、これから説明するような内容を記述して勉強することができます。100pxおきに濃線。10pxおきに淡線。50pxおきに中濃線をひいてくれるソースです。これだけの線を大量にひくとかなりのボリュームのPDFストリームを記述しないと駄目なので、楽だと思います。デザインが気に食わない人は自分で用意してもよいと思います。 ダウンロード:リンクの上を右クリックで名前を付けて保存とかしてほしいな。<br /> [[メディア:Mesh-Line-Source.pdf|Mesh-Line-Source.pdf]]<br /> [[ファイル:PDF Mesh-Line-Thumb.png|400px|thumb|none|上記のPDFの方眼紙の中身はこんな感じ]] PDFtkによって上記ファイルをPDFに変換する必要があります。コマンドの一例は以下のようになります。 <Syntaxhighlight2 lang="text"> >cd "ファイルの保存先パス" >PDFtk Mesh-Line-Source.pdf output Mesh-Line.pdf </Syntaxhighlight2> PDFソースファイルの30行目~32行目は以下のとおりになっていて、その次の行あたりに、必要におうじてグラフィックのペン設定、例えば/Patternのようなグラフィックキーを記載していくことになります。 <Syntaxhighlight2 lang="text" line start="28"> >> >> % % ここに、グラフィック用ペンの各種設定情報を追記 % >> endobj 4 0 obj << >> stream %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %ここからが方眼紙作成のグラフィックストリーム。 % 0.9 G 0 10 m 1033 10 l S </Syntaxhighlight2> 試してみたいグラフィックストリームは以下のような400行目あたりのここにグラフィックのストリームを記述しますの後に記載することで、確認できます。 <Syntaxhighlight2 lang="text" line start="392"> 1030 0 m 1030 1462 l S % %ここまでが方眼紙作成のグラフィックストリーム。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0 G 0 g 5 w % %ここにグラフィックのストリームを記述します。 % endstream </Syntaxhighlight2> === '''直線''' === コンピュータグラフィックスと言えば、直線を引くことから、すべてが始まると言っても過言ではないので、直線から取り上げました。PDFの側面からみるとペンというものを動かすとか、ペンの座標系とか、縮尺、回転というペンの基礎から説明するのが、普通なのかもしれませんが、やっぱね。直線。直線引くときに知れっとペンの操作もちょっとしちゃうっていう感じ。 直線を引くには、ちょちょいっとペンのおまじないをしてから、ストリーム部で、オペランドとオペレータを使えばいいって感じです。例えば、ページ左下を原点に上方向、右方向に増えていく座標系において、横 100px 縦 100pxの点から横方向に200の長さの直線を引くと、横 300px 縦100 の位置が直線の終点になります。次はその例です。 <Syntaxhighlight2 lang="text"> 100 100 m 300 100 l S </Syntaxhighlight2> と、上記のようになります。最初の1行目はペンの移動をするストリームです。そして2行目が直線をひくオペレータを使ったストリームでペンの移動した位置から、オペランドで指定した位置まで直線をひきます。例では 300 100 となっている部分が該当のオペランドで、l (小文字のエル)がオペレーターです。オペレータがとるオペランドの数はオペレータ毎に固有の数になります。l に続く S という単独のオペレータでそれまでのペンの動きが反映された、線が実際に描画されます。ストロークのSです。 線のSに対して、塗りのf 、両方のbが似た役割のオペレータになります。線の太さは、こちらで用意した方眼紙テンプレートを使った場合は、太さ 5 が適用されます。方眼紙を引き終わった後で、太さ 5になるように太さ変更のオペレータをオペランドを伴って記載しているからです。線を引くストリームの直前の5 w というところが該当の箇所になります。自分で用意した人はデフォルトの 1で描かれたかもしれません。 以下が結果描かれるグラフィックです。 [[PDF 内部構造]]に戻る。
PDF 内部構造 グラフィックス
に戻る。
個人用ツール
3.135.184.166
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ