PyPDF2 PageObject类

2023-03-30 10:56 更新

​​classPyPDF2._page.PageObject(pdf: Optional[PdfReaderProtocol] = None, indirect_reference: Optional[IndirectObject] = None, indirect_ref: Optional[IndirectObject] = None)
​基类: DictionaryObject

PageObject 表示 PDF 文件中的单个页面。

get_page()​通常这个对象将通过访问类的方法 来创建 ​PdfReader​,但也可以使用 ​create_blank_page()​静态方法创建一个空页面。

参数
  • pdf – 页面所属的 PDF 文件。

  • indirect_reference – 将对此对象的原始间接引用存储在其源 PDF 中

addTransformation(ctm: Tuple[float, float, float, float, float, float])→ None

1.28.0 版后已弃用:改为使用​add_transformation()​。

add_transformation(ctm: Union[Transformation, Tuple[float, float, float, float, float, float]], expand: bool = False)→ None

将转换矩阵应用于页面。

参数

ctm – 包含转换矩阵操作数的 6 元素元组。或者, Transformation 可以传递一个对象。

请参阅裁剪和转换 PDF

属性 annotations: Optional[ArrayObject]

属性 artBoxRectangleObject

自版本 1.28.0 后弃用。

改用​artbox​。

属性 artbox

一个 ​RectangleObject​对象,以默认用户空间单位表示,定义页面创建者预期的页面有意义内容的范围。

属性 bleedBox: RectangleObject

自版本 1.28.0 后弃用。

改用​bleedbox​。

属性 bleedbox

一个​RectangleObject​对象,以默认用户空间单位表示,定义在生产环境中输出时应裁剪页面内容的区域。

compressContentStreams()→ None

1.28.0 版后已弃用:改为使用​compress_content_streams()​。

compress_content_streams()→ None

通过加入所有内容流并应用 FlateDecode 过滤器来压缩此页面的大小。

但是,如果内容流压缩变为“automatic”,则此函数可能不会执行任何操作。

静态 createBlankPage(pdf: Optional[Any] = None, width: Optional[Union[float, Decimal]] = None, height: Optional[Union[float, Decimal]] = None)→ PageObject

1.28.0 版后已弃用:改为使用​create_blank_page()​。

静态 create_blank_page(pdf: Optional[Any] = None, width: Optional[Union[float, Decimal]] = None, height: Optional[Union[float, Decimal]] = None)→ PageObject

返回一个新的空白页。

如果width或height是,请尝试从pdfNone的最后一页获取页面大小。

参数
  • pdf – 页面所属的 PDF 文件

  • width – 以默认用户空间单位表示的新页面的宽度。

  • height – 以默认用户空间单位表示的新页面的高度。

返回

新的空白页

抛出

PageSizeNotDefinedError – 如果pdfNone或不包含页面

属性 cropBox: RectangleObject

自版本 1.28.0 后弃用。

改用​cropbox​。

属性 cropbox

RectangleObject​对象,以默认用户空间单位表示,定义默认用户空间的可见区域。当页面被显示或打印时,其内容将被剪裁(裁剪)到这个矩形,然后以某种实现定义的方式强加在输出介质上。默认值:与​mediabox​相同。

extractText(Tj_sep: str = '', TJ_sep: str = '')→ str

1.28.0 版后已弃用:改为使用​extract_text()​。

extract_text(*args: Any, Tj_sep: Optional[str] = None, TJ_sep: Optional[str] = None, orientations: Union[int, Tuple[int, ...]] = (0, 90, 180, 270), space_width: float = 200.0, visitor_operand_before: Optional[Callable[[Any, Any, Any, Any], None]] = None, visitor_operand_after: Optional[Callable[[Any, Any, Any, Any], None]] = None, visitor_text: Optional[Callable[[Any, Any, Any, Any, Any], None]] = None)→ str

按照内容流中提供的顺序找到所有文本绘制命令,然后提取文本。

这对某些 PDF 文件效果很好,但对其他文件效果不佳,具体取决于所使用的生成器。这个以后会细化。

不要依赖此函数的文本顺序,因为如果此函数变得更复杂,它会发生变化。

阿拉伯语、希伯来语……以良好的顺序提取。如果需要,可以定义自定义 RTL 字符范围;见函数 set_custom_rtl

