From 2707d1a3923eca01de42488d293da7f3ae534ddf Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Mon, 13 Oct 2025 16:52:37 +0100 Subject: [PATCH 01/15] FPVTL-1304: DAC A - Missing Tags [PDF] --- .../documentgenerator/domain/request/PdfDocumentRequest.java | 2 ++ .../service/impl/DocmosisPDFGenerationServiceImpl.java | 1 + 2 files changed, 3 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 1a703465..c380b58c 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -19,5 +19,7 @@ public class PdfDocumentRequest { private String devMode; + private boolean pdfTagged; + private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 7227f2eb..d6b69884 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -83,6 +83,7 @@ private PdfDocumentRequest request(String templateName, Map plac .templateName(templateName) .outputName("result.pdf") .devMode(docmosisDevMode) + .pdfTagged(true) .data(templateDataMapper.map(placeholders)) .build(); } From e5811b7bd8389b747ff7e4441df6e79c73fa248c Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Mon, 13 Oct 2025 17:31:14 +0100 Subject: [PATCH 02/15] FPVTL-1304: DAC A - Missing Tags [PDF] --- .../documentgenerator/domain/request/PdfDocumentRequest.java | 2 ++ .../service/impl/DocmosisPDFGenerationServiceImpl.java | 1 + 2 files changed, 3 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index c380b58c..85ccd1c9 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -21,5 +21,7 @@ public class PdfDocumentRequest { private boolean pdfTagged; + private String pdfTitle; + private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index d6b69884..5e4f7e0c 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -84,6 +84,7 @@ private PdfDocumentRequest request(String templateName, Map plac .outputName("result.pdf") .devMode(docmosisDevMode) .pdfTagged(true) + .pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } From f4e987dce70928560e5ddc3128e56dc4863d2776 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 09:42:12 +0100 Subject: [PATCH 03/15] FPVTL-1304: Reverted tag and title --- .../service/impl/DocmosisPDFGenerationServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 5e4f7e0c..c6c04f72 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -83,8 +83,8 @@ private PdfDocumentRequest request(String templateName, Map plac .templateName(templateName) .outputName("result.pdf") .devMode(docmosisDevMode) - .pdfTagged(true) - .pdfTitle("PDF Title testing") + //.pdfTagged(true) + //.pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } From 2926eec86cba0cdd0007b8880da16c0a2566d9ab Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 09:51:55 +0100 Subject: [PATCH 04/15] FPVTL-1304: Reverted to master --- .../documentgenerator/domain/request/PdfDocumentRequest.java | 4 ---- .../service/impl/DocmosisPDFGenerationServiceImpl.java | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 85ccd1c9..1a703465 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -19,9 +19,5 @@ public class PdfDocumentRequest { private String devMode; - private boolean pdfTagged; - - private String pdfTitle; - private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index c6c04f72..7227f2eb 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -83,8 +83,6 @@ private PdfDocumentRequest request(String templateName, Map plac .templateName(templateName) .outputName("result.pdf") .devMode(docmosisDevMode) - //.pdfTagged(true) - //.pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } From 483dbb7ab3976cf8a91ea27884b43df4655ceb27 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 10:20:14 +0100 Subject: [PATCH 05/15] FPVTL-1304: Added tag --- .../documentgenerator/domain/request/PdfDocumentRequest.java | 5 +++++ .../service/impl/DocmosisPDFGenerationServiceImpl.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 1a703465..9ba06877 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -1,14 +1,17 @@ package uk.gov.hmcts.reform.prl.documentgenerator.domain.request; +import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Builder; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import java.beans.JavaBean; import java.util.Map; @Slf4j @Data @Builder +@JsonInclude(JsonInclude.Include.NON_NULL) public class PdfDocumentRequest { private String accessKey; @@ -19,5 +22,7 @@ public class PdfDocumentRequest { private String devMode; + private boolean pdfTagged; + private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 7227f2eb..24aa8039 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -83,6 +83,8 @@ private PdfDocumentRequest request(String templateName, Map plac .templateName(templateName) .outputName("result.pdf") .devMode(docmosisDevMode) + .pdfTagged(true) + //.pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } From 41714050004a7042726217d3f92e7753a4cddf68 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 12:43:39 +0100 Subject: [PATCH 06/15] FPVTL-1304: Added title --- .mirrord/mirrord.json | 16 ++++++++++++++++ .../domain/request/PdfDocumentRequest.java | 2 ++ .../impl/DocmosisPDFGenerationServiceImpl.java | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .mirrord/mirrord.json diff --git a/.mirrord/mirrord.json b/.mirrord/mirrord.json new file mode 100644 index 00000000..d527738e --- /dev/null +++ b/.mirrord/mirrord.json @@ -0,0 +1,16 @@ +{ + "feature": { + "network": { + "incoming": "mirror", + "outgoing": true + }, + "fs": "read", + "env": true + }, + "target": { + "path": { + "pod": "prl-dgs-pr-450-java-85f5fdc9b5-9hzv6" + }, + "namespace": "private-law" + } +} diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 9ba06877..66aa0da4 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -24,5 +24,7 @@ public class PdfDocumentRequest { private boolean pdfTagged; + private String pdfTitle; + private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 24aa8039..5e4f7e0c 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -84,7 +84,7 @@ private PdfDocumentRequest request(String templateName, Map plac .outputName("result.pdf") .devMode(docmosisDevMode) .pdfTagged(true) - //.pdfTitle("PDF Title testing") + .pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } From abcd30bcfd644f17eda3bc3713b20d5d12948a85 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 17:09:38 +0100 Subject: [PATCH 07/15] FPVTL-1304: Adding title --- .mirrord/mirrord.json | 2 +- build.gradle | 4 +++- .../impl/DocumentManagementServiceImpl.java | 24 ++++++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/.mirrord/mirrord.json b/.mirrord/mirrord.json index d527738e..f9bb9d97 100644 --- a/.mirrord/mirrord.json +++ b/.mirrord/mirrord.json @@ -9,7 +9,7 @@ }, "target": { "path": { - "pod": "prl-dgs-pr-450-java-85f5fdc9b5-9hzv6" + "pod": "prl-dgs-pr-450-java-8494bd7596-vmwj8" }, "namespace": "private-law" } diff --git a/build.gradle b/build.gradle index c6db9e8d..c89e0642 100644 --- a/build.gradle +++ b/build.gradle @@ -168,7 +168,7 @@ def versions = [ junit: '4.13.2', lombok: '1.18.42', nimbus: '5.14', - pdfbox: '2.0.34', + pdfbox: '3.0.5', pitest: '1.20.3', powerMock: '2.0.0', puppyCrawl: '8.45.1', @@ -294,6 +294,8 @@ dependencies { implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: versions.httpComponents implementation (group: 'com.launchdarkly', name: 'launchdarkly-java-server-sdk', version: '7.10.2') implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version:'7.4' + implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: versions.pdfbox + implementation group: 'org.apache.pdfbox', name: 'pdfbox-io', version: versions.pdfbox annotationProcessor("org.projectlombok:lombok:${versions.lombok}") diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java index b984c4c1..6d82236d 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java @@ -1,5 +1,10 @@ package uk.gov.hmcts.reform.prl.documentgenerator.service.impl; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDDocumentInformation; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.common.PDRectangle; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; @@ -15,6 +20,8 @@ import uk.gov.hmcts.reform.prl.documentgenerator.service.DocumentManagementService; import uk.gov.hmcts.reform.prl.documentgenerator.service.PDFGenerationService; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.text.SimpleDateFormat; import java.time.Clock; import java.util.Arrays; @@ -23,6 +30,7 @@ import java.util.Map; import static java.util.Collections.emptyMap; +import static org.apache.pdfbox.Loader.loadPDF; import static org.springframework.http.MediaType.APPLICATION_PDF_VALUE; @Service @@ -105,7 +113,7 @@ private GeneratedDocumentInfo getGeneratedDocumentInfo(String templateName, Map< public GeneratedDocumentInfo storeDocument(byte[] document, String authorizationToken, String fileName) { log.debug("Store document requested with document of size [{}]", document.length); String serviceAuthToken = authTokenGenerator.generate(); - + document = addMetaData(document); UploadResponse uploadResponse = caseDocumentClient.uploadDocuments( authorizationToken, serviceAuthToken, @@ -126,6 +134,20 @@ public GeneratedDocumentInfo storeDocument(byte[] document, String authorization .build(); } + private byte[] addMetaData(byte[] document) { + try (PDDocument pdDocument = loadPDF(document); + ByteArrayOutputStream out = new ByteArrayOutputStream() + ) { + PDDocumentInformation info = pdDocument.getDocumentInformation(); + info.setTitle("Case 100"); + pdDocument.save(out); + return out.toByteArray(); + } catch (IOException ioe) { + log.error("Failed to add metadata to PDF: {}", ioe.getMessage(), ioe); + return document; + } + } + @Override public byte[] generateDocument(String templateName, Map placeholders) { log.debug("Generate document requested with templateName [{}], placeholders of size[{}]", From 5e0e72a09b0dd1171065f4a77ae6bd2b21ce9387 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Tue, 14 Oct 2025 17:15:55 +0100 Subject: [PATCH 08/15] FPVTL-1304: Optimised import --- .../service/impl/DocumentManagementServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java index 6d82236d..245310a1 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java @@ -1,13 +1,10 @@ package uk.gov.hmcts.reform.prl.documentgenerator.service.impl; -import org.apache.pdfbox.Loader; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDDocumentInformation; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.common.PDRectangle; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDDocumentInformation; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import uk.gov.hmcts.reform.authorisation.generators.AuthTokenGenerator; From b0a473069236ea20d7162ce3a152e5965026c483 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Wed, 15 Oct 2025 12:15:43 +0100 Subject: [PATCH 09/15] FPVTL-1304: Reverted title change --- .../domain/request/PdfDocumentRequest.java | 2 -- .../impl/DocmosisPDFGenerationServiceImpl.java | 1 - .../impl/DocumentManagementServiceImpl.java | 15 --------------- 3 files changed, 18 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 66aa0da4..9ba06877 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -24,7 +24,5 @@ public class PdfDocumentRequest { private boolean pdfTagged; - private String pdfTitle; - private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 5e4f7e0c..d6b69884 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -84,7 +84,6 @@ private PdfDocumentRequest request(String templateName, Map plac .outputName("result.pdf") .devMode(docmosisDevMode) .pdfTagged(true) - .pdfTitle("PDF Title testing") .data(templateDataMapper.map(placeholders)) .build(); } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java index 245310a1..6fbb2f17 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java @@ -110,7 +110,6 @@ private GeneratedDocumentInfo getGeneratedDocumentInfo(String templateName, Map< public GeneratedDocumentInfo storeDocument(byte[] document, String authorizationToken, String fileName) { log.debug("Store document requested with document of size [{}]", document.length); String serviceAuthToken = authTokenGenerator.generate(); - document = addMetaData(document); UploadResponse uploadResponse = caseDocumentClient.uploadDocuments( authorizationToken, serviceAuthToken, @@ -131,20 +130,6 @@ public GeneratedDocumentInfo storeDocument(byte[] document, String authorization .build(); } - private byte[] addMetaData(byte[] document) { - try (PDDocument pdDocument = loadPDF(document); - ByteArrayOutputStream out = new ByteArrayOutputStream() - ) { - PDDocumentInformation info = pdDocument.getDocumentInformation(); - info.setTitle("Case 100"); - pdDocument.save(out); - return out.toByteArray(); - } catch (IOException ioe) { - log.error("Failed to add metadata to PDF: {}", ioe.getMessage(), ioe); - return document; - } - } - @Override public byte[] generateDocument(String templateName, Map placeholders) { log.debug("Generate document requested with templateName [{}], placeholders of size[{}]", From 3683a3649426fcfc3dc31ee51f8c0aa95e7ba701 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Thu, 16 Oct 2025 11:36:36 +0100 Subject: [PATCH 10/15] FPVTL-1304: Code clean up --- .mirrord/mirrord.json | 16 ---------------- build.gradle | 4 +--- .../domain/request/PdfDocumentRequest.java | 3 --- .../impl/DocumentManagementServiceImpl.java | 6 +----- .../DocmosisPdfGenerationServiceImplUTest.java | 16 ++++++++++++++-- 5 files changed, 16 insertions(+), 29 deletions(-) delete mode 100644 .mirrord/mirrord.json diff --git a/.mirrord/mirrord.json b/.mirrord/mirrord.json deleted file mode 100644 index f9bb9d97..00000000 --- a/.mirrord/mirrord.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "feature": { - "network": { - "incoming": "mirror", - "outgoing": true - }, - "fs": "read", - "env": true - }, - "target": { - "path": { - "pod": "prl-dgs-pr-450-java-8494bd7596-vmwj8" - }, - "namespace": "private-law" - } -} diff --git a/build.gradle b/build.gradle index c89e0642..c6db9e8d 100644 --- a/build.gradle +++ b/build.gradle @@ -168,7 +168,7 @@ def versions = [ junit: '4.13.2', lombok: '1.18.42', nimbus: '5.14', - pdfbox: '3.0.5', + pdfbox: '2.0.34', pitest: '1.20.3', powerMock: '2.0.0', puppyCrawl: '8.45.1', @@ -294,8 +294,6 @@ dependencies { implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: versions.httpComponents implementation (group: 'com.launchdarkly', name: 'launchdarkly-java-server-sdk', version: '7.10.2') implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version:'7.4' - implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: versions.pdfbox - implementation group: 'org.apache.pdfbox', name: 'pdfbox-io', version: versions.pdfbox annotationProcessor("org.projectlombok:lombok:${versions.lombok}") diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index 9ba06877..c380b58c 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -1,17 +1,14 @@ package uk.gov.hmcts.reform.prl.documentgenerator.domain.request; -import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Builder; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import java.beans.JavaBean; import java.util.Map; @Slf4j @Data @Builder -@JsonInclude(JsonInclude.Include.NON_NULL) public class PdfDocumentRequest { private String accessKey; diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java index 6fbb2f17..b984c4c1 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocumentManagementServiceImpl.java @@ -3,8 +3,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDDocumentInformation; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import uk.gov.hmcts.reform.authorisation.generators.AuthTokenGenerator; @@ -17,8 +15,6 @@ import uk.gov.hmcts.reform.prl.documentgenerator.service.DocumentManagementService; import uk.gov.hmcts.reform.prl.documentgenerator.service.PDFGenerationService; -import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.text.SimpleDateFormat; import java.time.Clock; import java.util.Arrays; @@ -27,7 +23,6 @@ import java.util.Map; import static java.util.Collections.emptyMap; -import static org.apache.pdfbox.Loader.loadPDF; import static org.springframework.http.MediaType.APPLICATION_PDF_VALUE; @Service @@ -110,6 +105,7 @@ private GeneratedDocumentInfo getGeneratedDocumentInfo(String templateName, Map< public GeneratedDocumentInfo storeDocument(byte[] document, String authorizationToken, String fileName) { log.debug("Store document requested with document of size [{}]", document.length); String serviceAuthToken = authTokenGenerator.generate(); + UploadResponse uploadResponse = caseDocumentClient.uploadDocuments( authorizationToken, serviceAuthToken, diff --git a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java index e4bbebf7..670a7740 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java @@ -2,16 +2,20 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.reflect.FieldUtils; +import org.checkerframework.checker.units.qual.C; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.ArgumentMatchers; +import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -19,6 +23,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; +import uk.gov.hmcts.reform.prl.documentgenerator.domain.request.PdfDocumentRequest; import uk.gov.hmcts.reform.prl.documentgenerator.exception.PDFGenerationException; import uk.gov.hmcts.reform.prl.documentgenerator.mapper.TemplateDataMapper; import uk.gov.hmcts.reform.prl.documentgenerator.util.NullOrEmptyValidator; @@ -42,6 +47,9 @@ public class DocmosisPdfGenerationServiceImplUTest { @Mock ObjectMapper objectMapper; + @Captor + private ArgumentCaptor> httpEntityArgumentCaptor; + @InjectMocks @Spy @@ -97,8 +105,13 @@ public void givenHttpRequestGoesThrough_whenGenerateFromHtml_thenReturnProperRes ArgumentMatchers.>any())).thenReturn(myEntity); byte[] expected = classUnderTest.generate(template, placeholders); - Assert.assertNotNull(expected); + Mockito.verify(restTemplate).exchange(ArgumentMatchers.any(String.class), + ArgumentMatchers.any(HttpMethod.class), + httpEntityArgumentCaptor.capture(), + ArgumentMatchers.>any()); + HttpEntity value = httpEntityArgumentCaptor.getValue(); + Assert.assertTrue("PDF tagged", value.getBody().isPdfTagged()); } @Test @@ -115,7 +128,6 @@ public void givenFileNAme_whenConvertPDf_thenReturnProperResponse() throws Excep ArgumentMatchers.>any())).thenReturn(test); byte[] expected = classUnderTest.converToPdf(placeholders,"testFile"); - Assert.assertNotNull(expected); } From 33a1e785de20faa9c3d44e87ac8d80adb24e3120 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Mon, 20 Oct 2025 14:16:37 +0100 Subject: [PATCH 11/15] FPVTL-1304: Updated C100 draft template to V4 --- src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 74254e3b..c73e6ebf 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -474,13 +474,13 @@ document: - templateName: PRL-LEG-REP-REMOVED.docx filename: Cover_letter_with_access_code.pdf document-generator: docmosis - - templateName: FL-PRL-APP-ENG-C100-DRAFT-V3.docx + - templateName: FL-PRL-APP-ENG-C100-Draft-V4.docx filename: C100DraftDocument.pdf document-generator: docmosis - templateName: FL-PRL-APP-ENG-C100-Final-V3.docx filename: C100FinalDocument.pdf document-generator: docmosis - - templateName: FL-PRL-APP-WEL-C100-Draft-V3.docx + - templateName: FL-PRL-APP-WEL-C100-Draft-V4.docx filename: C100DraftWelshDocument.pdf document-generator: docmosis - templateName: FL-PRL-APP-WEL-C100-Final-V3.docx From 27ac46dc4b092ad08b8ee8284cb90517d8752ef1 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Fri, 24 Oct 2025 16:26:09 +0100 Subject: [PATCH 12/15] FPVTL-1304: LOGGING placeholder --- .../service/impl/DocmosisPDFGenerationServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index d6b69884..cf9f9fd6 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -59,6 +59,8 @@ public byte[] generate(String templateName, Map placeholders) { log.info("Making request to pdf service to generate pdf document with template [{}]" + " and placeholders of size [{}]", templateName, placeholders.size()); + log.info("REMOVE THIS PLACE HOLDER logging {}", placeholders); + try { // Remove this log when tested log.info("Making Docmosis Request From {}", docmosisPdfServiceEndpoint); From 08aaef19e6f92304150e059bbbba3ba0fd7b6a21 Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Thu, 30 Oct 2025 12:53:01 +0000 Subject: [PATCH 13/15] FPVTL-1304: Added pdfUniversalAccessibility --- .../documentgenerator/domain/request/PdfDocumentRequest.java | 2 ++ .../service/impl/DocmosisPDFGenerationServiceImpl.java | 1 + .../service/impl/DocmosisPdfGenerationServiceImplUTest.java | 1 + testFile | 1 + 4 files changed, 5 insertions(+) create mode 100644 testFile diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java index c380b58c..01fc3dde 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/domain/request/PdfDocumentRequest.java @@ -21,5 +21,7 @@ public class PdfDocumentRequest { private boolean pdfTagged; + private boolean pdfUniversalAccessibility; + private Map data; } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index cf9f9fd6..46eda4f0 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -86,6 +86,7 @@ private PdfDocumentRequest request(String templateName, Map plac .outputName("result.pdf") .devMode(docmosisDevMode) .pdfTagged(true) + .pdfUniversalAccessibility(true) .data(templateDataMapper.map(placeholders)) .build(); } diff --git a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java index 670a7740..35ae5d77 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPdfGenerationServiceImplUTest.java @@ -112,6 +112,7 @@ public void givenHttpRequestGoesThrough_whenGenerateFromHtml_thenReturnProperRes ArgumentMatchers.>any()); HttpEntity value = httpEntityArgumentCaptor.getValue(); Assert.assertTrue("PDF tagged", value.getBody().isPdfTagged()); + Assert.assertTrue("PDF pdfUniversalAccessibility", value.getBody().isPdfUniversalAccessibility()); } @Test diff --git a/testFile b/testFile new file mode 100644 index 00000000..88298345 --- /dev/null +++ b/testFile @@ -0,0 +1 @@ +Any String you want \ No newline at end of file From e02fd80aee481defdd9496471f39ee79a2e68c1c Mon Sep 17 00:00:00 2001 From: SomeshRA <69344273+SomeshRA@users.noreply.github.com> Date: Thu, 30 Oct 2025 12:54:13 +0000 Subject: [PATCH 14/15] Delete testFile --- testFile | 1 - 1 file changed, 1 deletion(-) delete mode 100644 testFile diff --git a/testFile b/testFile deleted file mode 100644 index 88298345..00000000 --- a/testFile +++ /dev/null @@ -1 +0,0 @@ -Any String you want \ No newline at end of file From e21b424cf291f1b6acf3b40bfb26378875d0f91e Mon Sep 17 00:00:00 2001 From: SomeshRA Date: Wed, 5 Nov 2025 10:05:03 +0000 Subject: [PATCH 15/15] FPVTL-1304: Removed logging of placeholder --- .../service/impl/DocmosisPDFGenerationServiceImpl.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java index 46eda4f0..644f87e7 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/documentgenerator/service/impl/DocmosisPDFGenerationServiceImpl.java @@ -59,8 +59,6 @@ public byte[] generate(String templateName, Map placeholders) { log.info("Making request to pdf service to generate pdf document with template [{}]" + " and placeholders of size [{}]", templateName, placeholders.size()); - log.info("REMOVE THIS PLACE HOLDER logging {}", placeholders); - try { // Remove this log when tested log.info("Making Docmosis Request From {}", docmosisPdfServiceEndpoint);