CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、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

x64 ウイルス対策

64ビットOSにおけるウイルス対策が厳しい状況です。3大メーカーであるシマンテック、トレンドマイクロ、McAfeeは全て対応がとれていません。とくにクライアント向けOSであるWindowsXP Pro …

no image

WinZip18.5

WinZip18.5 Proを1,900円で購入した。 WinZip12 Standard を5,250円で買ったのが2009年4月のことなので、 5年半振りのバージョンアップになる。 ずいぶん安くな …

no image

バーサタイル

週刊文春、ホリイのずんずん調査より引用する。 「バーサタイル:婆さんがタイルを剥がしていろんな目的に  使ってるところを想像してください。」 DVD=Digital Versatile Disk。 V …

no image

Office2007

やっとOffice2007に移行した。 新しいユーザーインターフェースであるリボンへの恐れから、 どうしても一歩が踏み出せないまま、数年が経ってしまったわけだが、 いつまでも古いバージョンのアプリを使 …

no image

続)2TBのHDD

以前、2TBのHDDという記事を書いた。 それから1年半のあいだ塩漬け状態だったが、やっと有効活用できた。 HDDがたった500GBしかないが、それ以外のスペックがかなりよいPCがあり、 しかもHDD …