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

ツイッター開始

ツイッターを開始した。 アカウントは、ブログタイトル部に記載。 本当は@cadse、あるいは@trisaraとしたかったが使用済みだった 形から入るおいらとしては、ツイッターが何なのか調査することは必 …

no image

オーバーヘッド

「オーバーヘッド」 ここ数日、どうしても思い出せなかった言葉。 今日、思い出した。 コンピュータのある処理を高速化するために、 あれこれと対策をしている。 そのレポートを書いていて表現したかった言葉だ …

no image

圧縮と解凍

凍ったお刺身を電子レンジでチン...それは生解凍です。 ファイルやフォルダを圧縮してメールなどで送る。受信者は解凍してから利用する。ある程度パソコンの知識がある人であれば、あたりまえの知識ですね。これ …

no image

PCの時刻2

前回書いたワークグループ環境での時刻合わせに続いて、 ドメイン環境でのPC時刻合わせについて書いてみる。 情報ソースはこちら。 Active Directory 環境における時刻同期 by @IT 自 …

新元号合字の文字コードを予約したってことだけどダーレも使わんでしょ「㍾㍽㍼㍻」なんて文字をさ。。

新元号があと1週間後の4月1日(月)に発表される。和暦なんて誰も使ってないんだから、ヒマな人が騒いでいるだけなんだと思う。とは言え、31年前の平成元年当時は、パソコンなるものはあってもインターネットが …