fixes and stuff

This commit is contained in:
Anthony Stirling 2025-05-09 14:53:43 +01:00
parent 3b18df1c4f
commit 104874fd03
3 changed files with 31 additions and 22 deletions

View File

@ -626,25 +626,30 @@ public class CompressController {
// Scale factors for different optimization levels // Scale factors for different optimization levels
private double getScaleFactorForLevel(int optimizeLevel) { private double getScaleFactorForLevel(int optimizeLevel) {
return switch (optimizeLevel) { return switch (optimizeLevel) {
case 4 -> 0.9; // 90% - lite compression case 3 -> 0.85;
case 5 -> 0.8; // 80% - lite compression case 4 -> 0.75;
case 6 -> 0.7; // 70% - lite compression case 5 -> 0.65;
case 7 -> 0.6; // 60% - intense compression case 6 -> 0.55;
case 8 -> 0.5; // 50% - intense compression case 7 -> 0.45;
case 9, 10 -> 0.4; // 40% - intense compression case 8 -> 0.35;
default -> 1.0; // No scaling for levels 1-3 case 9 -> 0.25;
}; default -> 1.0;
};
} }
// JPEG quality for different optimization levels // JPEG quality for different optimization levels
private float getJpegQualityForLevel(int optimizeLevel) { private float getJpegQualityForLevel(int optimizeLevel) {
return switch (optimizeLevel) { return switch (optimizeLevel) {
case 7 -> 0.8f; // 80% quality case 3 -> 0.85f;
case 8 -> 0.6f; // 60% quality case 4 -> 0.80f;
case 9, 10 -> 0.4f; // 40% quality case 5 -> 0.75f;
default -> 0.7f; // 70% quality for levels 1-6 case 6 -> 0.70f;
}; case 7 -> 0.60f;
case 8 -> 0.50f;
case 9 -> 0.35f;
default -> 0.7f;
};
} }
@PostMapping(consumes = "multipart/form-data", value = "/compress-pdf") @PostMapping(consumes = "multipart/form-data", value = "/compress-pdf")
@ -698,7 +703,7 @@ public class CompressController {
while (!sizeMet && optimizeLevel <= 9) { while (!sizeMet && optimizeLevel <= 9) {
// Apply image compression for levels 4-9 // Apply image compression for levels 4-9
if ((optimizeLevel >= 4 || Boolean.TRUE.equals(convertToGrayscale)) if ((optimizeLevel >= 3 || Boolean.TRUE.equals(convertToGrayscale))
&& !imageCompressionApplied) { && !imageCompressionApplied) {
double scaleFactor = getScaleFactorForLevel(optimizeLevel); double scaleFactor = getScaleFactorForLevel(optimizeLevel);
float jpegQuality = getJpegQualityForLevel(optimizeLevel); float jpegQuality = getJpegQualityForLevel(optimizeLevel);
@ -790,10 +795,14 @@ public class CompressController {
log.info("Pre-QPDF file size: {}", GeneralUtils.formatBytes(preQpdfSize)); log.info("Pre-QPDF file size: {}", GeneralUtils.formatBytes(preQpdfSize));
// Map optimization levels to QPDF compression levels // Map optimization levels to QPDF compression levels
int qpdfCompressionLevel = int qpdfCompressionLevel;
optimizeLevel <= 3 if (optimizeLevel == 1) {
? optimizeLevel * 3 // Level 1->3, 2->6, 3->9 qpdfCompressionLevel = 5;
: 9; // Max compression for levels 4-9 } else if (optimizeLevel == 2) {
qpdfCompressionLevel = 9;
} else {
qpdfCompressionLevel = 9;
}
// Create output file for QPDF // Create output file for QPDF
Path qpdfOutputFile = Files.createTempFile("qpdf_output_", ".pdf"); Path qpdfOutputFile = Files.createTempFile("qpdf_output_", ".pdf");

View File

@ -41,7 +41,7 @@
<link rel="stylesheet" th:href="@{'/css/bootstrap-icons.min.css'}"> <link rel="stylesheet" th:href="@{'/css/bootstrap-icons.min.css'}">
<!-- Pixel, doesn't collect any PII--> <!-- Pixel, doesn't collect any PII-->
<img th:if="${!@disablePixel} referrerpolicy="no-referrer-when-downgrade" <img th:if="${!@disablePixel}" referrerpolicy="no-referrer-when-downgrade"
th:src="'https://pixel.stirlingpdf.com/a.png?x-pxid=4f5fa02f-a065-4efb-bb2c-24509a4b6b92' th:src="'https://pixel.stirlingpdf.com/a.png?x-pxid=4f5fa02f-a065-4efb-bb2c-24509a4b6b92'
+ '&machineType=' + ${@machineType} + '&machineType=' + ${@machineType}
+ '&appVersion=' + ${@appVersion} + '&appVersion=' + ${@appVersion}

View File

@ -45,7 +45,7 @@
th:insert="~{fragments/navbarEntry :: navbarEntry ('multi-tool', 'construction', 'home.multiTool.title', 'home.multiTool.desc', 'multiTool.tags', 'organize')}"> th:insert="~{fragments/navbarEntry :: navbarEntry ('multi-tool', 'construction', 'home.multiTool.title', 'home.multiTool.desc', 'multiTool.tags', 'organize')}">
</div> </div>
<div class="newfeature" <div class="newfeature"
th:insert="~{fragments/navbarEntry :: navbarEntry('validate-signature', 'verified', 'home.validateSignature.title', 'home.validateSignature.desc', 'validateSignature.tags', 'security')}"> th:insert="~{fragments/navbarEntry :: navbarEntry('compress-pdf', 'zoom_in_map', 'home.compressPdfs.title', 'home.compressPdfs.desc', 'compressPDFs.tags', 'advance')}">
</div> </div>
</div> </div>
</div> </div>