Add 'Remove duplicate fonts' option to PDF merge functionality

This commit is contained in:
alam00000
2026-08-14 13:41:06 +05:30
parent 2ed0575ca3
commit af5b95e93c
5 changed files with 40 additions and 5 deletions
+2 -1
View File
@@ -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 1N. On: each file's original page labels are preserved (may produce duplicate labels)."
"retainPageLabelsHint": "Off (default): the merged PDF uses natural page numbering 1N. On: each file's original page labels are preserved (may produce duplicate labels).",
"removeDuplicateFonts": "Remove duplicate fonts"
},
"splitPdf": {
"name": "Split PDF",
+16 -4
View File
@@ -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
);
+5
View File
@@ -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(
+1
View File
@@ -18,6 +18,7 @@ export interface MergeMessage {
jobs: MergeJob[];
cpdfUrl?: string;
retainPageLabels?: boolean;
removeDuplicateFonts?: boolean;
}
export interface MergeSuccessResponse {
+16
View File
@@ -270,6 +270,22 @@
</span>
</label>
<label
class="mt-4 flex items-start gap-2 text-sm text-gray-300 cursor-pointer"
>
<input
type="checkbox"
id="remove-duplicate-fonts"
class="mt-0.5 w-4 h-4 rounded text-indigo-600 bg-gray-700 border-gray-600"
/>
<span
class="font-medium"
data-i18n="tools:mergePdf.removeDuplicateFonts"
>
Remove duplicate fonts
</span>
</label>
<button id="process-btn" class="btn-gradient w-full mt-6">
Merge PDFs
</button>