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
>
endobj

% ページツリーオブジェクト
2 0 obj
>
endobj

% ページオブジェクト
3 0 obj
>
endobj

% コンテンツストリームオブジェクト
4 0 obj
>
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
>

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

%%EOF
				
			

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

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

JavaでPDFを画像に変換

JavaでPDFを画像に変換。BMP, HEIC, JPG, JPEG2000, PNG, TIFFまたはWebPへの自動変換。

JavaでPDFファイルを表示、変換、印刷、処理

PDFドキュメントを扱う必要のあるJava開発者のためのPDFライブラリです。このライブラリは、PDFファイルを扱う際の一般的な問題を解決します。

JDELI – 幅広い画像フォーマットを読み書きするJava SDK

Javaでイメージファイルを安全に扱うJDeliは、HEICやその他のイメージファイル形式をJavaで簡単に読み書き、変換、操作、処理できるようにするJava SDKです。HEIC画像の読み出し/書き込みJDeliは、開発者にHEIC画像フォーマットの包括的なサポートを提供します。また、JPEG/JPEG2000、PNG、TIFFファイルを含む他の画像フォーマットのサポートも強化されています重要なファイルを安全に保管JDeliは、お客様のサーバー上で動作し

PDFからHTML5やSVGに変換する理由とは?

多くのサイトで文章や情報を公開するためにPDFは使われています。ページ数の多い文章や印刷を前提に作られた文章を閲覧するにはPDFは適していると思われます。ところが、ウェブサイトを利用している利用者に取っては、サイトに公開されているPDFは非常に使いにくいものになっています。PDFからHTMLへ変換する理由とは?

Facebook
Twitter
Email
公式ブログロゴ

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

開発チームに最適なJava画像ライブラリとは?

画像処理は現代のJavaアプリケーションにおいて避けて通れない機能の一つです。Webサービスでのサムネイル生成、ドキュメント管理システムでのファイル変換、データ分析での可視化出力など、様々な場面で画像ライブラリの品質がシステム全体の安定性を左右します。

多くの開発チームが最初に手を伸ばすのは、Java標準のImageIOやオープンソースのライブラリでしょう。確かに導入は簡単で、基本的な画像処理には十分に見えます。しかし、プロダクション環境で実際に運用を始めると、思わぬ落とし穴に遭遇することがあります。

開発チームに最適なJava PDFライブラリとは?

「オープンソースで十分じゃない?」
そう考えるエンジニアは少なくありません。確かに無償のライブラリは機能が豊富で、改変も自由です。しかしバグ修正やセキュリティパッチを自分たちで追い続ける労力、サードパーティのパッケージを呼び出すリスク、そしてライセンス条件の判断に迷う時間などを考えると、コードを書かない”隠れコスト”が静かに膨らんでいきます。

「保守や脆弱性対応に追われて本来の開発が進まない!」

そんな声が聞こえてきたら、商用ライブラリへの切り替えどきかもしれません。

開発チームに最適なPDF-HTML変換ツールとは?

開発チームに最適なPDF-HTML変換ツールとは?PDFからHTMLへの変換において開発者が直面する課題と、それを解決するBuildVuの特長を解説。正確な変換品質、スケーラビリティ、セキュリティ、開発者フレンドリーな出力、そしてシンプルな料金体系で、チーム開発の効率を高める方法をご紹介します。

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

開発者向けPDF入門ガイド

開発者向けPDF入門ガイド

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

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

MENU
PAGE TOP