Skip to content

Commit 9203fb3

Browse files
Aspose.PDF for JavaScript via C++ 24.11
1 parent bc0df73 commit 9203fb3

8 files changed

+204
-6
lines changed

AsposePDFforJS.js

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

AsposePDFforJS.wasm.zip

-7.49 KB
Binary file not shown.

example.html

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
256256
<label for="filePdfDeleteWatermarks">DEL WATERMARKS<span class="tooltip">Delete watermarks from a PDF-file</span></label>
257257
<input type="file" id="filePdfDeleteWatermarks" accept="application/pdf" onchange="ffilePdfDeleteWatermarks(event)">
258258
</div>
259+
<div class="column">
260+
<label for="filePdfMergeLayers">MERGE LAYERS<span class="tooltip">Merge layers a PDF-file</span></label>
261+
<input type="file" id="filePdfMergeLayers" accept="application/pdf" onchange="ffilePdfMergeLayers(event)">
262+
</div>
259263
</div>
260264
</div>
261265

@@ -281,6 +285,10 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
281285
<label for="filePdfGetWordsCharactersCount">GET WORDS<span class="tooltip">Get words and characters count in a PDF-file</span></label>
282286
<input type="file" id="filePdfGetWordsCharactersCount" accept="application/pdf" onchange="ffilePdfGetWordsCharactersCount(event)">
283287
</div>
288+
<div class="column">
289+
<label for="filePdfGetPagesLayers">GET LAYERS<span class="tooltip">Get list layers from a PDF-file</span></label>
290+
<input type="file" id="filePdfGetPagesLayers" accept="application/pdf" onchange="ffilePdfGetPagesLayers(event)">
291+
</div>
284292
</div>
285293
</div>
286294

@@ -1106,6 +1114,29 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
11061114
file_reader.readAsArrayBuffer(e.target.files[0]);
11071115
};
11081116

1117+
var ffilePdfGetPagesLayers = function (e) {
1118+
const file_reader = new FileReader();
1119+
file_reader.onload = (event) => {
1120+
const json = AsposePdfGetPagesLayers(event.target.result, e.target.files[0].name);
1121+
if (json.errorCode == 0) document.getElementById('output').textContent = "JSON:\n" + JSON.stringify(json, null, 4);
1122+
else document.getElementById('output').textContent = json.errorText;
1123+
};
1124+
file_reader.readAsArrayBuffer(e.target.files[0]);
1125+
};
1126+
1127+
var ffilePdfMergeLayers = function (e) {
1128+
const file_reader = new FileReader();
1129+
file_reader.onload = (event) => {
1130+
/*Merge layers a PDF-file and save the "ResultPdfMergeLayers.pdf"*/
1131+
const json = AsposePdfMergeLayers(event.target.result, e.target.files[0].name, "MergedLayer", "ResultPdfMergeLayers.pdf");
1132+
if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
1133+
else document.getElementById('output').textContent = json.errorText;
1134+
/*Make a link to download the result file*/
1135+
DownloadFile(json.fileNameResult, "application/pdf");
1136+
};
1137+
file_reader.readAsArrayBuffer(e.target.files[0]);
1138+
};
1139+
11091140
</script>
11101141

11111142
<script>

example_worker.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,15 @@
8484
<option value="AsposePdfDeleteHiddenText">Delete hidden text from a PDF-file</option>
8585
<option value="AsposePdfAddWatermark">Add watermark to a PDF-file</option>
8686
<option value="AsposePdfDeleteWatermarks">Delete watermarks from a PDF-file</option>
87+
<option value="AsposePdfMergeLayers">Merge layers a PDF-file</option>
8788

8889
<optgroup label="Metadata PDF">
8990
<option value="AsposePdfSetInfo">Set info (metadata) in a PDF-file</option>
9091
<option value="AsposePdfGetInfo">Get info (metadata) from a PDF-file</option>
9192
<option value="AsposePdfGetAllFonts">Get list fonts from a PDF-file</option>
9293
<option value="AsposePdfRemoveMetadata">Remove metadata from a PDF-file</option>
9394
<option value="AsposePdfGetWordsCharactersCount">Get words and characters count in a PDF-file</option>
95+
<option value="AsposePdfGetPagesLayers">Get list layers from a PDF-file</option>
9496

