Source code for pdftools_sdk.document_assembly.page_copy_options

from __future__ import annotations
import io
from typing import List, Iterator, Tuple, Optional, Any, TYPE_CHECKING, Callable
from ctypes import *
from datetime import datetime
from numbers import Number
from pdftools_sdk.internal import _lib
from pdftools_sdk.internal.utils import _string_to_utf16, _utf16_to_string
from pdftools_sdk.internal.streams import _StreamDescriptor, _NativeStream
from pdftools_sdk.internal.native_base import _NativeBase
from pdftools_sdk.internal.native_object import _NativeObject

import pdftools_sdk.internal

if TYPE_CHECKING:
    from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy
    from pdftools_sdk.document_assembly.removal_strategy import RemovalStrategy
    from pdftools_sdk.document_assembly.name_conflict_resolution import NameConflictResolution
    from pdftools_sdk.document_assembly.named_destination_copy_strategy import NamedDestinationCopyStrategy
    from pdftools_sdk.document_assembly.page_rotation import PageRotation

else:
    CopyStrategy = "pdftools_sdk.document_assembly.copy_strategy.CopyStrategy"
    RemovalStrategy = "pdftools_sdk.document_assembly.removal_strategy.RemovalStrategy"
    NameConflictResolution = "pdftools_sdk.document_assembly.name_conflict_resolution.NameConflictResolution"
    NamedDestinationCopyStrategy = "pdftools_sdk.document_assembly.named_destination_copy_strategy.NamedDestinationCopyStrategy"
    PageRotation = "pdftools_sdk.document_assembly.page_rotation.PageRotation"


