fbpx

PDFってこうなってる? 実践でPDFの内部構造を学ぼう Part 6:パスで図形を描こう

「Part 4: 白紙のPDFページを自作する」で示したように、PDFはストリームオブジェクト内にある一連のコマンドを使って描画されます。これらのコマンドを通じて、PDFビューアーはページ上に表示される全コンテンツを描画する方法を理解できます。この記事では、グラフィックコマンドを探究し、ページ上に数本の線を描画するPDFをテキストエディタで作成します。
Part 6:パスで図形を描こう

コンテンツストリーム内では、PDFが理解できるさまざまなグラフィックオブジェクトの組み合わせを作成できます。この記事で取り上げるのはパスオブジェクトです。パスオブジェクトは基本的に点のリストです。各パスオブジェクトには始点があり、新しい点がリストに追加されます。パスの各セグメントは直線、曲線、または長方形である可能性があります。点の集合は一つのパスオブジェクトとして扱われます。なぜなら、適用するペインティング操作がパスの全セグメントに適用されるからです。

例えば:

				
					175 720 m 175 50 l h S
				
			

上記の行には3つのコマンドが含まれています。「m」は指定された座標でパスを開始することを意味します。「l」コマンドは、パスの前の点から座標175, 50への線分を描画します。「h」コマンドはパスを閉じます。パスを設定したら、何かしらのペインティングコマンドを与えてアクションを実行しなければなりません。「S」コマンドはパスに沿って線を描画します。

				
					175 720 m 175 700 l 300 800 400 720 v h S
				
			

これには「v」コマンドが追加されており、曲線を描画します。最初の2つの座標は制御点で、線の曲がり具合を設定し、次の2つの座標は線の終点です。

				
					175 720 m 175 700 l 300 800 400 600 v 100 650 50 75 re h S
				
			

「re」コマンドは、座標100, 650に幅50、高さ75の長方形を描画します。この長方形はパスに物理的に接続されていませんが、同じパスの一部として扱われ、最後に適用されるペインティング操作(S)は全体に適用されます。

以下が完成したコードです:

				
					%PDF-2.0

% カタログオブジェクト
1 0 obj
<</Type /Catalog /Pages 2 0 R>>
endobj

% ページツリーオブジェクト
2 0 obj
<</Type /Pages /Kids [3 0 R] /Count 1 /MediaBox [0 0 500 800]>>
endobj

% ページオブジェクト
3 0 obj
<</Type /Page /Parent 2 0 R /Contents 4 0 R>>
endobj

% コンテンツストリームオブジェクト
4 0 obj
<</Length 61>>
stream
175 720 m % 移動
175 500 l % 直線
300 800 400 600 v % 曲線
100 650 50 75 re % 四角形
h % 最後の点を最初の点に接続
S % ストローク
endstream
endobj

% クロスリファレンステーブル
xref
0 5
0000000000 65535 f
0000000010 00000 n
0000000059 00000 n
0000000140 00000 n
0000000202 00000 n

% トレーラー
trailer
<</Size 5 /Root 1 0 R>>

% クロスリファレンステーブルの開始位置
startxref
598

%%EOF
				
			

上記のコードを draw-line.pdf ファイルとして保存し、PDFビューアーで開くと、数本の線と一つの長方形が表示されるはずです。現時点では見た目は単調かもしれませんが、次の記事ではパスを塗りつぶすさまざまな方法について見ていきます。

PDFアプリ開発ツール(SDK)をお探しのみなさま、効率のよい開発作業のためにJPedal、BuildVu、JDeliがきっとお役に立つことと思います。
これら3製品は無料で試用していただけますので、まずはお試しのうえ、ぜひ導入をご検討ください。
JPedal、BuildVu、JDeliのシステム開発やプログラミング、無料トライアルの情報は下記の各製品のトライアルページをご覧ください。技術的なことから費用面まで、ご質問・ご相談も各製品ページの問合せボタンからお寄せください。

    Facebook
    Twitter
    Email
    公式ブログロゴ

    製品に関する記事や開発者のブログ

    PDFってこうなってる? 実践でPDFの内部構造を学ぼう Part 7:色を操るグラフィックスステート

    今回は、画面に色を付けてみましょう。その過程で、グラフィックスステート(グラフィックス状態)について説明します。PDFファイルには、グラフィックスステートというデータ構造が関連付けられています。このデータ構造には、グラフィックスの描画方法を記述する情報が格納されます。現在の色や使用可能な色などの値がグラフィックスステートに保存されます。また、現在のクリップ、変換行列、線に対して行える面白い操作、ユーザー空間(PDFの座標系)からデバイス空間(モニター)へのグラフィックスの描画方法を変更するその他の命令など、様々な要素が含まれます。

    PDFってこうなってる? 実践でPDFの内部構造を学ぼう Part5:Hello WorldのPDFを作ろう

    「Part 1: PDFを理解するための第一歩」で、私はPDFファイルを構成するさまざまなオブジェクトについて説明しました。その中で言及したのがストリームオブジェクトです。ストリームオブジェクトは、PDFページの見た目を記述する命令を全て含んでいます。この記事の最後までに、私たちは「Hello World」のPDFを作成できるようになります。そのためには、PDFドキュメントにテキストを挿入するためのストリームオブジェクトを使う必要があります。

    PDFってこうなってる? 実践でPDFの内部構造を学ぼう Part4:白紙のPDFページを自作する

    準備はいいですか? もう間もなく、あなたは自分自身で制作した輝く真新しい完全な白紙のPDFドキュメントの所有者となることができます。その前に、Part 3ではPDFのボディ部分について詳しく説明します。これらの知識を使って、テキストエディタとバイナリエディタでシンプルな白紙のPDFを実際に作ってみましょう。完成したPDFファイルは、あなたにとって特別な一品になることでしょう。

    PDFファイルを扱うシステム開発・ウェブ開発に役立つ

    開発者向けPDF入門ガイド

    開発者向けPDF入門ガイド

    PDFの基礎から応用まで開発者のための入門ガイド2024年版

    PDF の仕様や活用方法など、開発者に必要な情報がコンパクトにまとめました。初めてPDFを扱う開発者にも分かりやすく、基礎から応用までカバーしているため、PDF のポテンシャルを最大限に引き出し、アプリケーション開発やドキュメント管理の効率化を図るための手引きとなるでしょう。技術的な側面に興味がある開発者だけでなく、ビジネスでPDFを有効活用したい方にもおすすめの一冊です。

    MENU
    PAGE TOP
    ロボット
    PDFソフトウェアの開発に役立つ情報をメールでお届けします