diff --git a/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json b/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json index 3a989296ec..71a08e98dd 100644 --- a/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json +++ b/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json @@ -6,7 +6,8 @@ "parameters": { "horizontalDivisions": 2, "verticalDivisions": 2, - "fileInput": "automated" + "fileInput": "automated", + "merge": false } }, { @@ -30,4 +31,4 @@ }, "outputDir": "{outputFolder}", "outputFileName": "{filename}" -} \ No newline at end of file +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index ad742137b7..1719d325dd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -38,7 +38,7 @@ public class MergeController { private static final Logger logger = LoggerFactory.getLogger(MergeController.class); - private PDDocument mergeDocuments(List documents) throws IOException { + public PDDocument mergeDocuments(List documents) throws IOException { PDDocument mergedDoc = new PDDocument(); for (PDDocument doc : documents) { for (PDPage page : doc.getPages()) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java index 3deb798ec0..c3f858edb5 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java @@ -53,8 +53,21 @@ public class SplitPdfBySectionsController { // Process the PDF based on split parameters int horiz = request.getHorizontalDivisions() + 1; int verti = request.getVerticalDivisions() + 1; - + boolean merge = request.isMerge(); List splitDocuments = splitPdfPages(sourceDocument, verti, horiz); + + String filename = + Filenames.toSimpleFileName(file.getOriginalFilename()) + .replaceFirst("[.][^.]+$", ""); + if (merge) { + MergeController mergeController = new MergeController(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + mergeController.mergeDocuments(splitDocuments).save(baos); + return WebResponseUtils.bytesToWebResponse( + baos.toByteArray(), + filename + "_split.pdf", + MediaType.APPLICATION_OCTET_STREAM); + } for (PDDocument doc : splitDocuments) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); doc.save(baos); @@ -65,9 +78,6 @@ public class SplitPdfBySectionsController { sourceDocument.close(); Path zipFile = Files.createTempFile("split_documents", ".zip"); - String filename = - Filenames.toSimpleFileName(file.getOriginalFilename()) - .replaceFirst("[.][^.]+$", ""); byte[] data; try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) { @@ -145,4 +155,5 @@ public class SplitPdfBySectionsController { return splitDocuments; } + } diff --git a/src/main/java/stirling/software/SPDF/model/api/SplitPdfBySectionsRequest.java b/src/main/java/stirling/software/SPDF/model/api/SplitPdfBySectionsRequest.java index fcc5d5ba3b..1ff834b4cf 100644 --- a/src/main/java/stirling/software/SPDF/model/api/SplitPdfBySectionsRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/SplitPdfBySectionsRequest.java @@ -15,4 +15,7 @@ public class SplitPdfBySectionsRequest extends PDFFile { @Schema(description = "Number of vertical divisions for each PDF page", example = "2") private int verticalDivisions; + + @Schema(description = "Merge the split documents into a single PDF", example = "true") + private boolean merge; } diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index f2a2a75dff..ab5a32165b 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 9fbee0f45f..47924b3376 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 0cac1ef306..9c44df96a9 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index badb132f26..9b32b6cca2 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertikale Teiler split-by-sections.horizontal.placeholder=Anzahl horizontaler Teiler eingeben split-by-sections.vertical.placeholder=Anzahl vertikaler Teiler eingeben split-by-sections.submit=PDF teilen - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Lizenzen diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index ae4993a97d..171cabbc22 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 5d8a4dbc9a..7df7c12574 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 2948fa2044..4b2cc3d648 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 8e28ef3594..50e9c3e9e9 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Divisiones Verticales split-by-sections.horizontal.placeholder=Introduzca el número de divisiones horizontales split-by-sections.vertical.placeholder=Introduzca el número de divisiones verticales split-by-sections.submit=Dividir PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licencias diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 9267379fdf..19e91f6620 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 58ee579d89..a9acb529da 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Divisions verticales split-by-sections.horizontal.placeholder=Saisir le nombre de divisions horizontales split-by-sections.vertical.placeholder=Entrer le nombre de divisions verticales split-by-sections.submit=Diviser le PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licences diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 1033b65a70..5865a6f53d 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=लंबवत विभाजन split-by-sections.horizontal.placeholder=क्षैतिज विभाजन की संख्या दर्ज करें split-by-sections.vertical.placeholder=लंबवत विभाजन की संख्या दर्ज करें split-by-sections.submit=PDF को विभाजित करें - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index b82e1d64ae..7db65bf051 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vízszintes szakaszok split-by-sections.horizontal.placeholder=Adja meg a vízszintes szakaszok számát split-by-sections.vertical.placeholder=Adja meg a függőleges szakaszok számát split-by-sections.submit=Felosztás - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index e3c1cec77d..cc110d52d5 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Pembagian Vertikal split-by-sections.horizontal.placeholder=Input angka untuk pembagian horizontal split-by-sections.vertical.placeholder=Input angka untuk pembagian vertikal split-by-sections.submit=Pisahkan PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 82bb4d5b9b..c35346ba09 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Divisioni verticali split-by-sections.horizontal.placeholder=Inserire il numero di divisioni orizzontali split-by-sections.vertical.placeholder=Inserire il numero di divisioni verticali split-by-sections.submit=Dividi PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenze diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 46740e68fa..99402302b6 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=垂直方向 split-by-sections.horizontal.placeholder=水平方向の分割数を選択 split-by-sections.vertical.placeholder=垂直方向の分割数を選択 split-by-sections.submit=分割 - +split-by-sections.merge=1 つの PDF に結合するかどうか #licenses licenses.nav=ライセンス diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index e710eccf53..0a93770b57 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index d261f5a1a1..c489752125 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Verticale secties split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in split-by-sections.vertical.placeholder=Voer het aantal verticale secties in split-by-sections.submit=PDF splitsen - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenties diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 14a4f9795b..5fc5018be5 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index d7115da7dd..43a1005ed9 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 376337d0f5..bf6ea2dfb6 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -958,7 +958,7 @@ split-by-sections.vertical.label=Divisões Verticais split-by-sections.horizontal.placeholder=Introduza o número de divisões horizontais split-by-sections.vertical.placeholder=Introduza o número de divisões verticais split-by-sections.submit=Dividir PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenças diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 4c3712e9f4..9ca837b38e 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 14971b9760..a5e86fd674 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index 7c4446f75b..88fcfeb9d6 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertikalne podele split-by-sections.horizontal.placeholder=Unesite broj horizontalnih podele split-by-sections.vertical.placeholder=Unesite broj vertikalnih podele split-by-sections.submit=Razdvoji PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index e2199e0087..b8c03002f4 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 0dd607892f..39afeec384 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=Vertical Divisions split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.submit=Split PDF - +split-by-sections.merge=Merge Into One PDF #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index c79eb73cbc..c7b00e3a1a 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=垂直分割 split-by-sections.horizontal.placeholder=输入水平分割数 split-by-sections.vertical.placeholder=输入垂直分割数 split-by-sections.submit=分割PDF - +split-by-sections.merge=是否合并为一个pdf #licenses licenses.nav=Licenses diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index fa0e2d35ae..51e09f3304 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -960,7 +960,7 @@ split-by-sections.vertical.label=垂直劃分 split-by-sections.horizontal.placeholder=輸入水平劃分的數量 split-by-sections.vertical.placeholder=輸入垂直劃分的數量 split-by-sections.submit=分割 PDF - +split-by-sections.merge=是否合併為一個pdf #licenses licenses.nav=Licenses diff --git a/src/main/resources/templates/split-pdf-by-sections.html b/src/main/resources/templates/split-pdf-by-sections.html index 10d8d4faf6..e3c65b9f6b 100644 --- a/src/main/resources/templates/split-pdf-by-sections.html +++ b/src/main/resources/templates/split-pdf-by-sections.html @@ -23,6 +23,9 @@
+ + +