CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

コンピュータ全般

PDFのレイヤ情報を取得する方法

投稿日:

PDFにはレイヤというやっかいな構造があって、非表示のレイヤが印刷されてしまったり、表示されてしまったりという問題をここで報告した。イラレ、フォトショ、CADデータには当たり前にレイヤという構造があるもんだから、電子ペーパーのデファクトスタンダードたるPDFにもレイヤができたのだろう。

本題のPDFのレイヤ情報を取得する方法。
iTextSharpはPDFを書き出すのが得意。読み込むことも一応できるけれども、ページを回転させたり、他のPDFと結合するなんていうファイル全体に関わることができる程度。PDF内のオブジェクト情報(レイヤ、ベクトル情報、文字など)を取得するのはできない。と誰もが思い込んでいるが、実際はできる。PDFの構造を理解した上で、iTextShrapのAPIを駆使すればできるってことを知人が証明してくれた。

以下、PDFからレイヤ情報を取得する方法の概要。
・PdfReaderでPDFファイルを開く
・Optional Content Propertiesを得る
・PDFDictionaryの関節参照からレイヤ情報を得る
・レイヤ以外の情報もあるのでスキップする
 ディクショナリー以外
 タイプがOptional Content Group以外
 名前がない
・名前、表示ON/OFF、表示順番を取得して配列変数に格納

なんてことをソースコードから読み取った。おいらがC#をよく知らんということもあるが、それにしたってなかなか難解なコードだった。アラフィフオヤジが急にプログラムをやってみようったって、一朝一夕にはいかんってことがよくわかりけり。ニッチな目的ではあるが、いつかこれが日の目を見る日があることだろう。

-コンピュータ全般

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

PC使い納め

妻のPCを片付け終わり、あとはおいらのPCを片付けようとしているところ。 引越し荷物がずいぶんまとまってきて、残すは必要最小限のものばかり。 職業がらPCに最も必要なものの一つなわけで、やっぱり最後の …

姪っ子大学入学祝いで高級ノートPCを買ってあげることにした

自分で使うデスクトップだったらドスパラの一択だけど、十代の女の子がはじめて持つノートPCってことになったら話は別。 妻用に数年前に買ったのがDellだったから、あんまり悩まずにDellで決定。妻用はX …

no image

今さらデュアルディスプレイで喜んでくれる人がいてよかったなというのが昨日の成果

これを買ったのは1年以上前だったかな。おいらのPCはNVIDIAのグラフィックボードを後入れしているから、デジタルとアナログの両方のインターフェースがあって、フツーに2枚のディスプレイをつなげているわ …

no image

小容量USBメモリ

フロッピーディスクに替わるメディアがなくて困っている。 書き込み可能、安価、配布することが可能なもの。 パソコンに必ず着いているインターフェースと言えば、USBポート。 ということで、USBメモリが一 …

no image

スマートフォン

会社用の携帯を持ちたいという気まぐれが一瞬で沸点に達し、 持つための第一歩を踏み出してしまった。 まずは、管理職の許可を得た。 きっと煩雑な事務手続きがあって、実際に手にするまでは1ヵ月くらいかかるだ …