PDF Web SDK Documentation

Comprehensive Guide for Developers: UI & SDK Integration, Configuration, and API Reference

PDF Web SDK
    Preparing search index...

    Interface IDocumentModel

    Represents an open PDF document and provides methods for manipulation.

    Extends IDocumentCommandsBase which contains all command methods (addPage, deletePage, etc.).

    const doc = result.ui.pdfWebService.documentModel;
    console.log(doc.name, doc.id);
    await doc.drawPage({ pageIndex: 0, dpr: 2 });
    interface IDocumentModel {
        acroforms: PdfAcroform[];
        annotations: PdfAnnotation[];
        attachments: PdfAttachmentModel[];
        author?: string;
        bookmarks: PdfBookmark[];
        bookmarksCount: number;
        createDate?: Date;
        creator?: string;
        filePath: string;
        fonts?: IOpenFileResponseFonts;
        hasRedo: boolean;
        hasUndo: boolean;
        id: string;
        isModified: boolean;
        isReadOnly: boolean;
        isSigned: boolean;
        keywords: string[];
        layers: PdfLayer[];
        modifyDate?: Date;
        name: string;
        onBookmarksChanged: Observable<void>;
        onCommandExecuted: Observable<
            { claims: string; id: string; name: string; result: IUndoResponse },
        >;
        onCommandExecuting: Observable<
            { claims: string; id: string; name: string },
        >;
        onCommandFailed: Observable<
            {
                claims: string;
                error: unknown;
                errorMessage: string;
                id: string;
                name: string;
            },
        >;
        onIsModifiedChanged: Observable<boolean>;
        onNameChanged: Observable<string>;
        onPageChanged: Observable<
            { boxes: [number, number, number, number][]; index: number },
        >;
        onPagesChanged: Observable<void>;
        onReadOnlyChanged: Observable<boolean>;
        onUndoRedoChanged: Observable<IDocumentHistory>;
        pageDirection: PDPageDirection;
        pageLayout?: PageLayout;
        pageMode?: PageMode;
        pdfVersion: string;
        permissions: string;
        producer?: string;
        security: IDocumentSecurity;
        signatures: PdfSignatureAcroform[];
        size: number;
        subject?: string;
        title?: string;
        undoRedoHistory: IDocumentHistory;
        addAttachment(data: IAddAttachmentData): Promise<IUndoResponse>;
        addBookmark(data: IAddBookmarkData): Promise<IUndoResponse>;
        applyRedactions(): Promise<IUndoResponse>;
        autoOrderAnnotation(data: IAutoOrderAnnotationData): Promise<IUndoResponse>;
        bookmarkAddAfter(
            pageIndex: number,
            parentIndex: number[],
            title?: string,
        ): Promise<IUndoResponse>;
        bookmarkAddBefore(
            pageIndex: number,
            parentIndex: number[],
            title?: string,
        ): Promise<IUndoResponse>;
        bookmarkAddChild(
            pageIndex: number,
            parentIndex: number[],
            title?: string,
        ): Promise<IUndoResponse>;
        canChangeAnnotZOrder(
            data: ICanChangeAnnotZOrderData,
        ): Promise<ICanChangeAnnotZOrderResponse>;
        canChangeElementZOrder(
            data: ICanChangeElementZOrderData,
        ): Promise<ICanChangeElementZOrderResponse>;
        canChangeTextBlockZOrder(
            data: IChangeTextBlockZOrder,
        ): Promise<ICanChangeTextBlockZOrderResponse>;
        changeAcroformValue(data: IChangeAcroformValueData): Promise<IUndoResponse>;
        changeAnnotationProperties(
            annotIndex: number,
            pageIndex: number,
            properties: IChangeAnnotationPropertiesDataProperties,
            type: AnnotsTypes,
        ): Promise<IChangeAnnotationPropertiesResponse>;
        changeAnnotationProperties(
            data: IChangeAnnotationPropertiesData,
            type: AnnotsTypes,
        ): Promise<IChangeAnnotationPropertiesResponse>;
        changeAnnotOrder(data: IChangeAnnotOrderData): Promise<IUndoResponse>;
        changeDocName(name: string): void;
        changeDocumentHistory(
            data: IChangeDocumentHistoryData,
        ): Promise<IUndoResponse>;
        changeDocumentProperties(
            data: IChangeDocumentPropertiesData,
        ): Promise<IUndoResponse>;
        changeElementMatrix(data: IChangeElementMatrixData): Promise<IUndoResponse>;
        changeElementOrder(data: IChangeElementOrderData): Promise<IUndoResponse>;
        changeFontAttributes(
            data: IChangeFontAttributesData,
        ): Promise<IUndoResponse>;
        changeListStyle(data: IChangeListStyleData): Promise<IUndoResponse>;
        changePagesBackground(data: ISetBackgroundData): Promise<IUndoResponse>;
        changePagesBoxes(data: IChangePagesBoxesData): Promise<IUndoResponse>;
        changePagesMargin(data: IChangeMarginData): Promise<IUndoResponse>;
        changeParaAttrs(data: IChangeParaAttrsData): Promise<IUndoResponse>;
        changeTextBlockZOrder(
            data: IChangeTextBlockZOrderData,
        ): Promise<IUndoResponse>;
        clearAllSignatures(): Promise<IUndoResponse>;
        clearDocumentHistory(): Promise<IUndoResponse>;
        compress(
            mode: PDOptSaveImageQuality,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        convertToImages(dpi?: number): Promise<IClaimedData<File>>;
        convertToOffice(
            data: IConvertToOfficeCommandData,
        ): Promise<IConvertToOfficeCommandResult>;
        convertToPdfA(
            data: IPdfaConvertCommandData,
        ): Promise<IPdfaConvertCommandResult>;
        convertToText(pageSeparator?: string): Promise<IClaimedData<File>>;
        copyContentElement(
            data: ICopyContentElementData,
        ): Promise<ICopyContentElementResponse>;
        copyTextBlock(data: ICopyTextBlockData): Promise<ICopyTextBlockResponse>;
        createAnnotation(
            data: ICreateAnnotationUnifiedData,
        ): Promise<IUndoResponse>;
        createClip(data: ICreateClipData): Promise<IUndoResponse>;
        createMeasurementCalibration(
            data: ICreateMeasurementCalibrationData,
        ): Promise<IUndoResponse>;
        createTextBlock(data: ICreateTextBlockData): Promise<IUndoResponse>;
        createWidgetAnnotation(
            data: ICreateWidgetAnnotationData,
        ): Promise<IUndoResponse>;
        cropImage(data: ICropImageData): Promise<IUndoResponse>;
        deleteAllBookmarks(): Promise<IUndoResponse>;
        deleteAnnotations(data: IDeleteAnnotationData$1): Promise<IUndoResponse>;
        deleteAttachment(data: IDeleteAttachmentData): Promise<IUndoResponse>;
        deleteBatesNumbering(): Promise<IUndoResponse>;
        deleteBookmark(data: IDeleteBookmarkData): Promise<IUndoResponse>;
        deleteClip(data: IDeleteClipData): Promise<IUndoResponse>;
        deleteContentElements(
            data: IDeleteContentElementData,
        ): Promise<IUndoResponse>;
        deleteHeader(data: IDeleteHeaderData): Promise<IUndoResponse>;
        deletePageNumber(data: IDeletePageNumberData): Promise<IUndoResponse>;
        deletePages(data: IDeletePagesData): Promise<IUndoResponse>;
        deleteTextBlocks(data: IDeleteTextBlockData): Promise<IUndoResponse>;
        deleteWatermark(data: IDeleteWatermarkData): Promise<IUndoResponse>;
        dispose(): Promise<void>;
        documentExportStampAppearance(
            data: IExportAppearanceStampData,
        ): Promise<string>;
        doTransactionAsync(action: Observable<unknown>): Promise<void>;
        downloadSignedVersion(
            data: IDownloadSignedVersionData,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        editPageText(data: IEditPageTextData): Promise<IUndoResponse>;
        editTextParagraphs(data: IEditTextParagraphs): Promise<IUndoResponse>;
        exportAcroformsFdfData(): Promise<
            IClaimedData<Uint8Array<ArrayBufferLike>>,
        >;
        exportAllAttachments(): Promise<
            IClaimedData<readonly { data: Uint8Array; filename: string }[]>,
        >;
        exportAttachment(
            attachmentIndex: number,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        exportComments(): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        exportDocument(
            params: IExportFileFromWorkerParams,
        ): Promise<IExportFileResponse>;
        exportFillSignAsset(data: IExportFillSignSignAsset): Promise<Blob>;
        extractImage(
            data: IExtractImageData,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        extractImages(
            data: IExtractImagesData,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        extractPages(
            data: IExtractData,
        ): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        fillSignCreate(data: IFillSignCreateData): Promise<IUndoResponse>;
        fillSignDelete(data: IFillSignDeleteData): Promise<IUndoResponse>;
        fillSignUpdate(data: IFillSignPatchData): Promise<IUndoResponse>;
        flattenAnnotation(data: IFlattenAnnotData): Promise<IUndoResponse>;
        forgetContentElement(data: IForgetContentElementData): Promise<string>;
        getMeasurementViewports(
            data: IGetMeasurementViewportsData,
        ): Promise<IGetMeasurementViewportsResponse>;
        getNumPages(): number;
        getPage(index: number): IPageModel;
        getPageContentBox(
            pageIndex: number,
        ): Promise<[number, number, number, number]>;
        getPagePreview(data: IDrawPageData): Promise<Readonly<IDrawPageResponse>>;
        getPages(): IPageModel[];
        getTextAsTable(
            data: Readonly<IGetTextAsTableData>,
        ): Promise<ITextAsTableResponse>;
        hasPageNumbers(): Promise<boolean>;
        hasRecognizableImages(data: IHasRecognizableImagesData): Promise<boolean>;
        importAcroformsFdfData(data: File): Promise<IUndoResponse>;
        insertBatesNumbering(
            data: IInsertBatesNumberingData,
        ): Promise<IUndoResponse>;
        insertBlankPages(data: IInsertBlankPagesData$1): Promise<IUndoResponse>;
        insertChar(data: IInsertCharData): Promise<IUndoResponse>;
        insertDuplicatePages(
            data: IInsertDuplicatePagesData$1,
        ): Promise<IUndoResponse>;
        insertHeader(data: IInsertHeaderData): Promise<IUndoResponse>;
        insertImageContentElement(data: IInsertImageData): Promise<IUndoResponse>;
        insertPageNumber(data: IInsertPageNumberData): Promise<IUndoResponse>;
        insertPagesFromFile(
            data: IInsertPagesFromFileData$1,
        ): Promise<IUndoResponse>;
        insertWatermark(data: IInsertWatermarkData): Promise<IUndoResponse>;
        isESignAllowed(
            validate: { fileType: boolean; maxSize?: number; security: boolean },
        ): { message: string; permitted: boolean };
        isOperationPermitted(obj: BLPermReqObj, op: BLPermReqOp): boolean;
        listDocumentClaims(): Promise<string[]>;
        loadPageContent(page: PageModel): Promise<void>;
        mergeTextBlocks(data: IMergeTextBlocksData): Promise<IUndoResponse>;
        moveBookmark(data: IMoveBookmarkData): Promise<IUndoResponse>;
        movePages(data: IMovePagesData): Promise<IUndoResponse>;
        ocr(data: IOcrCommandData): Promise<IOcrCommandResult>;
        orderAnnotation(data: IOrderAnnotationData): Promise<IUndoResponse>;
        ownerAuthorization(password: string): Promise<IDocumentSecurity>;
        pasteContentElement(data: IPasteContentElementData): Promise<IUndoResponse>;
        pasteTextBlock(data: IPasteTextBlockData): Promise<IUndoResponse>;
        patchBookmark(data: IBookmarkRequestData): Promise<IUndoResponse>;
        redo(): Promise<IUndoResponse>;
        removeMetadata(): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        replaceText(data: IReplaceTextData): Promise<IUndoResponse>;
        replaceWithBlankPages(
            data: IReplaceWithBlankPagesData$1,
        ): Promise<IUndoResponse>;
        replaceWithDuplicatePages(
            data: IReplaceWithDuplicatePagesData$1,
        ): Promise<IUndoResponse>;
        replaceWithPagesFromFile(
            data: IReplaceWithPagesFromFileData$1,
        ): Promise<IUndoResponse>;
        resetAcroformsFdfData(): Promise<IUndoResponse>;
        resizePages(data: IChangeSizeData): Promise<IUndoResponse>;
        reversePage(data: IReversePages): Promise<IUndoResponse>;
        rotatePages(data: IRotatePagesData): Promise<IUndoResponse>;
        sanitize(): Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>;
        saveAttachment(data: ISaveAttachmentData): Promise<IUndoResponse>;
        setOCGroupState(data: IChangeLayerStateData): Promise<IUndoResponse>;
        setReadOnly(readOnly: boolean): void;
        setSecurityPermissions(
            data: ISecuritySaveSettingsData,
        ): Promise<IUndoResponse>;
        signPdf(data: ISignPdfCommandData): Promise<ISignPdfCommandResult>;
        transformClip(data: ITransformClipData): Promise<IUndoResponse>;
        transformContent(data: IDeskewData): Promise<IUndoResponse>;
        transformTextBlock(data: ITransformTextBlockData): Promise<IUndoResponse>;
        translate(data: ITranslateCommandData): Promise<ITranslateCommandResult>;
        undo(): Promise<IUndoResponse>;
        updateLayerStates(data: Record<number, { S: boolean }>): void;
        whiteoutPage(data: IDoWhiteoutData): Promise<IUndoResponse>;
    }

    Hierarchy (View Summary)

    Index

    Properties

    Methods

    addAttachment addBookmark applyRedactions autoOrderAnnotation bookmarkAddAfter bookmarkAddBefore bookmarkAddChild canChangeAnnotZOrder canChangeElementZOrder canChangeTextBlockZOrder changeAcroformValue changeAnnotationProperties changeAnnotOrder changeDocName changeDocumentHistory changeDocumentProperties changeElementMatrix changeElementOrder changeFontAttributes changeListStyle changePagesBackground changePagesBoxes changePagesMargin changeParaAttrs changeTextBlockZOrder clearAllSignatures clearDocumentHistory compress convertToImages convertToOffice convertToPdfA convertToText copyContentElement copyTextBlock createAnnotation createClip createMeasurementCalibration createTextBlock createWidgetAnnotation cropImage deleteAllBookmarks deleteAnnotations deleteAttachment deleteBatesNumbering deleteBookmark deleteClip deleteContentElements deleteHeader deletePageNumber deletePages deleteTextBlocks deleteWatermark dispose documentExportStampAppearance doTransactionAsync downloadSignedVersion editPageText editTextParagraphs exportAcroformsFdfData exportAllAttachments exportAttachment exportComments exportDocument exportFillSignAsset extractImage extractImages extractPages fillSignCreate fillSignDelete fillSignUpdate flattenAnnotation forgetContentElement getMeasurementViewports getNumPages getPage getPageContentBox getPagePreview getPages getTextAsTable hasPageNumbers hasRecognizableImages importAcroformsFdfData insertBatesNumbering insertBlankPages insertChar insertDuplicatePages insertHeader insertImageContentElement insertPageNumber insertPagesFromFile insertWatermark isESignAllowed isOperationPermitted listDocumentClaims loadPageContent mergeTextBlocks moveBookmark movePages ocr orderAnnotation ownerAuthorization pasteContentElement pasteTextBlock patchBookmark redo removeMetadata replaceText replaceWithBlankPages replaceWithDuplicatePages replaceWithPagesFromFile resetAcroformsFdfData resizePages reversePage rotatePages sanitize saveAttachment setOCGroupState setReadOnly setSecurityPermissions signPdf transformClip transformContent transformTextBlock translate undo updateLayerStates whiteoutPage

    Properties

    acroforms: PdfAcroform[]

    AcroForm fields.

    annotations: PdfAnnotation[]

    All annotations across all pages.

    attachments: PdfAttachmentModel[]

    File attachments.

    author?: string

    Document author.

    bookmarks: PdfBookmark[]

    Bookmarks/outlines tree.

    bookmarksCount: number

    Number of bookmarks.

    createDate?: Date

    Document creation date.

    creator?: string

    Application that created the document.

    filePath: string

    Host-app file path of this document session. null until provided via open options or a confirmed "Save as".

    Document and system fonts.

    hasRedo: boolean

    True if redo is available.

    hasUndo: boolean

    True if undo is available.

    id: string

    Unique identifier for this document instance.

    isModified: boolean

    Whether the document has unsaved changes.

    isReadOnly: boolean

    Whether the document is in read-only mode (no editing allowed).

    isSigned: boolean

    Whether the document has digital signatures.

    keywords: string[]

    Document keywords.

    layers: PdfLayer[]

    Optional content layers.

    modifyDate?: Date

    Document last modification date.

    name: string

    Filename of the document.

    onBookmarksChanged: Observable<void>

    Fires when bookmarks change.

    onCommandExecuted: Observable<
        { claims: string; id: string; name: string; result: IUndoResponse },
    >

    Fires after a command completes successfully.

    onCommandExecuting: Observable<{ claims: string; id: string; name: string }>

    Fires before a command starts executing.

    onCommandFailed: Observable<
        {
            claims: string;
            error: unknown;
            errorMessage: string;
            id: string;
            name: string;
        },
    >

    Fires when a command fails.

    onIsModifiedChanged: Observable<boolean>

    Fires when document modification state changes.

    onNameChanged: Observable<string>

    Emits the new document name after changeDocName (rename, save-as under a new filename).

    onPageChanged: Observable<
        { boxes: [number, number, number, number][]; index: number },
    >

    Fires when a specific page is modified.

    onPagesChanged: Observable<void>

    Fires when page structure changes (add/delete).

    onReadOnlyChanged: Observable<boolean>

    Fires when read-only state changes.

    onUndoRedoChanged: Observable<IDocumentHistory>

    Fires when undo/redo state changes.

    pageDirection: PDPageDirection

    Page reading direction (LTR or RTL).

    pageLayout?: PageLayout

    PDF page layout (single page, continuous, etc.).

    pageMode?: PageMode

    PDF page mode (thumbnails, outlines, etc.).

    pdfVersion: string

    PDF version written when this document is next saved/exported (e.g. '1.7', '2.0').

    permissions: string

    Permission flags as string.

    producer?: string

    PDF producer string.

    Document security settings (encryption, passwords).

    signatures: PdfSignatureAcroform[]

    Digital signatures.

    size: number

    File size in bytes.

    subject?: string

    Document subject.

    title?: string

    Document title.

    undoRedoHistory: IDocumentHistory

    Undo/redo history state.

    Methods

    • Parameters

      • name: string

      Returns void

    • Compresses the document by optimizing images and removing unnecessary data. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      the compressed bytes and the claims the compressed file carries

      If owner password is required but not provided.

    • Converts all pages of the document to PNG images and packages them into a ZIP file. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      • Optionaldpi: number

        Scaling factor for image resolution (default: 1). - 1 = standard resolution (96 DPI equivalent) - 2 = high resolution (192 DPI equivalent, retina displays) - 3 = very high resolution (288 DPI equivalent) Higher values produce sharper images but larger file sizes.

      Returns Promise<IClaimedData<File>>

      Promise resolving to a File object containing a ZIP archive with all page images named as {documentName}_Page_{N}.png

      If owner password is required but not provided.

      // Standard resolution (default)
      const zipFile = await document.convertToImages();

      // Explicit standard resolution
      const zipFile = await document.convertToImages(1);

      // High resolution for retina displays
      const zipFileHD = await document.convertToImages(2);
    • Extracts all text content from the document and returns it as a plain text file. Text is extracted from all pages with proper spacing and page separators. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      • OptionalpageSeparator: string

        Optional separator string between pages (default: '------------------------------')

      Returns Promise<IClaimedData<File>>

      Promise resolving to a File object containing all extracted text as {documentName}.txt

      If owner password is required but not provided.

      // Extract text with default separator
      const textFile = await document.convertToText();

      // Extract text with custom separator
      const textFile = await document.convertToText('--- Page Break ---');
    • Returns Promise<void>

    • Parameters

      • action: Observable<unknown>

      Returns Promise<void>

    • Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

    • Returns Promise<IClaimedData<readonly { data: Uint8Array; filename: string }[]>>

    • Parameters

      • attachmentIndex: number

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

    • Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

    • Extracts a single image from the document. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      Promise resolving to extracted image data

      If owner password is required but not provided.

    • Extracts multiple images from the document. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      Promise resolving to extracted images data

      If owner password is required but not provided.

    • Extracts specific pages from the document as a new PDF. Requires owner password authorization if the document has owner-level restrictions.

      Parameters

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      Promise resolving to extracted pages data

      If owner password is required but not provided.

    • Returns number

    • Parameters

      • pageIndex: number

      Returns Promise<[number, number, number, number]>

    • Returns Promise<boolean>

    • Checks whether the specified pages contain recognizable images.

      Parameters

      Returns Promise<boolean>

      Promise resolving to true when at least one matching image exists

    • Parameters

      • validate: { fileType: boolean; maxSize?: number; security: boolean }

      Returns { message: string; permitted: boolean }

    • Parameters

      • obj: BLPermReqObj
      • op: BLPermReqOp

      Returns boolean

    • Returns Promise<string[]>

    • Parameters

      • page: PageModel

      Returns Promise<void>

    • Removes metadata and document information from the PDF. Requires owner password authorization if the document has owner-level restrictions.

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      Promise resolving to document without metadata as Uint8Array

      If owner password is required but not provided.

    • Sanitizes the document by removing hidden content, metadata, attachments, and other sensitive data. Requires owner password authorization if the document has owner-level restrictions.

      Returns Promise<IClaimedData<Uint8Array<ArrayBufferLike>>>

      the sanitized bytes and the claims the sanitized file carries

      If owner password is required but not provided.

    • Sets the document to read-only mode, preventing all editing operations.

      Parameters

      • readOnly: boolean

      Returns void

    • Parameters

      • data: Record<number, { S: boolean }>

      Returns void