from __future__ import annotations from typing import Any, Callable from gradio.components.base import Component from gradio.data_classes import FileData from gradio import processing_utils class PDF(Component): EVENTS = ["change", "upload"] data_model = FileData def __init__(self, value: Any = None, *, height: int | None = None, label: str | None = None, info: str | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int | None = None, interactive: bool | None = None, visible: bool = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, load_fn: Callable[..., Any] | None = None, every: float | None = None): super().__init__(value, label=label, info=info, show_label=show_label, container=container, scale=scale, min_width=min_width, interactive=interactive, visible=visible, elem_id=elem_id, elem_classes=elem_classes, render=render, load_fn=load_fn, every=every) self.height = height def preprocess(self, payload: FileData) -> str: return payload.path def postprocess(self, value: str | None) -> FileData: if not value: return None return FileData(path=value) def example_inputs(self): return "https://gradio-builds.s3.amazonaws.com/assets/pdf-guide/fw9.pdf" def as_example(self, input_data: str | None) -> str | None: if input_data is None: return None return processing_utils.move_resource_to_block_cache(input_data, self)