此外,您可以提供访问者方法以获取有关所有操作数和所有文本对象的信息。例如,在某些 PDF 文件中,这对于解析表格很有用。

参数
  • Tj_sep——已弃用。保持兼容性直到 PyPDF2 4.0.0

  • TJ_sep – 已弃用。保持兼容性直到 PyPDF2 4.0.0

  • 方向——方向列表 text_extraction 将查找默认值 = (0, 90, 180, 270) 注意:目前只有 0(向上),90(向左),180(倒置),270(向右)

  • space_width – 如果未从字体中提取,则强制使用默认空间宽度(默认值:200)

  • visitor_operand_before – 在处理操作数之前调用的函数。它有四个参数:操作数、操作数参数、当前转换矩阵和文本矩阵。

  • visitor_operand_after – 处理操作数后调用的函数。它有四个参数:操作数、操作数参数、当前转换矩阵和文本矩阵。

  • visitor_text – 在某个位置提取一些文本时调用的函数。它有五个参数:文本、当前转换矩阵、文本矩阵、字体字典和字体大小。在未知字体的情况下,字体字典可能是无。如果不是 None,它可能包含键“/BaseFont”,值为“/Arial,Bold”。

返回

提取的文本

extract_xform_text(xform: EncodedStreamObject, orientations: Tuple[int, ...] = (0, 90, 270, 360), space_width: float = 200.0, visitor_operand_before: Optional[Callable[[Any, Any, Any, Any], None]] = None, visitor_operand_after: Optional[Callable[[Any, Any, Any, Any], None]] = None, visitor_text: Optional[Callable[[Any, Any, Any, Any, Any], None]] = None)→ str

从 XObject 中提取文本。

参数

