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

肩痛、桜

どうも肩が痛い。 左だけ。 思い当たるふしはある。 睡眠時、左を向いて横向きになっていることが多い。 (実際、寝ているときはどうなっているかわからないが、  眠りに入るまでの姿勢がそうなっていることが …

Windows Serverのデータ重複除去をやってみた

Windows Serverにはデータ重複除去という機能があって、ディスク容量を大幅に節約できる。 一般的には50%程度の使用量を減らすことができ、用途によってこの数字が変わるが仮想化ライブラリでは9 …

no image

サーバー管理

何の因果か、組織内のサーバーの管理をまかされて10数年が経つ。 サーバーは、Windows Serverで単にファイルサーバーとして利用されている。 総容量が200GBで、残りが20数GBだったことは …

no image

デジカメプリント

初めて店頭のデジカメプリントをやってみた。 今までは家のプリンターで印刷してたんだけど、 金額と手間を考えるとどうかなー、という疑問が沸いてきたので。 場所は、近所のDPEショップ。 店頭で、デジカメ …

no image

LHAとZIP

こんな本を買った。 LHAとZIP 圧縮アルゴリズム×プログラミング入門 まだ、冒頭の数ページを読んだだけだ。 初版が2003年の本だから、7年も前のものだ。 この業界、3年もすれば様変わりしているの …