From 7912e863cf935b92c49b5296b9bbfeb5317fff7a Mon Sep 17 00:00:00 2001 From: Balaji Loganathan Date: Tue, 17 Feb 2026 13:49:06 +0530 Subject: [PATCH 1/2] 1008844: Angular getting started revamp in hotfix --- Document-Processing-toc.html | 1 + .../angular/annotation/annotation-event.md | 110 ++--- .../annotation/line-angle-constraints.md | 4 +- .../PDF/PDF-Viewer/angular/events.md | 392 +++++++++--------- .../form-designer/create-programmatically.md | 6 +- .../form-designer/form-field-events.md | 52 +-- .../getting-started-with-server-backed.md | 96 ++--- .../PDF/PDF-Viewer/angular/getting-started.md | 107 +++-- .../PDF/PDF-Viewer/angular/how-to-overview.md | 1 + .../angular/how-to/add-header-value.md | 6 +- .../angular/how-to/annotation-selectors.md | 6 +- ...e-author-name-using-annotation-settings.md | 48 +-- .../angular/how-to/change-selection-border.md | 4 +- ...e-a-standalone-pdf-viewer-in-angular-12.md | 242 +++++++++++ ...ar-17-and-above-with-no-standalone-flag.md | 6 +- ...17-and-above-without-no-standalone-flag.md | 10 +- .../angular/how-to/custom-context-menu.md | 6 +- .../angular/images/getting-started-ai.png | Bin 0 -> 27405 bytes .../angular/images/getting-started-ssr.png | Bin 0 -> 7244 bytes .../angular/images/getting-started-styles.png | Bin 0 -> 18371 bytes .../interactive-pdf-navigation/bookmark.md | 8 +- .../angular/open-pdf-file/from-amazon-s3.md | 2 +- .../open-pdf-file/from-azure-blob-storage.md | 2 +- .../PDF/PDF-Viewer/angular/overview.md | 2 +- .../angular/save-pdf-file/to-amazon-s3.md | 2 +- .../save-pdf-file/to-azure-blob-storage.md | 2 +- .../to-dropbox-cloud-file-storage.md | 4 +- .../toolbar-customization/custom-toolbar.md | 6 +- .../PDF/PDF-Viewer/angular/toolbar.md | 8 +- .../src/{app.component.ts => app.ts} | 0 .../angular/custom-context-menu/src/main.ts | 2 +- .../src/{app.component.ts => app.ts} | 12 +- .../angular/getting-started-cs1/src/main.ts | 5 +- 33 files changed, 696 insertions(+), 456 deletions(-) create mode 100644 Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-12.md create mode 100644 Document-Processing/PDF/PDF-Viewer/angular/images/getting-started-ai.png create mode 100644 Document-Processing/PDF/PDF-Viewer/angular/images/getting-started-ssr.png create mode 100644 Document-Processing/PDF/PDF-Viewer/angular/images/getting-started-styles.png rename Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/{app.component.ts => app.ts} (100%) rename Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/{app.component.ts => app.ts} (81%) diff --git a/Document-Processing-toc.html b/Document-Processing-toc.html index 970cd3b30..db50a3f41 100644 --- a/Document-Processing-toc.html +++ b/Document-Processing-toc.html @@ -587,6 +587,7 @@
  • Add custom fonts to the PDF Viewer using the PDF document
  • Create a Standalone PDF Viewer in Angular 17 and above with --no-standalone flag
  • Create a Standalone PDF Viewer in Angular 17 and above without --no-standalone flag
  • +
  • Create a Standalone PDF Viewer in Angular 12
  • Configure Annotation Selector Setting
  • Convert Pdf Library Bounds to Pdf viewer bounds
  • Display Custom Stamp items in Custom Stamp
  • diff --git a/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md index 26f0352cb..af873f3e1 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md @@ -56,7 +56,7 @@ The following example illustrates how to handle the `annotationAdd` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewEncapsulation, OnInit, ViewChild } from '@angular/core'; import { PdfViewerComponent, @@ -79,7 +79,7 @@ import { @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, providers: [ LinkAnnotationService, @@ -96,7 +96,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], }) @@ -145,7 +145,7 @@ The following example illustrates how to handle the `annotationDoubleClick` even ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewEncapsulation, OnInit, ViewChild } from '@angular/core'; import { PdfViewerComponent, @@ -168,7 +168,7 @@ import { @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, providers: [ LinkAnnotationService, @@ -185,7 +185,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], }) @@ -214,7 +214,7 @@ export class AppComponent { The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationDoubleClickArgs/) event is triggered when an annotation is double-clicked. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} {% endhighlight %} {% endtabs %} @@ -243,7 +243,7 @@ The following example illustrates how to handle the `annotationMouseLeave` event ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewEncapsulation, OnInit, ViewChild } from '@angular/core'; import { PdfViewerComponent, @@ -265,7 +265,7 @@ import { @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, providers: [ @@ -283,7 +283,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], }) @@ -333,7 +333,7 @@ The following example illustrates how to handle the `annotationMouseover` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -354,9 +354,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -416,7 +416,7 @@ The following example illustrates how to handle the `annotationMove` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -437,9 +437,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -499,7 +499,7 @@ The following example illustrates how to handle the `annotationMoving` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -520,9 +520,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -582,7 +582,7 @@ The following example illustrates how to handle the `annotationPropertiesChange` ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -603,9 +603,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -667,7 +667,7 @@ The following example illustrates how to handle the `annotationRemove` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -688,9 +688,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -750,7 +750,7 @@ The following example illustrates how to handle the `annotationResize` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -771,9 +771,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -833,7 +833,7 @@ The following example illustrates how to handle the `annotationSelect` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { @@ -854,9 +854,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -916,7 +916,7 @@ The following example illustrates how to handle the `annotationUnselect` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -936,9 +936,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -997,7 +997,7 @@ The following example illustrates how to handle the `beforeAddFreeText` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1017,9 +1017,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1083,7 +1083,7 @@ The following example illustrates how to handle the `addSignature` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1103,9 +1103,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1163,7 +1163,7 @@ The following example illustrates how to handle the `removeSignature` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1183,9 +1183,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1244,7 +1244,7 @@ The following example illustrates how to handle the `resizeSignature` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1264,9 +1264,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1324,7 +1324,7 @@ The following example illustrates how to handle the `signaturePropertiesChange` ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1344,9 +1344,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1405,7 +1405,7 @@ The following example illustrates how to handle the `signatureSelect` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1425,9 +1425,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, @@ -1487,7 +1487,7 @@ The following example illustrates how to handle the `signatureUnselect` event. ``` {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, ViewChild, ViewEncapsulation, OnInit } from '@angular/core'; import { PdfViewerComponent, @@ -1507,9 +1507,9 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', encapsulation: ViewEncapsulation.None, - styleUrls: ['./app.component.css'], + styleUrls: ['./app.css'], providers: [ ToolbarService, MagnificationService, diff --git a/Document-Processing/PDF/PDF-Viewer/angular/annotation/line-angle-constraints.md b/Document-Processing/PDF/PDF-Viewer/angular/annotation/line-angle-constraints.md index f3fbc5986..7791e2868 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/annotation/line-angle-constraints.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/annotation/line-angle-constraints.md @@ -49,12 +49,12 @@ import { ClickEventArgs } from '@syncfusion/ej2-buttons'; */ @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, // tslint:disable-next-line:max-line-length providers: [LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, AnnotationService, FormFieldsService, FormDesignerService,PageOrganizerService], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [ diff --git a/Document-Processing/PDF/PDF-Viewer/angular/events.md b/Document-Processing/PDF/PDF-Viewer/angular/events.md index 8dd049f3a..8b4774de3 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/events.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/events.md @@ -70,14 +70,14 @@ Note: For annotation and signature events, see the dedicated Annotations Events ## bookmarkClick -The [bookmarkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#bookmarkclickevent) event triggers when a bookmark item is clicked in the bookmark panel. +The [bookmarkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#bookmarkclick) event triggers when a bookmark item is clicked in the bookmark panel. - Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/bookmarkClickEventArgs/). Example: ```ts -// app.component.ts +// app.ts import { Component } from '@angular/core'; import { ToolbarService, @@ -95,7 +95,7 @@ import { @Component({ selector: 'app-root', - templateUrl: './app.component.html', + templateUrl: './app.html', providers: [ ToolbarService, MagnificationService, @@ -121,7 +121,7 @@ export class AppComponent { ``` ```html - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This guide supports **Angular 21** and other recent Angular versions. For detailed compatibility with other Angular versions, please refer to the [Angular version support matrix](https://ej2.syncfusion.com/angular/documentation/system-requirement#angular-version-compatibility). Starting from Angular 19, standalone components are the default, and this guide reflects that architecture. + +## Prerequisites + +Ensure your development environment meets the [System Requirements for Syncfusion® Angular UI Components](https://ej2.syncfusion.com/angular/documentation/system-requirement). ## Set up the development environment @@ -21,16 +27,51 @@ To install the latest Angular CLI globally use the following command. npm install -g @angular/cli ``` +> **Angular 21 Standalone Architecture:** Standalone components are the default in Angular 21. This guide uses the modern standalone architecture. If you need more information about the standalone architecture, refer to the [Standalone Guide](https://ej2.syncfusion.com/angular/documentation/getting-started/angular-standalone). + +### Installing a specific version + +To install a particular version of Angular CLI, use: + +```bash +npm install -g @angular/cli@21.0.0 +``` + ## Create an Angular application Start a new Angular application using the Angular CLI command as follows. ```bash ng new my-app +``` + +* This command will prompt you to configure settings like enabling Angular routing and choosing a stylesheet format. + +![Initial_setup](images/getting-started-styles.png) + +* By default, a CSS-based application is created. Use SCSS if required: + +```bash +ng new my-app --style=scss +``` + +* During project setup, when prompted for the Server-side rendering (SSR) option, choose the appropriate configuration. + +![Initial_setup](images/getting-started-ssr.png) + +* Select the required AI tool or 'none' if you do not need any AI tool. + +![Initial_setup](images/getting-started-ai.png) + +* Navigate to your newly created application directory: + +```bash cd my-app ``` -## Add Syncfusion JavaScript packages +N> In Angular 19 and below, it uses `app.component.ts`, `app.component.html`, `app.component.css` etc. In Angular 20+, the CLI generates a simpler structure with `src/app/app.ts`, `app.html`, and `app.css` (no `.component.` suffixes). + +## Installing Syncfusion® PDF Viewer package All the available Essential JS 2 packages are published in the [npmjs.com](https://www.npmjs.com/~syncfusionorg) public registry. To install PDF Viewer component, use the following command. @@ -56,33 +97,7 @@ Add the component CSS in the `~/src/styles.css` file, as shown below: ## Add the PDF Viewer component -Import PDF Viewer module into Angular application(app.module.ts) from the package `@syncfusion/ej2-angular-pdfviewer` [src/app/app.module.ts]. - -```typescript -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -// import the PdfViewer Module for the PDF Viewer component -import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, - MagnificationService, ThumbnailViewService, ToolbarService, - NavigationService, TextSearchService, TextSelectionService, - PrintService, FormDesignerService, FormFieldsService, - AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; -import { AppComponent } from './app.component'; - -@NgModule({ - //declaration of ej2-angular-pdfviewer module into NgModule - imports: [BrowserModule, PdfViewerModule], - declarations: [AppComponent], - bootstrap: [AppComponent], - providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, - ThumbnailViewService, ToolbarService, NavigationService, - TextSearchService, TextSelectionService, PrintService, - AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService] -}) -export class AppModule { } -``` - -Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.component.ts` file to render the PDF Viewer component. +Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.ts` file to render the PDF Viewer component. ```typescript import { Component, OnInit } from '@angular/core'; @@ -102,6 +117,7 @@ import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, style="height:640px;display:block"> `, + imports: [ PdfViewerModule ], providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, @@ -127,8 +143,8 @@ ng serve --open The output will appear as follows. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} -{% include code-snippet/pdfviewer/angular/getting-started-cs1/src/app.component.ts %} +{% highlight ts tabtitle="app.ts" %} +{% include code-snippet/pdfviewer/angular/getting-started-cs1/src/app.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -136,20 +152,6 @@ The output will appear as follows. {% endhighlight %} {% endtabs %} -N> If you are using an Angular version below 17, you need import the **AppModule** in the **main.ts** file - -```typescript - -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; - - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); - -``` - {% previewsample "Document-Processing/samples/pdfviewer/angular/getting-started-cs1/index.html" %} > For PDF Viewer serviceUrl creation, follow the steps provided in the [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/javascript-es6/how-to/create-pdfviewer-service) @@ -199,11 +201,11 @@ Inject modules using the `providers` property in `@NgModule`. dotnet run ``` -6. The PDF Viewer server instance runs at `https://localhost:5001`. Navigate to `https://localhost:5001/pdfviewer` to see the default GET response. Bind this URL to the `serviceUrl` property of the PDF Viewer as shown below. +6. The PDF Viewer server instance runs at `https://localhost:7255`. Navigate to `https://localhost:7255/pdfviewer` to see the default GET response. Bind this URL to the `serviceUrl` property of the PDF Viewer as shown below. ```javascript export class AppComponent implements OnInit { - public service = 'https://localhost:5001/pdfviewer'; + public service = 'https://localhost:7255/pdfviewer'; public document = 'PDF_Succinctly.pdf'; ngOnInit(): void { } diff --git a/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md b/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md index 67aeadca7..400f7a643 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/getting-started.md @@ -10,12 +10,19 @@ domainurl: ##DomainURL## # Getting started with Angular Standalone PDF Viewer component -This section explains the steps required to create a simple Standalone Angular PDF Viewer and demonstrates the basic usage of the PDF Viewer control in an Angular CLI application. +This section explains the steps required to create a simple Standalone Angular PDF Viewer and demonstrates the basic usage of the PDF Viewer control in an Angular 21 application. -N> For Angular 17+, see the following links: +N> This guide supports **Angular 21** and other recent Angular versions. For detailed compatibility with other Angular versions, please refer to the [Angular version support matrix](https://ej2.syncfusion.com/angular/documentation/system-requirement#angular-version-compatibility). Starting from Angular 19, standalone components are the default, and this guide reflects that architecture. + +N> For older versions of Angular, see the following links: * [Create a Standalone PDF Viewer in Angular 17 and above with-no-standalone-flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag). * [Create a Standalone PDF Viewer in Angular 17 and above without --no-standalone flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag). +* [Create a Standalone PDF Viewer in Angular 12](./how-to/create-a-standalone-pdf-viewer-in-angular-12) + +## Prerequisites + +Ensure your development environment meets the [System Requirements for Syncfusion® Angular UI Components](https://ej2.syncfusion.com/angular/documentation/system-requirement). ## Setup Angular Environment @@ -26,7 +33,15 @@ To install the latest Angular CLI globally use the following command. npm install -g @angular/cli ``` -N> Use the command **npm install --save @angular/cli@12.0.2** to install the Angular CLI version 12.0.2 +> **Angular 21 Standalone Architecture:** Standalone components are the default in Angular 21. This guide uses the modern standalone architecture. If you need more information about the standalone architecture, refer to the [Standalone Guide](https://ej2.syncfusion.com/angular/documentation/getting-started/angular-standalone). + +### Installing a specific version + +To install a particular version of Angular CLI, use: + +```bash +npm install -g @angular/cli@21.0.0 +``` ## Create an Angular Application @@ -34,9 +49,35 @@ Start a new Angular application using the Angular CLI command as follows. ```bash ng new my-app +``` + +* This command will prompt you to configure settings like enabling Angular routing and choosing a stylesheet format. + +![Initial_setup](images/getting-started-styles.png) + +* By default, a CSS-based application is created. Use SCSS if required: + +```bash +ng new my-app --style=scss +``` + +* During project setup, when prompted for the Server-side rendering (SSR) option, choose the appropriate configuration. + +![Initial_setup](images/getting-started-ssr.png) + +* Select the required AI tool or 'none' if you do not need any AI tool. + +![Initial_setup](images/getting-started-ai.png) + +* Navigate to your newly created application directory: + +```bash cd my-app ``` +N> In Angular 19 and below, it uses `app.component.ts`, `app.component.html`, `app.component.css` etc. In Angular 20+, the CLI generates a simpler structure with `src/app/app.ts`, `app.html`, and `app.css` (no `.component.` suffixes). + + ## Installing Syncfusion® PDF Viewer package All the available Essential® JS 2 packages are published in `npmjs.com` registry. @@ -53,38 +94,10 @@ npm install @syncfusion/ej2-angular-pdfviewer --save cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib src/assets/ej2-pdfviewer-lib ``` -* Confirm that there is an 'ej2-pdfviewer-lib' directory within your public directory, housing the assets of the PDF Viewer library. +* Confirm that there is an 'ej2-pdfviewer-lib' directory within your `src/assets` directory, housing the assets of the PDF Viewer library. * Validate that your server has been configured to utilize the Content-Type: application/wasm MIME type. Additional information can be found in the [Troubleshooting](./troubleshooting/troubleshooting) section. -## Registering PDF Viewer Module - -Import PDF Viewer module into Angular application(app.module.ts) from the package `@syncfusion/ej2-angular-pdfviewer` [src/app/app.module.ts]. - -```typescript -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -// import the PdfViewer Module for the PDF Viewer component -import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, - MagnificationService, ThumbnailViewService, ToolbarService, - NavigationService, TextSearchService, TextSelectionService, - PrintService, FormDesignerService, FormFieldsService, - AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; -import { AppComponent } from './app.component'; - -@NgModule({ - //declaration of ej2-angular-pdfviewer module into NgModule - imports: [BrowserModule, PdfViewerModule], - declarations: [AppComponent], - bootstrap: [AppComponent], - providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, - ThumbnailViewService, ToolbarService, NavigationService, - TextSearchService, TextSelectionService, PrintService, - AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService] -}) -export class AppModule { } -``` - ## Adding CSS reference Add the Angular PDF Viewer component's styles as given below in `src/styles.css` file. @@ -103,7 +116,7 @@ Add the Angular PDF Viewer component's styles as given below in `src/styles.css` ## Add the PDF Viewer component -Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.component.ts` file to render the PDF Viewer component. +Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.ts` file to render the PDF Viewer component. ```typescript import { Component, OnInit } from '@angular/core'; @@ -123,6 +136,7 @@ import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, style="height:640px;display:block"> `, + imports: [ PdfViewerModule ], providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, @@ -142,7 +156,14 @@ To configure the PDF Viewer to use local files for `documentPath` and `resourceU **Step 1:** Ensure that your application includes the `ej2-pdfviewer-lib` folder. This folder must contain the `pdfium.js`, `pdfium.wasm` files, and the PDF file that you intend to display. These should be located in the `assets` directory within your project's `src` folder. -**Step 2:** Assign local file paths to the `documentPath` and `resourceUrl` properties within the PDF Viewer setup. The `documentPath` should refer to your PDF file, while the `resourceUrl` should point to the directory containing the supporting resources. +**Step 2:** Register the assets folder inside `angular.json` +```json +"assets": [ + "src/assets" +] +``` + +**Step 3:** Assign local file paths to the `documentPath` and `resourceUrl` properties within the PDF Viewer setup. The `documentPath` should refer to your PDF file, while the `resourceUrl` should point to the directory containing the supporting resources. By following these steps, you will configure your PDF Viewer to load the required resources locally. See the code snippet below for reference. @@ -164,14 +185,14 @@ View the sample in GitHub to [load PDF Viewer with local resources](https://gith Use the following command to run the application in browser. -```javascript +```bash ng serve --open ``` The output will appear as follows. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, OnInit } from '@angular/core'; import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, @@ -180,7 +201,7 @@ import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; @Component({ - selector: 'app-container', + selector: 'app-root', // specifies the template string for the PDF Viewer component template: `
    `, + imports: [ PdfViewerModule ], providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, @@ -204,13 +226,12 @@ export class AppComponent implements OnInit { {% endhighlight %} {% highlight ts tabtitle="main.ts" %} -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; - +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { App } from './app/app';; -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); +bootstrapApplication(App, appConfig) + .catch((err) => console.error(err)); {% endhighlight %} {% endtabs %} diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to-overview.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to-overview.md index fa8cb0449..20534e4f8 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to-overview.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to-overview.md @@ -45,6 +45,7 @@ The frequently asked questions in Essential® PDF Viewer are liste * [Add custom fonts to the PDF Viewer using the PDF document](./how-to/custom-fonts) * [Create a Standalone PDF Viewer in Angular 17 and above with --no-standalone flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag) * [Create a Standalone PDF Viewer in Angular 17 and above without --no-standalone flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag) +* [Create a Standalone PDF Viewer in Angular 12](./how-to/create-a-standalone-pdf-viewer-in-angular-12) * [Configure Annotation Selector Setting](./how-to/configure-annotation-selector-setting) * [Convert Pdf Library Bounds to Pdf viewer bounds](./how-to/convert-pdf-library-bounds-to-pdf-viewer-bounds) * [Display Custom Stamp items in Custom Stamp](./how-to/show-custom-stamp-item) diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/add-header-value.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/add-header-value.md index dfa0a08ac..6c5406674 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/add-header-value.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/add-header-value.md @@ -9,7 +9,7 @@ documentation: ug # Add header values in the Angular PDF Viewer -Use the ajaxHeaders property in the PDF Viewer’s [ajaxRequestSettings](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#ajaxrequestsettings) to include custom headers with each AJAX request. +Use the ajaxHeaders property in the PDF Viewer’s [ajaxRequestSettings](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#ajaxrequestsettings) to include custom headers with each AJAX request. Example: Add a custom Authorization header using ajaxRequestSettings in an Angular component @@ -39,7 +39,7 @@ import { */ @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, // tslint:disable-next-line:max-line-length providers: [ @@ -57,7 +57,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], }) diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/annotation-selectors.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/annotation-selectors.md index eaa429be9..11dcac978 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/annotation-selectors.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/annotation-selectors.md @@ -9,7 +9,7 @@ documentation: ug # Customize annotation selectors in Angular PDF Viewer -Customize the annotation selector using the [annotationSelectorSettings](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationselectorsettings) property of the PDF Viewer. +Customize the annotation selector using the [annotationSelectorSettings](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationselectorsettings) property of the PDF Viewer. Example: Customize the selector of a shape annotation @@ -42,7 +42,7 @@ import { */ @Component({ selector: 'app-root', - templateUrl: 'app.component.html', + templateUrl: 'app.html', encapsulation: ViewEncapsulation.None, // tslint:disable-next-line:max-line-length providers: [ @@ -60,7 +60,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], }) diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/change-author-name-using-annotation-settings.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/change-author-name-using-annotation-settings.md index 82cda18a1..5f0dfda91 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/change-author-name-using-annotation-settings.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/change-author-name-using-annotation-settings.md @@ -32,26 +32,14 @@ Change the author name and other properties using the annotationSettings API as {% tabs %} {% highlight ts tabtitle="Standalone" %} ```ts -// app.module.ts -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { PdfViewerModule, ToolbarService, MagnificationService, NavigationService, LinkAnnotationService, ThumbnailViewService, BookmarkViewService, TextSelectionService, TextSearchService, PrintService, AnnotationService, FormFieldsService } from '@syncfusion/ej2-angular-pdfviewer'; -import { AppComponent } from './app.component'; - -@NgModule({ - declarations: [AppComponent], - imports: [BrowserModule, PdfViewerModule], - providers: [ToolbarService, MagnificationService, NavigationService, LinkAnnotationService, ThumbnailViewService, BookmarkViewService, TextSelectionService, TextSearchService, PrintService, AnnotationService, FormFieldsService], - bootstrap: [AppComponent] -}) -export class AppModule {} - -// app.component.ts +// app.ts import { Component } from '@angular/core'; -import { AnnotationSettingsModel, FreeTextSettingsModel } from '@syncfusion/ej2-angular-pdfviewer'; +import { AnnotationService, AnnotationSettingsModel, BookmarkViewService, FormFieldsService, FreeTextSettingsModel, LinkAnnotationService, MagnificationService, NavigationService, PageOrganizerService, PdfViewerModule, PrintService, TextSearchService, TextSelectionService, ThumbnailViewService, ToolbarService } from '@syncfusion/ej2-angular-pdfviewer'; @Component({ selector: 'app-root', + imports: [ PdfViewerModule ], + providers: [ToolbarService, MagnificationService, NavigationService, LinkAnnotationService, ThumbnailViewService, BookmarkViewService, TextSelectionService, TextSearchService, PrintService, AnnotationService, FormFieldsService, PageOrganizerService], template: ` For Angular 17+, see the following links: + +* [Create a Standalone PDF Viewer in Angular 17 and above with-no-standalone-flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag). +* [Create a Standalone PDF Viewer in Angular 17 and above without --no-standalone flag](./how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag). + +## Setup Angular Environment + +You can use the [`Angular CLI`](https://github.com/angular/angular-cli) to setup your Angular applications. +To install the latest Angular CLI globally use the following command. + +```bash +npm install -g @angular/cli +``` + +N> Use the command **npm install --save @angular/cli@12.0.2** to install the Angular CLI version 12.0.2 + +## Create an Angular Application + +Start a new Angular application using the Angular CLI command as follows. + +```bash +ng new my-app +cd my-app +``` + +## Installing Syncfusion® PDF Viewer package + +All the available Essential® JS 2 packages are published in `npmjs.com` registry. + +* To install PDF Viewer component, use the following command. + +```bash +npm install @syncfusion/ej2-angular-pdfviewer --save +``` + +* Copy the contents of the ej2-pdfviewer-lib folder from ./node_modules/@syncfusion/ej2-pdfviewer/dist to the src/assets directory using the command: + +```bash +cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib src/assets/ej2-pdfviewer-lib +``` + +* Confirm that there is an 'ej2-pdfviewer-lib' directory within your public directory, housing the assets of the PDF Viewer library. + +* Validate that your server has been configured to utilize the Content-Type: application/wasm MIME type. Additional information can be found in the [Troubleshooting](./troubleshooting/troubleshooting) section. + +## Registering PDF Viewer Module + +Import PDF Viewer module into Angular application(app.module.ts) from the package `@syncfusion/ej2-angular-pdfviewer` [src/app/app.module.ts]. + +```typescript +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +// import the PdfViewer Module for the PDF Viewer component +import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, + MagnificationService, ThumbnailViewService, ToolbarService, + NavigationService, TextSearchService, TextSelectionService, + PrintService, FormDesignerService, FormFieldsService, + AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; +import { AppComponent } from './app.component'; + +@NgModule({ + //declaration of ej2-angular-pdfviewer module into NgModule + imports: [BrowserModule, PdfViewerModule], + declarations: [AppComponent], + bootstrap: [AppComponent], + providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, + ThumbnailViewService, ToolbarService, NavigationService, + TextSearchService, TextSelectionService, PrintService, + AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService] +}) +export class AppModule { } +``` + +## Adding CSS reference + +Add the Angular PDF Viewer component's styles as given below in `src/styles.css` file. + +```css +@import '../node_modules/@syncfusion/ej2-base/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-navigations/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-popups/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css'; +@import '../node_modules/@syncfusion/ej2-notifications/styles/material.css'; +``` + +## Add the PDF Viewer component + +Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.component.ts` file to render the PDF Viewer component. + +```typescript +import { Component, OnInit } from '@angular/core'; +import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, + MagnificationService, ThumbnailViewService, ToolbarService, + NavigationService, TextSearchService, TextSelectionService, + PrintService, FormDesignerService, FormFieldsService, + AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; + +@Component({ + selector: 'app-root', + // specifies the template string for the PDF Viewer component + template: `
    + + +
    `, + providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, + ThumbnailViewService, ToolbarService, NavigationService, + TextSearchService, TextSelectionService, PrintService, + AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService] +}) +export class AppComponent implements OnInit { + public document: string = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'; + public resource: string = "https://cdn.syncfusion.com/ej2/26.2.11/dist/ej2-pdfviewer-lib"; + ngOnInit(): void { + } +} +``` + +### Load PDF Viewer with local resources + +To configure the PDF Viewer to use local files for `documentPath` and `resourceUrl` instead of files hosted on a CDN, follow these steps: + +**Step 1:** Ensure that your application includes the `ej2-pdfviewer-lib` folder. This folder must contain the `pdfium.js`, `pdfium.wasm` files, and the PDF file that you intend to display. These should be located in the `assets` directory within your project's `src` folder. + +**Step 2:** Assign local file paths to the `documentPath` and `resourceUrl` properties within the PDF Viewer setup. The `documentPath` should refer to your PDF file, while the `resourceUrl` should point to the directory containing the supporting resources. + +By following these steps, you will configure your PDF Viewer to load the required resources locally. See the code snippet below for reference. + +```typescript + template: ` + `, +export class AppComponent implements OnInit { + public document: string = window.location.origin + "/assets/pdfsuccinctly.pdf"; + public resource: string = window.location.origin + "/assets/ej2-pdfviewer-lib"; + } +``` + +View the sample in GitHub to [load PDF Viewer with local resources](https://github.com/SyncfusionExamples/angular-pdf-viewer-examples/tree/master/How%20to/Refer%20resource%20url%20locally) + +## Run the application + +Use the following command to run the application in browser. + +```javascript +ng serve --open +``` + +The output will appear as follows. + +{% tabs %} +{% highlight ts tabtitle="app.component.ts" %} +import { Component, OnInit } from '@angular/core'; +import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, + MagnificationService, ThumbnailViewService, ToolbarService, + NavigationService, TextSearchService, TextSelectionService, + PrintService, FormDesignerService, FormFieldsService, + AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; + +@Component({ + selector: 'app-container', + // specifies the template string for the PDF Viewer component + template: `
    + + +
    `, + providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService, + ThumbnailViewService, ToolbarService, NavigationService, + TextSearchService, TextSelectionService, PrintService, + AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService] +}) +export class AppComponent implements OnInit { + public document = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'; + public resource: string = "https://cdn.syncfusion.com/ej2/26.2.11/dist/ej2-pdfviewer-lib"; + ngOnInit(): void { + } +} +{% endhighlight %} + +{% highlight ts tabtitle="main.ts" %} +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; + + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); + +{% endhighlight %} +{% endtabs %} + +{% previewsample "/document-processing/samples/pdfviewer/angular/getting-started-cs1-standalone" %} + +## Module injection + +To enable additional features, inject the required modules. The following modules extend the PDF Viewer's functionality: + +* `LinkAnnotationService`: Enables hyperlink navigation. +* `BookmarkViewService`: Displays and navigates document bookmarks. +* `MagnificationService`: Provides zoom in/out operations. +* `NavigationService`: Enables page navigation. +* `TextSelectionService`: Enables text selection. +* `ThumbnailViewService`: Displays page thumbnails for navigation. +* `ToolbarService`: Enables the built-in toolbar UI. +* `PrintService`: Enables printing. +* `AnnotationService`: Enables annotation features. +* `TextSearchService`: Enables text search. +* `FormFieldsService`: Enables form field support. +* `FormDesignerService`: Enables designing and editing of form fields. +* `PageOrganizerService`: Enables page organization features. + +Inject modules using the `providers` array in the component or module. + +> Refer to the [Angular PDF Viewer feature tour](https://www.syncfusion.com/pdf-viewer-sdk/angular-pdf-viewer) for an overview of capabilities. Explore the [Angular PDF Viewer example](https://document.syncfusion.com/demos/pdf-viewer/angular/#/tailwind3/pdfviewer/default) to see core features in action. + +[View sample in GitHub](https://github.com/SyncfusionExamples/angular-pdf-viewer-examples/tree/master/Getting%20started%20-%20Standalone). \ No newline at end of file diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag.md index 5c3a4a595..455fe5f5a 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-with-no-standalone-flag.md @@ -63,7 +63,7 @@ import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, NavigationService, TextSearchService, TextSelectionService, PrintService, FormDesignerService, FormFieldsService, AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer'; -import { AppComponent } from './app.component'; +import { AppComponent } from './app'; @NgModule({ //declaration of ej2-angular-pdfviewer module into NgModule @@ -96,7 +96,7 @@ Add the Angular PDF Viewer component’s styles as given below in `src/styles.cs ## Adding PDF Viewer component -Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.component.ts` file to render the PDF Viewer component. +Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.ts` file to render the PDF Viewer component. ```typescript import { Component, OnInit } from '@angular/core'; @@ -140,7 +140,7 @@ ng serve --open The output will appear as follows. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, OnInit } from '@angular/core'; import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag.md index efd3c51bb..4c2838164 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/create-a-standalone-pdf-viewer-in-angular-17-and-above-without-no-standalone-flag.md @@ -52,7 +52,7 @@ cp -R ./node_modules/@syncfusion/ej2-pdfviewer/dist/ej2-pdfviewer-lib src/asset ## Registering PDF Viewer Module and Adding PDF Viewer component -Import PDF Viewer module into Angular application from the package `@syncfusion/ej2-angular-pdfviewer` and Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.component.ts` file to render the PDF Viewer component. +Import PDF Viewer module into Angular application from the package `@syncfusion/ej2-angular-pdfviewer` and Add the Angular PDF Viewer by using `` selector in `template` section of the `src/app/app.ts` file to render the PDF Viewer component. ```typescript @@ -79,7 +79,7 @@ import { style="height:640px;display:block"> `, - styleUrl: './app.component.css', + styleUrl: './app.css', providers: [LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, @@ -120,7 +120,7 @@ ng serve --open The output will appear as follows. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} +{% highlight ts tabtitle="app.ts" %} import { Component, OnInit } from '@angular/core'; import { RouterOutlet } from '@angular/router'; import { @@ -143,7 +143,7 @@ import { style="height:640px;display:block"> `, - styleUrl: './app.component.css', + styleUrl: './app.css', providers: [LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService, NavigationService, TextSearchService, TextSelectionService, PrintService, @@ -161,7 +161,7 @@ export class AppComponent implements OnInit { import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; -import { AppComponent } from './app/app.component'; +import { AppComponent } from './app/app'; bootstrapApplication(AppComponent, appConfig) .catch((err) => console.error(err)); diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md index 9f5583368..490ebfdb9 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md @@ -213,8 +213,8 @@ export class CustomContextMenuComponent implements OnInit { The following is the output of the custom context menu with customization. {% tabs %} -{% highlight ts tabtitle="app.component.ts" %} -{% include code-snippet/pdfviewer/angular/custom-context-menu/src/app.component.ts %} +{% highlight ts tabtitle="app.ts" %} +{% include code-snippet/pdfviewer/angular/custom-context-menu/src/app.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -223,7 +223,7 @@ The following is the output of the custom context menu with customization. {% endtabs %} N> To set up the **server-backed PDF Viewer**, -Add the below serviceUrl in the `app.component.ts` file +Add the below serviceUrl in the `app.ts` file `public service: string = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'`; Within the template, configure the PDF Viewer by adding the `[serviceUrl]='service'` attribute inside the div element. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/images/getting-started-ai.png b/Document-Processing/PDF/PDF-Viewer/angular/images/getting-started-ai.png new file mode 100644 index 0000000000000000000000000000000000000000..19655fb2b63fd91d3dbdd4fadd77c300e3a180ab GIT binary patch literal 27405 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

    P{?}hoHoeR0Twc9>bJO*@it=51?TeYzV8mtbo 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 literal 0 HcmV?d00001 diff --git a/Document-Processing/PDF/PDF-Viewer/angular/interactive-pdf-navigation/bookmark.md b/Document-Processing/PDF/PDF-Viewer/angular/interactive-pdf-navigation/bookmark.md index 7b30115f2..54fffbffc 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/interactive-pdf-navigation/bookmark.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/interactive-pdf-navigation/bookmark.md @@ -39,7 +39,7 @@ import { */ @Component({ selector: 'app-root', - // templateUrl: 'app.component.html', + // templateUrl: 'app.html', template: `

    @@ -73,7 +73,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], @@ -118,7 +118,7 @@ import { */ @Component({ selector: 'app-root', - // templateUrl: 'app.component.html', + // templateUrl: 'app.html', template: `
    @@ -152,7 +152,7 @@ import { FormDesignerService, PageOrganizerService, ], - styleUrls: ['app.component.css'], + styleUrls: ['app.css'], standalone: true, imports: [PdfViewerModule], diff --git a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md index bb4d7edd7..1b0d9faf3 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md @@ -20,7 +20,7 @@ Follow these steps to load a PDF from AWS S3 in the standalone PDF Viewer. Follow the instructions in the getting started guide (Angular) to create a basic PDF Viewer sample: [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) -**Step 2:** Modify the `src/app/app.component.ts` File in the Angular Project +**Step 2:** Modify the `src/app/app.ts` File in the Angular Project 1. Import the required namespaces at the top of the file: diff --git a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md index 960ea9900..da4a70307 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md @@ -20,7 +20,7 @@ Follow these steps to load a PDF from Azure Blob Storage in the standalone PDF V Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) to create a simple PDF Viewer sample in Angular. This will give you a basic setup of the PDF Viewer component. -**Step 2:** Modify the `src/app/app.component.ts` File in the Angular Project +**Step 2:** Modify the `src/app/app.ts` File in the Angular Project 1. Add the following private properties to the `AppComponent` class, and assign the values from the configuration to the corresponding properties diff --git a/Document-Processing/PDF/PDF-Viewer/angular/overview.md b/Document-Processing/PDF/PDF-Viewer/angular/overview.md index 330dc3698..58480e41f 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/overview.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/overview.md @@ -60,7 +60,7 @@ Add CSS references needed for a PDF Viewer in `src/styles.css` from the `../node ``` ### Add PDF Viewer component -In `src/app/app.component.ts``, use selector in the template attribute of the @Component directive to render the Syncfusion Angular PDF Viewer component. +In `src/app/app.ts``, use selector in the template attribute of the @Component directive to render the Syncfusion Angular PDF Viewer component. ``` import { Component, OnInit } from '@angular/core'; diff --git a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md index 3608a73be..c730de5e0 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md @@ -20,7 +20,7 @@ To save a PDF file to AWS S3, you can follow the steps below Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) to create a simple PDF Viewer sample in TypeScript. This will set up the basic structure of your PDF Viewer application. -**Step 2:** Modify the `src/app/app.component.ts` File in the Angular Project +**Step 2:** Modify the `src/app/app.ts` File in the Angular Project 1. Import the required namespaces at the top of the file: diff --git a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md index 21c49934c..77debff3b 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md @@ -20,7 +20,7 @@ To save a PDF file to Azure Blob Storage, follow these steps: Start by following the steps provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) to create a simple PDF viewer sample in Angular. This will give you a basic setup of the PDF viewer component. -**Step 2:** Modify the `src/app/app.component.ts` File in the Angular Project +**Step 2:** Modify the `src/app/app.ts` File in the Angular Project 1. Import the required namespaces at the top of the file: diff --git a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-dropbox-cloud-file-storage.md b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-dropbox-cloud-file-storage.md index 9de013a2d..2f2c2cab8 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-dropbox-cloud-file-storage.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-dropbox-cloud-file-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save PDF files to Dropbox cloud storage +# Save PDF files to Dropbox cloud storage in Angular The Angular PDF Viewer component supports saving PDF files to Dropbox using either the standalone or server-backed configuration. The following steps demonstrate both approaches. @@ -24,7 +24,7 @@ To create a Dropbox API App, you should follow the official documentation provid Follow the instructions provided in this [link](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) to create a simple PDF Viewer sample in Angular. This sets up the basic structure of the PDF Viewer application. -**Step 3:** Modify the `src/app/app.component.ts` file in the Angular project +**Step 3:** Modify the `src/app/app.ts` file in the Angular project 1. Import the required namespaces at the top of the file: diff --git a/Document-Processing/PDF/PDF-Viewer/angular/toolbar-customization/custom-toolbar.md b/Document-Processing/PDF/PDF-Viewer/angular/toolbar-customization/custom-toolbar.md index b537c459c..d24847df8 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/toolbar-customization/custom-toolbar.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/toolbar-customization/custom-toolbar.md @@ -79,7 +79,7 @@ Hide the default toolbar using `enableToolbar` and `enableThumbnail` properties: {% highlight ts tabtitle="Standalone" %} {% raw %} - + + The icons are embedded in the font file used in the previous code snippet. -**Step 7:** Add the following code snippet in `app.component.ts` file for performing a user interaction in PDF Viewer in code behind. +**Step 7:** Add the following code snippet in `app.ts` file for performing a user interaction in PDF Viewer in code behind. {% tabs %} {% highlight js tabtitle="Standalone" %} diff --git a/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md b/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md index c06d75c53..88ccf1dc6 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md @@ -262,9 +262,9 @@ import { LinkAnnotationService, BookmarkViewService, MagnificationService, PDF Viewer allows you to customize(add, show, hide, enable, and disable) existing items in a toolbar. -* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customToolbarItemModel/) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings/) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/angular/documentation/api/toolbar/clickEventArgs/). +* Add - New items can defined by [**CustomToolbarItemModel**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customToolbarItemModel) and with existing items in [**ToolbarSettings**](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings) property. Newly added item click action can be defined in [`toolbarclick`](https://ej2.syncfusion.com/angular/documentation/api/toolbar/clickEventArgs). -* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings/) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarItem/). +* Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarItem). * Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbar/#enabletoolbaritem) @@ -682,9 +682,9 @@ The PDF Viewer provides API for user interactions options provided in its built- } ``` ->The icons are embedded in the font file used in the previous code snippet. +N> The icons are embedded in the font file used in the previous code snippet. -**Step 5:** Add the following code snippet in `app.component.ts` file for performing a user interaction in PDF Viewer in code behind. +**Step 5:** Add the following code snippet in `app.ts` file for performing a user interaction in PDF Viewer in code behind. {% tabs %} {% highlight js tabtitle="Standalone" %} diff --git a/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/app.component.ts b/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/app.ts similarity index 100% rename from Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/app.component.ts rename to Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/app.ts diff --git a/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/main.ts b/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/main.ts index 3607237bd..37a1e9c19 100644 --- a/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/main.ts +++ b/Document-Processing/code-snippet/pdfviewer/angular/custom-context-menu/src/main.ts @@ -1,4 +1,4 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app.component'; +import { AppComponent } from './app'; import 'zone.js'; bootstrapApplication(AppComponent).catch((err) => console.error(err)); \ No newline at end of file diff --git a/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.component.ts b/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.ts similarity index 81% rename from Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.component.ts rename to Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.ts index 265b7a3f5..2a4c9471e 100644 --- a/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.component.ts +++ b/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/app.ts @@ -1,14 +1,10 @@ -import { BrowserModule } from '@angular/platform-browser' -import { NgModule } from '@angular/core' import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, - ToolbarService, NavigationService,AnnotationService, TextSearchService, TextSelectionService, PrintService,FormDesignerService, FormFieldsService, PageOrganizerService} from '@syncfusion/ej2-angular-pdfviewer' - - + ToolbarService, NavigationService,AnnotationService, TextSearchService, TextSelectionService, PrintService,FormDesignerService, FormFieldsService, PageOrganizerService} from '@syncfusion/ej2-angular-pdfviewer'; import { Component, OnInit } from '@angular/core'; @Component({ -imports: [ PdfViewerModule ], -standalone: true, + imports: [ PdfViewerModule ], + standalone: true, selector: 'app-container', // specifies the template string for the PDF Viewer component template: `
    @@ -23,7 +19,7 @@ standalone: true, , NavigationService, AnnotationService, TextSearchService, TextSelectionService, PrintService, FormDesignerService, FormFieldsService, PageOrganizerService] }) export class AppComponent implements OnInit { - public service = 'https://services.syncfusion.com/angular/production/api/pdfviewer'; + public service = 'https://document.syncfusion.com/web-services/pdf-viewer/api/pdfviewer'; public document = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'; ngOnInit(): void { } diff --git a/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/main.ts b/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/main.ts index 3607237bd..226e76bcb 100644 --- a/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/main.ts +++ b/Document-Processing/code-snippet/pdfviewer/angular/getting-started-cs1/src/main.ts @@ -1,4 +1,5 @@ import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app.component'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app'; import 'zone.js'; -bootstrapApplication(AppComponent).catch((err) => console.error(err)); \ No newline at end of file +bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err)); \ No newline at end of file From 3c14a5d14e997ee11a5f79365892371b60a99124 Mon Sep 17 00:00:00 2001 From: Balaji Loganathan Date: Thu, 19 Feb 2026 11:47:50 +0530 Subject: [PATCH 2/2] 1008844: Resolved CI issues --- .../angular/annotation/annotation-event.md | 74 +++---- .../PDF/PDF-Viewer/angular/events.md | 180 +++++++++--------- .../form-designer/create-programmatically.md | 6 +- .../form-designer/form-field-events.md | 104 +++++----- .../angular/how-to/custom-context-menu.md | 6 +- .../angular/open-pdf-file/from-amazon-s3.md | 4 +- .../open-pdf-file/from-azure-blob-storage.md | 4 +- .../PDF/PDF-Viewer/angular/overview.md | 2 +- .../angular/save-pdf-file/to-amazon-s3.md | 2 +- .../save-pdf-file/to-azure-blob-storage.md | 6 +- .../PDF/PDF-Viewer/angular/toolbar.md | 2 +- 11 files changed, 195 insertions(+), 195 deletions(-) diff --git a/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md b/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md index af873f3e1..70a1b88c4 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/annotation/annotation-event.md @@ -35,11 +35,11 @@ The PDF Viewer control provides support for several annotation events. The annot ### annotationAdd -The [annotationAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationadd) event is triggered when an annotation is added to the PDF Viewer. +The [annotationAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationadd) event is triggered when an annotation is added to the PDF Viewer. #### Event Arguments -For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationaddeventargs/). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`. +For event data, see [AnnotationAddEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationaddeventargs). It provides properties such as `annotationId`, `pageNumber`, `annotationType`, and `bounds`. The following example illustrates how to handle the `annotationAdd` event. @@ -124,11 +124,11 @@ export class AppComponent { ### annotationDoubleClick -The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationdoubleclick) event is triggered when an annotation is double-clicked. +The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationdoubleclick) event is triggered when an annotation is double-clicked. #### Event Arguments -For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationDoubleClickEventArgs/). +For event data, see [AnnotationDoubleClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationDoubleClickEventArgs). The following example illustrates how to handle the `annotationDoubleClick` event. @@ -211,7 +211,7 @@ export class AppComponent { -The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationDoubleClickArgs/) event is triggered when an annotation is double-clicked. +The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationDoubleClickArgs) event is triggered when an annotation is double-clicked. {% tabs %} {% highlight ts tabtitle="app.ts" %} @@ -221,11 +221,11 @@ The [annotationDoubleClick](https://ej2.syncfusion.com/angular/documentation/api ### annotationMouseLeave -The [annotationMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationmouseleave) event is triggered when the mouse cursor leaves an annotation. +The [annotationMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationmouseleave) event is triggered when the mouse cursor leaves an annotation. #### Event Arguments -For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMouseLeaveEventArgs/). +For event data, see [AnnotationMouseLeaveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMouseLeaveEventArgs). The following example illustrates how to handle the `annotationMouseLeave` event. @@ -311,12 +311,12 @@ export class AppComponent { ### annotationMouseover -The [annotationMouseover](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationmouseover) event is triggered when the mouse cursor moves +The [annotationMouseover](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationmouseover) event is triggered when the mouse cursor moves over an annotation. #### Event Arguments -For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMouseOverEventArgs/). +For event data, see [AnnotationMouseOverEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMouseOverEventArgs). The following example illustrates how to handle the `annotationMouseover` event. @@ -394,11 +394,11 @@ export class AppComponent implements OnInit { ### annotationMove -The [annotationMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationmove) event is triggered when an annotation is moved. +The [annotationMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationmove) event is triggered when an annotation is moved. #### Event Arguments -For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMoveEventArgs/). +For event data, see [AnnotationMoveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMoveEventArgs). The following example illustrates how to handle the `annotationMove` event. @@ -477,11 +477,11 @@ export class AppComponent implements OnInit { ### annotationMoving -The [annotationMoving](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationmoving) event is triggered while an annotation is being moved. +The [annotationMoving](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationmoving) event is triggered while an annotation is being moved. #### Event Arguments -For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMovingEventArgs/). +For event data, see [AnnotationMovingEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationMovingEventArgs). The following example illustrates how to handle the `annotationMoving` event. @@ -560,11 +560,11 @@ export class AppComponent implements OnInit { ### annotationPropertiesChange -The [annotationPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationpropertieschange) event is triggered when an annotation’s properties are changed. +The [annotationPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationpropertieschange) event is triggered when an annotation’s properties are changed. #### Event Arguments -For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs/). It provides properties such as `annotationId`, `pageNumber`, and `action`. +For event data, see [AnnotationPropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationPropertiesChangeEventArgs). It provides properties such as `annotationId`, `pageNumber`, and `action`. The following example illustrates how to handle the `annotationPropertiesChange` event. @@ -645,11 +645,11 @@ export class AppComponent implements OnInit { ### annotationRemove -The [annotationRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationremove) event is triggered when an annotation is removed. +The [annotationRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationremove) event is triggered when an annotation is removed. #### Event Arguments -For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationRemoveEventArgs/). It provides properties such as `annotationId` and `pageNumber`. +For event data, see [AnnotationRemoveEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationRemoveEventArgs). It provides properties such as `annotationId` and `pageNumber`. The following example illustrates how to handle the `annotationRemove` event. @@ -728,11 +728,11 @@ export class AppComponent implements OnInit { ### annotationResize -The [annotationResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationresize) event is triggered when an annotation is resized. +The [annotationResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationresize) event is triggered when an annotation is resized. #### Event Arguments -For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationResizeEventArgs/). +For event data, see [AnnotationResizeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationResizeEventArgs). The following example illustrates how to handle the `annotationResize` event. @@ -811,11 +811,11 @@ export class AppComponent implements OnInit { ### annotationSelect -The [annotationSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationselect) event is triggered when an annotation is selected. +The [annotationSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationselect) event is triggered when an annotation is selected. #### Event Arguments -For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationSelectEventArgs/). +For event data, see [AnnotationSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationSelectEventArgs). The following example illustrates how to handle the `annotationSelect` event. @@ -894,11 +894,11 @@ export class AppComponent implements OnInit { ### annotationUnselect -The [annotationUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#annotationunselect) event is triggered when an annotation is unselected. +The [annotationUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#annotationunselect) event is triggered when an annotation is unselected. #### Event Arguments -For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationUnSelectEventArgs/). +For event data, see [AnnotationUnSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/annotationUnSelectEventArgs). The following example illustrates how to handle the `annotationUnselect` event. @@ -975,11 +975,11 @@ export class AppComponent implements OnInit { ### beforeAddFreeText -The [beforeAddFreeText](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#beforeaddfreetext) event is triggered before adding free text to the PDF Viewer. +The [beforeAddFreeText](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#beforeaddfreetext) event is triggered before adding free text to the PDF Viewer. #### Event Arguments -For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/beforeAddFreeTextEventArgs/). +For event data, see [BeforeAddFreeTextEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/beforeAddFreeTextEventArgs). The following example illustrates how to handle the `beforeAddFreeText` event. @@ -1061,11 +1061,11 @@ export class AppComponent implements OnInit { ### addSignature -The [addSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#addsignature) event is triggered when a signature is added to the PDF Viewer. +The [addSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#addsignature) event is triggered when a signature is added to the PDF Viewer. #### Event Arguments -For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/addSignatureEventArgs/). It provides properties such as `pageNumber`. +For event data, see [AddSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/addSignatureEventArgs). It provides properties such as `pageNumber`. The following example illustrates how to handle the `addSignature` event. @@ -1142,11 +1142,11 @@ export class AppComponent implements OnInit { ### removeSignature -The [removeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#removesignature) event is triggered when a signature is removed from the PDF Viewer. +The [removeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#removesignature) event is triggered when a signature is removed from the PDF Viewer. #### Event Arguments -For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/removeSignatureEventArgs/). It provides properties such as `pageNumber`. +For event data, see [RemoveSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/removeSignatureEventArgs). It provides properties such as `pageNumber`. The following example illustrates how to handle the `removeSignature` event. @@ -1222,11 +1222,11 @@ export class AppComponent implements OnInit { ### resizeSignature -The [resizeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#resizesignature) event is triggered when a signature is resized in the PDF Viewer. +The [resizeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#resizesignature) event is triggered when a signature is resized in the PDF Viewer. #### Event Arguments -For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/resizeSignatureEventArgs/). +For event data, see [ResizeSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/resizeSignatureEventArgs). The following example illustrates how to handle the `resizeSignature` event. @@ -1303,11 +1303,11 @@ export class AppComponent implements OnInit { ### signaturePropertiesChange -The [signaturePropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signaturepropertieschange) event is triggered when signature properties are changed in the PDF Viewer. +The [signaturePropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signaturepropertieschange) event is triggered when signature properties are changed in the PDF Viewer. #### Event Arguments -For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/). +For event data, see [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs). The following example illustrates how to handle the `signaturePropertiesChange` event. @@ -1383,11 +1383,11 @@ export class AppComponent implements OnInit { ### signatureSelect -The [signatureSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signatureselect) event is triggered when a signature is selected in the PDF Viewer. +The [signatureSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signatureselect) event is triggered when a signature is selected in the PDF Viewer. #### Event Arguments -For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureSelectEventArgs/). +For event data, see [SignatureSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureSelectEventArgs). The following example illustrates how to handle the `signatureSelect` event. @@ -1465,11 +1465,11 @@ export class AppComponent implements OnInit { ### signatureUnselect -The [signatureUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signatureunselect) event is triggered when a signature is unselected in the PDF Viewer. +The [signatureUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signatureunselect) event is triggered when a signature is unselected in the PDF Viewer. #### Event Arguments -For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureUnSelectEventArgs/). +For event data, see [SignatureUnSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureUnSelectEventArgs). The following example illustrates how to handle the `signatureUnselect` event. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/events.md b/Document-Processing/PDF/PDF-Viewer/angular/events.md index 8b4774de3..b41c88154 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/events.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/events.md @@ -70,9 +70,9 @@ Note: For annotation and signature events, see the dedicated Annotations Events ## bookmarkClick -The [bookmarkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#bookmarkclick) event triggers when a bookmark item is clicked in the bookmark panel. +The [bookmarkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#bookmarkclick) event triggers when a bookmark item is clicked in the bookmark panel. -- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/bookmarkClickEventArgs/). +- Event arguments: [BookmarkClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/bookmarkClickEventArgs). Example: @@ -134,7 +134,7 @@ export class AppComponent { ## toolbarClick -The [toolbarClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#toolbarclick) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name. +The [toolbarClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#toolbarclick) event triggers when a toolbar item is clicked. Use it to handle actions based on the clicked item's id or name. - Event arguments: `ClickEventArgs`. @@ -198,9 +198,9 @@ export class AppComponent { ## validateFormFields -The [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#validateformfields) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed. +The [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#validateformfields) event triggers when form field validation fails, typically before a download or submit action proceeds. Use this event to inspect which required fields are empty and show custom messages or block application logic if needed. -- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs/) +- Event arguments: [ValidateFormFieldsArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs) - name: Event name - documentName: Current document name - formField: The last interacted field’s data (if applicable) @@ -278,9 +278,9 @@ Tip ## zoomChange -The [zoomChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#zoomchange) event triggers when the magnification value changes. +The [zoomChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#zoomchange) event triggers when the magnification value changes. -- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/zoomChangeEventArgs/). +- Event arguments: [ZoomChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/zoomChangeEventArgs). Example: @@ -342,9 +342,9 @@ export class AppComponent { ## buttonFieldClick -The [buttonFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#buttonfieldclick) event triggers when a button form field is clicked. +The [buttonFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#buttonfieldclick) event triggers when a button form field is clicked. -- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/buttonFieldClickEventArgs/). +- Event arguments: [ButtonFieldClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/buttonFieldClickEventArgs). Example: @@ -406,9 +406,9 @@ export class AppComponent { ## commentAdd -The [commentAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#commentadd) event triggers when a comment is added in the comment panel. +The [commentAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#commentadd) event triggers when a comment is added in the comment panel. -- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs/). +- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs). Example: @@ -470,9 +470,9 @@ export class AppComponent { ## commentDelete -The [commentDelete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#commentdelete) event triggers when a comment is deleted in the comment panel. +The [commentDelete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#commentdelete) event triggers when a comment is deleted in the comment panel. -- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs/). +- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs). Example: @@ -534,9 +534,9 @@ export class AppComponent { ## commentEdit -The [commentEdit](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#commentedit) event triggers when a comment is edited in the comment panel. +The [commentEdit](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#commentedit) event triggers when a comment is edited in the comment panel. -- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs/). +- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs). Example: @@ -598,9 +598,9 @@ export class AppComponent { ## commentSelect -The [commentSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#commentselect) event triggers when a comment is selected in the comment panel. +The [commentSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#commentselect) event triggers when a comment is selected in the comment panel. -- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs/). +- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs). Example: @@ -662,9 +662,9 @@ export class AppComponent { ## commentStatusChanged -The [commentStatusChanged](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#commentstatuschanged) event triggers when a comment status is changed in the comment panel. +The [commentStatusChanged](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#commentstatuschanged) event triggers when a comment status is changed in the comment panel. -- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs/). +- Event arguments: [CommentEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/commentEventArgs). Example: @@ -726,7 +726,7 @@ export class AppComponent { ## created -The [created](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#created) event is triggered during the creation of the PDF Viewer component. +The [created](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#created) event is triggered during the creation of the PDF Viewer component. - Event arguments: `void`. @@ -790,9 +790,9 @@ export class AppComponent { ## customContextMenuBeforeOpen -The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenubeforeopen) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected). +The [customContextMenuBeforeOpen](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenubeforeopen) event fires just before the context menu is shown. Use it to show or hide items based on the current state (for example, only show search items when text is selected). -- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs/) +- Event arguments: [CustomContextMenuBeforeOpenEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customContextMenuBeforeOpenEventArgs) - name: Event name - ids: Array of menu item ids that will be shown; remove ids to hide items for this open @@ -869,9 +869,9 @@ export class AppComponent { ## customContextMenuSelect -The [customContextMenuSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenuselect) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id. +The [customContextMenuSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenuselect) event fires when a custom menu item is clicked. Use it to branch logic by the clicked item's id. -- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customContextMenuSelectEventArgs/). +- Event arguments: [CustomContextMenuSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/customContextMenuSelectEventArgs). - name: Event name - id: The id of the clicked menu item @@ -949,9 +949,9 @@ export class AppComponent { ## documentLoad -The [documentLoad](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#documentload) event occurs after a document is successfully loaded and parsed. +The [documentLoad](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#documentload) event occurs after a document is successfully loaded and parsed. -- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/loadEventArgs/). +- Event arguments: [LoadEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/loadEventArgs). Example: @@ -1001,9 +1001,9 @@ export class AppComponent { ## documentLoadFailed -The [documentLoadFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#documentloadfailed) event triggers when loading a document fails. +The [documentLoadFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#documentloadfailed) event triggers when loading a document fails. -- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/loadFailedEventArgs/). +- Event arguments: [LoadFailedEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/loadFailedEventArgs). Example: @@ -1051,9 +1051,9 @@ export class AppComponent { ## documentUnload -The [documentUnload](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#documentunload) event triggers when closing the current document. +The [documentUnload](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#documentunload) event triggers when closing the current document. -- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/unloadEventArgs/). +- Event arguments: [UnloadEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/unloadEventArgs). Example: @@ -1103,9 +1103,9 @@ export class AppComponent { ## downloadEnd -The [downloadEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#downloadend) event triggers after a document download completes. +The [downloadEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#downloadend) event triggers after a document download completes. -- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/downloadEndEventArgs/). +- Event arguments: [DownloadEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/downloadEndEventArgs). Example: @@ -1155,9 +1155,9 @@ export class AppComponent { ## downloadStart -The [downloadStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#downloadstart) event triggers when the download operation is initiated. +The [downloadStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#downloadstart) event triggers when the download operation is initiated. -- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/downloadStartEventArgs/). +- Event arguments: [DownloadStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/downloadStartEventArgs). Example: @@ -1207,9 +1207,9 @@ export class AppComponent { ## exportFailed -The [exportFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#exportfailed) event triggers when exporting annotations fails. +The [exportFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#exportfailed) event triggers when exporting annotations fails. -- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportFailureEventArgs/). +- Event arguments: [ExportFailureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportFailureEventArgs). Example: @@ -1259,9 +1259,9 @@ export class AppComponent { ## exportStart -The [exportStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#exportstart) event triggers when exporting annotations starts. +The [exportStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#exportstart) event triggers when exporting annotations starts. -- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportStartEventArgs/). +- Event arguments: [ExportStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportStartEventArgs). Example: @@ -1311,9 +1311,9 @@ export class AppComponent { ## exportSuccess -The [exportSuccess](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#exportsuccess) event triggers when annotations are exported successfully. +The [exportSuccess](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#exportsuccess) event triggers when annotations are exported successfully. -- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportSuccessEventArgs/). +- Event arguments: [ExportSuccessEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/exportSuccessEventArgs). Example: @@ -1363,9 +1363,9 @@ export class AppComponent { ## extractTextCompleted -The [extractTextCompleted](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#extracttextcompleted) event triggers when text extraction completes. +The [extractTextCompleted](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#extracttextcompleted) event triggers when text extraction completes. -- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/extractTextCompletedEventArgs/). +- Event arguments: [ExtractTextCompletedEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/extractTextCompletedEventArgs). Example: @@ -1427,9 +1427,9 @@ export class AppComponent { ## hyperlinkClick -The [hyperlinkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#hyperlinkclick) event triggers when a hyperlink is clicked. +The [hyperlinkClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#hyperlinkclick) event triggers when a hyperlink is clicked. -- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/hyperlinkClickEventArgs/). +- Event arguments: [HyperlinkClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/hyperlinkClickEventArgs). Example: @@ -1491,7 +1491,7 @@ export class AppComponent { ## hyperlinkMouseOver -The [hyperlinkMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#hyperlinkmouseover) event triggers when hovering over a hyperlink. +The [hyperlinkMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#hyperlinkmouseover) event triggers when hovering over a hyperlink. - Event arguments: HyperlinkMouseOverArgs. @@ -1555,9 +1555,9 @@ export class AppComponent { ## importFailed -The [importFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#importfailed) event triggers when importing annotations fails. +The [importFailed](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#importfailed) event triggers when importing annotations fails. -- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importFailureEventArgs/). +- Event arguments: [ImportFailureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importFailureEventArgs). Example: @@ -1619,9 +1619,9 @@ export class AppComponent { ## importStart -The [importStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#importstart) event triggers when importing annotations starts. +The [importStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#importstart) event triggers when importing annotations starts. -- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importStartEventArgs/). +- Event arguments: [ImportStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importStartEventArgs). Example: @@ -1683,9 +1683,9 @@ export class AppComponent { ## importSuccess -The [importSuccess](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#importsuccess) event triggers when annotations are imported successfully. +The [importSuccess](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#importsuccess) event triggers when annotations are imported successfully. -- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importSuccessEventArgs/). +- Event arguments: [ImportSuccessEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/importSuccessEventArgs). Example: @@ -1747,9 +1747,9 @@ export class AppComponent { ## keyboardCustomCommands -The [keyboardCustomCommands](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#keyboardcustomcommands) event triggers when customized keyboard command keys are pressed. +The [keyboardCustomCommands](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#keyboardcustomcommands) event triggers when customized keyboard command keys are pressed. -- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs/). +- Event arguments: [KeyboardCustomCommandsEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/keyboardCustomCommandsEventArgs). - name: Event name - keyboardCommand: The command metadata raised by Command Manager @@ -1825,7 +1825,7 @@ export class AppComponent { ## moveSignature -The [moveSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#movesignature) event triggers when a signature is moved across the page. +The [moveSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#movesignature) event triggers when a signature is moved across the page. - Event arguments: `MoveSignatureEventArgs`. @@ -1889,9 +1889,9 @@ export class AppComponent { ## pageChange -The [pageChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pagechange) event triggers when the current page number changes (for example, via scrolling or navigation controls). +The [pageChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pagechange) event triggers when the current page number changes (for example, via scrolling or navigation controls). -- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageChangeEventArgs/). +- Event arguments: [PageChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageChangeEventArgs). Example: @@ -1953,9 +1953,9 @@ export class AppComponent { ## pageClick -The [pageClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pageclick) event triggers when a mouse click occurs on a page. +The [pageClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pageclick) event triggers when a mouse click occurs on a page. -- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageClickEventArgs/). +- Event arguments: [PageClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageClickEventArgs). Example: @@ -2017,7 +2017,7 @@ export class AppComponent { ## pageMouseover -The [pageMouseover](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pagemouseover) event triggers when the mouse moves over a page. +The [pageMouseover](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pagemouseover) event triggers when the mouse moves over a page. - Event arguments: `PageMouseoverEventArgs`. @@ -2081,7 +2081,7 @@ export class AppComponent { ## pageOrganizerSaveAs -The [pageOrganizerSaveAs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pageorganizersaveas) event triggers when a Save As action is performed in the page organizer. +The [pageOrganizerSaveAs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pageorganizersaveas) event triggers when a Save As action is performed in the page organizer. - Event arguments: `PageOrganizerSaveAsEventArgs`. @@ -2145,9 +2145,9 @@ export class AppComponent { ## pageRenderComplete -The [pageRenderComplete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pagerendercomplete) event triggers after a page finishes rendering. +The [pageRenderComplete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pagerendercomplete) event triggers after a page finishes rendering. -- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageRenderCompleteEventArgs/). +- Event arguments: [PageRenderCompleteEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageRenderCompleteEventArgs). Example: @@ -2209,9 +2209,9 @@ export class AppComponent { ## pageRenderInitiate -The [pageRenderInitiate](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#pagerenderinitiate) event triggers when page rendering begins. +The [pageRenderInitiate](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#pagerenderinitiate) event triggers when page rendering begins. -- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageRenderInitiateEventArgs/). +- Event arguments: [PageRenderInitiateEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/pageRenderInitiateEventArgs). Example: @@ -2273,9 +2273,9 @@ export class AppComponent { ## printEnd -The [printEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#printend) event triggers when a print action completes. +The [printEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#printend) event triggers when a print action completes. -- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/printEndEventArgs/). +- Event arguments: [PrintEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/printEndEventArgs). Example: @@ -2337,9 +2337,9 @@ export class AppComponent { ## printStart -The [printStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#printstart) event triggers when a print action is initiated. +The [printStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#printstart) event triggers when a print action is initiated. -- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/printStartEventArgs/). +- Event arguments: [PrintStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/printStartEventArgs). Example: @@ -2401,9 +2401,9 @@ export class AppComponent { ## removeSignature -The [removeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#removesignature) event triggers when a signature is removed. +The [removeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#removesignature) event triggers when a signature is removed. -- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/removeSignatureEventArgs/). +- Event arguments: [RemoveSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/removeSignatureEventArgs). Example: @@ -2465,9 +2465,9 @@ export class AppComponent { ## resizeSignature -The [resizeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#resizesignature) event triggers when a signature is resized. +The [resizeSignature](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#resizesignature) event triggers when a signature is resized. -- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/resizeSignatureEventArgs/). +- Event arguments: [ResizeSignatureEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/resizeSignatureEventArgs). Example: @@ -2529,7 +2529,7 @@ export class AppComponent { ## resourcesLoaded -The [resourcesLoaded](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#resourcesloaded) event triggers after the viewer's required resources are loaded. +The [resourcesLoaded](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#resourcesloaded) event triggers after the viewer's required resources are loaded. - Event arguments: `void`. @@ -2593,9 +2593,9 @@ export class AppComponent { ## signaturePropertiesChange -The [signaturePropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signaturepropertieschange) event triggers when signature properties change. +The [signaturePropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signaturepropertieschange) event triggers when signature properties change. -- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs/). +- Event arguments: [SignaturePropertiesChangeEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signaturePropertiesChangeEventArgs). Example: @@ -2657,9 +2657,9 @@ export class AppComponent { ## signatureSelect -The [signatureSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signatureselect) event triggers when a signature is selected. +The [signatureSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signatureselect) event triggers when a signature is selected. -- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureSelectEventArgs/). +- Event arguments: [SignatureSelectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureSelectEventArgs). Example: @@ -2721,9 +2721,9 @@ export class AppComponent { ## signatureUnselect -The [signatureUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#signatureunselect) event triggers when a signature is unselected. +The [signatureUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#signatureunselect) event triggers when a signature is unselected. -- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureUnselectEventArgs/). +- Event arguments: [SignatureUnselectEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/signatureUnselectEventArgs). Example: @@ -2785,9 +2785,9 @@ export class AppComponent { ## textSearchComplete -The [textSearchComplete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#textsearchcomplete) event triggers when a text search completes. +The [textSearchComplete](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#textsearchcomplete) event triggers when a text search completes. -- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchCompleteEventArgs/). +- Event arguments: [TextSearchCompleteEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchCompleteEventArgs). Example: @@ -2849,9 +2849,9 @@ export class AppComponent { ## textSearchHighlight -The [textSearchHighlight](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#textsearchhighlight) event triggers when searched text is highlighted. +The [textSearchHighlight](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#textsearchhighlight) event triggers when searched text is highlighted. -- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchHighlightEventArgs/). +- Event arguments: [TextSearchHighlightEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchHighlightEventArgs). Example: @@ -2913,9 +2913,9 @@ export class AppComponent { ## textSearchStart -The [textSearchStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#textsearchstart) event triggers when a text search is initiated. +The [textSearchStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#textsearchstart) event triggers when a text search is initiated. -- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchStartEventArgs/). +- Event arguments: [TextSearchStartEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSearchStartEventArgs). Example: @@ -2977,9 +2977,9 @@ export class AppComponent { ## textSelectionEnd -The [textSelectionEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#textselectionend) event triggers when text selection is complete. +The [textSelectionEnd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#textselectionend) event triggers when text selection is complete. -- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSelectionEndEventArgs/). +- Event arguments: [TextSelectionEndEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/textSelectionEndEventArgs). Example: @@ -3041,7 +3041,7 @@ export class AppComponent { ## textSelectionStart -The [textSelectionStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#textselectionstart) event triggers when text selection is initiated. +The [textSelectionStart](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#textselectionstart) event triggers when text selection is initiated. - Event arguments: `TextSelectionStartEventArgs`. @@ -3105,9 +3105,9 @@ export class AppComponent { ## thumbnailClick -The [thumbnailClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#thumbnailclick) event triggers when a thumbnail is clicked. +The [thumbnailClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#thumbnailclick) event triggers when a thumbnail is clicked. -- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/thumbnailClickEventArgs/). +- Event arguments: [ThumbnailClickEventArgs](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/thumbnailClickEventArgs). Example: diff --git a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md index 9710babd2..6db092f4d 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/create-programmatically.md @@ -26,7 +26,7 @@ The PDF Viewer component provides options to add, edit, and delete form fields. Use the addFormField method to add form fields programmatically. Pass the form field type and the corresponding property object as parameters. The following example demonstrates adding multiple fields on document load. {% tabs %} -{% highlight ts tabtitle="app.ts" %} +{% highlight ts tabtitle="app.component.ts" %} import { ViewChild } from '@angular/core'; import { Component, OnInit } from '@angular/core'; import {PdfViewerComponent, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, @@ -101,7 +101,7 @@ Within the template, configure the PDF Viewer by adding the `[serviceUrl]='servi Use the updateFormField method to modify a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it as the first parameter. Provide the properties to update as the second parameter. The following example updates the background color of a Textbox field. {% tabs %} -{% highlight ts tabtitle="app.ts" %} +{% highlight ts tabtitle="app.component.ts" %} import { ViewChild } from '@angular/core'; import { Component, OnInit } from '@angular/core'; import {PdfViewerComponent, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, @@ -177,7 +177,7 @@ Within the template, configure the PDF Viewer by adding the `[serviceUrl]='servi Use the deleteFormField method to remove a form field programmatically. Retrieve the target field from the formFieldCollections property (by object or ID) and pass it to deleteFormField. The following example deletes the first form field. {% tabs %} -{% highlight ts tabtitle="app.ts" %} +{% highlight ts tabtitle="app.component.ts" %} import { ViewChild } from '@angular/core'; import { Component, OnInit } from '@angular/core'; import {PdfViewerComponent, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, diff --git a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/form-field-events.md b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/form-field-events.md index e3ea6036f..6b7b22133 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/form-designer/form-field-events.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/form-designer/form-field-events.md @@ -14,27 +14,27 @@ The PDF Viewer control provides the support to different Form Field events. The | Form Field events | Description | |---|---| -| [formFieldAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldAddArgs/) | Event trigger when a form field is added.| -| [formFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldClickArgs/) | Events trigger when the form field is selected.| -| [formFieldDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldDoubleClickArgs/) | Events trigger when the form field is double-clicked.| -| [formFieldFocusOut](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldFocusOutEventArgs/) | Events trigger when focus out from the form fields.| -| [formFieldMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseLeaveArgs/) | Events trigger when the mouse cursor leaves the form field.| -| [formFieldMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseoverArgs/) | Events trigger when the mouse cursor is over a form field.| -| [formFieldMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMoveArgs/) | Events trigger when a form field is moved.| -| [formFieldPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldPropertiesChangeArgs/) | Events trigger when a property of form field is changed.| -| [formFieldRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldRemoveArgs/) | Events trigger when a form field is removed.| -| [formFieldResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldResizeArgs/) | Events trigger when a form field is resized.| -| [formFieldSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldSelectArgs/) | Events trigger when a form field is selected.| -| [formFieldUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldUnselectArgs/) | Events trigger when a form field is unselected.| -| [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs/) | Events trigger when validation is failed.| +| [formFieldAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldAddArgs) | Event trigger when a form field is added.| +| [formFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldClickArgs) | Events trigger when the form field is selected.| +| [formFieldDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldDoubleClickArgs) | Events trigger when the form field is double-clicked.| +| [formFieldFocusOut](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldFocusOutEventArgs) | Events trigger when focus out from the form fields.| +| [formFieldMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseLeaveArgs) | Events trigger when the mouse cursor leaves the form field.| +| [formFieldMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseoverArgs) | Events trigger when the mouse cursor is over a form field.| +| [formFieldMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMoveArgs) | Events trigger when a form field is moved.| +| [formFieldPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldPropertiesChangeArgs) | Events trigger when a property of form field is changed.| +| [formFieldRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldRemoveArgs) | Events trigger when a form field is removed.| +| [formFieldResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldResizeArgs) | Events trigger when a form field is resized.| +| [formFieldSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldSelectArgs) | Events trigger when a form field is selected.| +| [formFieldUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldUnselectArgs) | Events trigger when a form field is unselected.| +| [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs) | Events trigger when validation is failed.| ## formFieldAdd event -The [formFieldAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldAddArgs/) event is triggered when a new form field is added, either programmatically or through user interaction. The event arguments provide the necessary information about the form field addition. +The [formFieldAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldAddArgs) event is triggered when a new form field is added, either programmatically or through user interaction. The event arguments provide the necessary information about the form field addition. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldaddevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldaddevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -44,11 +44,11 @@ The [formFieldAdd](https://ej2.syncfusion.com/angular/documentation/api/pdfviewe ## formFieldClick event -The [formFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldClickArgs/) event is triggered when a form field is clicked. The event arguments provide the necessary information about the form field click event. +The [formFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldClickArgs) event is triggered when a form field is clicked. The event arguments provide the necessary information about the form field click event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldclickevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldclickevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -58,11 +58,11 @@ The [formFieldClick](https://ej2.syncfusion.com/angular/documentation/api/pdfvie ## formFieldDoubleClick event -The [formFieldDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldDoubleClickArgs/) event is triggered when a form field is double-clicked. The event arguments provide the necessary information about the form field double-click event. +The [formFieldDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldDoubleClickArgs) event is triggered when a form field is double-clicked. The event arguments provide the necessary information about the form field double-click event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfielddoubleclickevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfielddoubleclickevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -72,11 +72,11 @@ The [formFieldDoubleClick](https://ej2.syncfusion.com/angular/documentation/api/ ## formFieldFocusOut event -The [formFieldFocusOut](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldFocusOutEventArgs/) event is triggered when a form field loses focus. The event arguments provide the necessary information about the form field focus out event. +The [formFieldFocusOut](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldFocusOutEventArgs) event is triggered when a form field loses focus. The event arguments provide the necessary information about the form field focus out event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldfocusoutevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldfocusoutevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -86,11 +86,11 @@ The [formFieldFocusOut](https://ej2.syncfusion.com/angular/documentation/api/pdf ## formFieldMouseLeave event -The [formFieldMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseLeaveArgs/) event is triggered when the mouse leaves a form field. The event arguments provide the necessary information about the form field mouse leave event. +The [formFieldMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseLeaveArgs) event is triggered when the mouse leaves a form field. The event arguments provide the necessary information about the form field mouse leave event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldmouseleaveevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldmouseleaveevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -100,11 +100,11 @@ The [formFieldMouseLeave](https://ej2.syncfusion.com/angular/documentation/api/p ## formFieldMouseOver event -The [formFieldMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseoverArgs/) event is triggered when the mouse hovers over a form field. The event arguments provide the necessary information about the form field mouse over event. +The [formFieldMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMouseoverArgs) event is triggered when the mouse hovers over a form field. The event arguments provide the necessary information about the form field mouse over event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldmouseoverevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldmouseoverevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -114,11 +114,11 @@ The [formFieldMouseOver](https://ej2.syncfusion.com/angular/documentation/api/pd ## formFieldMove event -The [formFieldMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMoveArgs/) event is triggered when the mouse moves inside a form field. The event arguments provide the necessary information about the form field mouse move event. +The [formFieldMove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldMoveArgs) event is triggered when the mouse moves inside a form field. The event arguments provide the necessary information about the form field mouse move event. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldmousemoveevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldmousemoveevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -128,11 +128,11 @@ The [formFieldMove](https://ej2.syncfusion.com/angular/documentation/api/pdfview ## formFieldPropertiesChange event -The [formFieldPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldPropertiesChangeArgs/) event is triggered when the properties of a form field are changed. The event arguments provide the necessary information about which property of the form field has been changed. +The [formFieldPropertiesChange](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldPropertiesChangeArgs) event is triggered when the properties of a form field are changed. The event arguments provide the necessary information about which property of the form field has been changed. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldpropertieschangeevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldpropertieschangeevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -142,11 +142,11 @@ The [formFieldPropertiesChange](https://ej2.syncfusion.com/angular/documentation ## formFieldRemove event -The [formFieldRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldRemoveArgs/) event is triggered when a form field is removed from the PDF. The event arguments provide the necessary information about which form field has been removed. +The [formFieldRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldRemoveArgs) event is triggered when a form field is removed from the PDF. The event arguments provide the necessary information about which form field has been removed. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldremoveevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldremoveevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -156,11 +156,11 @@ The [formFieldRemove](https://ej2.syncfusion.com/angular/documentation/api/pdfvi ## formFieldResize event -The [formFieldResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldResizeArgs/) events are triggered when a form field in a PDF is resized. These events provide the relevant details about the specific form field that has been resized. +The [formFieldResize](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldResizeArgs) events are triggered when a form field in a PDF is resized. These events provide the relevant details about the specific form field that has been resized. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldresizeevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldresizeevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -170,11 +170,11 @@ The [formFieldResize](https://ej2.syncfusion.com/angular/documentation/api/pdfvi ## formFieldSelect event -The [formFieldSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldSelectArgs/) events are triggered when a form field in a PDF is selected. These events provide the necessary details about the specific form field that has been selected. +The [formFieldSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldSelectArgs) events are triggered when a form field in a PDF is selected. These events provide the necessary details about the specific form field that has been selected. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldselectevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldselectevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -184,11 +184,11 @@ The [formFieldSelect](https://ej2.syncfusion.com/angular/documentation/api/pdfvi ## formFieldUnselect event -The [formFieldUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldUnselectArgs/) events are triggered when a form field in a PDF is unselected. These events provide the necessary details about the specific form field that has been unselected. +The [formFieldUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/formFieldUnselectArgs) events are triggered when a form field in a PDF is unselected. These events provide the necessary details about the specific form field that has been unselected. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldunselectevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldunselectevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} @@ -198,11 +198,11 @@ The [formFieldUnselect](https://ej2.syncfusion.com/angular/documentation/api/pdf ## validateFormFields event -The [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs/) events are triggered when a required form field is left unfilled before downloading the PDF. These events provide the necessary information for validating which form fields are incomplete. +The [validateFormFields](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/validateFormFieldsArgs) events are triggered when a required form field is left unfilled before downloading the PDF. These events provide the necessary information for validating which form fields are incomplete. {% tabs %} -{% highlight ts tabtitle="app.ts" %} -{% include code-snippet/pdfviewer/angular/formfieldvalidationevent-cs2/src/app/app.ts %} +{% highlight ts tabtitle="app.component.ts" %} +{% include code-snippet/pdfviewer/angular/formfieldvalidationevent-cs2/src/app/app.component.ts %} {% endhighlight %} {% highlight ts tabtitle="main.ts" %} diff --git a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md index 490ebfdb9..25dcf7878 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/how-to/custom-context-menu.md @@ -8,10 +8,10 @@ documentation: ug domainurl: ##DomainURL## --- -# Customize the context menu in PDF Viewer +# Customize the context menu in Angular PDF Viewer PDF Viewer allows you to add custom option in context menu. It can be achieved by using the `addCustomMenu()` method and custom action is defined using the `customContextMenuSelect()`method. -PDF Viewer supports adding custom options to the context menu using the `addCustomMenu()`(https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#addcustommenu)method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenuselect) method. +PDF Viewer supports adding custom options to the context menu using the `addCustomMenu()`(https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#addcustommenu)method. Define actions for custom items with the [customContextMenuSelect()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenuselect) method. ### Add a custom option @@ -102,7 +102,7 @@ Toggle the display of the default context menu. When the addCustomMenu parameter #### show or hide custom items before opening -Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/#customcontextmenubeforeopen) to hide or show custom options dynamically. +Use [customContextMenuBeforeOpen()](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#customcontextmenubeforeopen) to hide or show custom options dynamically. ```js export class CustomContextMenuComponent implements OnInit { diff --git a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md index 1b0d9faf3..7d149d756 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-amazon-s3.md @@ -1,6 +1,6 @@ --- layout: post -title: Open PDF files from AWS S3 in Angular PDF Viewer Component | Syncfusion +title: Open PDF files from AWS S3 in Angular PDF Viewer | Syncfusion description: Learn here all about how to Open PDF files from AWS S3 in Syncfusion Angular PDF Viewer component of Syncfusion Essential JS 2 and more. platform: document-processing control: Open PDF files from AWS S3 @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Open PDF from AWS S3 +# Open PDF from AWS S3 in Angular The Angular PDF Viewer component supports loading PDF files from AWS S3 using either the standalone or the server-backed PDF Viewer. The following steps demonstrate both approaches. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md index da4a70307..c896c9f3e 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/open-pdf-file/from-azure-blob-storage.md @@ -1,6 +1,6 @@ --- layout: post -title: Open PDF from Azure Blob Storage into PDF Viewer Component | Syncfusion +title: Open PDF from Azure Blob Storage into PDF Viewer | Syncfusion description: Learn here all about how to Open PDF files from Azure Blob Storage in Syncfusion Angular PDF Viewer component of Syncfusion Essential JS 2 and more. platform: document-processing control: Open PDF files from Azure Blob Storage @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Open PDF from Azure Blob Storage +# Open PDF from Azure Blob Storage in Angular The Angular PDF Viewer component supports loading PDF files from Azure Blob Storage using either the standalone or the server-backed PDF Viewer. The following steps demonstrate both approaches. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/overview.md b/Document-Processing/PDF/PDF-Viewer/angular/overview.md index 58480e41f..8903d81a4 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/overview.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/overview.md @@ -97,7 +97,7 @@ export class AppComponent implements OnInit { *[`View PDF Document`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/getting-started) - Open and display both the normal and the protected PDF files with AES and RC4 encryption. *[`Annotations`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/annotation/text-markup-annotation) - Annotate with text markup, shapes, stamps, ink, and sticky notes.Form filling and form designing can be done. -*[`Form Fields`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/form-designer/create-programmatically) - Form filling and form designing can be done. +*[`Form Fields`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/forms/overview) - Form filling and form designing can be done. *[`Signature`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/annotation/signature-annotation) - Hand-written and digital signatures are allowed. *[`Toolbar`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/toolbar) - Built-in-toolbar and custom toolbars to perform user interaction of PDF Viewer functionalities. *[`Navigation`](https://help.syncfusion.com/document-processing/pdf/pdf-viewer/angular/navigation) - Easy navigation with the help of bookmarks, thumbnails, hyperlinks, and table of contents. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md index c730de5e0..693b2bd15 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-amazon-s3.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save PDF files to AWS S3 +# Save PDF files to AWS S3 in Angular The TypeScript PDF Viewer component supports saving PDF files to AWS S3 using either the standalone or server-backed configuration. The following steps demonstrate both approaches. diff --git a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md index 77debff3b..7705040be 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/save-pdf-file/to-azure-blob-storage.md @@ -8,7 +8,7 @@ documentation: ug domainurl: ##DomainURL## --- -# Save PDF files to Azure Blob Storage +# Save PDF files to Azure Blob Storage in Angular The TypeScript PDF Viewer component supports saving PDF files to Azure Blob Storage using either the standalone or server-backed configuration. The following steps demonstrate both approaches. @@ -142,7 +142,7 @@ public PdfViewerController(IConfiguration configuration, ILogger jsonObject) **Step 4:** Set the PDF Viewer Properties in Angular PDF viewer component -Modify the [serviceUrl](https://ej2.syncfusion.com/documentation/api/pdfviewer/#serviceurl) property of the PDF Viewer component with the accurate URL of the web service, replacing `https://localhost:44396/pdfviewer` with the actual server URL. Set the `documentPath` property to the desired PDF file name to load from Azure Blob Storage, and ensure that the document exists in the target container. +Modify the [serviceUrl](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer#serviceurl) property of the PDF Viewer component with the accurate URL of the web service, replacing `https://localhost:44396/pdfviewer` with the actual server URL. Set the `documentPath` property to the desired PDF file name to load from Azure Blob Storage, and ensure that the document exists in the target container. ```typescript import { Component, OnInit } from '@angular/core'; diff --git a/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md b/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md index 88ccf1dc6..3b89dbb38 100644 --- a/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md +++ b/Document-Processing/PDF/PDF-Viewer/angular/toolbar.md @@ -266,7 +266,7 @@ PDF Viewer allows you to customize(add, show, hide, enable, and disable) existin * Show, Hide - Existing items can be shown or hidden using the [`ToolbarSettings`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarSettings) property. Pre-defined toolbar items are available with [`ToolbarItem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbarItem). -* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbar/#enabletoolbaritem) +* Enable, Disable - Toolbar items can be enabled or disable using [`enabletoolbaritem`](https://ej2.syncfusion.com/angular/documentation/api/pdfviewer/toolbar#enabletoolbaritem) {% tabs %} {% highlight html tabtitle="Standalone" %}