diff --git a/frontend/public/locales/en-GB/translation.toml b/frontend/public/locales/en-GB/translation.toml index eb56fabe7..3631875c8 100644 --- a/frontend/public/locales/en-GB/translation.toml +++ b/frontend/public/locales/en-GB/translation.toml @@ -3736,6 +3736,9 @@ filesize = "File Size" [compress.grayscale] label = "Apply Grayscale for Compression" +[compress.linearize] +label = "Linearize PDF for fast web viewing" + [compress.lineArt] label = "Convert images to line art" description = "Uses ImageMagick to reduce pages to high-contrast black and white for maximum size reduction." diff --git a/frontend/src/core/components/tools/compress/CompressSettings.tsx b/frontend/src/core/components/tools/compress/CompressSettings.tsx index f444da263..9dc6d2ca5 100644 --- a/frontend/src/core/components/tools/compress/CompressSettings.tsx +++ b/frontend/src/core/components/tools/compress/CompressSettings.tsx @@ -144,6 +144,17 @@ const CompressSettings = ({ parameters, onParameterChange, disabled = false }: C disabled={disabled} label={t("compress.grayscale.label", "Apply Grayscale for compression")} /> + + {/* Linearize Option */} + + onParameterChange('linearize', event.currentTarget.checked)} + disabled={disabled} + label={t("compress.linearize.label", "Linearize PDF for fast web viewing")} + /> + + onParameterChange('lineArt', event.currentTarget.checked)} diff --git a/frontend/src/core/hooks/tools/compress/useCompressOperation.ts b/frontend/src/core/hooks/tools/compress/useCompressOperation.ts index 8e8f27b33..e1dda9d0f 100644 --- a/frontend/src/core/hooks/tools/compress/useCompressOperation.ts +++ b/frontend/src/core/hooks/tools/compress/useCompressOperation.ts @@ -20,6 +20,7 @@ export const buildCompressFormData = (parameters: CompressParameters, file: File formData.append("grayscale", parameters.grayscale.toString()); formData.append("lineArt", parameters.lineArt.toString()); + formData.append("linearize", parameters.linearize.toString()); if (parameters.lineArt) { formData.append("lineArtThreshold", parameters.lineArtThreshold.toString()); formData.append("lineArtEdgeLevel", parameters.lineArtEdgeLevel.toString()); diff --git a/frontend/src/core/hooks/tools/compress/useCompressParameters.ts b/frontend/src/core/hooks/tools/compress/useCompressParameters.ts index 16f80f1d1..1df68b6ad 100644 --- a/frontend/src/core/hooks/tools/compress/useCompressParameters.ts +++ b/frontend/src/core/hooks/tools/compress/useCompressParameters.ts @@ -11,6 +11,7 @@ export interface CompressParameters extends BaseParameters { compressionMethod: 'quality' | 'filesize'; fileSizeValue: string; fileSizeUnit: 'KB' | 'MB'; + linearize: boolean; } export const defaultParameters: CompressParameters = { @@ -23,6 +24,7 @@ export const defaultParameters: CompressParameters = { compressionMethod: 'quality', fileSizeValue: '', fileSizeUnit: 'MB', + linearize: false, }; export type CompressParametersHook = BaseParametersHook;