PyMuPDF 1.23.0rc1 - en to ja translation catalogue (158 entries)

en: PyMuPDF is a high-performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents.
ja: PyMuPDF は、PDF （およびその他の）ドキュメントのデータ抽出、分析、変換、操作のための高性能な Python ライブラリです。

en: PDF Text Extraction, PDF Image Extraction, PDF Conversion, PDF Tables, PDF Splitting, PDF Creation, Pyodide, PyScript
ja: PDFテキスト抽出、PDFイメージ抽出、PDF変換、PDFテーブル、PDF分割、PDF作成, Pyodide, PyScript

en: Tutorial
ja: チュートリアル

en: This tutorial will show you the use of |PyMuPDF|, :title:`MuPDF` in :title:`Python`, step by step.
ja: このチュートリアルでは、PythonでのPyMuPDF、MuPDFのステップバイステップの使用方法を紹介します。

en: Because :title:`MuPDF` supports not only PDF, but also XPS, OpenXPS, CBZ, CBR, FB2 and EPUB formats, so does PyMuPDF [#f1]_. Nevertheless, for the sake of brevity we will only talk about PDF files. At places where indeed only PDF files are supported, this will be mentioned explicitly.
ja: MuPDFはPDFだけでなく、XPS、OpenXPS、CBZ、CBR、FB2、EPUB形式もサポートしており、PyMuPDFも同様です[1]。ただし、簡潔さのために、ここではPDFファイルについてのみ話を進めます。本当にPDFファイルのみがサポートされている場所では、明示的にその旨を記述します。

en: Importing the Bindings
ja: バインディングのインポート

en: The Python bindings to MuPDF are made available by this import statement. We also show here how your version can be checked::
ja: MuPDFへのPythonバインディングは、このインポート文によって利用可能になります。また、ここではあなたのバージョンを確認する方法も示します::

en: Note on the Name *fitz*
ja: *fitz* という名前についての注意事項

en: The top level Python import name for this library is **"fitz"**. This has historical reasons:
ja: このライブラリのPythonのトップレベルインポート名は **"fitz"** です。 これには歴史的な理由があります：

en: The original rendering library for MuPDF was called *Libart*.
ja: MuPDFの元々のレンダリングライブラリは *Libart* と呼ばれていました。

en: *"After Artifex Software acquired the MuPDF project, the development focus shifted on writing a new modern graphics library called "Fitz". Fitz was originally intended as an R&D project to replace the aging Ghostscript graphics library, but has instead become the rendering engine powering MuPDF."* (Quoted from `Wikipedia <https://en.wikipedia.org/wiki/MuPDF>`_).
ja: 「 Artifex SoftwareがMuPDFプロジェクトを取得した後、開発の焦点は新しいモダンなグラフィックスライブラリ "Fitz"の開発に移りました。 Fitzの開発に移りました。Fitzは元々古くなったGhostscriptグラフィックスライブラリを置き換えるためのR＆Dプロジェクトとして意図されていましたが、代わりにMuPDFを駆動するレンダリングエンジンになりました。」* (  `Wikipedia <https://en.wikipedia.org/wiki/MuPDF>`_ より引用 ) 。

en: So |PyMuPDF| **cannot coexist** with packages named "fitz" in the same Python environment.
ja: したがって、PyMuPDFは同じPython環境で「fitz」という名前のパッケージと共存することはできません

en: Opening a Document
ja: ドキュメントの開く

en: To access a :ref:`supported document<Supported_File_Types>`, it must be opened with the following statement::
ja: :ref:`サポートされているドキュメント <Supported_File_Types>` にアクセスするには、次の文で開く必要があります::

en: This creates the :ref:`Document` object *doc*. *filename* must be a Python string (or a `pathlib.Path`) specifying the name of an existing file.
ja: これにより、 :ref:`Document` オブジェクトdocが作成されます。filenameは、既存のファイルの名前を指定するPythonの文字列（または `pathlib.Path` ）である必要があります。

en: It is also possible to open a document from memory data, or to create a new, empty PDF. See :ref:`Document` for details. You can also use :ref:`Document` as a *context manager*.
ja: また、メモリデータからドキュメントを開くことや、新しい空のPDFを作成することも可能です。詳細については、 :ref:`Document` を参照してください。 :ref:`Document` はコンテキストマネージャとしても使用できます。

en: A document contains many attributes and functions. Among them are meta information (like "author" or "subject"), number of total pages, outline and encryption information.
ja: ドキュメントには多くの属性と関数が含まれています。その中には、メタ情報（「author」や「subject」など）、総ページ数、アウトライン、暗号化情報などがあります。

en: Some :ref:`Document` Methods and Attributes
ja: いくつかの :ref:`Document` メソッドと属

en: **Method / Attribute**
ja: **メソッド / 属性**

en: **Description**
ja: 説明

en: the number of pages (*int*)
ja: ページ数 (*int*)

en: the metadata (*dict*)
ja: メタデータ (*dict*)

en: get the table of contents (*list*)
ja: 目次を取得する (*list*)

en: read a :ref:`Page`
ja: :ref:`Page` を読む

en: Accessing Meta Data
ja: メタデータへのアクセス

en: PyMuPDF fully supports standard metadata. :attr:`Document.metadata` is a Python dictionary with the following keys. It is available for **all document types**, though not all entries may always contain data. For details of their meanings and formats consult the respective manuals, e.g. :ref:`AdobeManual` for PDF. Further information can also be found in chapter :ref:`Document`. The meta data fields are strings or *None* if not otherwise indicated. Also be aware that not all of them always contain meaningful data -- even if they are not *None*.
ja: PyMuPDFは標準的なメタデータを完全にサポートしています。 :attr:`Document.metadata` はPythonの辞書で、次のキーが含まれています。これはすべてのドキュメントタイプで利用可能ですが、すべてのエントリが常にデータを含むわけではありません。それらの意味や形式の詳細については、対応するマニュアルを参照してください。例えば、PDFの場合は :ref:`AdobeManual` を参照してください。さらなる情報は :ref:`Document` の章でも見つけることができます。メタデータのフィールドは文字列または *None* です（特に指定がない場合）。また、それらのすべてが常に意味のあるデータを含んでいるわけではないことにも注意してください。

en: Key
ja: キー

en: Value
ja: 値

en: producer (producing software)
ja: プロデューサー（生成ソフトウェア）

en: format: 'PDF-1.4', 'EPUB', etc.
ja: 形式：'PDF-1.4'、'EPUB'など

en: encryption method used if any
ja: 暗号化方法（適用されている場合）

en: date of last modification
ja: 最終更新日

en: date of creation
ja: 作成日

en: creating application
ja: 作成アプリケーション

en: Apart from these standard metadata, **PDF documents** starting from PDF version 1.4 may also contain so-called *"metadata streams"* (see also :data:`stream`). Information in such streams is coded in XML. PyMuPDF deliberately contains no XML components for this purpose (the :ref:`PyMuPDF Xml class<Xml>` is a helper class intended to access the DOM content of a :ref:`Story` object), so we do not directly support access to information contained therein. But you can extract the stream as a whole, inspect or modify it using a package like `lxml`_ and then store the result back into the PDF. If you want, you can also delete this data altogether.
ja: PDFバージョン1.4以降のPDFドキュメントには、これらの標準的なメタデータに加えて、いわゆる「メタデータストリーム」（streamも参照）が含まれていることがあります。このようなストリームに含まれる情報はXMLでコード化されています。PyMuPDFは意図的にこの目的のためにXMLコンポーネントを含んでいないため（ :ref:`PyMuPDF Xml class<Xml>` クラスは :ref:`Story` オブジェクトのDOMコンテンツにアクセスするためのヘルパークラスです）、その情報への直接的なアクセスをサポートしていません。しかし、 `lxml`_  などのパッケージを使用してストリーム全体を抽出し、検査または変更し、その結果をPDFに再格納することはできます。必要な場合は、このデータを完全に削除することもできます。

en: There are two utility scripts in the repository that `metadata import (PDF only)`_ resp. `metadata export`_ metadata from resp. to CSV files.
ja: リポジトリには、`metadata import(PDF only)`_ および `metadata export`_ をCSVファイルに行うための2つのユーティリティスクリプトがあります

en: Working with Outlines
ja: アウトラインと一緒に作業する

en: The easiest way to get all outlines (also called "bookmarks") of a document, is by loading its *table of contents*::
ja: アウトライン（または「ブックマーク」とも呼ばれる）を取得する最も簡単な方法は、そのドキュメントの目次を読み込むことです::

en: This will return a Python list of lists *[[lvl, title, page, ...], ...]* which looks much like a conventional table of contents found in books.
ja: これにより、Pythonのリストであるリスト [[lvl, title, page, ...], ...] が返されます。これは、本に見られる伝統的な目次に非常によく似たものです。

en: *lvl* is the hierarchy level of the entry (starting from 1), *title* is the entry's title, and *page* the page number (1-based!). Other parameters describe details of the bookmark target.
ja: lvl はエントリーの階層レベル（1から開始）を示し、title はエントリーのタイトル、page はページ番号（1から始まる）を示します。その他のパラメータはブックマークのターゲットの詳細を説明します。

en: There are two utility scripts in the repository that `toc import (PDF only)`_ resp. `toc export`_ table of contents from resp. to CSV files.
ja: リポジトリ内には、CSVファイルから目次をインポートおよびエクスポートするためのユーティリティスクリプトが2つあります。詳細は、 `toc import (PDF only)`_  および `toc export`_ をご覧ください。

en: Working with Pages
ja: ページの操作

en: :ref:`Page` handling is at the core of MuPDF's functionality.
ja: :ref:`Page` の処理はMuPDFの機能の中核です。

en: You can render a page into a raster or vector (SVG) image, optionally zooming, rotating, shifting or shearing it.
ja: ページをラスターまたはベクター（SVG）イメージにレンダリングすることができます。オプションでズーム、回転、シフト、またはシアーを行うこともできます

en: You can extract a page's text and images in many formats and search for text strings.
ja: テキストと画像を多くの形式で抽出し、テキスト文字列を検索することができます。

en: For PDF documents many more methods are available to add text or images to pages.
ja: PDFドキュメントの場合、さらに多くのメソッドが利用可能で、テキストや画像をページに追加することができます

en: First, a :ref:`Page` must be created. This is a method of :ref:`Document`::
ja: 最初に :ref:`Page` を作成する必要があります。これは :ref:`Document`  のメソッドです::

en: Any integer `-∞ < pno < page_count` is possible here. Negative numbers count backwards from the end, so *doc[-1]* is the last page, like with Python sequences.
ja: ここでは、どんな整数  `-∞ < pno < page_count`  でも可能です。負の数は末尾から逆に数えますので、doc[-1] はPythonのシーケンスと同様に最後のページになります

en: Some more advanced way would be using the document as an **iterator** over its pages::
ja: より高度な方法として、ドキュメントをそのページの  **イテレータ** として使用することもできます::

en: Once you have your page, here is what you would typically do with it:
ja: ページを取得したら、通常は次のようなことを行います：

en: Inspecting the Links, Annotations or Form Fields of a Page
ja: リンク、注釈、またはフォームフィールドをページで調査する

en: Links are shown as "hot areas" when a document is displayed with some viewer software. If you click while your cursor shows a hand symbol, you will usually be taken to the target that is encoded in that hot area. Here is how to get all links::
ja: リンクは、ドキュメントがビューアソフトウェアで表示されるときに「ホットエリア」として表示されます。カーソルが手のシンボルを示すときにクリックすると、通常、そのホットエリアにエンコードされたターゲットに移動します。以下はすべてのリンクを取得する方法です::

en: *links* is a Python list of dictionaries. For details see :meth:`Page.get_links`.
ja: `links` はPythonの辞書のリストです。詳細は :meth:`Page.get_links` を参照してください。

en: You can also use an iterator which emits one link at a time::
ja: また、一度に1つのリンクを生成するイテレータを使用することもできます::

en: If dealing with a PDF document page, there may also exist annotations (:ref:`Annot`) or form fields (:ref:`Widget`), each of which have their own iterators::
ja: PDFドキュメントのページを扱う場合、注釈（:ref:`Annot`）やフォームフィールド（:ref:`Widget`）も存在する場合があります。それぞれに独自のイテレータがあります::

en: Rendering a Page
ja: ページのレンダリング

en: This example creates a **raster** image of a page's content::
ja: 以下の例は、ページの内容をラスター画像として作成します::

en: *pix* is a :ref:`Pixmap` object which (in this case) contains an **RGB** image of the page, ready to be used for many purposes. Method :meth:`Page.get_pixmap` offers lots of variations for controlling the image: resolution / DPI, colorspace (e.g. to produce a grayscale image or an image with a subtractive color scheme), transparency, rotation, mirroring, shifting, shearing, etc. For example: to create an **RGBA** image (i.e. containing an alpha channel), specify *pix = page.get_pixmap(alpha=True)*.
ja: `pix` はページのRGBイメージを含む :ref:`Pixmap` オブジェクトです。このイメージは多くの目的に使用する準備ができています。:meth:`Page.get_pixmap` メソッドには、画像を制御するためのさまざまなオプションが用意されています：解像度/DPI、カラースペース（例えば、グレースケールイメージや減色カラースキームのイメージを作成するために）、透明度、回転、ミラーリング、シフト、シアーなどがあります。例えば、RGBAイメージ（アルファチャネルを含むイメージ）を作成する場合は、`pix = page.get_pixmap(alpha=True)` と指定します。

en: A :ref:`Pixmap` contains a number of methods and attributes which are referenced below. Among them are the integers *width*, *height* (each in pixels) and *stride* (number of bytes of one horizontal image line). Attribute *samples* represents a rectangular area of bytes representing the image data (a Python *bytes* object).
ja: :ref:`Pixmap` には、以下で参照されるいくつかのメソッドと属性が含まれています。その中には、ピクセル単位の整数である幅、高さ（それぞれピクセル単位）および `stride` （1つの水平イメージラインのバイト数）があります。属性 `samples` は、イメージデータを表すバイトの長方形領域（Pythonの `bytes` オブジェクト）を表します。

en: You can also create a **vector** image of a page by using :meth:`Page.get_svg_image`. Refer to this `Vector Image Support page`_ for details.
ja: :meth:`Page.get_svg_image` を使用することで、ページのベクターイメージを作成することもできます。詳細については、`Vector Image Support page`_ ページを参照してください。

en: Saving the Page Image in a File
ja: ページのイメージをファイルに保存する

en: We can simply store the image in a PNG file::
ja: 簡単にページのイメージをPNGファイルに保存できます::

en: Displaying the Image in GUIs
ja: GUIでイメージを表示する

en: We can also use it in GUI dialog managers. :attr:`Pixmap.samples` represents an area of bytes of all the pixels as a Python bytes object. Here are some examples, find more in the `examples`_ directory.
ja: GUIダイアログマネージャーでも使用できます。 :attr:`Pixmap.samples` は、すべてのピクセルのバイトの領域をPythonのbytesオブジェクトとして表します。以下はいくつかの例ですが、さらに多くの例は `examples`_  ディレクトリで見つけることができます。

en: Consult their documentation for adjustments to RGB(A) pixmaps and, potentially, specifics for your wxPython release::
ja: RGB(A)のピクセルマップに対する調整や、可能な場合はwxPythonのリリースに特有の詳細については、関連するドキュメントを参照してください。

en: Please also see section 3.19 of the `Pillow documentation`_::
ja: `Pillow documentation`_ ドキュメントのセクション3.19も参照してください。

en: The following **avoids using Pillow**::
ja: 以下の方法では、Pillowを使用しないようにしています。

en: If you are looking for a complete Tkinter script paging through **any supported** document, `here it is!`_. It can also zoom into pages, and it runs under Python 2 or 3. It requires the extremely handy `PySimpleGUI`_ pure Python package.
ja: もし、サポートされている任意のドキュメントをページ送りで表示する完全なTkinterスクリプトをお探しでしたら、`こちらがあります！ <https://github.com/pymupdf/PyMuPDF-Utilities/blob/master/examples/browse-document/browse.py>`_ また、このスクリプトではページをズームインすることもでき、Python 2または3で動作します。非常に便利な純粋なPythonパッケージである `PySimpleGUI`_ が必要です。

en: Please also see section 3.16 of the `Pillow documentation`_::
ja: Pillowドキュメントのセクション3.16も参照してください。

en: Again, you also can get along **without using Pillow.** Qt's `QImage` luckily supports native Python pointers, so the following is the recommended way to create Qt images::
ja: Pillowを使用せずに進めることもできます。幸運なことに、QtのQImageはネイティブなPythonポインタをサポートしているので、以下はQtイメージを作成する推奨される方法です。

en: Extracting Text and Images
ja: テキストや画像を抽出する

en: We can also extract all text, images and other information of a page in many different forms, and levels of detail::
ja: ページのすべてのテキスト、画像、およびその他の情報を、さまざまな形式や詳細レベルで抽出することもできます。::

en: Use one of the following strings for *opt* to obtain different formats [#f2]_:
ja: 異なるフォーマットを得るために、以下の文字列のうち1つをoptに使用できます [#f2]_:

en: **"text"**: (default) plain text with line breaks. No formatting, no text position details, no images.
ja: **"text"**:  (デフォルト) 行送りのプレーンテキスト。書式設定やテキストの位置の詳細、画像は含まれません。

en: **"blocks"**: generate a list of text blocks (= paragraphs).
ja: **"blocks"**: テキストブロック（段落）のリストを生成します。

en: **"words"**: generate a list of words (strings not containing spaces).
ja: **"words"**: 単語（スペースを含まない文字列）のリストを生成します。

en: **"html"**: creates a full visual version of the page including any images. This can be displayed with your internet browser.
ja: **"html"**: 画像を含むページの完全な視覚的バージョンを作成します。これはインターネットブラウザで表示できます。

en: **"dict"** / **"json"**: same information level as HTML, but provided as a Python dictionary or resp. JSON string. See :meth:`TextPage.extractDICT` for details of its structure.
ja: **"dict"** / **"json"**: HTMLと同じ情報レベルですが、Pythonの辞書またはJSON文字列として提供されます。その構造の詳細については、:meth:`TextPage.extractDICT` を参照してください。

en: **"rawdict"** / **"rawjson"**: a super-set of **"dict"** / **"json"**. It additionally provides character detail information like XML. See :meth:`TextPage.extractRAWDICT` for details of its structure.
ja: **"rawdict"** / **"rawjson"**: "dict" / "json"のスーパーセットです。これにはXMLのような文字の詳細情報も含まれます。その構造の詳細については、:meth:`TextPage.extractRAWDICT` を参照してください。

en: **"xhtml"**: text information level as the TEXT version but includes images. Can also be displayed by internet browsers.
ja: **"xhtml"**: TEXTバージョンのテキスト情報レベルを含み、画像も含まれます。インターネットブラウザでも表示できます。

en: **"xml"**: contains no images, but full position and font information down to each single text character. Use an XML module to interpret.
ja: **"xml"**: 画像は含まれませんが、各テキスト文字までの完全な位置とフォント情報を含みます。XMLモジュールを使用して解釈することができます。

en: To give you an idea about the output of these alternatives, we did text example extracts. See :ref:`Appendix2`.
ja: これらの代替方法の出力のイメージを示すために、テキストの例抽出を行いました。:ref:`Appendix2` を参照してください

en: Searching for Text
ja: テキストを検索す

en: You can find out, exactly where on a page a certain text string appears::
ja: 特定のテキスト文字列がページのどこに現れるかを正確に調べることができます。::

en: This delivers a list of rectangles (see :ref:`Rect`), each of which surrounds one occurrence of the string "mupdf" (case insensitive). You could use this information to e.g. highlight those areas (PDF only) or create a cross reference of the document.
ja: このコードは、"mupdf"（大文字と小文字を区別しない）という文字列が含まれる各領域を囲む長方形（ :ref:`Rect` 参照）のリストを生成します。この情報を使って、それらの領域を強調表示したり（PDFのみ）、文書のクロスリファレンスを作成したりすることができます。

en: Please also do have a look at chapter :ref:`cooperation` and at demo programs `demo.py`_ and `demo-lowlevel.py`_. Among other things they contain details on how the :ref:`TextPage`, :ref:`Device` and :ref:`DisplayList` classes can be used for a more direct control, e.g. when performance considerations suggest it.
ja: また、:ref:`cooperation` という章、およびデモプログラム `demo.py`_ と `demo-lowlevel.py`_ も参照してください。これらには、:ref:`TextPage` 、 :ref:`Device` 、:ref:`DisplayList` クラスをより直接的に制御する方法に関する詳細な情報が含まれています。例えば、パフォーマンスを考慮する必要がある場合などに役立ちます

en: Stories: Generating PDF from HTML Source
ja: ストーリー: HTMLソースからPDFを生成する

en: The :ref:`Story` class is a new feature of PyMuPDF version 1.21.0. It represents support for MuPDF's **"story"** interface.
ja: ストーリークラスはPyMuPDFバージョン1.21.0の新機能です。これはMuPDFの :ref:`Story` インターフェースに対するサポートを表しています。

en: The following is a quote from the book `"MuPDF Explored"`_ by Robin Watts from `Artifex`_:
ja: 以下はArtifexのRobin Wattsによる書籍「MuPDF Explored」からの引用です。

en: *Stories provide a way to easily layout styled content for use with devices, such as those offered by Document Writers (...). The concept of a story comes from desktop publishing, which in turn (...) gets it from newspapers. If you consider a traditional newspaper layout, it will consist of various news articles (stories) that are laid out into multiple columns, possibly across multiple pages.*
ja: *ストーリーは、ドキュメントライターなどのデバイスで使用するためのスタイル付きコンテンツを簡単にレイアウトする方法を提供します。ストーリーという概念は、デスクトップパブリッシングから来ており、それ自体が新聞から取り入れられています。伝統的な新聞のレイアウトを考えると、複数の列や複数のページにわたって配置されたさまざまなニュース記事（ストーリー）で構成されています。*

en: *Accordingly, MuPDF uses a story to represent a flow of text with styling information. The user of the story can then supply a sequence of rectangles into which the story will be laid out, and the positioned text can then be drawn to an output device. This keeps the concept of the text itself (the story) to be separated from the areas into which the text should be flowed (the layout).*
ja: *それに応じて、MuPDFでは、テキストのフローとスタイリング情報を表すためにストーリーを使用しています。ストーリーのユーザーは、ストーリーをレイアウトするための矩形のシーケンスを提供し、配置されたテキストを出力デバイスに描画できます。これにより、テキスト自体（ストーリー）がテキストを配置する領域（レイアウト）から分離されるという概念が保持されます*

en: A Story works somewhat similar to an internet browser: It faithfully parses and renders HTML hypertext and also optional stylesheets (CSS). But its **output is a PDF** -- not web pages.
ja: ストーリーは、インターネットブラウザといくつかの点で似ています。それは忠実にHTMLハイパーテキストとオプションのスタイルシート（CSS）を解析してレンダリングします。ただし、出力されるのはPDFであり、ウェブページではありません。

en: When creating a :ref:`Story`, the input from up to three different information sources is taken into account. All these items are optional.
ja: ストーリーを作成する際には、最大3つの異なる情報源からの入力が考慮されます。これらのすべてのアイテムはオプションです。

en: HTML source code, either a Python string or **created by the script** using methods of :ref:`Xml`.
ja: HTMLソースコード：Pythonの文字列として提供されるか、 :ref:`Xml` のメソッドを使用してスクリプトによって作成されます。

en: CSS (Cascaded Style Sheet) source code, provided as a Python string. CSS can be used to provide styling information (text font size, color, etc.) like it would happen for web pages. Obviously, this string may also be read from a file.
ja: CSS（カスケーディングスタイルシート）ソースコード：Pythonの文字列として提供されます。CSSは、ウェブページにおけるように、スタイリング情報（テキストフォントサイズ、色など）を提供するために使用できます。もちろん、この文字列はファイルから読み込むこともできます。

en: An :ref:`Archive` **must be used** whenever the DOM references images, or uses text fonts except the standard :ref:`Base-14-Fonts`, CJK fonts and the NOTO fonts generated into the PyMuPDF binary.
ja: DOMが画像を参照する場合や、標準の :ref:`Base-14-Fonts` 、CJKフォント、およびPyMuPDFバイナリに生成されたNOTOフォント以外のテキストフォントを使用する場合、 :ref:`Archive` を使用する必要があります。

en: The :ref:`API<Xml>` allows creating DOMs completely from scratch, including desired styling information. It can also be used to modify or extend **provided** HTML: text can be deleted or replaced, or its styling can be changed. Text -- for example extracted from databases -- can also be added and fill template-like HTML documents.
ja: この :ref:`API<Xml>` では、望むスタイル情報を含めて、DOMを完全にゼロから作成することができます。また、提供されたHTMLを変更したり拡張したりするためにも使用できます。テキストは削除や置換ができ、スタイルも変更できます。データベースから抽出されたテキストを追加して、テンプレートのようなHTMLドキュメントを作成することもできます。

en: It is **not required** to provide syntactically complete HTML documents: snippets like `<b>Hello <i>World!</i></b>` are fully accepted, and many / most syntax errors are automatically corrected.
ja: 文法的に完全なHTMLドキュメントを提供する必要はありません。例えば ``<b>Hello<i>World!</i></b>`` のような断片も完全に受け入れられ、多くの場合、構文エラーは自動的に修正されます。

en: After the HTML is considered complete, it can be used to create a PDF document. This happens via the new :ref:`DocumentWriter` class. The programmer calls its methods to create a new empty page, and passes rectangles to the Story to fill them.
ja: HTMLが完成したと見なされた後、それを使用してPDF文書を作成できます。これは新しい :ref:`DocumentWriter`  クラスを介して行われます。プログラマーはそのメソッドを呼び出して新しい空のページを作成し、:ref:`Story` に矩形を渡してそれらを埋めることができます。

en: The story in turn will return completion codes indicating whether or not more content is waiting to be written. Which part of the content will land in which rectangle or on which page is automatically determined by the story itself -- it cannot be influenced other than by providing the rectangles.
ja: :ref:`Story` は、書き込まれる待機中のコンテンツがあるかどうかを示す完了コードを返します。コンテンツのどの部分がどの矩形またはどのページに配置されるかは、:ref:`Story` 自体によって自動的に決定されます。矩形を提供すること以外では影響を与えることはできません。

en: Please see the :ref:`Stories recipes<RecipesStories>` for a number of typical use cases.
ja: 典型的な使用例については、 :ref:`Stories recipes<RecipesStories>` レシピをご覧ください。

en: PDF Maintenance
ja: PDFメンテナンス

en: PDFs are the only document type that can be **modified** using PyMuPDF. Other file types are read-only.
ja: PDFはPyMuPDFを使用して変更できる唯一のドキュメントタイプです。他のファイルタイプは読み取り専用です。

en: However, you can convert **any document** (including images) to a PDF and then apply all PyMuPDF features to the conversion result. Find out more here :meth:`Document.convert_to_pdf`, and also look at the demo script `pdf-converter.py`_ which can convert any :ref:`supported document<Supported_File_Types>` to PDF.
ja: ただし、任意のドキュメント（画像を含む）をPDFに変換し、変換結果にすべてのPyMuPDF機能を適用することができます。 :meth:`Document.convert_to_pdf` で詳細を確認できます。また、任意のサポートされているドキュメントをPDFに変換できるデモスクリプト `pdf-converter.py`_ も確認してください。

en: :meth:`Document.save()` always stores a PDF in its current (potentially modified) state on disk.
ja: :meth:`Document.save()` は常に現在の（変更された可能性のある）PDFをディスクに保存します。

en: You normally can choose whether to save to a new file, or just append your modifications to the existing one ("incremental save"), which often is very much faster.
ja: 通常、新しいファイルに保存するか、既存のファイルに変更内容を追加するか（「増分保存」）を選択できます。増分保存は非常に高速な場合があります。

en: The following describes ways how you can manipulate PDF documents. This description is by no means complete: much more can be found in the following chapters.
ja: 以下にPDFドキュメントを操作する方法を示しますが、これに限らず、詳細は次の章でさらに見つけることができます。

en: Modifying, Creating, Re-arranging and Deleting Pages
ja: ページの修正、作成、再配置、および削

en: There are several ways to manipulate the so-called **page tree** (a structure describing all the pages) of a PDF:
ja: PDFの**ページツリー** （すべてのページを記述する構造）を操作するためには、いくつかの方法があります。

en: :meth:`Document.delete_page` and :meth:`Document.delete_pages` delete pages.
ja: :meth:`Document.delete_page` と :meth:`Document.delete_pages` はページを削除します。

en: :meth:`Document.copy_page`, :meth:`Document.fullcopy_page` and :meth:`Document.move_page` copy or move a page to other locations within the same document.
ja: :meth:`Document.copy_page` 、 :meth:`Document.fullcopy_page` 、 :meth:`Document.move_page` は、ページを同じドキュメント内の他の場所にコピーしたり移動したりします。

en: :meth:`Document.select` shrinks a PDF down to selected pages. Parameter is a sequence [#f3]_ of the page numbers that you want to keep. These integers must all be in range *0 <= i < page_count*. When executed, all pages **missing** in this list will be deleted. Remaining pages will occur **in the sequence and as many times (!) as you specify them**.
ja: :meth:`Document.select` はPDFを選択したページに縮小します。パラメータは[3]のページ番号のシーケンスで、保持したいページの番号を指定します。これらの整数はすべて範囲 `0 <= i < page_count` にある必要があります。実行されると、このリストに含まれていないすべてのページが削除されます。残ったページは指定した順序通りに（指定回数分！）現れます。

en: So you can easily create new PDFs with
ja: したがって、次のような簡単な方法で新しいPDFを作成できます:

en: the first or last 10 pages,
ja: 最初または最後の10ページ

en: only the odd or only the even pages (for doing double-sided printing),
ja: 奇数ページのみまたは偶数ページのみ（両面印刷用）

en: pages that **do** or **don't** contain a given text,
ja: 特定のテキストを含むまたは含まないページ

en: reverse the page sequence, ...
ja: ページの順序を逆にする

en: ... whatever you can think of.
ja: ... など、思いつく限りのことができます。

en: The saved new document will contain links, annotations and bookmarks that are still valid (i.a.w. either pointing to a selected page or to some external resource).
ja: 保存された新しいドキュメントには、まだ有効なリンク、注釈、およびブックマークが含まれています（選択したページを指すか、あるいは外部リソースを指すかを問わず）。

en: :meth:`Document.insert_page` and :meth:`Document.new_page` insert new pages.
ja: :meth:`Document.insert_page` および :meth:`Document.new_page` は新しいページを挿入します。

en: Pages themselves can moreover be modified by a range of methods (e.g. page rotation, annotation and link maintenance, text and image insertion).
ja: さらに、ページ自体はさまざまな方法で変更できます（ページの回転、注釈とリンクの維持、テキストと画像の挿入など）

en: Joining and Splitting PDF Documents
ja: PDF文書の結合と分割

en: Method :meth:`Document.insert_pdf` copies pages **between different** PDF documents. Here is a simple **joiner** example (*doc1* and *doc2* being opened PDFs)::
ja: メソッド  :meth:`Document.insert_pdf` は異なるPDF文書間でページをコピーします。以下は簡単な結合の例です（ `doc1` と `doc2` は開かれたPDF文書です）::

en: Here is a snippet that **splits** *doc1*. It creates a new document of its first and its last 10 pages::
ja: 以下は、 `doc1` を分割するスニペットです。最初の10ページと最後の10ページを含む新しいドキュメントを作成します。

en: More can be found in the :ref:`Document` chapter. Also have a look at `PDFjoiner.py`_.
ja: :ref:`Document` の章にはさらに詳細が記載されています。また、 `PDFjoiner.py`_ も確認してください。

en: Embedding Data
ja: データの埋め込み

en: PDFs can be used as containers for arbitrary data (executables, other PDFs, text or binary files, etc.) much like ZIP archives.
ja: PDFはZIPアーカイブのように、任意のデータ（実行可能ファイル、他のPDF、テキストファイル、バイナリファイルなど）をコンテナとして使用できます。

en: PyMuPDF fully supports this feature via :ref:`Document` *embfile_** methods and attributes. For some detail read :ref:`Appendix 3`, consult the Wiki on `dealing with embedding files`_, or the example scripts `embedded-copy.py`_, `embedded-export.py`_, `embedded-import.py`_, and `embedded-list.py`_.
ja: PyMuPDFは :ref:`Document` *embfile_** メソッドと属性を介して、この機能を完全にサポートしています。詳細については、 :ref:`Appendix3` を読むか、ファイルの埋め込みに対処するためのウィキを参照してください。また、exampleスクリプトの `embedded-copy.py`_ 、`embedded-export.py`_ 、`embedded-import.py`_ 、および `embedded-list.py`_ も参考になるでしょう。

en: Saving
ja: 保存

en: As mentioned above, :meth:`Document.save` will **always** save the document in its current state.
ja: 前述のように、 :meth:`Document.save` は常にドキュメントを現在の状態で保存します。

en: You can write changes back to the **original PDF** by specifying option *incremental=True*. This process is (usually) **extremely fast**, since changes are **appended to the original file** without completely rewriting it.
ja: オプション  `incremental=True`  を指定することで、変更を元のPDFに書き戻すことができます。このプロセスは（通常）非常に高速です。変更は元のファイルに追加されるため、完全に書き直す必要がありません。

en: :meth:`Document.save` options correspond to options of MuPDF's command line utility *mutool clean*, see the following table.
ja: :meth:`Document.save` のオプションは、MuPDFのコマンドラインユーティリティmutool cleanのオプションと対応しています。以下の表を参照してください。

en: **Save Option**
ja: **保存オプション**

en: **Effect**
ja: **効果**

en: garbage collect unused objects
ja: 未使用のオブジェクトをガベージコレクションします

en: in addition to 1, compact :data:`xref` tables
ja: 1に加えて、xrefテーブルをコンパクトにします

en: in addition to 2, merge duplicate objects
ja: 2に加えて、重複したオブジェクトをマージします

en: in addition to 3, merge duplicate stream content
ja: 3に加えて、重複したストリームの内容をマージします

en: clean and sanitize content streams
ja: コンテンツストリームをクリーンアップしてサニタイズします

en: deflate uncompressed streams
ja: 非圧縮のストリームをdeflate圧縮します

en: deflate image streams
ja: 画像ストリームをdeflate圧縮します

en: deflate fontfile streams
ja: フォントファイルストリームをdeflate圧縮します

en: convert binary data to ASCII format
ja: バイナリデータをASCII形式に変換します

en: create a linearized version
ja: 線形化バージョンを作成します

en: decompress all streams
ja: すべてのストリームを解凍します

en: For an explanation of terms like *object, stream, xref* consult the :ref:`Glossary` chapter.
ja: オブジェクト、ストリーム、xrefなどの用語の詳細については、 :ref:`Glossary`  の章を参照してください。

en: For example, *mutool clean -ggggz file.pdf* yields excellent compression results. It corresponds to *doc.save(filename, garbage=4, deflate=True)*.
ja: 例えば、 `mutool clean -ggggz file.pdf`  は優れた圧縮結果をもたらします。これは `doc.save(filename, garbage=4, deflate=True)` に対応しています。

en: Closing
ja: クローズ

en: It is often desirable to "close" a document to relinquish control of the underlying file to the OS, while your program continues.
ja: プログラムが継続する間に、基になるファイルの制御をOSに戻すために、ドキュメントを「クローズ」することがしばしば望まれます。

en: This can be achieved by the :meth:`Document.close` method. Apart from closing the underlying file, buffer areas associated with the document will be freed.
ja: これは :meth:`Document.close` メソッドによって実現できます。基になるファイルをクローズするだけでなく、ドキュメントに関連するバッファ領域も解放されます。

en: Further Reading
ja: さらなる情報

en: Also have a look at PyMuPDF's `Wiki`_ pages. Especially those named in the sidebar under title **"Recipes"** cover over 15 topics written in "How-To" style.
ja: また、PyMuPDFの `Wiki`_ ページもご覧ください。特に、サイドバーのタイトル「Recipes」の下に名前が挙げられているものは、15以上のトピックが「How-To」スタイルで書かれています。

en: This document also contains a :ref:`FAQ`. This chapter has close connection to the aforementioned recipes, and it will be extended with more content over time.
ja: :ref:`Recipes: Table of Contents<RecipesTOC>` をご覧ください。

en: Footnotes
ja: 脚注

en: PyMuPDF lets you also open several image file types just like normal documents. See section :ref:`ImageFiles` in chapter :ref:`Pixmap` for more comments.
ja: PyMuPDFは通常のドキュメントと同様に、いくつかの画像ファイル形式も開くことができます。詳細は、章 :ref:`Pixmap` のセクション :ref:`ImageFiles` を参照してください。

en: :meth:`Page.get_text` is a convenience wrapper for several methods of another PyMuPDF class, :ref:`TextPage`. The names of these methods correspond to the argument string passed to :meth:`Page.get_text` \:  *Page.get_text("dict")* is equivalent to *TextPage.extractDICT()* \.
ja: :meth:`Page.get_text` は、別のPyMuPDFクラス、:ref:`TextPage` のいくつかのメソッドの便利なラッパーです。これらのメソッドの名前は、 :meth:`Page.get_text` に渡された引数文字列に対応しています。例えば、 `Page.get_text(“dict”)`  は  `TextPage.extractDICT()` と同等です。

en: "Sequences" are Python objects conforming to the sequence protocol. These objects implement a method named *__getitem__()*. Best known examples are Python tuples and lists. But *array.array*, *numpy.array* and PyMuPDF's "geometry" objects (:ref:`Algebra`) are sequences, too. Refer to :ref:`SequenceTypes` for details.
ja: "シーケンス"とは、シーケンスプロトコルに準拠したPythonオブジェクトのことを指します。これらのオブジェクトは、getitem()という名前のメソッドを実装しています。よく知られた例としては、Pythonのタプルやリストがあります。しかし、array.array、numpy.array、およびPyMuPDFの「geometry」オブジェクト（幾何オブジェクトのためのオペレーター代数）もシーケンスです。詳細については、「PyMuPDFにおけるPythonシーケンスの引数の使用」を参照してください

en: This documentation covers all versions up to |version|.
ja: このドキュメントは |version| までのすべてのバージョンを対象としています。
