-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20 from SyncfusionExamples/EJ2-834567-getCoordinates
834567: How to Add Rectangle Annotations Using Search Text Bounds
- Loading branch information
Showing
13 changed files
with
341 additions
and
0 deletions.
There are no files selected for viewing
2 changes: 2 additions & 0 deletions
2
How to/Add Rectangle Annotations Using Search Text Bounds/.gitignore
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
dist/ | ||
node_modules/ |
75 changes: 75 additions & 0 deletions
75
How to/Add Rectangle Annotations Using Search Text Bounds/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
# Essential JS 2 QuickStart | ||
|
||
This project is a skeleton application used to create [Essential JS 2](https://www.syncfusion.com/products/essential-js2) web application. | ||
|
||
>This application uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires node `v14.15.0` or higher. | ||
## Getting Started | ||
|
||
To get started you need to clone the `ej2-quickstart` repository and navigate to `ej2-quickstart` location. | ||
|
||
``` | ||
git clone https://github.com/syncfusion/ej2-quickstart.git quickstart | ||
cd quickstart | ||
``` | ||
|
||
## Installing | ||
|
||
We can get all the Essential JS 2 components in a single npm package [`ej2`](https://www.npmjs.com/package/@syncfusion/ej2). | ||
|
||
We already configure the required packages in the `package.json` file. | ||
|
||
You can run the below command to install all dependent packages related to this seed project. | ||
|
||
``` | ||
npm install | ||
``` | ||
|
||
## Testing | ||
|
||
This application is preconfigured with End-to-End testing and the test case is written in Jasmine. | ||
|
||
We run the test scripts with [Protractor](http://www.protractortest.org/#/) end-to-end test runner. The test case file can be found in the `e2e` folder. | ||
|
||
Protractor can interact with our web application and verify the test scripts. | ||
|
||
We have to install WebDriver and also need to ensure it is updated. Open a separate terminal and run the below npm script. | ||
|
||
``` | ||
npm run update-webdriver | ||
``` | ||
|
||
Open another terminal and run the below npm script. It will start web server to serve our application. | ||
|
||
``` | ||
npm run serve | ||
``` | ||
|
||
Once the web server is up and running, we can run the end-to-end tests using the below npm script | ||
|
||
``` | ||
npm run test | ||
``` | ||
|
||
> **Note:** Since Protractor is using the Selenium Standalone Server, the Java Development Kit (JDK) need to be installed in your local machine. | ||
If JDK is not installed in your local machine, you can download it from [here](http://www.oracle.com/technetwork/java/javase/downloads/index.html). | ||
|
||
## Running | ||
|
||
The application is configured with [webpack-dev-server](https://webpack.js.org/configuration/dev-server/#devserver), so it will serve the web application in your default browser. | ||
|
||
We have used [Webpack](https://github.com/webpack/webpack) for module loading. | ||
|
||
You can use the below npm script to run the web application. | ||
|
||
``` | ||
npm run start | ||
``` | ||
|
||
## Resources | ||
|
||
You can also refer the below resources to know more details about Essential JS 2 components. | ||
|
||
* [Pure JS Demos](http://ej2.syncfusion.com/demos/) | ||
* [Pure JS Documentation](http://ej2.syncfusion.com/documentation/) |
Empty file.
21 changes: 21 additions & 0 deletions
21
How to/Add Rectangle Annotations Using Search Text Bounds/e2e/protractor.conf.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
exports.config = { | ||
|
||
allScriptsTimeout: 11000, | ||
|
||
capabilities: { | ||
'browserName': 'chrome' | ||
}, | ||
|
||
framework: 'jasmine', | ||
|
||
jasmineNodeOpts: { | ||
defaultTimeoutInterval: 10000 | ||
}, | ||
directConnect: true, | ||
|
||
onPrepare: function() { | ||
browser.waitForAngularEnabled(false); | ||
}, | ||
|
||
specs: ['./*.spec.js'] | ||
}; |
62 changes: 62 additions & 0 deletions
62
How to/Add Rectangle Annotations Using Search Text Bounds/gulpfile.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
'use strict'; | ||
|
||
var gulp = require('gulp'); | ||
|
||
/** | ||
* Compile TypeScript to JS | ||
*/ | ||
gulp.task('compile', function (done) { | ||
var webpack = require('webpack'); | ||
var webpackStream = require('webpack-stream'); | ||
gulp.src(['./src/app/app.ts']).pipe(webpackStream({ | ||
config: require('./webpack.config.js') | ||
}, webpack)) | ||
.pipe(gulp.dest('./dist')) | ||
.on('end', function () { | ||
done(); | ||
}); | ||
}); | ||
|
||
/** | ||
* Testing spec files | ||
*/ | ||
var protractor = require('gulp-protractor').protractor; | ||
var webdriver_standalone = require('gulp-protractor').webdriver_standalone; | ||
var webdriver_update = require('gulp-protractor').webdriver_update_specific; | ||
|
||
gulp.task('e2e-serve', webdriver_standalone); | ||
|
||
gulp.task('e2e-webdriver-update', webdriver_update({ | ||
webdriverManagerArgs: ['--ie', '--edge'] | ||
})); | ||
|
||
gulp.task('e2e-test', gulp.series('compile', function (done) { | ||
var browserSync = require('browser-sync'); | ||
var bs = browserSync.create('Essential JS 2'); | ||
var options = { | ||
server: { | ||
baseDir: [ | ||
'./dist/', | ||
], | ||
directory: true | ||
}, | ||
ui: false, | ||
open: false, | ||
notify: false | ||
}; | ||
bs.init(options, function () { | ||
gulp.src(['./spec/**/*.spec.js']) | ||
.pipe(protractor({ | ||
configFile: 'e2e/protractor.conf.js' | ||
})) | ||
.on('error', function (e) { | ||
console.error('Error: ' + e.message); | ||
done(); | ||
process.exit(1); | ||
}) | ||
.on('end', function () { | ||
done(); | ||
process.exit(0); | ||
}); | ||
}); | ||
})); |
10 changes: 10 additions & 0 deletions
10
How to/Add Rectangle Annotations Using Search Text Bounds/license
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Essential JS 2 library is available under the Syncfusion Essential Studio program, and can be licensed either under the Syncfusion Community License Program or the Syncfusion commercial license. | ||
|
||
To be qualified for the Syncfusion Community License Program you must have a gross revenue of less than one (1) million U.S. dollars ($1,000,000.00 USD) per year and have less than five (5) developers in your organization, and agree to be bound by Syncfusion’s terms and conditions. | ||
|
||
Customers who do not qualify for the community license can contact [email protected] for commercial licensing options. | ||
|
||
Under no circumstances can you use this product without (1) either a Community License or a commercial license and (2) without agreeing and abiding by Syncfusion’s license containing all terms and conditions. | ||
|
||
The Syncfusion license that contains the terms and conditions can be found at | ||
https://www.syncfusion.com/content/downloads/syncfusion_license.pdf |
38 changes: 38 additions & 0 deletions
38
How to/Add Rectangle Annotations Using Search Text Bounds/package.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
{ | ||
"name": "ej2-quickstart", | ||
"version": "0.0.1", | ||
"description": "Essential JS 2 typescript quick start application", | ||
"author": "Syncfusion Inc.", | ||
"license": "SEE LICENSE IN license", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/syncfusion/ej2-quickstart.git" | ||
}, | ||
"scripts": { | ||
"start": "webpack-dev-server --mode development", | ||
"build": "webpack --mode production", | ||
"serve": "gulp e2e-serve", | ||
"test": "gulp e2e-test", | ||
"update-webdriver": "gulp e2e-webdriver-update" | ||
}, | ||
"devDependencies": { | ||
"ajv": "^8.11.2", | ||
"browser-sync": "^2.18.12", | ||
"gulp": "*", | ||
"typescript": "*", | ||
"gulp-protractor": "*", | ||
"gulp-typescript": "*", | ||
"jasmine": "^2.6.0", | ||
"css-loader": "^6.7.2", | ||
"ts-loader": "^9.4.1", | ||
"mini-css-extract-plugin": "^2.7.0", | ||
"html-webpack-plugin": "^5.5.0", | ||
"webpack": "^5.75.0", | ||
"webpack-cli": "^5.0.0", | ||
"webpack-dev-server": "^4.11.1", | ||
"webpack-stream": "^7.0.0" | ||
}, | ||
"dependencies": { | ||
"@syncfusion/ej2": "*" | ||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
How to/Add Rectangle Annotations Using Search Text Bounds/src/app/app.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import { pdf } from '@syncfusion/ej2'; | ||
import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, TextSearchHighlightEventArgs, RectangleBounds, RectangleBoundsModel, RectangleSettings } from '@syncfusion/ej2-pdfviewer'; | ||
|
||
// Inject required modules | ||
PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields); | ||
|
||
const pdfviewer: PdfViewer = new PdfViewer({ | ||
documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', | ||
resourceUrl:'https://cdn.syncfusion.com/ej2/28.1.33/dist/ej2-pdfviewer-lib' | ||
}); | ||
|
||
pdfviewer.appendTo('#PdfViewer'); | ||
|
||
// Highlight event handler for text search, which adds a rectangle annotation where the text is found | ||
pdfviewer.textSearchHighlight = function(args: TextSearchHighlightEventArgs): void { | ||
console.log(args); | ||
const pageNumber: number = args.pageNumber; | ||
const bounds: RectangleBoundsModel = args.bounds; | ||
pdfviewer.annotation.addAnnotation('Rectangle', { | ||
offset: { x: bounds.left, y: bounds.top }, | ||
pageNumber: pageNumber, | ||
width: bounds.width, | ||
height: bounds.height, | ||
} as RectangleSettings); | ||
}; | ||
|
||
// Add event listener to "searchText" button to trigger a search for the term 'PDF' | ||
const searchTextButton = document.getElementById('searchText'); | ||
if (searchTextButton) { | ||
searchTextButton.addEventListener('click', function() { | ||
pdfviewer.textSearchModule.searchText('PDF', false); | ||
}); | ||
} | ||
|
||
// Add event listener to "searchNext" button to navigate to the next search result | ||
const searchNextButton = document.getElementById('searchNext'); | ||
if (searchNextButton) { | ||
searchNextButton.addEventListener('click', function() { | ||
pdfviewer.textSearch.searchNext(); | ||
}); | ||
} | ||
|
||
// Add event listener to "searchCancel" button to cancel the current text search operation | ||
const searchCancelButton = document.getElementById('searchCancel'); | ||
if (searchCancelButton) { | ||
searchCancelButton.addEventListener('click', function() { | ||
pdfviewer.textSearch.cancelTextSearch(); | ||
}); | ||
} |
22 changes: 22 additions & 0 deletions
22
How to/Add Rectangle Annotations Using Search Text Bounds/src/index.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
|
||
<head> | ||
<title>Essential JS 2</title> | ||
<meta charset="utf-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" /> | ||
<meta name="description" content="Essential JS 2" /> | ||
<meta name="author" content="Syncfusion" /> | ||
<link rel="shortcut icon" href="resources/favicon.ico" /> | ||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> | ||
</head> | ||
|
||
<body> | ||
<button id="searchText">Search Text</button> | ||
<button id="searchNext">Search Next</button> | ||
<button id="searchCancel">Cancel Search</button> | ||
<!--Element which will render as PDF Viewer --> | ||
<div id="PdfViewer"></div> | ||
</body> | ||
|
||
</html> |
Binary file added
BIN
+6.42 KB
How to/Add Rectangle Annotations Using Search Text Bounds/src/resources/favicon.ico
Binary file not shown.
9 changes: 9 additions & 0 deletions
9
How to/Add Rectangle Annotations Using Search Text Bounds/src/styles/styles.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
@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"; |
12 changes: 12 additions & 0 deletions
12
How to/Add Rectangle Annotations Using Search Text Bounds/tsconfig.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
"compilerOptions": { | ||
"target": "es2016", | ||
"module": "ES6", | ||
"sourceMap": true, | ||
"esModuleInterop": true, | ||
"forceConsistentCasingInFileNames": true, | ||
"strict": true, | ||
"skipLibCheck": true, | ||
"moduleResolution": "node" | ||
} | ||
} |
41 changes: 41 additions & 0 deletions
41
How to/Add Rectangle Annotations Using Search Text Bounds/webpack.config.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
const HtmlWebpackPlugin = require("html-webpack-plugin"); | ||
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); | ||
const path = require('path'); | ||
|
||
module.exports = { | ||
entry: ['./src/app/app.ts', './src/styles/styles.css'], | ||
module: { | ||
rules: [ | ||
{ | ||
test: /\.ts?$/, | ||
use: 'ts-loader', | ||
exclude: /node_modules/, | ||
}, | ||
{ | ||
test: /\.css$/, | ||
use: [ MiniCssExtractPlugin.loader, "css-loader" ] | ||
}, | ||
], | ||
}, | ||
resolve: { | ||
extensions: ['.ts', '.js'], | ||
}, | ||
output: { | ||
filename: 'bundle.js', | ||
path: path.resolve(__dirname, 'dist'), | ||
}, | ||
plugins: [ | ||
new HtmlWebpackPlugin({ | ||
template: 'src/index.html' | ||
}), | ||
new MiniCssExtractPlugin({ | ||
filename: "bundle.css" | ||
}) | ||
], | ||
devServer: { | ||
static: path.join(__dirname, "dist"), | ||
compress: true, | ||
port: 4000, | ||
open: true | ||
}, | ||
}; |