PyPDF2 PdfWriter类

2023-03-30 15:22 更新

classPyPDF2.PdfWriter(fileobj: Union[str, IO] = '')

基类: ​object

此类支持写出 PDF 文件,给定由另一个类生成的页面(通常为​PdfReader​)。

addAttachment(fname: str, fdata: Union[str, bytes])→ None

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

 addBlankPage(width: Optional[float] = Noneheight: Optional[float] = None)→ PageObject

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

addBookmark(title: str, pagenum: int, parent: ~typing.Union[None, ~PyPDF2.generic._data_structures.TreeObject, ~PyPDF2.generic._base.IndirectObject] = None, color: ~typing.Optional[~typing.Tuple[float, float, float]] = None, bold: bool = False, italic: bool = False, fit: typing_extensions.Literal[/Fit, /XYZ, /FitH, /FitV, /FitR, /FitB, /FitBH, /FitBV] = '/Fit', *args: ~typing.Union[~PyPDF2.generic._base.NumberObject, ~PyPDF2.generic._base.NullObject, float])→ IndirectObject

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

addBookmarkDestination(dest: PageObject, parent: Optional[TreeObject] = None)→ IndirectObject

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

addBookmarkDict(outline_item: Union[OutlineItem, Destination], parent: Optional[TreeObject] = None)→ IndirectObject

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

addJS(javascript: str)→ None

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

addLink(pagenum: int, page_destination: int, rect: ~PyPDF2.generic._rectangle.RectangleObject, border: ~typing.Optional[~PyPDF2.generic._data_structures.ArrayObject] = None, fit: typing_extensions.Literal[/Fit, /XYZ, /FitH, /FitV, /FitR, /FitB, /FitBH, /FitBV] = '/Fit', *args: ~typing.Union[~PyPDF2.generic._base.NumberObject, ~PyPDF2.generic._base.NullObject, float])→ None

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

addMetadata(infos: Dict[str, Any])→ None

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

addNamedDestination(title: str, pagenum: int)→ IndirectObject

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

addNamedDestinationObject(dest: Destination)→ IndirectObject

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

addPage(page: PageObject, excluded_keys: Iterable[str] = ())→ PageObject

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

addURI(pagenum: int, uri: str, rect: RectangleObject, border: Optional[ArrayObject] = None)→ None

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

add_annotation(page_number: int, annotation: Dict[str, Any])→ None

add_attachment(filename: str, data: Union[str, bytes])→ None

在 PDF 中嵌入文件。

参数
  • filename ( str ) – 要显示的文件名。

  • data ( str ) – 文件中的数据。

参考: https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf 第 7.11.3 节

add_blank_page(width: Optional[float] = None, height: Optional[float] = None)→ PageObject

将空白页附加到此 PDF 文件并将其返回。如果未指定页面大小,则使用最后一页的大小。

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

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

返回

新添加的页面

抛出

PageSizeNotDefinedError – 如果未定义宽度和高度并且上一页不存在。

add_bookmark(title: str, pagenum: int, parent: ~typing.Union[None, ~PyPDF2.generic._data_structures.TreeObject, ~PyPDF2.generic._base.IndirectObject] = None, color: ~typing.Optional[~typing.Tuple[float, float, float]] = None, bold: bool = False, italic: bool = False, fit: typing_extensions.Literal[/Fit, /XYZ, /FitH, /FitV, /FitR, /FitB, /FitBH, /FitBV] = '/Fit', *args: ~typing.Union[~PyPDF2.generic._base.NumberObject, ~PyPDF2.generic._base.NullObject, float])→ IndirectObject

2.9.0 版后已弃用:改为使用​add_outline_item()​。

add_bookmark_destination(dest: Union[PageObject, TreeObject], parent: Union[None, TreeObject, IndirectObject] = None)→ IndirectObject

2.9.0 版后已弃用:改为使用​add_outline_item_destination()​。

add_bookmark_dict(outline_item: Union[OutlineItem, Destination], parent: Optional[TreeObject] = None)→ IndirectObject

2.9.0 版后已弃用:改为使用​add_outline_item_dict()​。

add_filtered_articles(fltr: Union[Pattern, str], pages: Dict[int, PageObject], reader: PdfReader)→ None

添加符合定义条件的文章。

add_js(javascript: str)→ None

添加将在打开此 PDF 时启动的 Javascript。

参数

javascript ( str ) – 你的 Javascript。

