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

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

no image

多階層一括フォルダ作成

フォルダを作るという場面はけっこう多い。 エクスプローラで右クリックして、新規作成の中から フォルダを選んで、名前を入力する。 1個や2個のフォルダをつくるなら、この操作で十分だ。 例えば、CDドライ …

no image

AcrobatのOCRテキスト認識

AcrobatのOCRテキスト認識は、かなりよい。 文書→OCRテキスト認識→OCRを使用してテキストを認識 おいらが使っているAcrobat9での操作は上記の通り。 何やら、こまかい設定があるようだ …

Excelシートの印刷部数が特殊なもんで、そこにひそむナゾを解いてみたくなった

Excelを印刷したら、1部しかいらないのになぜか2部とか3部も紙が出てきてしまったという経験はないだろうか。おいらはある。なんでだろーと思いつつそのナゾを放置してきたが、今そのあたりについて調べてみ …

no image

GetDefaultPrinter

印刷系のアプリは奥が深い。 勢いで、仕事に直結した話を書いてみよう。 Win32APIでGetDefaultPrinterがある。 第1引数にNULLを渡すと、第2引数のDWORDポインタにプリンタ名 …

no image

PC使い始め

PC使い始めは、昨晩11時半から朝の5時半までだった。 実際PCを組んだのは日曜だったわけで、ギガ通信の実態が90数M程度なんて ことを試したくらいのところのホンのさわりであった。 引越し手続きのため …