PyMuPDF 1.24.4 中文文档(六)(2)

简介: PyMuPDF 1.24.4 中文文档(六)

PyMuPDF 1.24.4 中文文档(六)(1)https://developer.aliyun.com/article/1559575


提取

像这样提取嵌入文件:

pymupdf embed-extract -h
usage: fitz embed-extract [-h] -name NAME [-password PASSWORD] [-output OUTPUT]
                        input
---------------------- extract embedded file to disk ----------------------
positional arguments:
input                 PDF filename
optional arguments:
-h, --help            show this help message and exit
-name NAME            name of entry
-password PASSWORD    password
-output OUTPUT        output filename, default is stored name 

有关详细信息,请参阅Document.embfile_get()。示例(参考上一节):

pymupdf embed-extract some.pdf -name neue.datei
Saved entry 'neue.datei' as 'text-tester.pdf' 

删除

像这样删除嵌入文件:

pymupdf embed-del -h
usage: fitz embed-del [-h] [-password PASSWORD] [-output OUTPUT] -name NAME input
--------------------------- delete embedded file --------------------------
positional arguments:
input                 PDF filename
optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password
-output OUTPUT        output PDF filename, incremental save if none
-name NAME            name of entry to delete 

有关详细信息,请参阅Document.embfile_del()

插入

使用此命令添加新的嵌入文件:

pymupdf embed-add -h
usage: fitz embed-add [-h] [-password PASSWORD] [-output OUTPUT] -name NAME -path
                    PATH [-desc DESC]
                    input
---------------------------- add embedded file ----------------------------
positional arguments:
input                 PDF filename
optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password
-output OUTPUT        output PDF filename, incremental save if none
-name NAME            name of new entry
-path PATH            path to data for new entry
-desc DESC            description of new entry 

“名称” 绝对不应该已经存在于 PDF 中。有关详细信息,请参阅Document.embfile_add()

更新

使用此命令更新现有的嵌入文件:

pymupdf embed-upd -h
usage: fitz embed-upd [-h] -name NAME [-password PASSWORD] [-output OUTPUT]
                    [-path PATH] [-filename FILENAME] [-ufilename UFILENAME]
                    [-desc DESC]
                    input
--------------------------- update embedded file --------------------------
positional arguments:
input                 PDF filename
optional arguments:
-h, --help            show this help message and exit
-name NAME            name of entry
-password PASSWORD    password
-output OUTPUT        Output PDF filename, incremental save if none
-path PATH            path to new data for entry
-filename FILENAME    new filename to store in entry
-ufilename UFILENAME  new unicode filename to store in entry
-desc DESC            new description to store in entry
except '-name' all parameters are optional 

使用此方法更改文件的元信息 - 只需省略*“路径”*。有关详细信息,请参阅Document.embfile_upd()

复制

在 PDF 之间复制嵌入的文件:

pymupdf embed-copy -h
usage: fitz embed-copy [-h] [-password PASSWORD] [-output OUTPUT] -source
                    SOURCE [-pwdsource PWDSOURCE]
                    [-name [NAME [NAME ...]]]
                    input
--------------------- copy embedded files between PDFs --------------------
positional arguments:
input                 PDF to receive embedded files
optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password of input
-output OUTPUT        output PDF, incremental save to 'input' if omitted
-source SOURCE        copy embedded files from here
-pwdsource PWDSOURCE  password of 'source' PDF
-name [NAME [NAME ...]]
                      restrict copy to these entries 

文本提取

  • v1.18.16 中的新功能

从任意支持的文档中提取文本到文本文件。目前,有三种输出格式模式可用:简单,块排序和复制物理布局。

  • 简单文本提取会将所有文本复制到文档页面中 - 不会进行任何特定的阅读顺序重新排列。
  • 块排序按升序垂直,然后水平坐标对文本块(由 MuPDF 标识)进行排序。这应足以建立基本文本页的“自然”阅读顺序。
  • 布局 力求复制输入页面的原始外观。你可以期待如下结果(由命令 pymupdf gettext -pages 1 demo1.pdf 生成):


注意

“gettext” 命令提供了一种类似于 XPDF 软件的 CLI 工具 pdftotext 的功能,www.foolabs.com/xpdf/ — 这对于“布局”模式尤其如此,该模式结合了该工具的 -layout-table 选项。