>>> output.add_js("this.print({bUI:true,bSilent:false,bShrinkToFit:true});")
# Example: This will launch the print window when the PDF is opened.
add_link(pagenum: int, page_destination: int, rect: ~PyPDF2.generic._rectangle.RectangleObject, border: ~typing.Optional[~PyPDF2.generic._data_structures.ArrayObject] = None, fit: typing_extensions.Literal[/Fit, /XYZ, /FitH, /FitV, /FitR, /FitB, /FitBH, /FitBV] = '/Fit', *args: ~typing.Union[~PyPDF2.generic._base.NumberObject, ~PyPDF2.generic._base.NullObject, float])→ None
add_metadata(infos: Dict[str, Any])→ None

将自定义元数据添加到输出。

参数

infos ( dict ) – 一个 Python 字典,其中每个键都是一个字段,每个值都是您的新元数据。

add_named_destination(title: str, page_number: Optional[int] = None, pagenum: Optional[int] = None)→ IndirectObject

add_named_destination_array(title: TextStringObject, destination: Union[IndirectObject, ArrayObject])→ None

add_named_destination_object(page_destination: Optional[PdfObject] = None, dest: Optional[PdfObject] = None)→ IndirectObject

add_outline()→ None

add_outline_item(title: str, page_number: ~typing.Union[None, ~PyPDF2._page.PageObject, ~PyPDF2.generic._base.IndirectObject, int], parent: ~typing.Union[None, ~PyPDF2.generic._data_structures.TreeObject, ~PyPDF2.generic._base.IndirectObject] = None, before: ~typing.Union[None, ~PyPDF2.generic._data_structures.TreeObject, ~PyPDF2.generic._base.IndirectObject] = None, color: ~typing.Optional[~typing.Union[~typing.Tuple[float, float, float], str]] = None, bold: bool = False, italic: bool = False, fit: ~PyPDF2.generic._fit.Fit = <PyPDF2.generic._fit.Fit object>, pagenum: ~typing.Optional[int] = None)→ IndirectObject

向此 PDF 文件添加大纲项目(通常称为“书签”)。

参数
  • title ( str ) – 用于此大纲项目的标题。

  • page_number ( int ) – 此大纲项将指向的页码。

  • parent – 对父大纲项的引用以创建嵌套大纲项。

  • parent – 对父大纲项的引用以创建嵌套大纲项。

  • color ( tuple ) – 大纲项字体的颜色,作为从 0.0 到 1.0 的红色、绿色、蓝色元组或作为十六进制字符串 (#RRGGBB)

  • bold ( bool ) – 大纲项字体为粗体

  • italic ( bool ) – 大纲项目字体为斜体

  • fit ( Fit ) – 目标页面的适合度。

add_outline_item_destination(page_destination: Union[None, PageObject, TreeObject] = None, parent: Union[None, TreeObject, IndirectObject] = None, before: Union[None, TreeObject, IndirectObject] = None, dest: Union[None, PageObject, TreeObject] = None)→ IndirectObject

add_outline_item_dict(outline_item: Union[OutlineItem, Destination], parent: Union[None, TreeObject, IndirectObject] = None, before: Union[None, TreeObject, IndirectObject] = None)→ IndirectObject

add_page(page: PageObject, excluded_keys: Iterable[str] = ())→ 

PageObject

向此 PDF 文件添加页面。推荐用于高级用法,包括足够的 excluded_keys

该页面通常是从​PdfReader ​实例中获取的。

参数

page ( PageObject) – 要添加到文档中的页面。应该是一个​PageObject​实例

add_uri(page_number: int, uri: str, rect: RectangleObject, border: Optional[ArrayObject] = None, pagenum: Optional[int] = None)→ None

从一个矩形区域添加一个 URI 到指定的页面。这使用​add_link()​的基本结构

参数
  • page_number ( int ) – 放置 URI 操作的页面的索引。

  • uri ( str ) – 要链接到的资源的 URI。

  • rect ( Tuple int int int int ] ) –​RectangleObject​或指定可点击矩形区域的四个整数数组​[xLL, yLL, xUR, yUR]​ ,或​"[ xLL yLL xUR yUR ]"​形式中的字符串。

  • border ( ArrayObject ) – 如果提供,则为描述边框绘制属性的数组。有关详细信息,请参阅 PDF 规范。如果省略此参数,则不会绘制边框。

append(fileobj: Union[str, IO, PdfReader, Path], outline_item: Union[str, None, PageRange, Tuple[int, int], Tuple[int, int, int], List[int]] = None, pages: Union[None, PageRange, Tuple[int, int], Tuple[int, int, int], List[int]] = None, import_outline: bool = True, excluded_fields: Optional[Union[List[str], Tuple[str, ...]]] = None)→ None

与​merge()​方法相同,但假设您要将所有页面连接到文件末尾而不是指定位置。

