Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions Redaction/Add Redaction Annotation Programmatically/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.DS_Store
node_modules
/dist


# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
24 changes: 24 additions & 0 deletions Redaction/Add Redaction Annotation Programmatically/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# textsearch

## Project setup
```
npm install
```

### Compiles and hot-reloads for development
```
npm run serve
```

### Compiles and minifies for production
```
npm run build
```

### Lints and fixes files
```
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
19 changes: 19 additions & 0 deletions Redaction/Add Redaction Annotation Programmatically/jsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}
50 changes: 50 additions & 0 deletions Redaction/Add Redaction Annotation Programmatically/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"name": "textsearch",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@syncfusion/ej2-vue-pdfviewer": "*",
"@syncfusion/ej2-dropdowns": "*",
"core-js": "^3.8.3",
"vue": "^3.2.13",
"buffer": "^6.0.3",
"crypto-browserify": "^3.12.0",
"stream-browserify": "^3.0.0",
"util": "^0.12.5",
"vm-browserify": "^1.1.2"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
]
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>

</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<br><br><br>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
170 changes: 170 additions & 0 deletions Redaction/Add Redaction Annotation Programmatically/src/App.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
<template>
<div class="content-wrapper">
<div style="margin-bottom: 8px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center;">
<button id="addRedactAnnot" type="button" @click="addRedaction">Add Redaction</button>
<button id="deleteById" type="button" @click="deleteAnnotationById">Delete Annotation By Id</button>
<button id="editRedactAnnotation" type="button" @click="editRedactAnnotation">Edit Redaction</button>
<button id="addPageRedactions" type="button" @click="addPageRedactions">Add Page Redactions</button>
<button id="applyRedaction" type="button" @click="applyRedaction">Apply Redaction</button>
</div>

<ejs-pdfviewer
ref="pdfviewer"
id="container"
:documentPath="documentPath"
:resourceUrl="resourceUrl"
:toolbarSettings="toolbarSettings"
style="height: 640px; display: block;"
:annotationAdd="onAnnotationAdd"
/>
</div>
</template>

<script>
import {
PdfViewerComponent,
Toolbar,
Magnification,
Navigation,
Annotation,
LinkAnnotation,
BookmarkView,
ThumbnailView,
Print,
TextSelection,
TextSearch,
FormFields,
FormDesigner,
PageOrganizer
} from '@syncfusion/ej2-vue-pdfviewer';

export default {
name: 'App',
components: { 'ejs-pdfviewer': PdfViewerComponent },
data() {
return {
documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf',
resourceUrl: 'https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib',
toolbarSettings: {
toolbarItems: [
'OpenOption',
'UndoRedoTool',
'PageNavigationTool',
'MagnificationTool',
'PanTool',
'SelectionTool',
'CommentTool',
'SubmitForm',
'AnnotationEditTool',
'RedactionEditTool',
'FormDesignerEditTool',
'SearchOption',
'PrintOption',
'DownloadOption'
]
}
};
},
provide: {
PdfViewer: [
Toolbar,
Magnification,
Navigation,
Annotation,
LinkAnnotation,
BookmarkView,
ThumbnailView,
Print,
TextSelection,
TextSearch,
FormFields,
FormDesigner,
PageOrganizer
]
},
mounted() {
// Set default redaction properties
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
inst.redactionSettings = {
overlayText: 'Confidential',
markerFillColor: '#FF0000',
markerBorderColor: '#000000',
isRepeat: false,
fillColor: '#F8F8F8',
fontColor: '#333333',
fontSize: 14,
fontFamily: 'Symbol',
textAlign: 'Right'
};
},
methods: {
onAnnotationAdd(args) {
console.log('Annotation added:', args);
},
addRedaction() {
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
inst.annotation.addAnnotation('Redaction', {
bound: { x: 200, y: 480, width: 150, height: 75 },
pageNumber: 1,
markerFillColor: '#0000FF',
markerBorderColor: 'white',
fillColor: 'red',
overlayText: 'Confidential',
fontColor: 'yellow',
fontFamily: 'Times New Roman',
fontSize: 8,
beforeRedactionsApplied: false
});
},
deleteAnnotationById() {
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
const id = inst.annotationCollection?.[0]?.annotationId;
if (id) inst.annotationModule.deleteAnnotationById(id);
},
editRedactAnnotation() {
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
const collection = inst.annotationCollection || [];
for (let i = 0; i < collection.length; i++) {
if (collection[i].subject === 'Redaction') {
collection[i].overlayText = 'EditedAnnotation';
collection[i].markerFillColor = '#22FF00';
collection[i].markerBorderColor = '#000000';
collection[i].isRepeat = true;
collection[i].fillColor = '#F8F8F8';
collection[i].fontColor = '#333333';
collection[i].fontSize = 14;
collection[i].fontFamily = 'Symbol';
collection[i].textAlign = 'Right';
collection[i].beforeRedactionsApplied = false;
inst.annotation.editAnnotation(collection[i]);
}
}
},
addPageRedactions() {
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
inst.annotation.addPageRedactions([1, 3, 5, 7]);
},
applyRedaction() {
const inst = this.$refs.pdfviewer?.ej2Instances;
if (!inst) return;
inst.annotation.redact();
}
}
};
</script>

<style>
@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-vue-pdfviewer/styles/material.css";
</style>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})
23 changes: 23 additions & 0 deletions Redaction/Search Text and Redact/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
.DS_Store
node_modules
/dist


# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
24 changes: 24 additions & 0 deletions Redaction/Search Text and Redact/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# textsearch

## Project setup
```
npm install
```

### Compiles and hot-reloads for development
```
npm run serve
```

### Compiles and minifies for production
```
npm run build
```

### Lints and fixes files
```
npm run lint
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
5 changes: 5 additions & 0 deletions Redaction/Search Text and Redact/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
Loading