DocumentGitHub

@pdtp/core

This package is a package that supports protocol transfer.
It is a client that parses data sent from the server side and returns it as an object.
This package is used in @pdtp/react.
If you want to create another PDF viewer, please use this package.

Installation

npm install @pdtp/core

Usage

const client = new PdtpClient({
  file: file,
  headers: {
    base: base,
    start: start,
    end: end,
  },
})

API

PdtpClient

A class that parses the data sent from the server side and returns it as an object

class PdtpClient {
  constructor(options: PdtpRequestOptions);
  public async fetchChunkedData(onData: OnPdtpDataCallback): Promise<void>;
}
  • options: PdtpRequestOptions
  • onData: OnPdtpDataCallback

OnPdtpDataCallback

A callback function that processes the parsed object of the data obtained from the server

type OnPdtpDataCallback = (data: PdtpChunkPayload) => void;
  • data: PdtpChunkPayload

PdtpDataType

data attached to the beginning of each chunk of the server response

  • PAGE = 0x00
  • TEXT = 0x01
  • IMAGE = 0x02
  • FONT = 0x03
  • PATH = 0x04
  • ERROR = 0xff

PageMetadata

An object that parses page data sent from the server

interface PageMetadata {
  width: number; // px
  height: number; // px
  page: number; // page number
}
  • width: width of the page in pixels
  • height: height of the page in pixels
  • page: page number

TextMetadata

An object that parses text data sent from the server

interface TextMetadata {
  text: string; // text string (UTF-8)
  x: number; // px
  y: number; // px
  z: number; // z-index
  fontSize: number; // px
  font: string; // font ID
  page: number; // page number
  color: string; // text color
}
  • text: text string (UTF-8)
  • x: px
  • y: px
  • z: z-index
  • fontSize: px
  • font: font ID
  • page: page number
  • color: text color

ImageMetadata

An object that parses image data sent from the server

interface ImageMetadata {
  x: number; // px
  y: number; // px
  z: number; // z-index
  width: number; // px
  height: number; // px
  dw: number; // px
  dh: number; // px
  length: number; // byte size of the image body data
  maskLength: number; // byte size of the transparent mask image data
  page: number; // page number
  ext: string; // image extension
  clipPath: string; // clipping path
}
  • x: px
  • y: px
  • z: z-index
  • width: px
  • height: px
  • dw: px
  • dh: px
  • length: byte size of the image body data
  • maskLength: byte size of the transparent mask image data
  • page: page number
  • ext: image extension
  • clipPath: clipping path

FontMetadata

An object that parses font data sent from the server

interface FontMetadata {
  fontId: number; // font id (or string)
  length: number; // byte size of the font data
}
  • fontId: font id (or string)
  • length: byte size of the font data

PathMetadata

An object that parses vector data sent from the server

interface PathMetadata {
  x: number;
  y: number;
  z: number;
  width: number;
  height: number;
}
  • x: px
  • y: px
  • z: z-index
  • width: px
  • height: px

PdtpChunkPayload

The type of the result of parsing the data received from the server side by PdtpClient

type PdtpChunkPayload =
  | {
      type: "page";
      data: PageMetadata;
    }
  | {
      type: "text";
      data: TextMetadata;
    }
  | {
      type: "image";
      data: ImageMetadata;
      blob: Blob;
    }
  | {
      type: "font";
      data: FontMetadata;
      blob: Blob;
    }
  | {
      type: "path";
      data: PathMetadata;
    };
  • type: data type
  • data: parsed data

PdtpRequestHeaders

An option that is part of the options applied when instantiating PdtpClient and applied to the request header

interface PdtpRequestHeaders {
  base?: number;
  start?: number;
  end?: number;
}
  • base: the first page to be loaded
  • start: page to start loading
  • end: page to end loading

PdtpRequestOptions

An option to use when fetching

interface PdtpRequestOptions {
  file: string;
  headers?: PdtpRequestHeaders;
  abortController?: AbortController;
}
  • file: a field that the server handles when requested, such as a URL or a file name
  • headers: PDTP header
  • abortController: for fetch interruption