PDF 内部構造 基本とファイル構造キーのソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[PDF 内部構造]]に戻る。 == '''概要''' == PDF文書を構成するのには、キー、オペレータと固有の役割のあるキーワードがありました。この記事では、文書構造の基本的な部分で使われるキーとオペレータの細かい部分について触れます。またキーの値や文法についての基本についても触れます。どのように使うキーだったかオペレータだったかは[[PDF 内部構造 構造の概念 簡単な説明|構造の概念 簡単な説明]]の記事で使ったPDF文書を参考にして下さい。 === '''用語''' === ノード(Node):〇→〇 のようなイメージです。?。Windowsエクスプローラのフォルダが階層を作るように展開した状態をツリーといいます。日本語では木構造といいます。このときフォルダはツリーを構築する実体(オブジェクト:Object)ですが、木構造のオブジェクトはノードと呼んでいます。ツリーは末端までたどっていくと沢山のノードを持つことができます。そのような形態ですから、ツリーはノードをひとつにまとめ上げることができると言えます。そういった仕組みがPDFでは使われています。複数形だとNodes。深い! === '''コメント''' === % 記号以降はコメントになります。C や Java の // に相当します。但し一行目の%PDF-1.1とかはヘッダ情報としての役割があります。 例 <Syntaxhighlight2 lang="text"> %PDF-1.7 %1行目もコメントですが、ヘッダの役割があります。 % 2行目以降はコメントを書くことができる。 1 0 obj % 1 0 obj はPDF構造文書ですが、%記号以降は途中からのコメントです。 </Syntaxhighlight2> === '''数値''' === 以下のように整数と簡単な小数が扱えます。浮動小数点のような表記は扱えません。 10 +2 -4 1.2 -.4 === '''論理値''' === 真や偽を表す論理代数の考え方でいうところの1(真)をtrue、0(偽)をfalseで表します。 === '''ヌル''' === なにも設定しないことを意味するヌル(空)はnullで表します。PDF文書では設定は別のところでやります。今はnullかな。みたいな簡単な使い方になります。 === '''文字列''' === 文字列は ( ) 丸カッコではさんで使います。C や Java ではダブルクォーテションを使って文字列リテラルを扱ったのと同じようなことです。文字列開始の ( の後に各種文法キーワードが登場しても、その機能は無視されて、文字列として扱います。文字列開始後 ) で閉じないうちは連続して ( や ) で対になる丸カッコが登場しても文字列の終わりとして扱われることは無く、いづれも文字列中の文字として扱われます。C などのエスケープシーケンスのように明示的に特殊な記号を用いて、特殊な文字列意味のあるコードを使うことができます。16進数文字列は < > 大なり、小なり記号で囲みます。前方から2桁づつが1文字で解釈されます。最後で一桁たりない場合は0を追加します。16進数の英文字部(a~f)は大文字で小文字でもよいです。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 200px;">シーケンス</th> <th>意味</th> </tr> <tr> <td>\n</td> <td>改行</td> </tr> <tr style=" background: #dddddd;"> <td>\r</td> <td>復帰</td> </tr> <tr> <td>\t</td> <td>水平タブ</td> </tr> <tr style=" background: #dddddd;"> <td>\b</td> <td>バックスペース</td> </tr> <tr> <td>\f</td> <td>改ページ</td> </tr> <tr style=" background: #dddddd;"> <td>\(</td> <td> ( 左側丸カッコ(パーレン)</td> </tr> <tr> <td>\)</td> <td> ) 右側丸カッコ(パーレン)</td> </tr> <tr style=" background: #dddddd;"> <td>\\</td> <td> \ エスケープ文字そのもの</td> </tr> <tr> <td>\ooo</td> <td>oooに示される8進数文字コード 0 ~ 511</td> </tr> </table> 例 <Syntaxhighlight2 lang="text"> (Strings Sample) </Syntaxhighlight2> === '''名前''' === /で始まる名前は大文字と小文字が区別されます。/から名前終了文字までに空白文字は使えません。/そのものの単独1文字も名前として使えますが、たぶん使わない。 === '''配列''' === [ ] 角カッコ(ブラケット)の中に名前、参照、文字列、数値をおいて、配列を構成することができます。 [ ] 先の記事で触れたとおり、2次元配列のような概念がありません。配列の中に配列をいれることはできます。要素を順次、指定するというために使われます。例えば以下のようなモノも配列です。 例<br /> [0 (String) /flag 6 0 R [1 0 0 1]] === '''辞書''' === 辞書は << >> によって囲われる順序による意味がない塊です。先の記事でフォント書式をネストしたように入れ子で使うこともできます。 === '''日付''' === 日付は <D:YYYYMMDDHHmmSSoHH'mm'>という形式で表記します。日本(東京UTC+9:00)における2021年7月24日21:00:00の場合は 例<br /> :<D:20210724210000+09'00'> となります。 === '''ストリーム''' === ストリームにはテキストやコード化されたもの文書の内容に関する情報を記述します。テキストでもやったようにキー /Lengthと数値でストリームの長さを指定したり、どうやってデコードするべきかという情報を持つキー/Filterとその手法名のキー値を設定します。以下にストリームのキー値を示します。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Length</td> <td>整数</td> <td>ストリームのバイト長</td> </tr> <tr style=" background: #eeeeee;"> <td>/Filter</td> <td>キー値または配列</td> <td>デコードキー値を指定します。配列で複数のデコードキー値を示せます。</td> </tr> <tr style=" background: #dddddd;"> <td>/DecodeParms</td> <td>辞書または配列</td> <td>/Filterの指定したキー値に付随するオプションのパラメータを指定します。</td> </tr> <tr> <td>/F</td> <td>ファイル指定</td> <td>PDF-1.2機能ストリームデータのファイル名を指定</td> </tr> <tr style=" background: #eeeeee;"> <td>/FFilter</td> <td>キーまたは配列</td> <td>PDF-1.2機能、上記の/F指定時に適用デーコードキー値を指定するために使います</td> </tr> <tr style=" background: #dddddd;"> <td>/FDecodeParms</td> <td>辞書または配列</td> <td>PDF-1.2機能、上記の/F指定時のオプション指定に使います。</td> </tr> </table> フィルターとパラメータには以下のようなものがあります。具体的な使い方はここでは示しません。 ■/ASCIIHexDecode :パラメータ無し ■/ASCII85Decode :パラメータ無し ■/LZWDecode :パラメータ /Predictor (整数1,2,10,11,12,13,14,15), /Colors(整数), /BitsPerComponent(整数), /Columns(整数), /EarlyChange(整数) ■/FlateDecode :パラメータ LZWDecodeと同じです。 ■/RunLengthDecode :パラメータ無し ■/CCITTFaxDecode :パラメータ /K(整数), /EndOfLine(論理値), /EncodedByteAlign(論理値), /Columns(整数), /Rows(整数), /EndOfBlock(論理値), /Blackls1(論理値), /DamagedRowsBeforeError(整数) ■/DCTDecode :パラメータ /ColorTransform(整数) === '''相互参照テーブル xref''' === 相互参照テーブル xref(xrefはクロスリファレンスという意味だと思う)では1行目にn番目からm個あるオブジェクトを使うということを定義します。1 0 obj~5 0 objを使用するなら0~5の6個を使うので 例 <Syntaxhighlight2 lang="text"> xref 0 6 0000000000 65535 f 0000000013 00000 n 0000000113 00000 n 0000000143 00000 n 0000000163 00000 n 0000000213 00000 n … </Syntaxhighlight2> となります。1~5の5つのオブジェクトなのに0からはじまるというのは、最初の 0000000000 65535 f という行が必要なためです。これは末尾がfになっていてフリーオブジェクトを意味していて、次に使える番号を示しています。1行目にこれがあれば最初の番号からになります。2行目以降は1オブジェクトづつどこにオブジェクトがあるかファイル先頭からのバイト値と更新番号とnという末尾文字がつけられた行が続きます。ただし、PDFが編集されobj番号がきえた場合は、その行のバイト値を0にして、次のオブジェクト番号が付与されます。上記の例の場合は、削除されたオブジェクトの行が 0000000000 00007 f となるでしょう。そして、つぎのオブジェクトが追加されると、追加されたオブジェクトのファイル先頭からのバイト値と更新番号とnという末尾文字をもったものが追加されるとともにxrefの次の行は 0 7 となるでしょう。このほかオブジェクト番号に空き番あるパターンでは以下のような記述もあるかもしれません。 例 <Syntaxhighlight2 lang="text"> xref 0 1 0000000000 65535 f 3 1 0000000013 00000 n 44 2 0000000113 00000 n 0000000143 00000 n 50 2 0000000163 00000 n 0000000213 00000 n … </Syntaxhighlight2> 更新処理の部分を作るのは難しいので、こういうところまで支援するようなアプリをつくる場合はもっと深い理解が必要なので、仕様書を読み込まないとだめかもです。仕様書には更新処理に関することも言及されています。読むしかないですね。 === '''トレーラ''' === trailerは追跡するモノという意味があります。ここで、文書全体のことにかかわる情報を設定したりします。キー /Size と /Root は必須の重要なキーワードです。trailer部で設定できるキーは以下のとおりです。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Size</td> <td>整数</td> <td>全オブジェクト数より1大きい値。プラス1は使えるオブジェクト番号を示したフリーエントリの1件分</td> </tr> <tr style=" background: #eeeeee;"> <td>/Root</td> <td>辞書 参照値</td> <td>カタログオブジェクトへの参照</td> </tr> <tr> <td>/Prev</td> <td>整数</td> <td>更新されたファイルに存在していて、この場合トレーラ部は2か所に分かれるので、その手前のトレーラ部があるファイル先頭からのバイト値</td> </tr> <tr style=" background: #eeeeee;"> <td>/Encrypt</td> <td>辞書</td> <td>暗号化手法を定義した辞書への参照。</td> </tr> <tr> <td>/Info</td> <td>辞書</td> <td>文書情報を記載したオブジェクトへの参照</td> </tr> <tr style=" background: #eeeeee;"> <td>/ID</td> <td>配列</td> <td>文書情報から生成した2つのMD5文字列</td> </tr> </table> /IDで使われるMD5とは The MD5 Message Digest Algorithmという暗号化方式で、暗号と復号が同一の手順になっています。ファイルの識別子として使われます。1つめのIDは生成した時の文書情報で2つめのIDは更新する都度、生成するものです。この識別子は、文書が作成された、更新された時間、ファイルのパス、ファイルのサイズ、ファイルの文書情報のすべての値を元に生成されます。暗号化に使う訳ではないので、文字列に上記の項目を含めて、MD5の値を生成していれば、特に決まりはないと思います。AdobeのPDF1.7仕様書にも、やり方は書いてませんでした。 /Infoに指定する辞書には以下のようなキーに文字列を設定できます。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Title</td> <td>文字列</td> <td>PDF文書の題名</td> </tr> <tr style=" background: #eeeeee;"> <td>/Author</td> <td>文字列</td> <td>文書の作成者名</td> </tr> <tr> <td>/Subject</td> <td>文字列</td> <td>文書の主題</td> </tr> <tr style=" background: #eeeeee;"> <td>/Keywords</td> <td>文字列</td> <td>文書に関連するキーワード</td> </tr> <tr> <td>/Creator</td> <td>文字列</td> <td>文書を生成した元のアプリケーションの名前</td> </tr> <tr style=" background: #eeeeee;"> <td>/Producer</td> <td>文字列</td> <td>文書の生成処理を実施したアプリケーションの名前</td> </tr> <tr> <td>/CreationDate</td> <td>日付</td> <td>文書を生成した日付</td> </tr> <tr style=" background: #eeeeee;"> <td>/ModDate</td> <td>日付</td> <td>文書が更新された日付</td> </tr> <tr> <td>/Trapped</td> <td>名前</td> <td>トラッピング情報を含むかどうかを示す</td> </tr> </table> トラッピングとは、各オブジェクト同士の図形の縁、境界の処理をしていないと、カラー印刷時の3色、4色の回数分だけオーバーラップして印刷するような場合にオフセットがずれると、縁が汚くなる問題を解決するために施す処理のことで、境界部分の重なり部分に工夫をするような処理になります。これを実施しているかどうかを文書情報として示すことができるということです。設定しない場合はUnknownが設定されます。論理値ではなく、名前で設定します。 例<br /> /Trapped /True<br /> /Trapped /False<br /> /Trapped /Unknown<br /> === '''文書カタログ''' === 文書カタログはトレーラ部の中で呼ばれるべきもので、カタログには目録という意味があります。目次のような役割でもあります。以下のような名前と値を定義する部分になります。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Type ★</td> <td>名前</td> <td>/Catalog と指定します。必須です。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Pages ★(間接[指])</td> <td>辞書</td> <td>文書ページである/Type /Pageのルートへの参照を指定する</td> </tr> <tr> <td>/Pagelabels</td> <td>数値</td> <td>(PDF1.3以降)</td> </tr> <tr style=" background: #eeeeee;"> <td>/Names</td> <td>辞書</td> <td>(PDF1.2以降)</td> </tr> <tr> <td>/Dests(間接[指])</td> <td>辞書</td> <td>(PDF1.1以降)</td> </tr> <tr style=" background: #eeeeee;"> <td>/ViewerPreferences</td> <td>辞書</td> <td>(PDF1.2以降)</td> </tr> <tr> <td>/PageLayout</td> <td>名前</td> <td></td> </tr> <tr> <td></td> <td></td> <td>/SinglePage 1ページ表示 ページの移動コマンドを使わないと次は表示しない。</td> </tr> <tr> <td></td> <td></td> <td>/OneColumns ページを連続表示</td> </tr> <tr> <td></td> <td></td> <td>/TwoColumnsLeft 1,3,5… 奇数ページを左に表示</td> </tr> <tr> <td></td> <td></td> <td>/TwoColumnsRight 1,3,5… 奇数ページを右に表示</td> </tr> <tr style=" background: #eeeeee;"> <td>/PageMode</td> <td>名前</td> <td></td> </tr> <tr style=" background: #eeeeee;"> <td></td> <td></td> <td>/UseNone (規定値) アウトラインとサムネイルを非表示</td> </tr> <tr style=" background: #eeeeee;"> <td></td> <td></td> <td>/UseThumbs サムネイル表示</td> </tr> <tr style=" background: #eeeeee;"> <td></td> <td></td> <td>/UseOutlines アウトライン表示</td> </tr> <tr style=" background: #eeeeee;"> <td></td> <td></td> <td>/FullScreens 文書内容をフルスクリーン表示</td> </tr> <tr> <td>/Outlines(間接[指])</td> <td>辞書</td> <td></td> </tr> <tr style=" background: #eeeeee;"> <td>/Threads(間接[指])</td> <td>配列</td> <td>(PDF1.1以降)</td> </tr> <tr> <td>/OpenAction</td> <td>配列か辞書</td> <td>(PDF1.1以降)</td> </tr> <tr style=" background: #eeeeee;"> <td>/URI</td> <td>辞書</td> <td></td> </tr> <tr> <td>/AcroForm</td> <td>辞書</td> <td>(PDF1.2以降)</td> </tr> <tr style=" background: #eeeeee;"> <td>/StructTreeRoot</td> <td>辞書</td> <td>(PDF1.3以降)</td> </tr> <tr> <td>/SpiderInfo</td> <td>辞書</td> <td>(PDF1.3以降)</td> </tr> </table> === '''ページツリー''' === 文書ページ情報を記載したオブジェクト。文書の内容ではなく、例えばページのサイズのようなページ固有の形式の情報を記述するものです。 ==== '''ページツリーノード''' ==== ページツリーには、ページ情報を記載しますが、ページツリーを記載したページが書いてある参照をまとめる情報を記載するものとして、ページツリーノードというものが使われるのも一般的です。ページツリーは、複数階層として組めるので、ページツリーノードの参照先がまたページツリーノードになっていて、何回かページツリーノードを参照した先にページ情報を記載しているものがあるという構造をもたせることが出来ます。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Type ★</td> <td>名前</td> <td>/Pages と指定します。必須です。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Parent ★(間接[指])</td> <td>辞書</td> <td>複数階層を持つページツリーノードでどこから参照されたかという情報を記載する辞書です。</td> </tr> <tr> <td>/Kids ★</td> <td>配列</td> <td>ページツリーノードあるいはページ情報への参照を配列で指定します。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Count ★</td> <td>整数</td> <td>ぶら下がっているページツリーノード、ページ情報への参照の総数。その下にぶら下がっているものはカウントしない。直接ぶら下がっている数だけ</td> </tr> </table> 例 <Syntaxhighlight2 lang="text"> 5 0 obj << /Type /Pages /Parent 2 0 R /Kids [ 6 0 R 7 0 R 9 0 R ] /Count 3 >> endobj </Syntaxhighlight2> ==== '''ページオブジェクト''' ==== ページツリーノードの終端にぶら下がるオブジェクトで、ページ情報を保持するものです。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Type ★</td> <td>名前</td> <td>/Page と指定します。必須です。ページツリーノードは/Pagesです。末尾に s が付く使いないでオブジェクトの意味する/Typeが異なります。気を付けて。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Parent ★(間接[指])</td> <td>辞書</td> <td>複数階層を持つページツリーノードでどこから参照されたかという情報を記載する辞書です。</td> </tr> <tr> <td>/Resources ☆</td> <td>辞書</td> <td>指定しない場合は親ノード、階層を遡ったところにある一番近い階層の指定を採用します。どこかで指定してある必要はあります。こういう状態をここでは、必須(継承可)あるいは☆と表現します。</td> </tr> <tr style=" background: #eeeeee;"> <td>/MediaMix ☆</td> <td>矩形</td> <td>必須(継承可) ページのサイズをピクセルで指定します。</td> </tr> <tr> <td>/CropBox ◇</td> <td>矩形</td> <td>指定しない場合は親ノード、階層を遡ったところにある一番近い階層の指定を採用します。どこかで指定してある必要はなく省略可能。こういう状態をここでは、省略可(継承可)あるいは◇と表現します。印刷・表示対象の領域。MediaBox値が規定値</td> </tr> <tr style=" background: #eeeeee;"> <td>/BleedBox </td> <td>矩形</td> <td>(PDF1.3以上)制作環境の出力において対象となる領域。CropBox値が規定値</td> </tr> <tr> <td>/TrimBox</td> <td>矩形</td> <td>トリミング後寸法。CropBox値が規定値</td> </tr> <tr style=" background: #eeeeee;"> <td>/ArtBox </td> <td>矩形</td> <td>作者が意図する出力領域。CropBox値が規定値</td> </tr> <tr> <td>/Contents</td> <td>ストリームか配列</td> <td>トリミング後寸法。CropBox値が規定値</td> </tr> <tr style=" background: #eeeeee;"> <td>/Rotate </td> <td>整数</td> <td>0, 90, 180, 270のいずれかを度数で表示。0 が規定値</td> </tr> <tr> <td>/Thumb</td> <td>ストリーム</td> <td>サムネールイメージを指定</td> </tr> <tr style=" background: #eeeeee;"> <td>/B </td> <td>配列</td> <td>(PDF1.1以上)アーティクルビーズへの参照配列を設定</td> </tr> <tr> <td>/Dur</td> <td>数値</td> <td>ページ表示時間を秒で指定。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Trans </td> <td>配列</td> <td>(PDF1.1以上)アーティクルビーズへの参照配列を設定</td> </tr> <tr> <td>/Dur</td> <td>数値</td> <td>(PDF1.1以上)ページ表示時間を秒で指定。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Trans </td> <td>辞書</td> <td>(PDF1.1以上)次ページへの移行効果への参照を設定</td> </tr> <tr> <td>/Annots</td> <td>配列</td> <td>注釈辞書配列</td> </tr> <tr style=" background: #eeeeee;"> <td>/AA </td> <td>辞書</td> <td>(PDF1.2以上)オープンクローズ時のアクションへの参照を設定</td> </tr> <tr> <td>/PieceInfo</td> <td>辞書</td> <td>(PDF1.3以上)ページピース辞書</td> </tr> <tr style=" background: #eeeeee;"> <td>/LastModified </td> <td>日付</td> <td>(PDF1.3以上)ページが最後に変更された日付と時間</td> </tr> <tr> <td>/StructParents</td> <td>整数</td> <td>(PDF1.3以上)構造ペアレントツリーにおけるページのエントリ整数キー</td> </tr> <tr style=" background: #eeeeee;"> <td>/ID </td> <td>文字列</td> <td>(PDF1.3以上)できれば間接参照で記述するページペアレントWebCaptureコンテンツセットのデジタル識別子</td> </tr> <tr> <td>/PZ</td> <td>数値</td> <td>(PDF1.3以上)構造ペアレントツリーにおけるページのエントリ整数キー</td> </tr> <tr style=" background: #eeeeee;"> <td>/SeparationInfo </td> <td>辞書</td> <td>(PDF1.3以上)色分解辞書</td> </tr> </table> === '''名前辞書''' === 名前辞書は /xxx という形式の名前に対応する値は何かというものを複数設定しているような << >> で囲われた辞書のことです。これを使って様々な名前が準備されるため、各オブジェクトでの値の指定が楽になります。以下のようなキーも設定できます。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Dests</td> <td>名前</td> <td>名前辞書の割り当てをする先</td> </tr> <tr style=" background: #eeeeee;"> <td>/AP </td> <td>名前</td> <td>注釈外観ストリームに割り当てする名前</td> </tr> <tr> <td>/JavaScript</td> <td>名前</td> <td>JavaScriptの割り当てをする先</td> </tr> <tr style=" background: #eeeeee;"> <td>/Pages </td> <td>名前</td> <td>可視ページへの対話フォームの割り当てする名前</td> </tr> <tr> <td>/Templates</td> <td>名前</td> <td>不可視ページへの対話フォームの割り当てをする名前</td> </tr> <tr style=" background: #eeeeee;"> <td>/IDS </td> <td>名前</td> <td>コンテンツIDをWeb Captureコンテンツセットに割り当てする名前</td> </tr> <tr> <td>/URLS</td> <td>名前</td> <td>URLをWeb Captureコンテンツセットに割り当てする名前</td> </tr> </table> === '''コンテンツストリーム''' === コンテンツを記述する部分です。PDF1.0~1.7および2.0にわたって起こる互換性エラーを無視することを明示するオペレータがあります。 BX オペレータ。このオペレータが登場したところから EX オペレータが出るところまでが互換性エラーに対して柔軟に対応するべく、互換性エラーを無視してくれます。 === '''リソース辞書''' === フォントやグラフィックス設定なんかを指定する役割の辞書です。以下のようなキーでそれぞれのリソースを設定できます。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/ExtGState</td> <td>辞書</td> <td>グラフィック状態を指定する辞書</td> </tr> <tr style=" background: #eeeeee;"> <td>/ColorSpace </td> <td>辞書</td> <td>カラースペース。カラー指定に関する設定を指定する辞書</td> </tr> <tr> <td>/Pattern</td> <td>辞書</td> <td>パターン状態を指定する辞書</td> </tr> <tr style=" background: #eeeeee;"> <td>/Shading </td> <td>辞書</td> <td>面の表面状態であるシェーディング指定に関する設定を指定する辞書</td> </tr> <tr> <td>/XObject</td> <td>ストリーム</td> <td>外部オブジェクトを割り当てする辞書。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Font </td> <td>辞書</td> <td>フォント指定に関する設定を指定する辞書</td> </tr> <tr> <td>/ProcSet</td> <td>配列</td> <td>定義済み手続きセットの名前を割り当てする配列。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Properties </td> <td>辞書</td> <td>マーク付きコンテンツ用の特性リスト辞書の指定に関する設定を指定する辞書</td> </tr> </table> === '''矩形''' === 矩形データは4つのデータを持つ配列として [左下x 左下y 右上x 右上y] の形式で表現します。 === '''名前ツリー''' === 名前ツリーは以下のようなキーを用いて構成します。 <table style="width: 100%; text-align: left; border-collapse: collapse; border-spacing: 0;"> <tr style=" background: #778ca3; border-right: solid 1px #778ca3; color: #ffffff;"> <th style="width: 175px;">キー</th> <th style="width: 175px;">型</th> <th>指定する値の内容</th> </tr> <tr> <td>/Kids</td> <td>配列</td> <td>子への参照を配列で指定。。</td> </tr> <tr style=" background: #eeeeee;"> <td>/Names </td> <td>配列</td> <td>名前と参照の対を配列で指定</td> </tr> <tr> <td>/Limits</td> <td>配列</td> <td>Namesの名前から名前までの値を使うことを明示する。</td> </tr> </table> <Syntaxhighlight2 lang="text"> 2 0 obj << /Limits [(Saturday) (Sunday)] /Kids [ 4 0 R 5 0 R ] >> endobj 3 0 obj << /Limits [(Monday) (Friday)] /Names [ (Monday) 6 0 R (Tuesday) 7 0 R (Wednesday) 8 0 R (Thursday) 9 0 R (Friday) 10 0 R ] >> endobj </Syntaxhighlight2> === '''数値ツリー''' === 名前ツリーでは /Names 文字列 だったものが /Nums 数値にかわったものを数値ツリーと呼んでいます。 === '''関数''' === === '''ファイル指定辞書''' === === '''埋め込みファイルストリーム''' === === '''目的別文字列''' === [[PDF 内部構造]]に戻る。
PDF 内部構造 基本とファイル構造キー
に戻る。
個人用ツール
3.144.137.236
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