参数
  • fileobj – 文件对象或支持类似于文件对象的标准读取和查找方法的对象。也可以是表示 PDF 文件路径的字符串。

  • outline_item ( str ) – 或者,您可以指定一个字符串来构建大纲(也称为“书签”)以标识所包含文件的开头。

  • pages – 可以是要处理的页面​PageRange ​或​(start, stop[, step])​元组或页面列表,以仅将指定范围的页面从源文档合并到输出文档中。

  • import_outline ( bool ) – 您可以通过将其指定为​False​ 来阻止导入源文档的大纲(大纲项目的集合,以前称为“书签”)。

  • excluded_fields ( List ) – 如果“/Annots”是列表的一部分,提供要忽略的字段/键列表,如果“/B”是列表的一部分,注释将被忽略,文章将被忽略

appendPagesFromReader(reader: PdfReaderafter_page_append: Optional[Callable[[PageObject], None]] = None)→ None

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

append_pages_from_reader(reader: PdfReader, after_page_append: Optional[Callable[[PageObject], None]] = None)→ None

将页面从读者复制到作者。包括一个可选的回调参数,该参数在页面附加到编写器后调用。

参数
  • reader ( PdfReader) – 一个 PdfReader 对象,从中复制页面注释到这个 writer 对象。作者的注释将被更新

  • after_page_append ( Callable PageObjectNone ] ) – 在每个页面附加到作者之后调用的回调函数。签名包括对附加页面的引用(委托给 append_pages_from_reader)。回调的单个参数是对刚刚附加到文档的页面的引用。

clean_page(page: Union[PageObject, IndirectObject])→ PageObject

在页面中执行一些清理。当前:将 NameObject nameddestination 转换为 TextStringObject(名称/目标列表需要)

cloneDocumentFromReader(reader: PdfReader, after_page_append: Optional[Callable[[PageObject], None]] = None)→ None

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

cloneReaderDocumentRoot(reader: PdfReader)→ None

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

clone_document_from_reader(reader: PdfReader, after_page_append: Optional[Callable[[PageObject], None]] = None)→ None

从 PDF 文件阅读器创建文档的副本(克隆)

参数
  • reader – 应该从中创建克隆的 PDF 文件阅读器实例。

  • after_page_append ( Callable PageObjectNone ] ) – 在每个页面附加到作者之后调用的回调函数。签名包括对附加页面的引用(委托给 append_pages_from_reader)。回调的单个参数是对刚刚附加到文档的页面的引用。

clone_reader_document_root(reader: PdfReader)→ None

将读取器文档根目录复制到写入器。

参数

reader – 应复制文档根目录中的 PdfReader。

close()→ None

匹配Merger的功能

encrypt(user_password: ~typing.Optional[str] = None, owner_password: ~typing.Optional[str] = None, use_128bit: bool = True, permissions_flag: ~PyPDF2.constants.UserAccessPermissions = UserAccessPermissions.None, user_pwd: ~typing.Optional[str] = None, owner_pwd: ~typing.Optional[str] = None)→ None

使用 PDF 标准加密处理程序加密此 PDF 文件。

参数
  • user_password ( str ) – “用户密码”,允许在提供的限制条件下打开和阅读 PDF 文件。

  • owner_password ( str ) – “所有者密码”,允许不受任何限制地打开 PDF 文件。默认情况下,所有者密码与用户密码相同。

  • use_128bit ( bool ) – 是否使用 128 位加密的标志。如果为 false,将使用 40 位加密。默认情况下,此标志处于打开状态。

  • permissions_flag ( unsigned int ) – PDF 1.7 规范的表 3.20 中描述的权限。位值为 1 表示许可已授予。因此,整数值 -1 将设置所有标志。位位3用于打印,4位用于修改内容,5位和6位控制注释,9位用于表单域,10位用于提取文本和图形。

find_bookmark(outline_item: Dict[str, Any]root: Optional[List[Union[Destination, List[Union[Destination, List[Destination]]]]]] = None)→ Optional[List[int]]

2.9.0 版后已弃用:改为使用find_outline_item()

find_outline_item(outline_item: Dict[str, Any], root: Optional[List[Union[Destination, List[Union[Destination, List[Destination]]]]]] = None)→ Optional[List[int]]

getNamedDestRoot()→ ArrayObject

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

getNumPages()→ int

1.28.0 版后已弃用:改为使用len(writer.pages)

getObject(ido: Union[int, IndirectObject])→ PdfObject

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

getOutlineRoot()→ TreeObject

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

getPage(pageNumber: int)→ PageObject

1.28.0 版后已弃用:改为使用​writer.pages[page_number]​。