9597
<optgroup label="Security PDF">
9698
<option value="AsposePdfEncrypt">Encrypt a PDF-file</option>
@@ -175,6 +177,9 @@
175177
json.fonts.forEach(({fontName}) => listFonts += `\n${fontName}`);
176178
document.getElementById('output').textContent = listFonts;
177179
break;
180+
case 'AsposePdfGetPagesLayers':
181+
document.getElementById('output').textContent = 'Layers:\n' + json.pagesLayers.map((layer, index) => `page #${index + 1}: ${layer.join('; ')}`).join('\n');
182+
break;
178183
case 'AsposePdfFindText':
179184
case 'AsposePdfFindHiddenText':
180185
let listFragments= 'textFragments:';
@@ -310,6 +315,7 @@
310315
// AsposePdfDeleteAttachments, AsposePdfDeleteImages, AsposePdfDeleteJavaScripts,
311316
// AsposePdfFromTxt, AsposePdfAddAttachment, AsposePdfReplaceText, AsposePdfFromImage,
312317
// AsposePdfReplaceFont, AsposePdfDeleteHiddenText, AsposePdfAddWatermark, AsposePdfDeleteWatermarks
318+
// AsposePdfMergeLayers
313319
DownloadFile(json.fileNameResult, "application/pdf", params[0]);
314320
}
315321
}
@@ -337,6 +343,7 @@
337343
case 'AsposePdfGetInfo':
338344
case 'AsposePdfGetAllFonts':
339345
case 'AsposePdfGetWordsCharactersCount':
346+
case 'AsposePdfGetPagesLayers':
340347
transfer = [event.target.result];
341348
params = [event.target.result, ffile.name];
342349
break;
@@ -596,6 +603,10 @@
596603
transfer = [event.target.result];
597604
params = [event.target.result, ffile.name, text, fontName, fontSize, foregroundColor, xPosition, yPosition, rotation2, isBackground2, opacity2, `Result${operation}.pdf`];
598605
break;
606+
case 'AsposePdfMergeLayers':
607+
transfer = [event.target.result];
608+
params = [event.target.result, ffile.name, "MergedLayer", `Result${operation}.pdf`];
609+
break;
599610
default:
600611
// AsposePdfOptimize, AsposePdfAddPageNum, AsposePdfConvertToGrayscale, AsposePdfAConvertToPDF,
601612
// AsposePdfRemoveMetadata, AsposePdfRepair, AsposePdfOptimizeResource, AsposePdfDeleteAnnotations,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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="filePdfGetPagesLayers">Choose a PDF-file to get list layers</label>
12+
<input type="file" id="filePdfGetPagesLayers" accept="application/pdf" onchange="ffilePdfGetPagesLayers(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 ffilePdfGetPagesLayers = function (e) {
21+
const file_reader = new FileReader();
22+
file_reader.onload = (event) => {
23+
/*Get list layers from a PDF-file*/
24+
const json = AsposePdfGetPagesLayers(event.target.result, e.target.files[0].name);
25+
if (json.errorCode == 0) document.getElementById('output').textContent = "JSON:\n" + JSON.stringify(json, null, 4);
26+
else document.getElementById('output').textContent = json.errorText;
27+
};
28+
file_reader.readAsArrayBuffer(e.target.files[0]);
29+
};
30+
/// [Code snippet]
31+
</script>
32+
33+
</html>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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="filePdfGetPagesLayers">Choose a PDF-file to get list layers</label>
12+
<input type="file" id="filePdfGetPagesLayers" accept="application/pdf" onchange="ffilePdfGetPagesLayers(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) ? `first page layers:\n${JSON.stringify(evt.data.json.pagesLayers[0], null, 4)}` : `Error: ${evt.data.json.errorText}`;
25+
26+
/*Event handler*/
27+
const ffilePdfGetPagesLayers = e => {
28+
const file_reader = new FileReader();
29+
file_reader.onload = event => {
30+
/*Get list layers from a PDF-file - Ask Web Worker*/
31+
AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfGetPagesLayers', "params": [event.target.result, e.target.files[0].name] }, [event.target.result]);
32+
};
33+
file_reader.readAsArrayBuffer(e.target.files[0]);
34+
};
35+
/// [Code snippet]
36+
</script>
37+
38+
</html>

snippets/AsposePdfMergeLayers.html

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="filePdfMergeLayers">Choose a PDF-file to merge layers</label>
12+
<input type="file" id="filePdfMergeLayers" accept="application/pdf" onchange="ffilePdfMergeLayers(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 ffilePdfMergeLayers = function (e) {
21+
const file_reader = new FileReader();
22+
file_reader.onload = (event) => {
23+
/*Merge layers a PDF-file and save the "ResultPdfMergeLayers.pdf"*/
24+
const json = AsposePdfMergeLayers(event.target.result, e.target.files[0].name, "MergedLayer", "ResultPdfMergeLayers.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: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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="filePdfMergeLayers">Choose a PDF-file to merge layers</label>
12+
<input type="file" id="filePdfMergeLayers" accept="application/pdf" onchange="ffilePdfMergeLayers(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 ffilePdfMergeLayers = e => {
28+
const file_reader = new FileReader();
29+
file_reader.onload = event => {
30+
/*Merge layers a PDF-file and save the "ResultPdfMergeLayers.pdf" - Ask Web Worker*/
31+
AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfMergeLayers', "params": [event.target.result, e.target.files[0].name, "MergedLayer", "ResultPdfMergeLayers.pdf"] }, [event.target.result]);
32+
};
33+
file_reader.readAsArrayBuffer(e.target.files[0]);
34+
};
35+
/// [Code snippet]
36+
37+
/*Make a link to download the result file*/
38+
const DownloadFile = (filename, mime, content) => {
39+
mime = mime || "application/octet-stream";
40+
var link = document.createElement("a");
41+
link.href = URL.createObjectURL(new Blob([content], {type: mime}));
42+
link.download = filename;
43+
link.innerHTML = "Click here to download the file " + filename;
44+
document.body.appendChild(link);
45+
document.body.appendChild(document.createElement("br"));
46+
return filename;
47+
}
48+
</script>
49+
50+
</html>

0 commit comments

Comments
 (0)