Skip to content

Commit d556e51

Browse files
Aspose.PDF for JavaScript via C++ 26.1
1 parent 9befe9c commit d556e51

7 files changed

Lines changed: 153 additions & 15 deletions

AsposePDFforJS.js

Lines changed: 17 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

AsposePDFforJS.wasm.zip

36.8 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ Add PDF processing, manipulation, and conversion features to your front-end appl
5959
- **Attachments:** Add, extract, or delete file attachments.
6060
- **Text Tools:**
6161
- Find, replace, or delete text (including hidden text)
62+
- Replace multiple text fragments with alignment control
6263
- Get word and character counts
6364

6465
## Additional Utilities

example.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,10 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
320320
<label for="filePdfDeleteTextFooters">DEL FOOTERS<span class="tooltip">Delete text footers from a PDF-file</span></label>
321321
<input type="file" id="filePdfDeleteTextFooters" accept="application/pdf" onchange="ffilePdfDeleteTextFooters(event)">
322322
</div>
323+
<div class="column">
324+
<label for="filePdfReplaceTextEx">REPLACE TEXT EX<span class="tooltip">Replace multiple text fragments in a PDF-file with alignment control</span></label>
325+
<input type="file" id="filePdfReplaceTextEx" accept="application/pdf" onchange="ffilePdfReplaceTextEx(event)">
326+
</div>
323327
</div>
324328
</div>
325329

@@ -1365,6 +1369,17 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
13651369
file_reader.readAsArrayBuffer(e.target.files[0]);
13661370
};
13671371

1372+
var ffilePdfReplaceTextEx = function (e) {
1373+
const file_reader = new FileReader();
1374+
file_reader.onload = (event) => {
1375+
const json = AsposePdfReplaceTextEx(event.target.result, e.target.files[0].name, [{findText: "PDF",replaceText: "pdf"}], {numPages: 1, alignment: "auto"}, "ResultPdfReplaceTextEx.pdf");
1376+
if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
1377+
else document.getElementById('output').textContent = json.errorText;
1378+
DownloadFile(json.fileNameResult, "application/pdf");
1379+
}
1380+
file_reader.readAsArrayBuffer(e.target.files[0]);
1381+
}
1382+
13681383
</script>
13691384

13701385
<script>

example_worker.html

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<option value="AsposePdfCropPages">Crop PDF-pages</option>
101101
<option value="AsposePdfDeleteTextHeaders">Delete text headers from a PDF-file</option>
102102
<option value="AsposePdfDeleteTextFooters">Delete text footers from a PDF-file</option>
103+
<option value="AsposePdfReplaceTextEx">Replace multiple text fragments in a PDF-file with alignment control</option>
103104