getPageLayout()→ Literal[/NoLayout, /SinglePage, /OneColumn, /TwoColumnLeft, /TwoColumnRight, /TwoPageLeft, /TwoPageRight]]

1.28.0 版后已弃用:改为使用page_layout

getPageMode()→ Literal[/UseNone, /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachments]]

1.28.0 版后已弃用:改为使用page_mode

getReference(obj: PdfObject)→ IndirectObject

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

get_named_dest_root()→ ArrayObject

get_object(indirect_reference: Union[None, int, IndirectObject] = None, ido: Optional[IndirectObject] = None)→ PdfObject

get_outline_root()→ TreeObject

get_page(page_number: Optional[int] = None, pageNumber: Optional[int] = None)→ PageObject

从此 PDF 文件中按编号检索页面。

参数

page_number ( int ) – 要检索的页码(页面从零开始)

返回

page_number给出的索引处的页面

get_reference(obj: PdfObject)→ IndirectObject

get_threads_root()→ ArrayObject

线程列表请参阅 PDF 1.7 规范中的§8.3.2

返回具有“/F”和“/I”属性的字典数组(可能为空)
insertBlankPage(width: Optional[Decimal] = Noneheight: Optional[Decimal] = Noneindex: int = 0)→ PageObject

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

insertPage(page: PageObject, index: int = 0, excluded_keys: Iterable[str] = ())→ ​​PageObject​​

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

​​insert_blank_page(width: Optional[Decimal] = None, height: Optional[Decimal] = None, index: int = 0)→ PageObject​​

在此 PDF 文件中插入空白页并将其返回。如果未指定页面大小,则使用最后一页的大小。

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

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

  • index ( int ) – 添加页面的位置。

返回

新添加的页面

抛出

PageSizeNotDefinedError – 如果未定义宽度和高度并且上一页不存在。

insert_page(page: PageObject, index: int = 0, excluded_keys: Iterable[str] = ())→ PageObject

在此 PDF 文件中插入一页。该页面通常是从 PdfReader实例中获取的。

参数
  • page ( PageObject) – 要添加到文档中的页面。

  • index ( int ) – 页面将被插入的位置。

merge(position: Optional[int], fileobj: Union[Path, str, IO, PdfReader], outline_item: Optional[str] = None, pages: Optional[Union[str, PageRange, Tuple[int, int], Tuple[int, int, int], List[int]]] = None, import_outline: bool = True, excluded_fields: Optional[Union[List[str], Tuple[str, ...]]] = ())→ None

将给定文件中的页面合并到指定页码处的输出文件中。

参数
  • position ( int ) –要插入此文件的页码。文件将被插入到给定的编号之后。

  • fileobj – 文件对象或支持类似于文件对象的标准读取和查找方法的对象。也可以是表示 PDF 文件路径的字符串。

  • outline_item ( str ) – 或者,您可以指定一个字符串来构建大纲(也称为“书签”)以标识所包含文件的开头。

  • pages – 可以是要处理的页面​PageRange ​或元组​(start, stop[, step])​或页面列表,以仅将指定范围的页面从源文档合并到输出文档中。

  • import_outline ( bool ) – 您可以通过将其指定为​False ​来阻止导入源文档的大纲(大纲项目的集合,以前称为“书签”)。

  • excluded_fields ( List ) – 如果“/Annots”是列表的一部分,提供要忽略的字段/键列表,如果“/B”是列表的一部分,注释将被忽略,文章将被忽略

propertyopen_destination: Union[None, Destination, TextStringObject, ByteStringObject]

用于访问打开目标的属性(PDF 目录中的“/OpenAction”条目)。如果未设置条目不存在,则返回None 。

:参数目的地:。该属性可以设置为 Destination、Page 或 string(NamedDest) 或

无(删除“/OpenAction”)

(值存储在 Pdf 目录的“/OpenAction”条目中)

属性 pageLayout: Literal[/NoLayout, /SinglePage, /OneColumn, /TwoColumnLeft, /TwoColumnRight, /TwoPageLeft, /TwoPageRight]]

自版本 1.28.0 后弃用。

改用​page_layout​。

​属性 pageMode: Literal[/UseNone, /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachments]]​

自版本 1.28.0 后弃用。

改用​page_mode​。

属性 page_layout: Literal[/NoLayout, /SinglePage, /OneColumn, /TwoColumnLeft, /TwoColumnRight, /TwoPageLeft, /TwoPageRight]]

页面布局属性

有效的 layout 值

/NoLayout

未明确指定布局

/SinglePage

一次显示一页

/OneColumn

一次显示一列

/TwoColumnLeft

