From 74223d69ad0988ad0aa0ba92ae1444e0b896da3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Sz=C3=BCcs?= Date: Sat, 15 Nov 2025 18:10:22 +0100 Subject: [PATCH] [V2] feat(compress): add linearize option for faster web viewing - Added a "Linearize PDF for faster web viewing" checkbox in CompressSettings - Extended compress parameters to include `linearize` as a boolean - Updated form data to append the `linearize` parameter - Added translation strings for linearize feature in English locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Balázs Szücs --- frontend/public/locales/en-GB/translation.json | 7 +++++++ .../core/components/tools/compress/CompressSettings.tsx | 6 ++++++ .../src/core/hooks/tools/compress/useCompressOperation.ts | 1 + .../src/core/hooks/tools/compress/useCompressParameters.ts | 2 ++ 4 files changed, 16 insertions(+) diff --git a/frontend/public/locales/en-GB/translation.json b/frontend/public/locales/en-GB/translation.json index a0f7a2666..a6a350200 100644 --- a/frontend/public/locales/en-GB/translation.json +++ b/frontend/public/locales/en-GB/translation.json @@ -3324,6 +3324,9 @@ "grayscale": { "label": "Apply Grayscale for Compression" }, + "linearize": { + "label": "Optimize PDF for faster web viewing" + }, "tooltip": { "header": { "title": "Compress Settings Overview" @@ -3341,6 +3344,10 @@ "grayscale": { "title": "Grayscale", "text": "Select this option to convert all images to black and white, which can significantly reduce file size especially for scanned PDFs or image-heavy documents." + }, + "linearize": { + "title": "Linearize", + "text": "Optimize PDF for faster web viewing by rearranging the PDF structure so the first page can be displayed quickly in web browsers." } }, "error": { diff --git a/frontend/src/core/components/tools/compress/CompressSettings.tsx b/frontend/src/core/components/tools/compress/CompressSettings.tsx index 398e0b7b4..fb5ed7bdd 100644 --- a/frontend/src/core/components/tools/compress/CompressSettings.tsx +++ b/frontend/src/core/components/tools/compress/CompressSettings.tsx @@ -129,6 +129,12 @@ const CompressSettings = ({ parameters, onParameterChange, disabled = false }: C disabled={disabled} label={t("compress.grayscale.label", "Apply Grayscale for compression")} /> + onParameterChange('linearize', event.currentTarget.checked)} + disabled={disabled} + label={t("compress.linearize.label", "Linearize PDF for faster web viewing")} + /> ); diff --git a/frontend/src/core/hooks/tools/compress/useCompressOperation.ts b/frontend/src/core/hooks/tools/compress/useCompressOperation.ts index 5b1417b21..c15e0981b 100644 --- a/frontend/src/core/hooks/tools/compress/useCompressOperation.ts +++ b/frontend/src/core/hooks/tools/compress/useCompressOperation.ts @@ -19,6 +19,7 @@ export const buildCompressFormData = (parameters: CompressParameters, file: File } formData.append("grayscale", parameters.grayscale.toString()); + formData.append("linearize", parameters.linearize.toString()); return formData; }; diff --git a/frontend/src/core/hooks/tools/compress/useCompressParameters.ts b/frontend/src/core/hooks/tools/compress/useCompressParameters.ts index 1ae9298f5..74540494d 100644 --- a/frontend/src/core/hooks/tools/compress/useCompressParameters.ts +++ b/frontend/src/core/hooks/tools/compress/useCompressParameters.ts @@ -8,6 +8,7 @@ export interface CompressParameters extends BaseParameters { compressionMethod: 'quality' | 'filesize'; fileSizeValue: string; fileSizeUnit: 'KB' | 'MB'; + linearize: boolean; } export const defaultParameters: CompressParameters = { @@ -17,6 +18,7 @@ export const defaultParameters: CompressParameters = { compressionMethod: 'quality', fileSizeValue: '', fileSizeUnit: 'MB', + linearize: false, }; export type CompressParametersHook = BaseParametersHook;