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()?通常這個對象將通過訪問類的方法 來創(chuàng)建 ?PdfReader?,但也可以使用 ?create_blank_page()?靜態(tài)方法創(chuàng)建一個空頁面。

參數(shù)
  • 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

將轉(zhuǎn)換矩陣應(yīng)用于頁面。

參數(shù)

ctm – 包含轉(zhuǎn)換矩陣操作數(shù)的 6 元素元組?;蛘?, ?Transformation? 可以傳遞一個對象。

請參閱裁剪和轉(zhuǎn)換 PDF。

屬性 annotations: Optional[ArrayObject]

屬性 artBoxRectangleObject

自版本 1.28.0 后棄用。

改用?artbox?。

屬性 artbox

一個 ?RectangleObject?對象,以默認用戶空間單位表示,定義頁面創(chuàng)建者預(yù)期的頁面有意義內(nèi)容的范圍。

屬性 bleedBox: RectangleObject

自版本 1.28.0 后棄用。

改用?bleedbox?。

屬性 bleedbox

一個?RectangleObject?對象,以默認用戶空間單位表示,定義在生產(chǎn)環(huán)境中輸出時應(yīng)裁剪頁面內(nèi)容的區(qū)域。

compressContentStreams()→ None

1.28.0 版后已棄用:改為使用?compress_content_streams()?。

compress_content_streams()→ None

通過加入所有內(nèi)容流并應(yīng)用 FlateDecode 過濾器來壓縮此頁面的大小。

但是,如果內(nèi)容流壓縮變?yōu)椤癮utomatic”,則此函數(shù)可能不會執(zhí)行任何操作。

靜態(tài) createBlankPage(pdf: Optional[Any] = None, width: Optional[Union[float, Decimal]] = None, height: Optional[Union[float, Decimal]] = None)→ PageObject

1.28.0 版后已棄用:改為使用?create_blank_page()?。

靜態(tài) create_blank_page(pdf: Optional[Any] = None, width: Optional[Union[float, Decimal]] = None, height: Optional[Union[float, Decimal]] = None)→ PageObject

返回一個新的空白頁。

如果width或height是,請嘗試從pdfNone的最后一頁獲取頁面大小。

參數(shù)
  • pdf – 頁面所屬的 PDF 文件

  • width – 以默認用戶空間單位表示的新頁面的寬度。

  • height – 以默認用戶空間單位表示的新頁面的高度。

返回

新的空白頁

拋出

PageSizeNotDefinedError – 如果pdfNone或不包含頁面

屬性 cropBox: RectangleObject

自版本 1.28.0 后棄用。

改用?cropbox?。

屬性 cropbox

?RectangleObject?對象,以默認用戶空間單位表示,定義默認用戶空間的可見區(qū)域。當頁面被顯示或打印時,其內(nèi)容將被剪裁(裁剪)到這個矩形,然后以某種實現(xiàn)定義的方式強加在輸出介質(zhì)上。默認值:與?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

按照內(nèi)容流中提供的順序找到所有文本繪制命令,然后提取文本。

這對某些 PDF 文件效果很好,但對其他文件效果不佳,具體取決于所使用的生成器。這個以后會細化。

不要依賴此函數(shù)的文本順序,因為如果此函數(shù)變得更復(fù)雜,它會發(fā)生變化。

阿拉伯語、希伯來語……以良好的順序提取。如果需要,可以定義自定義 RTL 字符范圍;見函數(shù) set_custom_rtl

此外,您可以提供訪問者方法以獲取有關(guān)所有操作數(shù)和所有文本對象的信息。例如,在某些 PDF 文件中,這對于解析表格很有用。

參數(shù)
  • 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 – 在處理操作數(shù)之前調(diào)用的函數(shù)。它有四個參數(shù):操作數(shù)、操作數(shù)參數(shù)、當前轉(zhuǎn)換矩陣和文本矩陣。

  • visitor_operand_after – 處理操作數(shù)后調(diào)用的函數(shù)。它有四個參數(shù):操作數(shù)、操作數(shù)參數(shù)、當前轉(zhuǎn)換矩陣和文本矩陣。

  • visitor_text – 在某個位置提取一些文本時調(diào)用的函數(shù)。它有五個參數(shù):文本、當前轉(zhuǎn)換矩陣、文本矩陣、字體字典和字體大小。在未知字體的情況下,字體字典可能是無。如果不是 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 中提取文本。

參數(shù)

