api.d.ts 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107
  1. export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
  2. /**
  3. * Document initialization / loading parameters object.
  4. */
  5. export type DocumentInitParameters = {
  6. /**
  7. * - The URL of the PDF.
  8. */
  9. url?: string;
  10. /**
  11. * - Binary PDF data. Use
  12. * typed arrays (Uint8Array) to improve the memory usage. If PDF data is
  13. * BASE64-encoded, use `atob()` to convert it to a binary string first.
  14. */
  15. data?: TypedArray | Array<number> | string;
  16. /**
  17. * - Basic authentication headers.
  18. */
  19. httpHeaders?: Object;
  20. /**
  21. * - Indicates whether or not
  22. * cross-site Access-Control requests should be made using credentials such
  23. * as cookies or authorization headers. The default is `false`.
  24. */
  25. withCredentials?: boolean;
  26. /**
  27. * - For decrypting password-protected PDFs.
  28. */
  29. password?: string;
  30. /**
  31. * - A typed array with the first portion
  32. * or all of the pdf data. Used by the extension since some data is already
  33. * loaded before the switch to range requests.
  34. */
  35. initialData?: TypedArray;
  36. /**
  37. * - The PDF file length. It's used for progress
  38. * reports and range requests operations.
  39. */
  40. length?: number;
  41. /**
  42. * - Allows for using a custom range
  43. * transport implementation.
  44. */
  45. range?: PDFDataRangeTransport;
  46. /**
  47. * - Specify maximum number of bytes fetched
  48. * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.
  49. */
  50. rangeChunkSize?: number;
  51. /**
  52. * - The worker that will be used for loading and
  53. * parsing the PDF data.
  54. */
  55. worker?: any;
  56. /**
  57. * - Controls the logging level; the constants
  58. * from {@link VerbosityLevel} should be used.
  59. */
  60. verbosity?: number;
  61. /**
  62. * - The base URL of the document, used when
  63. * attempting to recover valid absolute URLs for annotations, and outline
  64. * items, that (incorrectly) only specify relative URLs.
  65. */
  66. docBaseUrl?: string;
  67. /**
  68. * - The URL where the predefined Adobe CMaps are
  69. * located. Include the trailing slash.
  70. */
  71. cMapUrl?: string;
  72. /**
  73. * - Specifies if the Adobe CMaps are binary
  74. * packed or not.
  75. */
  76. cMapPacked?: boolean;
  77. /**
  78. * - The factory that will be used when
  79. * reading built-in CMap files. Providing a custom factory is useful for
  80. * environments without Fetch API or `XMLHttpRequest` support, such as
  81. * Node.js. The default value is {DOMCMapReaderFactory}.
  82. */
  83. CMapReaderFactory?: Object;
  84. /**
  85. * - Reject certain promises, e.g.
  86. * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated
  87. * PDF data cannot be successfully parsed, instead of attempting to recover
  88. * whatever possible of the data. The default value is `false`.
  89. */
  90. stopAtErrors?: boolean;
  91. /**
  92. * - The maximum allowed image size in total
  93. * pixels, i.e. width * height. Images above this value will not be rendered.
  94. * Use -1 for no limit, which is also the default value.
  95. */
  96. maxImageSize?: number;
  97. /**
  98. * - Determines if we can evaluate strings
  99. * as JavaScript. Primarily used to improve performance of font rendering, and
  100. * when parsing PDF functions. The default value is `true`.
  101. */
  102. isEvalSupported?: boolean;
  103. /**
  104. * - By default fonts are converted to
  105. * OpenType fonts and loaded via `@font-face` rules. If disabled, fonts will
  106. * be rendered using a built-in font renderer that constructs the glyphs with
  107. * primitive path commands. The default value is `false`.
  108. */
  109. disableFontFace?: boolean;
  110. /**
  111. * - Include additional properties,
  112. * which are unused during rendering of PDF documents, when exporting the
  113. * parsed font data from the worker-thread. This may be useful for debugging
  114. * purposes (and backwards compatibility), but note that it will lead to
  115. * increased memory usage. The default value is `false`.
  116. */
  117. fontExtraProperties?: boolean;
  118. /**
  119. * - Specify an explicit document
  120. * context to create elements with and to load resources, such as fonts,
  121. * into. Defaults to the current document.
  122. */
  123. ownerDocument?: HTMLDocument;
  124. /**
  125. * - Disable range request loading of PDF
  126. * files. When enabled, and if the server supports partial content requests,
  127. * then the PDF will be fetched in chunks. The default value is `false`.
  128. */
  129. disableRange?: boolean;
  130. /**
  131. * - Disable streaming of PDF file data.
  132. * By default PDF.js attempts to load PDF files in chunks. The default value
  133. * is `false`.
  134. */
  135. disableStream?: boolean;
  136. /**
  137. * - Disable pre-fetching of PDF file
  138. * data. When range requests are enabled PDF.js will automatically keep
  139. * fetching more data even if it isn't needed to display the current page.
  140. * The default value is `false`.
  141. *
  142. * NOTE: It is also necessary to disable streaming, see above, in order for
  143. * disabling of pre-fetching to work correctly.
  144. */
  145. disableAutoFetch?: boolean;
  146. /**
  147. * - Enables special hooks for debugging PDF.js
  148. * (see `web/debugger.js`). The default value is `false`.
  149. */
  150. pdfBug?: boolean;
  151. };
  152. export type PDFDocumentStats = {
  153. /**
  154. * - Used stream types in the
  155. * document (an item is set to true if specific stream ID was used in the
  156. * document).
  157. */
  158. streamTypes: {
  159. [x: string]: boolean;
  160. };
  161. /**
  162. * - Used font types in the
  163. * document (an item is set to true if specific font ID was used in the
  164. * document).
  165. */
  166. fontTypes: {
  167. [x: string]: boolean;
  168. };
  169. };
  170. export type IPDFStreamFactory = Function;
  171. /**
  172. * The loading task controls the operations required to load a PDF document
  173. * (such as network requests) and provides a way to listen for completion,
  174. * after which individual pages can be rendered.
  175. */
  176. export type PDFDocumentLoadingTask = {
  177. /**
  178. * - Unique identifier for the document loading task.
  179. */
  180. docId: string;
  181. /**
  182. * - Whether the loading task is destroyed or not.
  183. */
  184. destroyed: boolean;
  185. /**
  186. * - Callback to request a password if a wrong
  187. * or no password was provided. The callback receives two parameters: a
  188. * function that should be called with the new password, and a reason (see
  189. * {@link PasswordResponses}).
  190. */
  191. onPassword?: Function;
  192. /**
  193. * - Callback to be able to monitor the
  194. * loading progress of the PDF file (necessary to implement e.g. a loading
  195. * bar). The callback receives an {Object} with the properties `loaded`
  196. * ({number}) and `total` ({number}) that indicate how many bytes are loaded.
  197. */
  198. onProgress?: Function;
  199. /**
  200. * - Callback for when an
  201. * unsupported feature is used in the PDF document. The callback receives an
  202. * {@link UNSUPPORTED_FEATURES} argument.
  203. */
  204. onUnsupportedFeature?: Function;
  205. /**
  206. * - Promise for document loading
  207. * task completion.
  208. */
  209. promise: Promise<PDFDocumentProxy>;
  210. /**
  211. * - Abort all network requests and destroy
  212. * the worker. Returns a promise that is resolved when destruction is
  213. * completed.
  214. */
  215. destroy: Function;
  216. };
  217. /**
  218. * Page getViewport parameters.
  219. */
  220. export type GetViewportParameters = {
  221. /**
  222. * - The desired scale of the viewport.
  223. */
  224. scale: number;
  225. /**
  226. * - The desired rotation, in degrees, of
  227. * the viewport. If omitted it defaults to the page rotation.
  228. */
  229. rotation?: number;
  230. /**
  231. * - The horizontal, i.e. x-axis, offset.
  232. * The default value is `0`.
  233. */
  234. offsetX?: number;
  235. /**
  236. * - The vertical, i.e. y-axis, offset.
  237. * The default value is `0`.
  238. */
  239. offsetY?: number;
  240. /**
  241. * - If true, the y-axis will not be
  242. * flipped. The default value is `false`.
  243. */
  244. dontFlip?: boolean;
  245. };
  246. /**
  247. * Page getTextContent parameters.
  248. */
  249. export type getTextContentParameters = {
  250. /**
  251. * - Replaces all occurrences of
  252. * whitespace with standard spaces (0x20). The default value is `false`.
  253. */
  254. normalizeWhitespace: boolean;
  255. /**
  256. * - Do not attempt to combine
  257. * same line {@link TextItem}'s. The default value is `false`.
  258. */
  259. disableCombineTextItems: boolean;
  260. };
  261. /**
  262. * Page text content.
  263. */
  264. export type TextContent = {
  265. /**
  266. * - Array of {@link TextItem} objects.
  267. */
  268. items: Array<TextItem>;
  269. /**
  270. * - {@link TextStyle} objects,
  271. * indexed by font name.
  272. */
  273. styles: {
  274. [x: string]: TextStyle;
  275. };
  276. };
  277. /**
  278. * Page text content part.
  279. */
  280. export type TextItem = {
  281. /**
  282. * - Text content.
  283. */
  284. str: string;
  285. /**
  286. * - Text direction: 'ttb', 'ltr' or 'rtl'.
  287. */
  288. dir: string;
  289. /**
  290. * - Transformation matrix.
  291. */
  292. transform: Array<any>;
  293. /**
  294. * - Width in device space.
  295. */
  296. width: number;
  297. /**
  298. * - Height in device space.
  299. */
  300. height: number;
  301. /**
  302. * - Font name used by PDF.js for converted font.
  303. */
  304. fontName: string;
  305. };
  306. /**
  307. * Text style.
  308. */
  309. export type TextStyle = {
  310. /**
  311. * - Font ascent.
  312. */
  313. ascent: number;
  314. /**
  315. * - Font descent.
  316. */
  317. descent: number;
  318. /**
  319. * - Whether or not the text is in vertical mode.
  320. */
  321. vertical: boolean;
  322. /**
  323. * - The possible font family.
  324. */
  325. fontFamily: string;
  326. };
  327. /**
  328. * Page annotation parameters.
  329. */
  330. export type GetAnnotationsParameters = {
  331. /**
  332. * - Determines the annotations that will be fetched,
  333. * can be either 'display' (viewable annotations) or 'print' (printable
  334. * annotations). If the parameter is omitted, all annotations are fetched.
  335. */
  336. intent: string;
  337. };
  338. /**
  339. * Page render parameters.
  340. */
  341. export type RenderParameters = {
  342. /**
  343. * - A 2D context of a DOM Canvas object.
  344. */
  345. canvasContext: Object;
  346. /**
  347. * - Rendering viewport obtained by calling
  348. * the `PDFPageProxy.getViewport` method.
  349. */
  350. viewport: PageViewport;
  351. /**
  352. * - Rendering intent, can be 'display' or 'print'.
  353. * The default value is 'display'.
  354. */
  355. intent?: string;
  356. /**
  357. * - Enables WebGL accelerated rendering for
  358. * some operations. The default value is `false`.
  359. */
  360. enableWebGL?: boolean;
  361. /**
  362. * - Whether or not interactive
  363. * form elements are rendered in the display layer. If so, we do not render
  364. * them on the canvas as well.
  365. */
  366. renderInteractiveForms?: boolean;
  367. /**
  368. * - Additional transform, applied just
  369. * before viewport transform.
  370. */
  371. transform?: Array<any>;
  372. /**
  373. * - An object that has `beginLayout`,
  374. * `endLayout` and `appendImage` functions.
  375. */
  376. imageLayer?: Object;
  377. /**
  378. * - The factory instance that will be used
  379. * when creating canvases. The default value is {new DOMCanvasFactory()}.
  380. */
  381. canvasFactory?: Object;
  382. /**
  383. * - Background to use for the canvas.
  384. * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS
  385. * <color> value, a `CanvasGradient` object (a linear or radial gradient) or
  386. * a `CanvasPattern` object (a repetitive image). The default value is
  387. * 'rgb(255,255,255)'.
  388. */
  389. background?: Object | string;
  390. /**
  391. * - Storage for annotation
  392. * data in forms.
  393. */
  394. annotationStorage?: AnnotationStorage;
  395. /**
  396. * -
  397. * A promise that should resolve with an {@link OptionalContentConfig}
  398. * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,
  399. * the configuration will be fetched automatically with the default visibility
  400. * states set.
  401. */
  402. optionalContentConfigPromise?: Promise<OptionalContentConfig>;
  403. };
  404. /**
  405. * PDF page operator list.
  406. */
  407. export type PDFOperatorList = {
  408. /**
  409. * - Array containing the operator functions.
  410. */
  411. fnArray: Array<number>;
  412. /**
  413. * - Array containing the arguments of the
  414. * functions.
  415. */
  416. argsArray: Array<any>;
  417. };
  418. export type PDFWorkerParameters = {
  419. /**
  420. * - The name of the worker.
  421. */
  422. name?: string;
  423. /**
  424. * - The `workerPort` object.
  425. */
  426. port?: Object;
  427. /**
  428. * - Controls the logging level; the
  429. * constants from {@link VerbosityLevel} should be used.
  430. */
  431. verbosity?: number;
  432. };
  433. /**
  434. * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |
  435. * Int16Array | Uint16Array |
  436. * Int32Array | Uint32Array | Float32Array |
  437. * Float64Array
  438. * } TypedArray
  439. */
  440. /**
  441. * Document initialization / loading parameters object.
  442. *
  443. * @typedef {Object} DocumentInitParameters
  444. * @property {string} [url] - The URL of the PDF.
  445. * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use
  446. * typed arrays (Uint8Array) to improve the memory usage. If PDF data is
  447. * BASE64-encoded, use `atob()` to convert it to a binary string first.
  448. * @property {Object} [httpHeaders] - Basic authentication headers.
  449. * @property {boolean} [withCredentials] - Indicates whether or not
  450. * cross-site Access-Control requests should be made using credentials such
  451. * as cookies or authorization headers. The default is `false`.
  452. * @property {string} [password] - For decrypting password-protected PDFs.
  453. * @property {TypedArray} [initialData] - A typed array with the first portion
  454. * or all of the pdf data. Used by the extension since some data is already
  455. * loaded before the switch to range requests.
  456. * @property {number} [length] - The PDF file length. It's used for progress
  457. * reports and range requests operations.
  458. * @property {PDFDataRangeTransport} [range] - Allows for using a custom range
  459. * transport implementation.
  460. * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched
  461. * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.
  462. * @property {PDFWorker} [worker] - The worker that will be used for loading and
  463. * parsing the PDF data.
  464. * @property {number} [verbosity] - Controls the logging level; the constants
  465. * from {@link VerbosityLevel} should be used.
  466. * @property {string} [docBaseUrl] - The base URL of the document, used when
  467. * attempting to recover valid absolute URLs for annotations, and outline
  468. * items, that (incorrectly) only specify relative URLs.
  469. * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are
  470. * located. Include the trailing slash.
  471. * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary
  472. * packed or not.
  473. * @property {Object} [CMapReaderFactory] - The factory that will be used when
  474. * reading built-in CMap files. Providing a custom factory is useful for
  475. * environments without Fetch API or `XMLHttpRequest` support, such as
  476. * Node.js. The default value is {DOMCMapReaderFactory}.
  477. * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.
  478. * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated
  479. * PDF data cannot be successfully parsed, instead of attempting to recover
  480. * whatever possible of the data. The default value is `false`.
  481. * @property {number} [maxImageSize] - The maximum allowed image size in total
  482. * pixels, i.e. width * height. Images above this value will not be rendered.
  483. * Use -1 for no limit, which is also the default value.
  484. * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings
  485. * as JavaScript. Primarily used to improve performance of font rendering, and
  486. * when parsing PDF functions. The default value is `true`.
  487. * @property {boolean} [disableFontFace] - By default fonts are converted to
  488. * OpenType fonts and loaded via `@font-face` rules. If disabled, fonts will
  489. * be rendered using a built-in font renderer that constructs the glyphs with
  490. * primitive path commands. The default value is `false`.
  491. * @property {boolean} [fontExtraProperties] - Include additional properties,
  492. * which are unused during rendering of PDF documents, when exporting the
  493. * parsed font data from the worker-thread. This may be useful for debugging
  494. * purposes (and backwards compatibility), but note that it will lead to
  495. * increased memory usage. The default value is `false`.
  496. * @property {HTMLDocument} [ownerDocument] - Specify an explicit document
  497. * context to create elements with and to load resources, such as fonts,
  498. * into. Defaults to the current document.
  499. * @property {boolean} [disableRange] - Disable range request loading of PDF
  500. * files. When enabled, and if the server supports partial content requests,
  501. * then the PDF will be fetched in chunks. The default value is `false`.
  502. * @property {boolean} [disableStream] - Disable streaming of PDF file data.
  503. * By default PDF.js attempts to load PDF files in chunks. The default value
  504. * is `false`.
  505. * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file
  506. * data. When range requests are enabled PDF.js will automatically keep
  507. * fetching more data even if it isn't needed to display the current page.
  508. * The default value is `false`.
  509. *
  510. * NOTE: It is also necessary to disable streaming, see above, in order for
  511. * disabling of pre-fetching to work correctly.
  512. * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js
  513. * (see `web/debugger.js`). The default value is `false`.
  514. */
  515. /**
  516. * @typedef {Object} PDFDocumentStats
  517. * @property {Object<string, boolean>} streamTypes - Used stream types in the
  518. * document (an item is set to true if specific stream ID was used in the
  519. * document).
  520. * @property {Object<string, boolean>} fontTypes - Used font types in the
  521. * document (an item is set to true if specific font ID was used in the
  522. * document).
  523. */
  524. /**
  525. * This is the main entry point for loading a PDF and interacting with it.
  526. *
  527. * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or
  528. * XHR as fallback) is used, which means it must follow same origin rules,
  529. * e.g. no cross-domain requests without CORS.
  530. *
  531. * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src -
  532. * Can be a URL to where a PDF file is located, a typed array (Uint8Array)
  533. * already populated with data or parameter object.
  534. * @returns {PDFDocumentLoadingTask}
  535. */
  536. export function getDocument(src: string | TypedArray | DocumentInitParameters | PDFDataRangeTransport): PDFDocumentLoadingTask;
  537. export class LoopbackPort {
  538. constructor(defer?: boolean);
  539. _listeners: any[];
  540. _defer: boolean;
  541. _deferred: Promise<undefined>;
  542. postMessage(obj: any, transfers: any): void;
  543. addEventListener(name: any, listener: any): void;
  544. removeEventListener(name: any, listener: any): void;
  545. terminate(): void;
  546. }
  547. /**
  548. * Abstract class to support range requests file loading.
  549. */
  550. export class PDFDataRangeTransport {
  551. /**
  552. * @param {number} length
  553. * @param {Uint8Array} initialData
  554. * @param {boolean} [progressiveDone]
  555. */
  556. constructor(length: number, initialData: Uint8Array, progressiveDone?: boolean | undefined);
  557. length: number;
  558. initialData: Uint8Array;
  559. progressiveDone: boolean;
  560. _rangeListeners: any[];
  561. _progressListeners: any[];
  562. _progressiveReadListeners: any[];
  563. _progressiveDoneListeners: any[];
  564. _readyCapability: import("../shared/util.js").PromiseCapability;
  565. addRangeListener(listener: any): void;
  566. addProgressListener(listener: any): void;
  567. addProgressiveReadListener(listener: any): void;
  568. addProgressiveDoneListener(listener: any): void;
  569. onDataRange(begin: any, chunk: any): void;
  570. onDataProgress(loaded: any, total: any): void;
  571. onDataProgressiveRead(chunk: any): void;
  572. onDataProgressiveDone(): void;
  573. transportReady(): void;
  574. requestDataRange(begin: any, end: any): void;
  575. abort(): void;
  576. }
  577. /**
  578. * @typedef {Object} PDFWorkerParameters
  579. * @property {string} [name] - The name of the worker.
  580. * @property {Object} [port] - The `workerPort` object.
  581. * @property {number} [verbosity] - Controls the logging level; the
  582. * constants from {@link VerbosityLevel} should be used.
  583. */
  584. /** @type {any} */
  585. export const PDFWorker: any;
  586. /**
  587. * Proxy to a `PDFDocument` in the worker thread.
  588. */
  589. export class PDFDocumentProxy {
  590. constructor(pdfInfo: any, transport: any);
  591. _pdfInfo: any;
  592. _transport: any;
  593. /**
  594. * @type {AnnotationStorage} Storage for annotation data in forms.
  595. */
  596. get annotationStorage(): AnnotationStorage;
  597. /**
  598. * @type {number} Total number of pages in the PDF file.
  599. */
  600. get numPages(): number;
  601. /**
  602. * @type {string} A (not guaranteed to be) unique ID to identify a PDF.
  603. */
  604. get fingerprint(): string;
  605. /**
  606. * @param {number} pageNumber - The page number to get. The first page is 1.
  607. * @returns {Promise<PDFPageProxy>} A promise that is resolved with
  608. * a {@link PDFPageProxy} object.
  609. */
  610. getPage(pageNumber: number): Promise<PDFPageProxy>;
  611. /**
  612. * @param {{num: number, gen: number}} ref - The page reference. Must have
  613. * the `num` and `gen` properties.
  614. * @returns {Promise<{num: number, gen: number}>} A promise that is resolved
  615. * with the page index (starting from zero) that is associated with the
  616. * reference.
  617. */
  618. getPageIndex(ref: {
  619. num: number;
  620. gen: number;
  621. }): Promise<{
  622. num: number;
  623. gen: number;
  624. }>;
  625. /**
  626. * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved
  627. * with a mapping from named destinations to references.
  628. *
  629. * This can be slow for large documents. Use `getDestination` instead.
  630. */
  631. getDestinations(): Promise<{
  632. [x: string]: Array<any>;
  633. }>;
  634. /**
  635. * @param {string} id - The named destination to get.
  636. * @returns {Promise<Array<any>>} A promise that is resolved with all
  637. * information of the given named destination.
  638. */
  639. getDestination(id: string): Promise<Array<any>>;
  640. /**
  641. * @returns {Promise<Array<string> | null>} A promise that is resolved with
  642. * an {Array} containing the page labels that correspond to the page
  643. * indexes, or `null` when no page labels are present in the PDF file.
  644. */
  645. getPageLabels(): Promise<Array<string> | null>;
  646. /**
  647. * @returns {Promise<string>} A promise that is resolved with a {string}
  648. * containing the page layout name.
  649. */
  650. getPageLayout(): Promise<string>;
  651. /**
  652. * @returns {Promise<string>} A promise that is resolved with a {string}
  653. * containing the page mode name.
  654. */
  655. getPageMode(): Promise<string>;
  656. /**
  657. * @returns {Promise<Object | null>} A promise that is resolved with an
  658. * {Object} containing the viewer preferences, or `null` when no viewer
  659. * preferences are present in the PDF file.
  660. */
  661. getViewerPreferences(): Promise<Object | null>;
  662. /**
  663. * @returns {Promise<any | null>} A promise that is resolved with an {Array}
  664. * containing the destination, or `null` when no open action is present
  665. * in the PDF.
  666. */
  667. getOpenAction(): Promise<any | null>;
  668. /**
  669. * @returns {Promise<any>} A promise that is resolved with a lookup table
  670. * for mapping named attachments to their content.
  671. */
  672. getAttachments(): Promise<any>;
  673. /**
  674. * @returns {Promise<Array<string> | null>} A promise that is resolved with
  675. * an {Array} of all the JavaScript strings in the name tree, or `null`
  676. * if no JavaScript exists.
  677. */
  678. getJavaScript(): Promise<Array<string> | null>;
  679. /**
  680. * @typedef {Object} OutlineNode
  681. * @property {string} title
  682. * @property {boolean} bold
  683. * @property {boolean} italic
  684. * @property {Uint8ClampedArray} color - The color in RGB format to use for
  685. * display purposes.
  686. * @property {string | Array<any> | null} dest
  687. * @property {string | null} url
  688. * @property {string | undefined} unsafeUrl
  689. * @property {boolean | undefined} newWindow
  690. * @property {number | undefined} count
  691. * @property {Array<OutlineNode>} items
  692. */
  693. /**
  694. * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an
  695. * {Array} that is a tree outline (if it has one) of the PDF file.
  696. */
  697. getOutline(): Promise<{
  698. title: string;
  699. bold: boolean;
  700. italic: boolean;
  701. /**
  702. * - The color in RGB format to use for
  703. * display purposes.
  704. */
  705. color: Uint8ClampedArray;
  706. dest: string | Array<any> | null;
  707. url: string | null;
  708. unsafeUrl: string | undefined;
  709. newWindow: boolean | undefined;
  710. count: number | undefined;
  711. items: any[];
  712. }[]>;
  713. /**
  714. * @returns {Promise<OptionalContentConfig>} A promise that is resolved with
  715. * an {@link OptionalContentConfig} that contains all the optional content
  716. * groups (assuming that the document has any).
  717. */
  718. getOptionalContentConfig(): Promise<OptionalContentConfig>;
  719. /**
  720. * @returns {Promise<Array<number> | null>} A promise that is resolved with
  721. * an {Array} that contains the permission flags for the PDF document, or
  722. * `null` when no permissions are present in the PDF file.
  723. */
  724. getPermissions(): Promise<Array<number> | null>;
  725. /**
  726. * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is
  727. * resolved with an {Object} that has `info` and `metadata` properties.
  728. * `info` is an {Object} filled with anything available in the information
  729. * dictionary and similarly `metadata` is a {Metadata} object with
  730. * information from the metadata section of the PDF.
  731. */
  732. getMetadata(): Promise<{
  733. info: Object;
  734. metadata: Metadata;
  735. }>;
  736. /**
  737. * @returns {Promise<TypedArray>} A promise that is resolved with a
  738. * {TypedArray} that has the raw data from the PDF.
  739. */
  740. getData(): Promise<TypedArray>;
  741. /**
  742. * @returns {Promise<{ length: number }>} A promise that is resolved when the
  743. * document's data is loaded. It is resolved with an {Object} that contains
  744. * the `length` property that indicates size of the PDF data in bytes.
  745. */
  746. getDownloadInfo(): Promise<{
  747. length: number;
  748. }>;
  749. /**
  750. * @returns {Promise<PDFDocumentStats>} A promise this is resolved with
  751. * current statistics about document structures (see
  752. * {@link PDFDocumentStats}).
  753. */
  754. getStats(): Promise<PDFDocumentStats>;
  755. /**
  756. * Cleans up resources allocated by the document on both the main and worker
  757. * threads.
  758. *
  759. * NOTE: Do not, under any circumstances, call this method when rendering is
  760. * currently ongoing since that may lead to rendering errors.
  761. *
  762. * @returns {Promise} A promise that is resolved when clean-up has finished.
  763. */
  764. cleanup(): Promise<any>;
  765. /**
  766. * Destroys the current document instance and terminates the worker.
  767. */
  768. destroy(): any;
  769. /**
  770. * @type {DocumentInitParameters} A subset of the current
  771. * {DocumentInitParameters}, which are either needed in the viewer and/or
  772. * whose default values may be affected by the `apiCompatibilityParams`.
  773. */
  774. get loadingParams(): DocumentInitParameters;
  775. /**
  776. * @type {PDFDocumentLoadingTask} The loadingTask for the current document.
  777. */
  778. get loadingTask(): PDFDocumentLoadingTask;
  779. /**
  780. * @param {AnnotationStorage} annotationStorage - Storage for annotation
  781. * data in forms.
  782. * @returns {Promise<Uint8Array>} A promise that is resolved with a
  783. * {Uint8Array} containing the full data of the saved document.
  784. */
  785. saveDocument(annotationStorage: AnnotationStorage): Promise<Uint8Array>;
  786. }
  787. /**
  788. * Page getViewport parameters.
  789. *
  790. * @typedef {Object} GetViewportParameters
  791. * @property {number} scale - The desired scale of the viewport.
  792. * @property {number} [rotation] - The desired rotation, in degrees, of
  793. * the viewport. If omitted it defaults to the page rotation.
  794. * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.
  795. * The default value is `0`.
  796. * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.
  797. * The default value is `0`.
  798. * @property {boolean} [dontFlip] - If true, the y-axis will not be
  799. * flipped. The default value is `false`.
  800. */
  801. /**
  802. * Page getTextContent parameters.
  803. *
  804. * @typedef {Object} getTextContentParameters
  805. * @property {boolean} normalizeWhitespace - Replaces all occurrences of
  806. * whitespace with standard spaces (0x20). The default value is `false`.
  807. * @property {boolean} disableCombineTextItems - Do not attempt to combine
  808. * same line {@link TextItem}'s. The default value is `false`.
  809. */
  810. /**
  811. * Page text content.
  812. *
  813. * @typedef {Object} TextContent
  814. * @property {Array<TextItem>} items - Array of {@link TextItem} objects.
  815. * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,
  816. * indexed by font name.
  817. */
  818. /**
  819. * Page text content part.
  820. *
  821. * @typedef {Object} TextItem
  822. * @property {string} str - Text content.
  823. * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.
  824. * @property {Array<any>} transform - Transformation matrix.
  825. * @property {number} width - Width in device space.
  826. * @property {number} height - Height in device space.
  827. * @property {string} fontName - Font name used by PDF.js for converted font.
  828. */
  829. /**
  830. * Text style.
  831. *
  832. * @typedef {Object} TextStyle
  833. * @property {number} ascent - Font ascent.
  834. * @property {number} descent - Font descent.
  835. * @property {boolean} vertical - Whether or not the text is in vertical mode.
  836. * @property {string} fontFamily - The possible font family.
  837. */
  838. /**
  839. * Page annotation parameters.
  840. *
  841. * @typedef {Object} GetAnnotationsParameters
  842. * @property {string} intent - Determines the annotations that will be fetched,
  843. * can be either 'display' (viewable annotations) or 'print' (printable
  844. * annotations). If the parameter is omitted, all annotations are fetched.
  845. */
  846. /**
  847. * Page render parameters.
  848. *
  849. * @typedef {Object} RenderParameters
  850. * @property {Object} canvasContext - A 2D context of a DOM Canvas object.
  851. * @property {PageViewport} viewport - Rendering viewport obtained by calling
  852. * the `PDFPageProxy.getViewport` method.
  853. * @property {string} [intent] - Rendering intent, can be 'display' or 'print'.
  854. * The default value is 'display'.
  855. * @property {boolean} [enableWebGL] - Enables WebGL accelerated rendering for
  856. * some operations. The default value is `false`.
  857. * @property {boolean} [renderInteractiveForms] - Whether or not interactive
  858. * form elements are rendered in the display layer. If so, we do not render
  859. * them on the canvas as well.
  860. * @property {Array<any>} [transform] - Additional transform, applied just
  861. * before viewport transform.
  862. * @property {Object} [imageLayer] - An object that has `beginLayout`,
  863. * `endLayout` and `appendImage` functions.
  864. * @property {Object} [canvasFactory] - The factory instance that will be used
  865. * when creating canvases. The default value is {new DOMCanvasFactory()}.
  866. * @property {Object | string} [background] - Background to use for the canvas.
  867. * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS
  868. * <color> value, a `CanvasGradient` object (a linear or radial gradient) or
  869. * a `CanvasPattern` object (a repetitive image). The default value is
  870. * 'rgb(255,255,255)'.
  871. * @property {AnnotationStorage} [annotationStorage] - Storage for annotation
  872. * data in forms.
  873. * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -
  874. * A promise that should resolve with an {@link OptionalContentConfig}
  875. * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,
  876. * the configuration will be fetched automatically with the default visibility
  877. * states set.
  878. */
  879. /**
  880. * PDF page operator list.
  881. *
  882. * @typedef {Object} PDFOperatorList
  883. * @property {Array<number>} fnArray - Array containing the operator functions.
  884. * @property {Array<any>} argsArray - Array containing the arguments of the
  885. * functions.
  886. */
  887. /**
  888. * Proxy to a `PDFPage` in the worker thread.
  889. */
  890. export class PDFPageProxy {
  891. constructor(pageIndex: any, pageInfo: any, transport: any, ownerDocument: any, pdfBug?: boolean);
  892. _pageIndex: any;
  893. _pageInfo: any;
  894. _ownerDocument: any;
  895. _transport: any;
  896. _stats: StatTimer | null;
  897. _pdfBug: boolean;
  898. commonObjs: any;
  899. objs: PDFObjects;
  900. cleanupAfterRender: boolean;
  901. pendingCleanup: boolean;
  902. _intentStates: Map<any, any>;
  903. destroyed: boolean;
  904. /**
  905. * @type {number} Page number of the page. First page is 1.
  906. */
  907. get pageNumber(): number;
  908. /**
  909. * @type {number} The number of degrees the page is rotated clockwise.
  910. */
  911. get rotate(): number;
  912. /**
  913. * @type {Object} The reference that points to this page. It has `num` and
  914. * `gen` properties.
  915. */
  916. get ref(): Object;
  917. /**
  918. * @type {number} The default size of units in 1/72nds of an inch.
  919. */
  920. get userUnit(): number;
  921. /**
  922. * @type {Array<number>} An array of the visible portion of the PDF page in
  923. * user space units [x1, y1, x2, y2].
  924. */
  925. get view(): number[];
  926. /**
  927. * @param {GetViewportParameters} params - Viewport parameters.
  928. * @returns {PageViewport} Contains 'width' and 'height' properties
  929. * along with transforms required for rendering.
  930. */
  931. getViewport({ scale, rotation, offsetX, offsetY, dontFlip, }?: GetViewportParameters): PageViewport;
  932. /**
  933. * @param {GetAnnotationsParameters} params - Annotation parameters.
  934. * @returns {Promise<Array<any>>} A promise that is resolved with an
  935. * {Array} of the annotation objects.
  936. */
  937. getAnnotations({ intent }?: GetAnnotationsParameters): Promise<Array<any>>;
  938. annotationsPromise: any;
  939. annotationsIntent: string | undefined;
  940. /**
  941. * Begins the process of rendering a page to the desired context.
  942. *
  943. * @param {RenderParameters} params Page render parameters.
  944. * @returns {RenderTask} An object that contains a promise that is
  945. * resolved when the page finishes rendering.
  946. */
  947. render({ canvasContext, viewport, intent, enableWebGL, renderInteractiveForms, transform, imageLayer, canvasFactory, background, annotationStorage, optionalContentConfigPromise, }: RenderParameters): RenderTask;
  948. /**
  949. * @returns {Promise<PDFOperatorList>} A promise resolved with an
  950. * {@link PDFOperatorList} object that represents page's operator list.
  951. */
  952. getOperatorList(): Promise<PDFOperatorList>;
  953. /**
  954. * @param {getTextContentParameters} params - getTextContent parameters.
  955. * @returns {ReadableStream} Stream for reading text content chunks.
  956. */
  957. streamTextContent({ normalizeWhitespace, disableCombineTextItems, }?: getTextContentParameters): ReadableStream;
  958. /**
  959. * @param {getTextContentParameters} params - getTextContent parameters.
  960. * @returns {Promise<TextContent>} A promise that is resolved with a
  961. * {@link TextContent} object that represents the page's text content.
  962. */
  963. getTextContent(params?: getTextContentParameters): Promise<TextContent>;
  964. /**
  965. * Destroys the page object.
  966. * @private
  967. */
  968. private _destroy;
  969. /**
  970. * Cleans up resources allocated by the page.
  971. *
  972. * @param {boolean} [resetStats] - Reset page stats, if enabled.
  973. * The default value is `false`.
  974. * @returns {boolean} Indicates if clean-up was successfully run.
  975. */
  976. cleanup(resetStats?: boolean | undefined): boolean;
  977. /**
  978. * Attempts to clean up if rendering is in a state where that's possible.
  979. * @private
  980. */
  981. private _tryCleanup;
  982. /**
  983. * @private
  984. */
  985. private _startRenderPage;
  986. /**
  987. * @private
  988. */
  989. private _renderPageChunk;
  990. /**
  991. * @private
  992. */
  993. private _pumpOperatorList;
  994. /**
  995. * @private
  996. */
  997. private _abortOperatorList;
  998. /**
  999. * @type {Object} Returns page stats, if enabled; returns `null` otherwise.
  1000. */
  1001. get stats(): Object;
  1002. }
  1003. /**
  1004. * Sets the function that instantiates an {IPDFStream} as an alternative PDF
  1005. * data transport.
  1006. *
  1007. * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function
  1008. * that takes document initialization parameters (including a "url") and
  1009. * returns a promise which is resolved with an instance of {IPDFStream}.
  1010. * @ignore
  1011. */
  1012. export function setPDFNetworkStreamFactory(pdfNetworkStreamFactory: IPDFStreamFactory): void;
  1013. /** @type {string} */
  1014. export const version: string;
  1015. /** @type {string} */
  1016. export const build: string;
  1017. import { PageViewport } from "./display_utils.js";
  1018. import { AnnotationStorage } from "./annotation_storage.js";
  1019. import { OptionalContentConfig } from "./optional_content_config.js";
  1020. /**
  1021. * The loading task controls the operations required to load a PDF document
  1022. * (such as network requests) and provides a way to listen for completion,
  1023. * after which individual pages can be rendered.
  1024. *
  1025. * @typedef {Object} PDFDocumentLoadingTask
  1026. * @property {string} docId - Unique identifier for the document loading task.
  1027. * @property {boolean} destroyed - Whether the loading task is destroyed or not.
  1028. * @property {function} [onPassword] - Callback to request a password if a wrong
  1029. * or no password was provided. The callback receives two parameters: a
  1030. * function that should be called with the new password, and a reason (see
  1031. * {@link PasswordResponses}).
  1032. * @property {function} [onProgress] - Callback to be able to monitor the
  1033. * loading progress of the PDF file (necessary to implement e.g. a loading
  1034. * bar). The callback receives an {Object} with the properties `loaded`
  1035. * ({number}) and `total` ({number}) that indicate how many bytes are loaded.
  1036. * @property {function} [onUnsupportedFeature] - Callback for when an
  1037. * unsupported feature is used in the PDF document. The callback receives an
  1038. * {@link UNSUPPORTED_FEATURES} argument.
  1039. * @property {Promise<PDFDocumentProxy>} promise - Promise for document loading
  1040. * task completion.
  1041. * @property {function} destroy - Abort all network requests and destroy
  1042. * the worker. Returns a promise that is resolved when destruction is
  1043. * completed.
  1044. */
  1045. /**
  1046. * @type {any}
  1047. * @ignore
  1048. */
  1049. declare const PDFDocumentLoadingTask: any;
  1050. import { info } from "../shared/util.js";
  1051. import { Metadata } from "./metadata.js";
  1052. import { StatTimer } from "./display_utils.js";
  1053. /**
  1054. * A PDF document and page is built of many objects. E.g. there are objects for
  1055. * fonts, images, rendering code, etc. These objects may get processed inside of
  1056. * a worker. This class implements some basic methods to manage these objects.
  1057. * @ignore
  1058. */
  1059. declare class PDFObjects {
  1060. _objs: any;
  1061. /**
  1062. * Ensures there is an object defined for `objId`.
  1063. * @private
  1064. */
  1065. private _ensureObj;
  1066. /**
  1067. * If called *without* callback, this returns the data of `objId` but the
  1068. * object needs to be resolved. If it isn't, this method throws.
  1069. *
  1070. * If called *with* a callback, the callback is called with the data of the
  1071. * object once the object is resolved. That means, if you call this method
  1072. * and the object is already resolved, the callback gets called right away.
  1073. */
  1074. get(objId: any, callback?: any): any;
  1075. has(objId: any): any;
  1076. /**
  1077. * Resolves the object `objId` with optional `data`.
  1078. */
  1079. resolve(objId: any, data: any): void;
  1080. clear(): void;
  1081. }
  1082. /**
  1083. * Allows controlling of the rendering tasks.
  1084. */
  1085. declare class RenderTask {
  1086. constructor(internalRenderTask: any);
  1087. _internalRenderTask: any;
  1088. /**
  1089. * Callback for incremental rendering -- a function that will be called
  1090. * each time the rendering is paused. To continue rendering call the
  1091. * function that is the first argument to the callback.
  1092. * @type {function}
  1093. */
  1094. onContinue: Function;
  1095. /**
  1096. * Promise for rendering task completion.
  1097. * @type {Promise<void>}
  1098. */
  1099. get promise(): Promise<void>;
  1100. /**
  1101. * Cancels the rendering task. If the task is currently rendering it will
  1102. * not be cancelled until graphics pauses with a timeout. The promise that
  1103. * this object extends will be rejected when cancelled.
  1104. */
  1105. cancel(): void;
  1106. }
  1107. export {};