[docs] class PageCopyOptions(_NativeObject): """ This class determines whether and how different PDF elements are copied. """
[docs] def __init__(self): """ """ _lib.PdfToolsDocumentAssembly_PageCopyOptions_New.argtypes = [] _lib.PdfToolsDocumentAssembly_PageCopyOptions_New.restype = c_void_p ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_New() if ret_val is None: _NativeBase._throw_last_error(False) super()._initialize(ret_val)
@property def links(self) -> CopyStrategy: """ Copy strategy for links. Specifies how links (document internal and external links) are treated when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Returns: pdftools_sdk.document_assembly.copy_strategy.CopyStrategy """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetLinks.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetLinks.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetLinks(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return CopyStrategy(ret_val) @links.setter def links(self, val: CopyStrategy) -> None: """ Copy strategy for links. Specifies how links (document internal and external links) are treated when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Args: val (pdftools_sdk.document_assembly.copy_strategy.CopyStrategy): property value """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy if not isinstance(val, CopyStrategy): raise TypeError(f"Expected type {CopyStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetLinks.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetLinks.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetLinks(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def form_fields(self) -> CopyStrategy: """ Copy strategy for form fields. Specifies how form fields are treated when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Returns: pdftools_sdk.document_assembly.copy_strategy.CopyStrategy """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFields.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFields.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFields(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return CopyStrategy(ret_val) @form_fields.setter def form_fields(self, val: CopyStrategy) -> None: """ Copy strategy for form fields. Specifies how form fields are treated when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Args: val (pdftools_sdk.document_assembly.copy_strategy.CopyStrategy): property value """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy if not isinstance(val, CopyStrategy): raise TypeError(f"Expected type {CopyStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFields.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFields.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFields(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def signed_signatures(self) -> RemovalStrategy: """ Removal strategy for signed signature fields. Signed digital signatures are always invalidated when copying a page and therefore have to be removed. This property specifies, whether the visual representation of the signature is preserved. Default value: :attr:`pdftools_sdk.document_assembly.removal_strategy.RemovalStrategy.REMOVE` Returns: pdftools_sdk.document_assembly.removal_strategy.RemovalStrategy """ from pdftools_sdk.document_assembly.removal_strategy import RemovalStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetSignedSignatures.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetSignedSignatures.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetSignedSignatures(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return RemovalStrategy(ret_val) @signed_signatures.setter def signed_signatures(self, val: RemovalStrategy) -> None: """ Removal strategy for signed signature fields. Signed digital signatures are always invalidated when copying a page and therefore have to be removed. This property specifies, whether the visual representation of the signature is preserved. Default value: :attr:`pdftools_sdk.document_assembly.removal_strategy.RemovalStrategy.REMOVE` Args: val (pdftools_sdk.document_assembly.removal_strategy.RemovalStrategy): property value """ from pdftools_sdk.document_assembly.removal_strategy import RemovalStrategy if not isinstance(val, RemovalStrategy): raise TypeError(f"Expected type {RemovalStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetSignedSignatures.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetSignedSignatures.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetSignedSignatures(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def unsigned_signatures(self) -> CopyStrategy: """ Copy strategy for unsigned signature fields. Specifies how signature fields are treated, that are not yet signed. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Returns: pdftools_sdk.document_assembly.copy_strategy.CopyStrategy """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetUnsignedSignatures.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetUnsignedSignatures.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetUnsignedSignatures(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return CopyStrategy(ret_val) @unsigned_signatures.setter def unsigned_signatures(self, val: CopyStrategy) -> None: """ Copy strategy for unsigned signature fields. Specifies how signature fields are treated, that are not yet signed. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Args: val (pdftools_sdk.document_assembly.copy_strategy.CopyStrategy): property value """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy if not isinstance(val, CopyStrategy): raise TypeError(f"Expected type {CopyStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetUnsignedSignatures.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetUnsignedSignatures.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetUnsignedSignatures(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def annotations(self) -> CopyStrategy: """ Copy strategy for annotations. Specifies how interactive annotations (like sticky notes or text highlights) are treated when copying a page. This does not include links, form fields and signature fields which are not considered annotations in this product. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Returns: pdftools_sdk.document_assembly.copy_strategy.CopyStrategy """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetAnnotations.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetAnnotations.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetAnnotations(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return CopyStrategy(ret_val) @annotations.setter def annotations(self, val: CopyStrategy) -> None: """ Copy strategy for annotations. Specifies how interactive annotations (like sticky notes or text highlights) are treated when copying a page. This does not include links, form fields and signature fields which are not considered annotations in this product. Default value: :attr:`pdftools_sdk.document_assembly.copy_strategy.CopyStrategy.COPY` Args: val (pdftools_sdk.document_assembly.copy_strategy.CopyStrategy): property value """ from pdftools_sdk.document_assembly.copy_strategy import CopyStrategy if not isinstance(val, CopyStrategy): raise TypeError(f"Expected type {CopyStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetAnnotations.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetAnnotations.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetAnnotations(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def copy_outline_items(self) -> bool: """ Copy outline items (bookmarks). Specifies whether outline items (also known as bookmarks) pointing to the copied page should be copied to the target document automatically. Default value: `True` Returns: bool """ _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyOutlineItems.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyOutlineItems.restype = c_bool ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyOutlineItems(self._handle) if not ret_val: _NativeBase._throw_last_error() return ret_val @copy_outline_items.setter def copy_outline_items(self, val: bool) -> None: """ Copy outline items (bookmarks). Specifies whether outline items (also known as bookmarks) pointing to the copied page should be copied to the target document automatically. Default value: `True` Args: val (bool): property value """ if not isinstance(val, bool): raise TypeError(f"Expected type {bool.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyOutlineItems.argtypes = [c_void_p, c_bool] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyOutlineItems.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyOutlineItems(self._handle, val): _NativeBase._throw_last_error(False) @property def copy_associated_files(self) -> bool: """ Copy associated files. Specifies whether embedded files associated with a page or any of its subobjects are also copied when copying the page. Default value: `True` Returns: bool """ _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyAssociatedFiles.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyAssociatedFiles.restype = c_bool ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyAssociatedFiles(self._handle) if not ret_val: _NativeBase._throw_last_error() return ret_val @copy_associated_files.setter def copy_associated_files(self, val: bool) -> None: """ Copy associated files. Specifies whether embedded files associated with a page or any of its subobjects are also copied when copying the page. Default value: `True` Args: val (bool): property value """ if not isinstance(val, bool): raise TypeError(f"Expected type {bool.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyAssociatedFiles.argtypes = [c_void_p, c_bool] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyAssociatedFiles.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyAssociatedFiles(self._handle, val): _NativeBase._throw_last_error(False) @property def copy_logical_structure(self) -> bool: """ Copy the logical structure and tagging information. Specifies whether the logical structure and tagging information associated with a page or its content is also copied when copying the page. This is required if the target document conformance is PDF/A Level a. Default value: `True` Returns: bool """ _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyLogicalStructure.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyLogicalStructure.restype = c_bool ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetCopyLogicalStructure(self._handle) if not ret_val: _NativeBase._throw_last_error() return ret_val @copy_logical_structure.setter def copy_logical_structure(self, val: bool) -> None: """ Copy the logical structure and tagging information. Specifies whether the logical structure and tagging information associated with a page or its content is also copied when copying the page. This is required if the target document conformance is PDF/A Level a. Default value: `True` Args: val (bool): property value """ if not isinstance(val, bool): raise TypeError(f"Expected type {bool.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyLogicalStructure.argtypes = [c_void_p, c_bool] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyLogicalStructure.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetCopyLogicalStructure(self._handle, val): _NativeBase._throw_last_error(False) @property def form_field_conflict_resolution(self) -> NameConflictResolution: """ Resolution of conflicting form field names. Form field of different files can have the same name (identifier). This property specifies how name conflicts are resolved, when copying pages from multiple source files. Default value: :attr:`pdftools_sdk.document_assembly.name_conflict_resolution.NameConflictResolution.MERGE` Returns: pdftools_sdk.document_assembly.name_conflict_resolution.NameConflictResolution """ from pdftools_sdk.document_assembly.name_conflict_resolution import NameConflictResolution _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFieldConflictResolution.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFieldConflictResolution.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetFormFieldConflictResolution(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return NameConflictResolution(ret_val) @form_field_conflict_resolution.setter def form_field_conflict_resolution(self, val: NameConflictResolution) -> None: """ Resolution of conflicting form field names. Form field of different files can have the same name (identifier). This property specifies how name conflicts are resolved, when copying pages from multiple source files. Default value: :attr:`pdftools_sdk.document_assembly.name_conflict_resolution.NameConflictResolution.MERGE` Args: val (pdftools_sdk.document_assembly.name_conflict_resolution.NameConflictResolution): property value """ from pdftools_sdk.document_assembly.name_conflict_resolution import NameConflictResolution if not isinstance(val, NameConflictResolution): raise TypeError(f"Expected type {NameConflictResolution.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFieldConflictResolution.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFieldConflictResolution.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetFormFieldConflictResolution(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def named_destinations(self) -> NamedDestinationCopyStrategy: """ Copy strategy for named destinations Specify whether named destinations are resolved when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.named_destination_copy_strategy.NamedDestinationCopyStrategy.COPY` Returns: pdftools_sdk.document_assembly.named_destination_copy_strategy.NamedDestinationCopyStrategy """ from pdftools_sdk.document_assembly.named_destination_copy_strategy import NamedDestinationCopyStrategy _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetNamedDestinations.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetNamedDestinations.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetNamedDestinations(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return NamedDestinationCopyStrategy(ret_val) @named_destinations.setter def named_destinations(self, val: NamedDestinationCopyStrategy) -> None: """ Copy strategy for named destinations Specify whether named destinations are resolved when copying a page. Default value: :attr:`pdftools_sdk.document_assembly.named_destination_copy_strategy.NamedDestinationCopyStrategy.COPY` Args: val (pdftools_sdk.document_assembly.named_destination_copy_strategy.NamedDestinationCopyStrategy): property value """ from pdftools_sdk.document_assembly.named_destination_copy_strategy import NamedDestinationCopyStrategy if not isinstance(val, NamedDestinationCopyStrategy): raise TypeError(f"Expected type {NamedDestinationCopyStrategy.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetNamedDestinations.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetNamedDestinations.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetNamedDestinations(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def optimize_resources(self) -> bool: """ Find and merge redundant resources. Find and merge redundant resources such as fonts and images. This can lead to much smaller files, especially when copying pages from multiple similar source files. However, it also results in longer processing time. Default value: `True` Returns: bool """ _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetOptimizeResources.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetOptimizeResources.restype = c_bool ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetOptimizeResources(self._handle) if not ret_val: _NativeBase._throw_last_error() return ret_val @optimize_resources.setter def optimize_resources(self, val: bool) -> None: """ Find and merge redundant resources. Find and merge redundant resources such as fonts and images. This can lead to much smaller files, especially when copying pages from multiple similar source files. However, it also results in longer processing time. Default value: `True` Args: val (bool): property value """ if not isinstance(val, bool): raise TypeError(f"Expected type {bool.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetOptimizeResources.argtypes = [c_void_p, c_bool] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetOptimizeResources.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetOptimizeResources(self._handle, val): _NativeBase._throw_last_error(False) @property def page_rotation(self) -> PageRotation: """ Specify how page(s) should be rotated. Default is :attr:`pdftools_sdk.document_assembly.page_rotation.PageRotation.NOROTATION` Returns: pdftools_sdk.document_assembly.page_rotation.PageRotation """ from pdftools_sdk.document_assembly.page_rotation import PageRotation _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetPageRotation.argtypes = [c_void_p] _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetPageRotation.restype = c_int ret_val = _lib.PdfToolsDocumentAssembly_PageCopyOptions_GetPageRotation(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return PageRotation(ret_val) @page_rotation.setter def page_rotation(self, val: PageRotation) -> None: """ Specify how page(s) should be rotated. Default is :attr:`pdftools_sdk.document_assembly.page_rotation.PageRotation.NOROTATION` Args: val (pdftools_sdk.document_assembly.page_rotation.PageRotation): property value """ from pdftools_sdk.document_assembly.page_rotation import PageRotation if not isinstance(val, PageRotation): raise TypeError(f"Expected type {PageRotation.__name__}, but got {type(val).__name__}.") _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetPageRotation.argtypes = [c_void_p, c_int] _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetPageRotation.restype = c_bool if not _lib.PdfToolsDocumentAssembly_PageCopyOptions_SetPageRotation(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @staticmethod def _create_dynamic_type(handle): return PageCopyOptions._from_handle(handle) @classmethod def _from_handle(cls, handle): """ Internal factory method for constructing an instance using an internal handle. This method creates an instance of the class by bypassing the public constructor. """ instance = PageCopyOptions.__new__(cls) # Bypass __init__ instance._initialize(handle) return instance def _initialize(self, handle): super()._initialize(handle)