space_width – 強制默認空間寬度(如果不是從字體中提取(默認 200)

返回

提取的文本

getContents()→ Optional[ContentStream]

1.28.0 版后已棄用:改為使用?get_contents()?。

get_contents()→ Optional[ContentStream]

訪問頁面內(nèi)容。

返回

對象/Contents,或者None如果它不存在。 /Contents是可選的,如 PDF 參考 7.7.3.3 中所述

hash_value_data()→ bytes

屬性 images: List[File]

獲取頁面所有圖像的列表。

這需要pillow。您可以通過“?pip install PyPDF2[image]?”安裝它。

目前,這不包括內(nèi)聯(lián)圖像。將來會添加它們。

屬性 indirect_ref: Optional[IndirectObject]

屬性 mediaBox: RectangleObject

自版本 1.28.0 后棄用。

改用?mediabox?。

屬性 mediabox

一個?RectangleObject?對象,以默認用戶空間單位表示,定義要在其上顯示或打印頁面的物理介質(zhì)的邊界。

mergePage(page2: PageObject)→ None

1.28.0 版后已棄用:改為使用?merge_page()?。

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

mergeRotatedPage 類似于 merge_page,但要合并的流是通過應(yīng)用變換矩陣來旋轉(zhuǎn)的。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是 PageObject的實例。

  • rotation ( float ) – 旋轉(zhuǎn)的角度,以度為單位

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

mergeRotatedScaledPage 類似于 merge_page,但要合并的流是通過應(yīng)用變換矩陣來旋轉(zhuǎn)和縮放的。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是PageObject 的實例。

  • rotation ( float ) – 旋轉(zhuǎn)的角度,以度為單位

  • scale ( float ) – 比例因子

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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,但要合并的流通過應(yīng)用變換矩陣進行平移、旋轉(zhuǎn)和縮放。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是 PageObject的實例。

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

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

  • rotation ( float ) – 旋轉(zhuǎn)的角度,以度為單位

  • scale ( float ) – 比例因子

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

mergeRotatedTranslatedPage 類似于 merge_page,但要合并的流是通過應(yīng)用變換矩陣旋轉(zhuǎn)和平移的。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是 PageObject的實例。

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

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

  • rotation ( float ) – 旋轉(zhuǎn)的角度,以度為單位

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

mergeScaledPage 類似于 merge_page,但要合并的流是通過應(yīng)用變換矩陣來縮放的。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是?PageObject?的實例。

  • scale ( float ) – 比例因子

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

mergeScaledTranslatedPage 類似于 merge_page,但要合并的流通過應(yīng)用轉(zhuǎn)換矩陣進行轉(zhuǎn)換和縮放。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是 ?PageObject?的實例。

  • scale ( float ) – 比例因子

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

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

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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,但轉(zhuǎn)換矩陣應(yīng)用于合并流。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是?PageObject?的實例。

  • ctm (元組) – 包含轉(zhuǎn)換矩陣操作數(shù)的 6 元素元組

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

mergeTranslatedPage 類似于 merge_page,但要合并的流是通過應(yīng)用轉(zhuǎn)換矩陣來翻譯的。

參數(shù)
  • page2 ( PageObject ) – 要合并到這個頁面中的頁面。應(yīng)該是?PageObject ?的實例。

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

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

  • expand ( bool ) – 頁面是否應(yīng)該擴展以適應(yīng)要合并的頁面的尺寸。

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

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

將兩個頁面的內(nèi)容流合并為一個。

資源引用(即字體)從兩個頁面維護。此頁面的 mediabox/cropbox/etc 沒有改變。參數(shù)頁面的內(nèi)容流將被添加到該頁面內(nèi)容流的末尾,這意味著它將在該頁面之后或“之上”繪制。

參數(shù)
  • page2 – 要合并到該頁面中的頁面。應(yīng)該是?PageObject ?的實例。

  • expand – 如果為 true,則當前頁面尺寸將被擴展以適應(yīng)要合并的頁面尺寸。

original_page: PageObject

rotate(angle: int)→ PageObject

將頁面順時針旋轉(zhuǎn) 90 度。

參數(shù)

angle – 旋轉(zhuǎn)頁面的角度。必須是 90 度的增量。

rotateClockwise(angle: int)→ PageObject

1.28.0 版后已棄用:改為使用rotate_clockwise()。

rotateCounterClockwise(angle: int)→ PageObject

1.28.0 版后已移除:改為使用?rotate_clockwise()?否定參數(shù)。

rotate_clockwise(angle: int)→ PageObject

屬性 rotation: int

頁面的視覺旋轉(zhuǎn)。

此數(shù)字必須是 90 度的倍數(shù):0,90,180,270 此屬性不影響“/Contents”

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

通過將轉(zhuǎn)換矩陣應(yīng)用于頁面內(nèi)容并更新頁面大小,按給定因素縮放頁面。

這會更新 mediabox、cropbox 和頁面內(nèi)容。

參數(shù)
  • 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

通過將轉(zhuǎn)換矩陣應(yīng)用于頁面內(nèi)容并更新頁面大小,按給定因素縮放頁面。

參數(shù)

factor – 比例因子(對于 X 軸和 Y 軸)。

scale_to(width: floatheight: float)→ None

通過將轉(zhuǎn)換矩陣應(yīng)用于頁面內(nèi)容并更新頁面大小,將頁面縮放到指定尺寸。

參數(shù)
  • 寬度——新的寬度。

  • 高度——新的高度。

transfer_rotation_to_content()→ None

將頁面的旋轉(zhuǎn)應(yīng)用于內(nèi)容和媒體/裁剪/…框。

建議在頁面合并之前應(yīng)用此功能。

屬性 trimBox: RectangleObject

自版本 1.28.0 后棄用。

改用?trimbox?。

屬性 trimbox

一個RectangleObject對象,以默認用戶空間單位表示,定義修剪后完成頁面的預(yù)期尺寸。

屬性 user_unit: float

一個只讀的正數(shù),給出用戶空間單元的大小。

它是 1/72 英寸的倍數(shù)。因此,值為 1 表示用戶空間單位為 1/72 英寸,值為 3 表示用戶空間單位為 3/72 英寸。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號