104105
<optgroup label="Metadata PDF">
105106
<option value="AsposePdfSetInfo">Set info (metadata) in a PDF-file</option>
@@ -337,7 +338,7 @@
337338
// AsposePdfReplaceFont, AsposePdfDeleteHiddenText, AsposePdfAddWatermark, AsposePdfDeleteWatermarks,
338339
// AsposePdfMergeLayers, AsposePdfFlatten, AsposePdfReplaceTextPages, AsposePdfMakeBooklet,
339340
// AsposePdfMakeNUp, AsposePdfDeleteBlankPages, AsposePdfAddStampPages, AsposePdfEmbedFonts, AsposePdfUnembedFonts,
340-
// AsposePdfOptimizeFileSize, AsposePdfDeleteTables, AsposePdfCropPages,
341+
// AsposePdfOptimizeFileSize, AsposePdfDeleteTables, AsposePdfCropPages, AsposePdfReplaceTextEx,
341342
DownloadFile(json.fileNameResult, "application/pdf", params[0]);
342343
}
343344
}
@@ -670,6 +671,24 @@
670671
transfer = [event.target.result];
671672
params = [event.target.result, ffile.name, marginPages, `Result${operation}.pdf`];
672673
break;
674+
case 'AsposePdfReplaceTextEx':
675+
const findReplaceSpec = [
676+
{
677+
findText: 'Aspose',
678+
replaceText: 'ASPOSE'
679+
},
680+
{
681+
findText: 'PDF',
682+
replaceText: 'pdf'
683+
},
684+
{
685+
findText: 'ECMAScript',
686+
replaceText: '\u200FScript'
687+
}
688+
];
689+
transfer = [event.target.result];
690+
params = [event.target.result, ffile.name, findReplaceSpec, {alignment: "auto"}, `Result${operation}.pdf`];
691+
break;
673692
default:
674693
// AsposePdfOptimize, AsposePdfAddPageNum, AsposePdfConvertToGrayscale, AsposePdfAConvertToPDF,
675694
// AsposePdfRemoveMetadata, AsposePdfRepair, AsposePdfOptimizeResource, AsposePdfDeleteAnnotations,
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<meta charset="UTF-8">
7+
<title>Aspose.PDF for JavaScript via C++</title>
8+
</head>
9+
10+
<body>
11+
<label for="fileReplaceTextEx">Choose a PDF-file to replace multiple text fragments with alignment control</label>
12+
<input type="file" id="fileReplaceTextEx" accept="application/pdf" onchange="ffileReplaceTextEx(event)">
13+
<br>
14+
<pre id="output"></pre>
15+
</body>
16+
<!-- Load and initiate Aspose.PDF for JavaScript via C++ -->
17+
<script type="text/javascript" async src="AsposePDFforJS.js"></script>
18+
<script type="text/javascript">
19+
/// [Code snippet]
20+
var ffileReplaceTextEx = function (e) {
21+
const file_reader = new FileReader();
22+
file_reader.onload = (event) => {
23+
/*RReplace multiple text fragments in a PDF-file with alignment control and save the "ResultReplaceTextEx.pdf"*/
24+
const json = AsposePdfReplaceTextEx(event.target.result, e.target.files[0].name, [{findText: 'Aspose',replaceText: 'ASPOSE'}], {alignment: "left"}, "ResultReplaceTextEx.pdf");
25+
if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult
26+
else document.getElementById('output').textContent = json.errorText;
27+
/*Make a link to download the result file*/
28+
DownloadFile(json.fileNameResult, "application/pdf");
29+
};
30+
file_reader.readAsArrayBuffer(e.target.files[0]);
31+
};
32+
/// [Code snippet]
33+
</script>
34+
35+
</html>
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<meta charset="UTF-8">
7+
<title>Aspose.PDF for JavaScript via C++</title>
8+
</head>
9+
10+
<body>
11+
<label for="fileReplaceTextEx">Choose a PDF-file to replace multiple text fragments with alignment control</label>
12+
<input type="file" id="fileReplaceTextEx" accept="application/pdf" onchange="ffileReplaceTextEx(event)">
13+
<br>
14+
<pre id="output">please wait for loading...</pre>
15+
</body>
16+
17+
<script type="text/javascript">
18+
/// [Code snippet]
19+
/*Create Web Worker*/
20+
const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
21+
AsposePDFWebWorker.onerror = evt => console.log(`Error from Web Worker: ${evt.message}`);
22+
AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent =
23+
(evt.data == 'ready') ? 'loaded!' :
24+
(evt.data.json.errorCode == 0) ? `Result:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}` : `Error: ${evt.data.json.errorText}`;
25+
26+
/*Event handler*/
27+
const ffileReplaceTextEx = e => {
28+
const file_reader = new FileReader();
29+
file_reader.onload = event => {
30+
const findReplaceSpec = [
31+
{
32+
findText: 'Aspose',
33+
replaceText: 'ASPOSE'
34+
},
35+
{
36+
findText: 'Node',
37+
replaceText: 'NODE'
38+
},
39+
{
40+
findText: 'ECMAScript',
41+
replaceText: '\u200FScript'
42+
}
43+
];
44+
const optionsText = {numPages: 1, alignment: "auto"};
45+
/*Replace multiple text fragments in a PDF-file with alignment control and save the "ResultReplaceTextEx.pdf" - Ask Web Worker*/
46+
AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfReplaceTextEx', "params": [event.target.result, e.target.files[0].name, findReplaceSpec, optionsText, "ResultReplaceTextEx.pdf"] }, [event.target.result]);
47+
};
48+
file_reader.readAsArrayBuffer(e.target.files[0]);
49+
};
50+
/// [Code snippet]
51+
52+
/*Make a link to download the result file*/
53+
const DownloadFile = (filename, mime, content) => {
54+
mime = mime || "application/octet-stream";
55+
var link = document.createElement("a");
56+
link.href = URL.createObjectURL(new Blob([content], {type: mime}));
57+
link.download = filename;
58+
link.innerHTML = "Click here to download the file " + filename;
59+
document.body.appendChild(link);
60+
document.body.appendChild(document.createElement("br"));
61+
return filename;
62+
}
63+
</script>
64+
65+
</html>

0 commit comments

Comments
 (0)