space_width – 强制默认空间宽度(如果不是从字体中提取(默认 200)

返回

提取的文本

getContents()→ Optional[ContentStream]

1.28.0 版后已弃用:改为使用​get_contents()​。

get_contents()→ Optional[ContentStream]

访问页面内容。

返回

对象/Contents,或者None如果它不存在。 /Contents是可选的,如 PDF 参考 7.7.3.3 中所述

hash_value_data()→ bytes

属性 images: List[File]

获取页面所有图像的列表。

这需要pillow。您可以通过“​pip install PyPDF2[image]​”安装它。

目前,这不包括内联图像。将来会添加它们。

属性 indirect_ref: Optional[IndirectObject]

属性 mediaBox: RectangleObject

自版本 1.28.0 后弃用。

改用​mediabox​。

属性 mediabox

一个​RectangleObject​对象,以默认用户空间单位表示,定义要在其上显示或打印页面的物理介质的边界。

mergePage(page2: PageObject)→ None

1.28.0 版后已弃用:改为使用​merge_page()​。

mergeRotatedPage(page2: PageObject, rotation: float, expand: bool = False)→ None

mergeRotatedPage 类似于 merge_page,但要合并的流是通过应用变换矩阵来旋转的。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是 PageObject的实例。

  • rotation ( float ) – 旋转的角度,以度为单位

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeRotatedScaledPage(page2: PageObject, rotation: float, scale: float, expand: bool = False)→ None

mergeRotatedScaledPage 类似于 merge_page,但要合并的流是通过应用变换矩阵来旋转和缩放的。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是PageObject 的实例。

  • rotation ( float ) – 旋转的角度,以度为单位

  • scale ( float ) – 比例因子

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeRotatedScaledTranslatedPage(page2: PageObject, rotation: float, scale: float, tx: float, ty: float, expand: bool = False)→ None

mergeRotatedScaledTranslatedPage 类似于 merge_page,但要合并的流通过应用变换矩阵进行平移、旋转和缩放。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是 PageObject的实例。

  • tx ( float ) – X 轴上的平移

  • ty ( float ) – Y 轴上的平移

  • rotation ( float ) – 旋转的角度,以度为单位

  • scale ( float ) – 比例因子

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeRotatedTranslatedPage(page2: PageObject, rotation: float, tx: float, ty: float, expand: bool = False)→ None

mergeRotatedTranslatedPage 类似于 merge_page,但要合并的流是通过应用变换矩阵旋转和平移的。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是 PageObject的实例。

  • tx ( float ) – X 轴上的平移

  • ty ( float ) – Y 轴上的平移

  • rotation ( float ) – 旋转的角度,以度为单位

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeScaledPage(page2: PageObject, scale: float, expand: bool = False)→ None

mergeScaledPage 类似于 merge_page,但要合并的流是通过应用变换矩阵来缩放的。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是​PageObject​的实例。

  • scale ( float ) – 比例因子

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeScaledTranslatedPage(page2: PageObject, scale: float, tx: float, ty: float, expand: bool = False)→ None

mergeScaledTranslatedPage 类似于 merge_page,但要合并的流通过应用转换矩阵进行转换和缩放。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是 ​PageObject​的实例。

  • scale ( float ) – 比例因子

  • tx ( float ) – X 轴上的平移

  • ty ( float ) – Y 轴上的平移

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

mergeTransformedPage(page2: PageObjectctm: Union[Tuple[float, float, float, float, float, float], Transformation]expand: bool = False)→ None

mergeTransformedPage 类似于 merge_page,但转换矩阵应用于合并流。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是PageObject的实例。

  • ctm (元组) – 包含转换矩阵操作数的 6 元素元组

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​ 和​merge_page()​代替。

mergeTranslatedPage(page2: PageObject, tx: float, ty: float, expand: bool = False)→ None

mergeTranslatedPage 类似于 merge_page,但要合并的流是通过应用转换矩阵来翻译的。

参数
  • page2 ( PageObject ) – 要合并到这个页面中的页面。应该是​PageObject ​的实例。

  • tx ( float ) – X 轴上的平移

  • ty ( float ) – Y 轴上的平移

  • expand ( bool ) – 页面是否应该扩展以适应要合并的页面的尺寸。

1.28.0 版后已移除:使用​add_transformation()​和​merge_page()​代替。

merge_page(page2: PageObject, expand: bool = False)→ None

将两个页面的内容流合并为一个。

资源引用(即字体)从两个页面维护。此页面的 mediabox/cropbox/etc 没有改变。参数页面的内容流将被添加到该页面内容流的末尾,这意味着它将在该页面之后或“之上”绘制。

参数
  • page2 – 要合并到该页面中的页面。应该是​PageObject ​的实例。

  • expand – 如果为 true,则当前页面尺寸将被扩展以适应要合并的页面尺寸。

original_page: PageObject

rotate(angle: int)→ PageObject

将页面顺时针旋转 90 度。

参数

angle – 旋转页面的角度。必须是 90 度的增量。

rotateClockwise(angle: int)→ PageObject

1.28.0 版后已弃用:改为使用rotate_clockwise()

rotateCounterClockwise(angle: int)→ PageObject

1.28.0 版后已移除:改为使用rotate_clockwise()否定参数。

rotate_clockwise(angle: int)→ PageObject

属性 rotation: int

页面的视觉旋转。

此数字必须是 90 度的倍数:0,90,180,270 此属性不影响“/Contents”

scale(sx: float, sy: float)→ None

通过将转换矩阵应用于页面内容并更新页面大小,按给定因素缩放页面。

这会更新 mediabox、cropbox 和页面内容。

参数
  • sx – 水平轴上的比例因子。

  • sy – 垂直轴上的比例因子。

scaleBy(factor: float)→ None

1.28.0 版后已弃用:改为使用scale_by()

scaleTo(width: float, height: float)→ None

1.28.0 版后已弃用:改为使用​scale_to()​。

scale_by(factor: float)→ None

通过将转换矩阵应用于页面内容并更新页面大小,按给定因素缩放页面。

参数

factor – 比例因子(对于 X 轴和 Y 轴)。

scale_to(width: floatheight: float)→ None

通过将转换矩阵应用于页面内容并更新页面大小,将页面缩放到指定尺寸。

参数
  • 宽度——新的宽度。

  • 高度——新的高度。

transfer_rotation_to_content()→ None

将页面的旋转应用于内容和媒体/裁剪/…框。

建议在页面合并之前应用此功能。

属性 trimBox: RectangleObject

自版本 1.28.0 后弃用。

改用​trimbox​。

属性 trimbox

一个RectangleObject对象,以默认用户空间单位表示,定义修剪后完成页面的预期尺寸。

属性 user_unit: float

一个只读的正数,给出用户空间单元的大小。

它是 1/72 英寸的倍数。因此,值为 1 表示用户空间单位为 1/72 英寸,值为 3 表示用户空间单位为 3/72 英寸。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号