在输出文件的每一页之后,都会写入一个换页符,hex(12) — 即使输入页面根本没有文本。此行为可以通过选项进行控制。

注意

对于“布局”模式,仅支持水平、从左到右、从上到下的文本,其他文本将被忽略。在此模式下,如果文本的fontsize太小,则也将被忽略。

“Simple” 和 “blocks” 模式在对比输出中会显示所有文本,无论文本大小或方向如何。

命令:

pymupdf gettext -h
usage: fitz gettext [-h] [-password PASSWORD] [-mode {simple,blocks,layout}] [-pages PAGES] [-noligatures]
                    [-convert-white] [-extra-spaces] [-noformfeed] [-skip-empty] [-output OUTPUT] [-grid GRID]
                    [-fontsize FONTSIZE]
                    input
----------------- extract text in various formatting modes ----------------
positional arguments:
input                 input document filename
optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password for input document
-mode {simple,blocks,layout}
                        mode: simple, block sort, or layout (default)
-pages PAGES          select pages, format: 1,5-7,50-N
-noligatures          expand ligature characters (default False)
-convert-white        convert whitespace characters to space (default False)
-extra-spaces         fill gaps with spaces (default False)
-noformfeed           write linefeeds, no formfeeds (default False)
-skip-empty           suppress pages with no text (default False)
-output OUTPUT        store text in this file (default inputfilename.txt)
-grid GRID            merge lines if closer than this (default 2)
-fontsize FONTSIZE    only include text with a larger :data:`fontsize` (default 3) 

注意

只要不引入歧义,命令选项可以缩写。因此,以下命令执行相同的操作:

  • ... -output text.txt -noligatures -noformfeed -convert-white -grid 3 -extra-spaces ...

  • ... -o text.txt -nol -nof -c -g 3 -e ...

输出文件名默认为输入文件名,其扩展名替换为 .txt。与其他命令一样,你可以按照上面所示的 mutool 格式选择页面范围**(注意:基于 1)**。

  • 模式:(str)选择格式模式 — 默认为“布局”。
  • 去连字:(bool)对应于 TEXT_PRESERVE_LIGATURES。如果指定,连字(在高级字体中存在的字形,如“fi”组合多个字符的字形)将被分割成它们的组件(即“f”,“i”)。默认为传递它们。
  • 转换白色:对应于 TEXT_PRESERVE_WHITESPACE。如果指定,所有空白字符(如制表符)将替换为一个或多个空格。默认为传递它们。
  • 额外空格:(bool)对应于 TEXT_INHIBIT_SPACES。如果指定,相邻字符之间的大间隙将用一个或多个空格填充。默认为关闭。
  • 无换页符:(bool)在输出页面末尾写入换行符n,而不是hex(12)(换页符)。
  • 跳过空白页:(bool)跳过没有文本的页面。
  • grid:垂直坐标差异不超过此值(以点为单位)的线将合并到同一输出行中。仅适用于“layout”模式。慎用:在大多数情况下,3 或默认的 2 应该足够。如果太大,原始中意图不同的线可能会被合并,导致输出混乱和/或不完整。如果太低,则可能会为输入行中的某些跨度生成单独的输出行,仅因为它们以稍微不同的字体编码并具有略微偏离的属性。
  • **fontsize:**仅包括文本大于此值的fontsize(默认为 3)。仅适用于“layout”选项。

对本页有任何反馈吗?


此软件按原样提供,不带任何明示或暗示的担保。此软件在许可下分发,未经明确授权不得复制、修改或分发。有关详细信息,请参阅artifex.com上的许可信息或联系 Artifex Software Inc.,39 Mesa Street,Suite 108A,San Francisco CA 94129,美国。

本文档覆盖了所有版本直至 1.24.4。


调用

命令行界面可以通过两种方式调用。

  • 使用已安装的pymupdf命令:
pymupdf <command and parameters> 
  • 或者使用 Python 的-m开关与 PyMuPDF 的fitz模块:
python -m fitz <command and parameters> 

