Skip to content

Commit 8f7294b

Browse files
Aspose.PDF for JavaScript via C++ 25.11
1 parent 8f08c37 commit 8f7294b

File tree

7 files changed

+112
-4
lines changed

7 files changed

+112
-4
lines changed

AsposePDFforJS.js

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

AsposePDFforJS.wasm.zip

353 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Add PDF processing, manipulation, and conversion features to your front-end appl
1616
- **Add or extract images** to and from PDF documents; remove or replace images when needed.
1717
- **Concatenate**, **split**, or **reorganize** PDF files; delete specific or blank pages.
1818
- **Linearize** PDF documents for web optimization and **optimize** internal structure and resources.
19+
- **Crop** PDF-pages.
1920
- **Convert** PDF documents to:
2021
- **Office formats:** DOC, DOCX, XLS, XLSX, PPTX, DOCX with Enhanced Recognition Mode
2122
- **Web formats:** SVG, SVG (ZIP), XPS, EPUB

example.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,10 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
308308
<label for="filePdfDeleteTables">DEL TABLES<span class="tooltip">Delete tables from a PDF-file</span></label>
309309
<input type="file" id="filePdfDeleteTables" accept="application/pdf" onchange="ffilePdfDeleteTables(event)">
310310
</div>
311+
<div class="column">
312+
<label for="fileCropPages">CROP<span class="tooltip">Crop PDF-pages</span></label>
313+
<input type="file" id="fileCropPages" accept="application/pdf" onchange="ffileCropPages(event)">
314+
</div>
311315
</div>
312316
</div>
313317

@@ -1320,6 +1324,17 @@ <h2>Aspose.PDF for JavaScript via C++</h2>
13201324
file_reader.readAsArrayBuffer(e.target.files[0]);
13211325
}
13221326

1327+
var ffileCropPages = function (e) {
1328+
const file_reader = new FileReader();
1329+
file_reader.onload = (event) => {
1330+
const json = AsposePdfCropPages(event.target.result, e.target.files[0].name, 2.1, "ResultPdfCropPages.pdf");
1331+
if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
1332+
else document.getElementById('output').textContent = json.errorText;
1333+
DownloadFile(json.fileNameResult, "application/pdf");
1334+
}
1335+
file_reader.readAsArrayBuffer(e.target.files[0]);
1336+
}
1337+
13231338
</script>
13241339

13251340
<script>

example_worker.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
<option value="AsposePdfUnembedFonts">Unembed fonts a PDF-file</option>
9898
<option value="AsposePdfOptimizeFileSize">Optimize size of PDF-file with image compression quality</option>
9999
<option value="AsposePdfDeleteTables">Delete tables from a PDF-file</option>
100+
<option value="AsposePdfCropPages">Crop PDF-pages</option>
100101

101102
<optgroup label="Metadata PDF">
102103
<option value="AsposePdfSetInfo">Set info (metadata) in a PDF-file</option>
@@ -334,7 +335,7 @@
334335
// AsposePdfReplaceFont, AsposePdfDeleteHiddenText, AsposePdfAddWatermark, AsposePdfDeleteWatermarks,
335336
// AsposePdfMergeLayers, AsposePdfFlatten, AsposePdfReplaceTextPages, AsposePdfMakeBooklet,
336337
// AsposePdfMakeNUp, AsposePdfDeleteBlankPages, AsposePdfAddStampPages, AsposePdfEmbedFonts, AsposePdfUnembedFonts,
337-
// AsposePdfOptimizeFileSize, AsposePdfDeleteTables,
338+
// AsposePdfOptimizeFileSize, AsposePdfDeleteTables, AsposePdfCropPages,
338339
DownloadFile(json.fileNameResult, "application/pdf", params[0]);
339340
}
340341
}
@@ -662,6 +663,11 @@
662663
transfer = [event.target.result];
663664
params = [event.target.result, ffile.name, imageQuality, `Result${operation}.pdf`];
664665
break;
666+
case 'AsposePdfCropPages':
667+
const marginPages = 5;
668+
transfer = [event.target.result];
669+
params = [event.target.result, ffile.name, marginPages, `Result${operation}.pdf`];
670+
break;
665671
default:
666672
// AsposePdfOptimize, AsposePdfAddPageNum, AsposePdfConvertToGrayscale, AsposePdfAConvertToPDF,
667673
// AsposePdfRemoveMetadata, AsposePdfRepair, AsposePdfOptimizeResource, AsposePdfDeleteAnnotations,

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

0 commit comments

Comments
 (0)