Source code for pdftools_sdk.ocr.barcode_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.ocr.barcode_handling import BarcodeHandling

else:
    BarcodeHandling = "pdftools_sdk.ocr.barcode_handling.BarcodeHandling"


[docs] class BarcodeOptions(_NativeObject): """ Options for barcode and QR code recognition Detected barcodes are written either to the document's XMP metadata (:attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.EMBED` ) or to a caller-supplied XML stream (:attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.EXTRACT` ), depending on :attr:`pdftools_sdk.ocr.barcode_options.BarcodeOptions.mode` . Barcode detection is performed by the OCR engine and depends on the type and settings of the engine as well as the parameters :class:`pdftools_sdk.ocr.image_options.ImageOptions` and :class:`pdftools_sdk.ocr.page_options.PageOptions` . To enable recognition, all three of the following must be configured: (1) pass an engine created with `Engine.Create("barcodes")` to :meth:`pdftools_sdk.ocr.processor.Processor.process` ; (2) set :attr:`pdftools_sdk.ocr.barcode_options.BarcodeOptions.mode` to :attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.EMBED` or :attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.EXTRACT` ; (3) configure :class:`pdftools_sdk.ocr.page_options.PageOptions` or :class:`pdftools_sdk.ocr.image_options.ImageOptions` so that pages are submitted to the engine (typically :attr:`pdftools_sdk.ocr.page_options.PageOptions.mode` = :attr:`pdftools_sdk.ocr.page_processing_mode.PageProcessingMode.ALL` ). Setting :attr:`pdftools_sdk.ocr.barcode_options.BarcodeOptions.mode` alone has no effect. Note: Available only on Windows x86 and x64. """
[docs] def __init__(self): """ """ _lib.PdfToolsOcr_BarcodeOptions_New.argtypes = [] _lib.PdfToolsOcr_BarcodeOptions_New.restype = c_void_p ret_val = _lib.PdfToolsOcr_BarcodeOptions_New() if ret_val is None: _NativeBase._throw_last_error(False) super()._initialize(ret_val)
@property def mode(self) -> BarcodeHandling: """ How recognized barcodes are returned Default value: :attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.NONE` Returns: pdftools_sdk.ocr.barcode_handling.BarcodeHandling """ from pdftools_sdk.ocr.barcode_handling import BarcodeHandling _lib.PdfToolsOcr_BarcodeOptions_GetMode.argtypes = [c_void_p] _lib.PdfToolsOcr_BarcodeOptions_GetMode.restype = c_int ret_val = _lib.PdfToolsOcr_BarcodeOptions_GetMode(self._handle) if ret_val == 0: _NativeBase._throw_last_error() return BarcodeHandling(ret_val) @mode.setter def mode(self, val: BarcodeHandling) -> None: """ How recognized barcodes are returned Default value: :attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.NONE` Args: val (pdftools_sdk.ocr.barcode_handling.BarcodeHandling): property value """ from pdftools_sdk.ocr.barcode_handling import BarcodeHandling if not isinstance(val, BarcodeHandling): raise TypeError(f"Expected type {BarcodeHandling.__name__}, but got {type(val).__name__}.") _lib.PdfToolsOcr_BarcodeOptions_SetMode.argtypes = [c_void_p, c_int] _lib.PdfToolsOcr_BarcodeOptions_SetMode.restype = c_bool if not _lib.PdfToolsOcr_BarcodeOptions_SetMode(self._handle, c_int(val.value)): _NativeBase._throw_last_error(False) @property def xml_output_stream(self) -> Optional[io.IOBase]: raise AttributeError("The 'xml_output_stream' property is write-only.") @xml_output_stream.setter def xml_output_stream(self, val: Optional[io.IOBase]) -> None: """ Stream that receives recognized barcodes as XML Required if and only if :attr:`pdftools_sdk.ocr.barcode_options.BarcodeOptions.mode` is :attr:`pdftools_sdk.ocr.barcode_handling.BarcodeHandling.EXTRACT` . Default value: `None` Args: val (Optional[io.IOBase]): property value """ if val is not None and not isinstance(val, io.IOBase): raise TypeError(f"Expected type {io.IOBase.__name__} or None, but got {type(val).__name__}.") _lib.PdfToolsOcr_BarcodeOptions_SetXmlOutputStream.argtypes = [c_void_p, POINTER(pdftools_sdk.internal.streams._StreamDescriptor)] _lib.PdfToolsOcr_BarcodeOptions_SetXmlOutputStream.restype = c_bool if not _lib.PdfToolsOcr_BarcodeOptions_SetXmlOutputStream(self._handle, _StreamDescriptor(val) if val is not None else None): _NativeBase._throw_last_error(False) @staticmethod def _create_dynamic_type(handle): return BarcodeOptions._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 = BarcodeOptions.__new__(cls) # Bypass __init__ instance._initialize(handle) return instance def _initialize(self, handle): super()._initialize(handle)