用語集#
- coordinate#
This is an esential general mathematical / geometrical term for understanding this documentation. Please see this section for a more detailed discussion: Coordinates.
- matrix_like#
6つの数字からなるPythonのシーケンス。
- rect_like#
4つの数字からなるPythonのシーケンス。
- irect_like#
4つの整数からなるPythonのシーケンス。
- point_like#
2つの数字からなるPythonのシーケンス。
- quad_like#
4つの
point_like
アイテムからなるPythonのシーケンス。
- inheritable#
PDF内のいくつかの値は、親子関係で下位のオブジェクトに継承されることがあります。例えば、ページのmediabox(物理的なサイズ)は一度だけ指定されるか、
pagetree
のいくつかのノードで指定され、それ以外の値を指定しない子供たちにとってその値が取得されます。
- MediaBox#
物理的なページサイズを指定する4つの浮動小数点数からなるPDF配列 -(
inheritable
、必須)。この矩形には、追加で指定できる他のすべてのPDFページ矩形を含める必要があります。これらの矩形にはCropBox、TrimBox、ArtBox、BleedBoxがあります。詳細については、 Adobe PDFリファレンス を参照してください。MediaBoxは、MuPDFとPDFの座標系の間に違いがない唯一の矩形です。Page.mediabox
は常に、ページオブジェクト定義内の/MediaBox
キーと同じ座標を示します。他のすべての矩形に関して、MuPDFはy座標を変換し、上部境界が参照点となるようにします。これは時に混乱することがあります。例えば、次のような状況に遭遇することがあります。ページ定義には次のような同一の値が含まれています:
/MediaBox [ 36 45 607.5 765 ]
、/CropBox [ 36 45 607.5 765 ]
。したがって、PyMuPDFは
page.mediabox = Rect(36.0, 45.0, 607.5, 765.0)
と表示します。しかし、
page.cropbox = Rect(36.0, 0.0, 607.5, 720.0)
です。なぜなら、2つのy座標が変換されているため(両方から45が引かれているため)です。
- CropBox#
ページの可視領域を指定する4つの浮動小数点数からなるPDF配列 -(
inheritable
、任意)。これはTrimBox、ArtBox、BleedBoxのデフォルト値です。存在しない場合、デフォルトはMediaBoxです。この値はページが回転している場合には影響を受けません -Page.rect
とは対照的です。また、ページ矩形以外では、クロップボックスの左上隅が(0, 0)であるかどうかは問題ありません。
- catalog#
中央のPDF
dictionary
- または「ルート」とも呼ばれる - で、文書全体のパラメータと多くの他の情報へのポインタを含んでいます。そのxref
はDocument.pdf_catalog()
で返されます。
- trailer#
より正確には、PDFトレーラーには
dictionary
形式の情報が含まれています。通常、ファイルの末尾に配置されています。この辞書には、カタログやメタデータのxref
、xref
の数などが含まれています。PDF仕様の定義は次のとおりです:「PDFファイルのトレーラーは、ファイルを読むアプリケーションがクロスリファレンステーブルと特定の特別なオブジェクトを迅速に見つけることを可能にします。アプリケーションはPDFファイルを末尾から読むべきです。」
PyMuPDFでトレーラーにアクセスするには、通常の方法で
Document.xref_object()
、Document.xref_get_key()
、Document.xref_get_keys()
を使用し、正のxref番号の代わりに-1
を指定します。
- contents#
コンテンツストリームは、PDF
object
に添付されたstream
を持ち、そのデータはページに描画されるグラフィカル要素を記述する命令のシーケンスから成り立っています。 Adobe PDFリファレンス の「Stream Objects」(p.19)を参照してください。これらのストリームで使用されるミニ言語の概要については、 Adobe PDFリファレンス の「Operator Summary」章(p.643)をご覧ください。PDFページには0から多くのコンテンツオブジェクトを持つことができます。コンテンツオブジェクトが存在しない場合、ページは空になります(ただし注釈は表示される可能性があります)。複数のコンテンツオブジェクトがある場合、それらは1つのオブジェクトに存在するかのように順番に解釈されます(つまり、連結された文字列のように)。なお、同じ構文を使用する他のストリームオブジェクトタイプもあることに注意してください。たとえば、注釈に関連する外観辞書やフォームXObjectなどです。PyMuPDFは、PDFページのコンテンツに対処するためのいくつかのメソッドを提供しています:
Page.read_contents()
– ページのすべてのコンテンツを読み込んで1つのバイトオブジェクトに連結します。Page.clean_contents()
– MuPDFの関数をラップして、ページのすべてのコンテンツを読み込んで連結し、構文をクリーンアップします。これにより、1つの/Contents
オブジェクトのみが存在します。さらに、ページのresources
はそれと同期され、ページが実際に参照する画像、フォント、その他のオブジェクトのみが含まれるようになります。Page.get_contents()
– ページのcontents
オブジェクトのxref
番号のリストを返します。空かもしれません。Document.xref_stream()
をこれらのxrefの1つとともに使用して、対応するコンテンツセクションを読み込むことができます。Page.set_contents()
– ページの/Contents
キーを指定されたxref番号に設定します。
- resources#
PDFページに必要なリソース(画像やフォントなど)への参照を含む
dictionary`(必須、継承可能、 :ref:`AdobeManual
p. 81)および一部の他のオブジェクト(フォームXObject)が必要です。このdictionary
は、オブジェクト定義内のキー/リソースの下にサブ辞書として表示されます。継承可能なオブジェクトタイプであるため、すべてのページまたは一部のページの「親」リソースが存在する可能性があります。
- dictionary#
PDF
object
のタイプで、同じ名前のPythonの概念に多少似ています。「辞書オブジェクトは、辞書のエントリとして知られるオブジェクトのペアを含む連想テーブルです。各エントリの最初の要素はキーであり、2番目の要素は値です。キーは名前である必要があります(...)。値は他の辞書を含む他の種類のオブジェクトであることができます。値がnull (...) の辞書エントリは、不在のエントリと同等です。」(Adobe PDFリファレンス p. 18)。辞書は、PDF内で最も重要なオブジェクトのタイプです。以下は、
page
を記述する例です:<< /Contents 40 0 R % value: an indirect object /Type/Page % value: a name object /MediaBox[0 0 595.32 841.92] % value: an array object /Rotate 0 % value: a number object /Parent 12 0 R % value: an indirect object /Resources<< % value: a dictionary object /ExtGState<</R7 26 0 R>> /Font<< /R8 27 0 R/R10 21 0 R/R12 24 0 R/R14 15 0 R /R17 4 0 R/R20 30 0 R/R23 7 0 R /R27 20 0 R >> /ProcSet[/PDF/Text] % value: array of two name objects >> /Annots[55 0 R] % value: array, one entry (indirect object) >>
Contents、Type、MediaBoxなどはキーであり、40 0 R、Page、[0 0 595.32 841.92]などはそれぞれの値です。「<<」と「>>」という文字列は、オブジェクト定義を括るために使用されます。
この例は、ネストされた辞書の値の構文も示しています。Resourcesはその値としてオブジェクトを持ち、それ自体がExtGState(値は<</R7 26 0 R>>で、これは別の辞書です)、などのキーを持つ辞書です。
- page#
PDFページは、PDF内の1つのページを定義する
dictionary
オブジェクトであり、 Adobe PDFリファレンス p. 71を参照してください。
- pagetree#
文書のページは、ページツリーとして知られる構造を介してアクセスされ、文書内のページの順序を定義します。このツリー構造により、限られたメモリしか使用しないPDFコンシューマーアプリケーションでも、数千ページを含む文書を迅速に開くことができます。ツリーには2種類のノードが含まれています。中間ノードはページツリーノードと呼ばれ、葉ノードはページオブジェクトと呼ばれます。(Adobe PDFリファレンス p. 75)。
ページ参照を単一の配列でリストすることは可能ですが、多くのページを含むPDFは、より迅速な単一ページへのアクセスのためにバランスの取れたツリー構造(「ページツリー」)を使用して作成されることがよくあります。全ページ数に対して、これにより平均ページアクセス時間がページ番号による線形から対数のオーダーに削減されることがあります。
高速なページアクセスのために、MuPDFは独自のメモリ内配列を使用できます - 文書ファイルに存在するかどうかに関係なく。この配列はページ番号でインデックスされるため、完全にバランスが取れたページツリーを経由するアクセスよりもはるかに高速です。
- object#
Pythonに類似して、PDFはオブジェクトの概念をサポートしており、8つの基本型があります:ブール値(「true」または「false」)、整数と実数、文字列(常に括弧で囲まれています - 「()」または「<>」で16進数を示す)、名前(必ず「/」で始まる必要があります、例:
/Contents
)、配列(括弧「[]」で囲まれています)、辞書(括弧「<<>>」で囲まれています)、ストリーム(キーワード「stream」/「endstream」で囲まれています)、およびヌルオブジェクト(「null」)(Adobe PDFリファレンス p. 13)。オブジェクトはラベルを割り当てることで識別可能にすることができます。このラベルは、間接オブジェクトと呼ばれます。PyMuPDFは、Document.xref_object()
を介して間接オブジェクトの定義をクロスリファレンス番号を使って取得することができます。
- stream#
PDFの
dictionary
object
タイプで、Pythonのbytesに似たバイト列が続きます。ただし、「PDFアプリケーションはストリームを段階的に読むことができますが、文字列は完全に読む必要があります。さらに、ストリームの長さは無制限ですが、文字列は実装の制限に従います。そのため、画像やページの説明などの大量のデータを含むオブジェクトは、ストリームとして表現されます。」「ストリームは、キーワード「stream」と「endstream」で囲まれた0バイト以上のバイトで構成されるdictionary
の後に続きます」:nnn 0 obj << dictionary definition >> stream (zero or more bytes) endstream endobj
Adobe PDFリファレンス p. 19を参照してください。PyMuPDFは、
Document.xref_stream()
を介してストリームコンテンツを取得するサポートを提供しています。オブジェクトがストリームタイプかどうかを判断するには、Document.is_stream()
を使用します。
- unitvector#
数学的な概念で、ノルム(「長さ」)が1のベクトルを意味します。通常、ユークリッドノルムが含まれます。PyMuPDFでは、この用語は Point (ポイント) オブジェクトに制限されます。
Point.unit
を参照してください。
- xref#
クロスリファレンス番号の省略形:これはPDF内のオブジェクトに対する一意の識別子である整数です。各PDFにはクロスリファレンステーブルが存在し(物理的には複数の別々のセグメントで構成される場合があります)、各オブジェクトの相対位置をクイックルックアップのために保存します。クロスリファレンステーブルは既存のオブジェクトの数よりも1つ長いエントリを持っており、アイテム0は予約され、何の方法でも使用してはいけません。多くのPyMuPDFクラスにはxref属性(非PDFの場合はゼロ)があり、
Document.xref_length()
- 1を介してPDF内のオブジェクトの総数を知ることができます。
- fontsize#
フォントサイズを指す際、このメトリックは1インチ = 72ポイントとして測定されます。
- resolution#
イメージや Pixmap オブジェクトには、各方向(水平および垂直)の「インチあたりのドット数」である解像度情報が含まれている場合があります。MuPDFはファイルまたはPDFオブジェクトからイメージを読み取る際、この情報を解析し、それぞれ
Pixmap.xres
、Pixmap.yres
に設定します。入力内で有意義な情報が見つからない場合(非正の値や4800を超える値など)、代わりに「適切な」デフォルト値を使用します。通常のデフォルト値は96ですが、一部の場合(例えばJPXイメージの場合)は72になる場合もあります。
- OCPD#
オプショナルコンテンツプロパティ辞書(OCPD) - PDF
catalog
のサブdictionary
。オプショナルコンテンツ情報を保存する中心的な場所で、キー/OCProperties
で識別されます。この辞書には2つの必須エントリと1つのオプションエントリがあります:(1)/OCGs
、必須、すべてのオプショナルコンテンツグループをリストする配列、(2)/D
、必須、デフォルトのオプショナルコンテンツ構成辞書(OCCD)、(3)/Configs
、オプション、代替のOCCDの配列。
- OCCD#
オプショナルコンテンツ構成辞書(OCCD) - PDF
OCPD
内のPDFdictionary
。これはOCGのON / OFF状態とPDFビューアプログラムにどのように表示されるかの設定を保存します。構成を選択することは、一時的な質量表示状態の変更を素早く行う方法です。PDFを開いた後、OCPD
の/D
構成は常にアクティブになります。ビューアは/D
、または配列/Configs
に含まれるオプショナル構成のいずれかに切り替える方法を提供する必要があります。
- OCG#
オプショナルコンテンツグループ(OCG) - 画像や注釈などの他のPDFオブジェクトの表示を制御するために使用される
dictionary
オブジェクト。どのページで定義されているかに関係なく、同じOCGを持つオブジェクトは、OCGをONまたはOFFに設定することで同時に表示または非表示にできます。これは多くのPDFビューア(Adobe Acrobat)が提供するユーザーインターフェース、またはプログラムを使用して達成できます。
- OCMD#
オプショナルコンテンツメンバーシップ辞書(OCMD) -
OCG
のように使用できる辞書オブジェクトで、表示状態を持ちます。OCMDの表示は計算されます:これはOCGの1つ以上の状態を使用してブール値を生成する論理式です。式の結果はON(true)またはOFF(false)として解釈されます。
- ligature#
一部の頻繁な文字の組み合わせは、より高度なフォントでは固有の特別なグリフで表されます。典型的な例には「fi」、「fl」、「ffi」、「ffl」などがあります。これらの複合体はリガチャと呼ばれます。PyMuPDFのテキスト抽出では、対応するユニコードを変更せずに返すオプションがあり、またリガチャをその構成要素に分割することもできます:「fi」 ==> 「f」+「i」など。