diff --git a/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json b/pipeline/defaultWebUIConfigs/split-rotate-auto-rename.json index 3a989296..71a08e98 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 ad742137..1719d325 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 3deb798e..c3f858ed 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 fcc5d5ba..1ff834b4 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 f2a2a75d..ab5a3216 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 9fbee0f4..47924b33 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 0cac1ef3..9c44df96 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 badb132f..9b32b6cc 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 ae4993a9..171cabbc 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 5d8a4dbc..7df7c125 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 2948fa20..4b2cc3d6 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 8e28ef35..50e9c3e9 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 9267379f..19e91f66 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 58ee579d..a9acb529 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 1033b65a..5865a6f5 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 b82e1d64..7db65bf0 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 e3c1cec7..cc110d52 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 82bb4d5b..c35346ba 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 46740e68..99402302 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 e710eccf..0a93770b 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 d261f5a1..c4897521 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 14a4f979..5fc5018b 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 d7115da7..43a1005e 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 376337d0..bf6ea2df 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 4c3712e9..9ca837b3 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 14971b97..a5e86fd6 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 7c4446f7..88fcfeb9 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 e2199e00..b8c03002 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 0dd60789..39afeec3 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 c79eb73c..c7b00e3a 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 fa0e2d35..51e09f33 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 10d8d4fa..e3c65b9f 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 @@
+ + +