PyPDF2 PdfWriter类
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] = None, height: 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: PdfReader, after_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 [ [ PageObject] , None ] ) – 在每个页面附加到作者之后调用的回调函数。签名包括对附加页面的引用(委托给 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 [ [ PageObject] , None ] ) – 在每个页面附加到作者之后调用的回调函数。签名包括对附加页面的引用(委托给 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] = None, height: Optional[Decimal] = None, index: 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
更多建议: