mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-09-08 17:51:20 +02:00
feat: add annotation option to PDF to image (#4365)
## Summary - add optional flag to include PDF annotations when converting to images - expose annotation option via API model and UI checkbox - add translation for annotation option ## Testing - `./gradlew spotlessApply` - `./gradlew build` ------ https://chatgpt.com/codex/tasks/task_b_68b7fa1d5a1c83288342244a0ec85e9d
This commit is contained in:
parent
7e276e8406
commit
bf90f4b1da
@ -142,7 +142,8 @@ public class PdfUtils {
|
||||
ImageType colorType,
|
||||
boolean singleImage,
|
||||
int DPI,
|
||||
String filename)
|
||||
String filename,
|
||||
boolean includeAnnotations)
|
||||
throws IOException, Exception {
|
||||
|
||||
// Validate and limit DPI to prevent excessive memory usage
|
||||
@ -163,6 +164,9 @@ public class PdfUtils {
|
||||
try (PDDocument document = pdfDocumentFactory.load(inputStream)) {
|
||||
PDFRenderer pdfRenderer = new PDFRenderer(document);
|
||||
pdfRenderer.setSubsamplingAllowed(true);
|
||||
if (!includeAnnotations) {
|
||||
pdfRenderer.setAnnotationsFilter(annotation -> false);
|
||||
}
|
||||
int pageCount = document.getNumberOfPages();
|
||||
|
||||
// Create a ByteArrayOutputStream to save the image(s) to
|
||||
|
@ -66,6 +66,7 @@ public class ConvertImgPDFController {
|
||||
String colorType = request.getColorType();
|
||||
int dpi = request.getDpi();
|
||||
String pageNumbers = request.getPageNumbers();
|
||||
boolean includeAnnotations = Boolean.TRUE.equals(request.getIncludeAnnotations());
|
||||
Path tempFile = null;
|
||||
Path tempOutputDir = null;
|
||||
Path tempPdfPath = null;
|
||||
@ -101,7 +102,8 @@ public class ConvertImgPDFController {
|
||||
colorTypeResult,
|
||||
singleImage,
|
||||
dpi,
|
||||
filename);
|
||||
filename,
|
||||
includeAnnotations);
|
||||
if (result == null || result.length == 0) {
|
||||
log.error("resultant bytes for {} is null, error converting ", filename);
|
||||
}
|
||||
|
@ -39,4 +39,9 @@ public class ConvertToImageRequest extends PDFWithPageNums {
|
||||
defaultValue = "300",
|
||||
requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Integer dpi;
|
||||
|
||||
@Schema(
|
||||
description = "Include annotations such as comments in the output image(s)",
|
||||
defaultValue = "false")
|
||||
private Boolean includeAnnotations;
|
||||
}
|
||||
|
@ -1439,6 +1439,7 @@ pdfToImage.dpi=DPI (The server limit is {0} dpi)
|
||||
pdfToImage.submit=Convert
|
||||
pdfToImage.info=Python is not installed. Required for WebP conversion.
|
||||
pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||
pdfToImage.includeAnnotations=Include annotations (comments, highlights etc.)
|
||||
|
||||
|
||||
#addPassword
|
||||
|
@ -73,6 +73,10 @@
|
||||
<option value="blackwhite" th:text="#{pdfToImage.blackwhite}"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3 form-check">
|
||||
<input class="form-check-input" type="checkbox" id="includeAnnotations" name="includeAnnotations">
|
||||
<label class="form-check-label" for="includeAnnotations" th:text="#{pdfToImage.includeAnnotations}"></label>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="dpi">DPI:</label>
|
||||
<input type="number" name="dpi" class="form-control" id="dpi" min="1" step="1" value="300" required>
|
||||
|
Loading…
Reference in New Issue
Block a user