分两列显示页面,左侧为奇数页

/TwoColumnRight

分两列显示页面,右侧为奇数页

/TwoPageLeft

一次显示两页,奇数页在左边

/TwoPageRight

一次显示两页,奇数页在右边
属性 page_mode: Literal[/UseNone, /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachments]]

页面模式属性

有效的 mode 值

/UseNone

不显示大纲或缩略图面板

/UseOutlines

显示大纲(又名书签)面板

/UseThumbs

显示页面缩略图面板

/FullScreen

全屏视图

/UseOC

显示可选内容组(OCG)面板

/UseAttachments

显示附件面板

属性 pages: List[PageObject]

模拟​PageObject​.

属性 pdf_header: bytes

写入的 PDF 文档的页眉。

这应该类似于 b'%PDF-1.5'。建议设置支持 PDF 文件中使用的所有功能的最低版本。

removeImages(ignoreByteStringObject: bool = False)→ None

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

removeLinks()→ None

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

removeText(ignoreByteStringObject: bool = False)→ None

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

remove_images(ignore_byte_string_object: bool = False)→ None

从此输出中删除图像。

参数

ignore_byte_string_object ( bool ) – 忽略 ByteString 对象的可选参数。

remove_links()→ None

从此输出中删除链接和注释。

remove_text(ignore_byte_string_object: bool = False)→ None

从此输出中删除文本。

参数

ignore_byte_string_object ( bool ) – 忽略 ByteString 对象的可选参数。

reset_translation(reader: Union[None, PdfReader, IndirectObject] = None)→ None

重置读者和作者对象之间的转换表。后期克隆将创建新的独立对象

参数

reader – PdfReader 或 IndirectObject 引用 PdfReader 对象。如果设置为 None 或省略,所有表都将被重置。

setPageLayout(layout: typing_extensions.Literal[/NoLayout, /SinglePage, /OneColumn, /TwoColumnLeft, /TwoColumnRight, /TwoPageLeft, /TwoPageRight])→ None

1.28.0 版后已弃用:改为使用page_layout

setPageMode(mode: typing_extensions.Literal[/UseNone, /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachments])→ None

1.28.0 版后已弃用:改为使用​page_mode​。

set_need_appearances_writer()→ None
set_page_layout(layout: typing_extensions.Literal[/NoLayout, /SinglePage, /OneColumn, /TwoColumnLeft, /TwoColumnRight, /TwoPageLeft, /TwoPageRight])→ None

设置页面布局

参数

layout (str) – 要使用的页面布局

有效的layout 参数

/NoLayout

未明确指定布局

/SinglePage

一次显示一页

/OneColumn

一次显示一列

/TwoColumnLeft

分两列显示页面,左侧为奇数页

/TwoColumnRight

分两列显示页面,右侧为奇数页

/TwoPageLeft

一次显示两页,奇数页在左边

/TwoPageRight

一次显示两页,奇数页在右边

set_page_mode(mode: typing_extensions.Literal[/UseNone, /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachments])→ None

1.28.0 版后已弃用:改为使用page_mode

属性 threads: ArrayObject

线程列表的只读属性请参阅 PDF 1.7 规范中的§8.3.2

返回

具有“/F”和“/I”属性的字典数组(可能为空)

updatePageFormFieldValues(page: ~PyPDF2._page.PageObject, fields: ~typing.Dict[str, ~typing.Any], flags: ~PyPDF2.constants.FieldFlag = FieldFlag.None)→ None

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

update_page_form_field_values(page: ~PyPDF2._page.PageObject, fields: ~typing.Dict[str, ~typing.Any], flags: ~PyPDF2.constants.FieldFlag = FieldFlag.None)→ None

从字段字典更新给定页面的表单字段值。

将字段文本和值从字段复制到页面。如果字段链接到父对象,则将信息添加到父对象。

参数
  • page ( PageObject ) – 来自 PDF writer 的页面引用,其中注释和字段数据将被更新。

  • fields ( dict ) – 字段名称 (/T) 和文本值 (/V) 的 Python 字典

  • flags ( int ) – 一个整数(0 到 7)。第一位设置 ReadOnly,第二位设置 Required,第三位设置 NoExport。有关详细信息,请参阅 PDF 参考表 8.70。

write(stream: Union[Path, str, IO])→ Tuple[bool, IO]

将添加到此对象的页面集合写出为 PDF 文件。

参数

stream – 将文件写入的对象。该对象可以支持 write 方法和 tell 方法,类似于文件对象,也可以是文件路径,就像 fileobj 一样,只是将其命名为 stream 以保持现有的工作流程。

write_stream(stream: IO)→ None
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号