diff --git a/public/locales/en/tools.json b/public/locales/en/tools.json
index ec970815..68f32fbd 100644
--- a/public/locales/en/tools.json
+++ b/public/locales/en/tools.json
@@ -19,7 +19,8 @@
"name": "Merge PDF",
"subtitle": "Combine multiple PDFs into one file. Preserves Bookmarks.",
"retainPageLabels": "Keep original page labels from each file",
- "retainPageLabelsHint": "Off (default): the merged PDF uses natural page numbering 1–N. On: each file's original page labels are preserved (may produce duplicate labels)."
+ "retainPageLabelsHint": "Off (default): the merged PDF uses natural page numbering 1–N. On: each file's original page labels are preserved (may produce duplicate labels).",
+ "removeDuplicateFonts": "Remove duplicate fonts"
},
"splitPdf": {
"name": "Split PDF",
diff --git a/public/workers/merge.worker.js b/public/workers/merge.worker.js
index 6f536962..022441c2 100644
--- a/public/workers/merge.worker.js
+++ b/public/workers/merge.worker.js
@@ -21,7 +21,14 @@ function loadCpdf(cpdfUrl) {
}
self.onmessage = async function (e) {
- const { command, files, jobs, cpdfUrl, retainPageLabels } = e.data;
+ const {
+ command,
+ files,
+ jobs,
+ cpdfUrl,
+ retainPageLabels,
+ removeDuplicateFonts,
+ } = e.data;
if (!cpdfUrl) {
self.postMessage({
@@ -43,11 +50,16 @@ self.onmessage = async function (e) {
}
if (command === 'merge') {
- mergePDFs(files, jobs, retainPageLabels === true);
+ mergePDFs(
+ files,
+ jobs,
+ retainPageLabels === true,
+ removeDuplicateFonts === true
+ );
}
};
-function mergePDFs(files, jobs, retainPageLabels) {
+function mergePDFs(files, jobs, retainPageLabels, removeDuplicateFonts) {
try {
const loadedPdfs = {};
const pdfsToMerge = [];
@@ -90,7 +102,7 @@ function mergePDFs(files, jobs, retainPageLabels) {
const mergedPdf = coherentpdf.mergeSame(
pdfsToMerge,
retainPageLabels,
- true,
+ removeDuplicateFonts,
rangesToMerge
);
diff --git a/src/js/logic/merge-pdf-page.ts b/src/js/logic/merge-pdf-page.ts
index 3ac4ca1f..8236d42a 100644
--- a/src/js/logic/merge-pdf-page.ts
+++ b/src/js/logic/merge-pdf-page.ts
@@ -389,12 +389,17 @@ export async function merge() {
'retain-page-labels'
) as HTMLInputElement | null;
+ const removeDuplicateFontsCheckbox = document.getElementById(
+ 'remove-duplicate-fonts'
+ ) as HTMLInputElement | null;
+
const message: MergeMessage = {
command: 'merge',
files: filesToMerge,
jobs: jobs,
cpdfUrl: WasmProvider.getUrl('cpdf')! + 'coherentpdf.browser.min.js',
retainPageLabels: retainCheckbox?.checked ?? false,
+ removeDuplicateFonts: removeDuplicateFontsCheckbox?.checked ?? false,
};
mergeWorker.postMessage(
diff --git a/src/js/types/merge-worker-type.ts b/src/js/types/merge-worker-type.ts
index 1e093602..d473a9ff 100644
--- a/src/js/types/merge-worker-type.ts
+++ b/src/js/types/merge-worker-type.ts
@@ -18,6 +18,7 @@ export interface MergeMessage {
jobs: MergeJob[];
cpdfUrl?: string;
retainPageLabels?: boolean;
+ removeDuplicateFonts?: boolean;
}
export interface MergeSuccessResponse {
diff --git a/src/pages/merge-pdf.html b/src/pages/merge-pdf.html
index 6899d2a8..de1f8a74 100644
--- a/src/pages/merge-pdf.html
+++ b/src/pages/merge-pdf.html
@@ -270,6 +270,22 @@
+
+