一般备注:

  • 通过"-h"请求帮助,或通过"command -h"请求特定命令的帮助。
  • 在不引入歧义的情况下,参数可以缩写。
  • 几个命令支持参数-pages-xrefs。它们用于下拉选择。请注意:
  • 此实用程序的页面编号必须以基于 1 的方式给出。

  • 有效的xref编号从 1 开始。

  • 指定一个以逗号分隔的单个整数或整数范围的列表。范围是由一个连字符“-”分隔的两个整数对。整数不得超过最大页面或 xref 编号。为了指定最大值,可以使用符号变量“N”。整数或范围可以多次出现,顺序任意,并且可以重叠。如果在范围内第一个数字大于第二个数字,则将按相反顺序处理相应项。
  • 如何在您的脚本内使用该模块:
>>> import pymupdf.__main__
>>> cmd = "clean input.pdf output.pdf -pages 1,N".split()  # prepare command line
>>> saved_parms = sys.argv[1:]  # save original command line
>>> sys.argv[1:] = cmd  # store new command line
>>> pymupdf.__main__.()  # execute module
>>> sys.argv[1:] = saved_parms  # restore original command line 
  • 使用以下 2 行代码并以独立模式编译它,可以使用Nuitka。这将为您提供一个带有所有模块功能的 CLI 可执行文件,可在所有兼容的平台上使用,无需安装 Python、PyMuPDF 或 MuPDF。
from pymupdf.__main__ import main
main() 

清理和复制

此命令将优化 PDF 并将结果存储在新文件中。您也可以将其用于加密、解密和创建子文档。它与 MuPDF 命令行实用程序*“mutool clean”*大致相似:

pymupdf clean -h
usage: fitz clean [-h] [-password PASSWORD]
                [-encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256}]
                [-owner OWNER] [-user USER] [-garbage {0,1,2,3,4}]
                [-compress] [-ascii] [-linear] [-permission PERMISSION]
                [-sanitize] [-pretty] [-pages PAGES]
                input output
-------------- optimize PDF or create sub-PDF if pages given --------------
positional arguments:
input                 PDF filename
output                output PDF filename
optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password
-encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256}
                      encryption method
-owner OWNER          owner password
-user USER            user password
-garbage {0,1,2,3,4}  garbage collection level
-compress             compress (deflate) output
-ascii                ASCII encode binary data
-linear               format for fast web display
-permission PERMISSION
                      integer with permission levels
-sanitize             sanitize / clean contents
-pretty               prettify PDF structure
-pages PAGES          output selected pages, format: 1,5-7,50-N 

如果指定了“-pages”,请注意仅复制与页面相关的对象,不包括文档级项目,例如嵌入文件。

请参阅 Document.save() 以了解参数含义。


PyMuPDF 1.24.4 中文文档(六)(3)https://developer.aliyun.com/article/1559577

相关文章
|
6月前
|
XML 数据安全/隐私保护 数据格式
PyMuPDF 1.24.4 中文文档(七)(3)
PyMuPDF 1.24.4 中文文档(七)
136 0
|
6月前
|
存储 文字识别 自然语言处理
PyMuPDF 1.24.4 中文文档(五)(2)
PyMuPDF 1.24.4 中文文档(五)
137 3
|
6月前
|
JSON API 数据格式
PyMuPDF 1.24.4 中文文档(四)(5)
PyMuPDF 1.24.4 中文文档(四)
50 0
|
6月前
|
存储 Python
PyMuPDF 1.24.4 中文文档(四)(4)
PyMuPDF 1.24.4 中文文档(四)
63 0
|
6月前
|
文字识别 API 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(一)(4)
PyMuPDF 1.24.4 中文文档(一)
188 3
|
6月前
|
安全 API 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(一)(3)
PyMuPDF 1.24.4 中文文档(一)
226 2
|
6月前
|
XML 编解码 文字识别
PyMuPDF 1.24.4 中文文档(八)(4)
PyMuPDF 1.24.4 中文文档(八)
327 1
|
6月前
|
存储 资源调度 JavaScript
PyMuPDF 1.24.4 中文文档(八)(1)
PyMuPDF 1.24.4 中文文档(八)
214 0
PyMuPDF 1.24.4 中文文档(八)(1)
|
6月前
|
XML JSON API
PyMuPDF 1.24.4 中文文档(六)(5)
PyMuPDF 1.24.4 中文文档(六)
135 0
PyMuPDF 1.24.4 中文文档(六)(5)
|
6月前
|
存储 前端开发 API
PyMuPDF 1.24.4 中文文档(四)(1)
PyMuPDF 1.24.4 中文文档(四)
73 0