From 598999a161fcbb8ed937d8ce95112acfd749ecf0 Mon Sep 17 00:00:00 2001 From: "fraser.macinnes" Date: Thu, 11 Jul 2024 12:21:48 +0100 Subject: [PATCH 1/4] use overloaded createPDF method which accepts starting page number so that contiguous page numbering across docs or notebooks is honoured --- src/main/java/com/researchspace/export/pdf/PdfProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/researchspace/export/pdf/PdfProcessor.java b/src/main/java/com/researchspace/export/pdf/PdfProcessor.java index 6e9c84f38..60d9547a1 100644 --- a/src/main/java/com/researchspace/export/pdf/PdfProcessor.java +++ b/src/main/java/com/researchspace/export/pdf/PdfProcessor.java @@ -103,7 +103,7 @@ private int doExportPdf( renderer.setDocumentFromString(html); renderer.layout(); try (FileOutputStream out = new FileOutputStream(tempExportFile)) { - renderer.createPDF(out); + renderer.createPDF(out, true, config.getStartPage()); } return renderer.getWriter().getPageNumber(); } From a115fc4c9639fa9758cfa53f2d65ccd374fb8b01 Mon Sep 17 00:00:00 2001 From: "fraser.macinnes" Date: Mon, 22 Jul 2024 14:56:24 +0100 Subject: [PATCH 2/4] rename pageName boolean which actually tracks the config option of whether the page numbering should restart for each doc in a multi-doc/notebook export. Calculate the page number correctly for multi-doc/notebook export to fix contiguous numbering. Change logging level for logging of document html data to avoid clogging logs. --- .../export/pdf/ExportToFileConfig.java | 12 +++----- .../export/pdf/PdfProcessor.java | 28 ++++++++++++++----- .../pages/export/export_otherDialogs.jsp | 2 +- .../webapp/scripts/tags/exportOtherDialogs.js | 4 +-- src/main/webapp/ui/src/Export/ExportDialog.js | 2 +- src/main/webapp/ui/src/Export/PdfExport.js | 4 +-- .../ui/src/Export/__tests__/PdfExport.test.js | 2 +- .../sysadmin/users/__tests__/pdfConfig.json | 2 +- 8 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/researchspace/export/pdf/ExportToFileConfig.java b/src/main/java/com/researchspace/export/pdf/ExportToFileConfig.java index dc625352f..ab6bfa973 100644 --- a/src/main/java/com/researchspace/export/pdf/ExportToFileConfig.java +++ b/src/main/java/com/researchspace/export/pdf/ExportToFileConfig.java @@ -47,7 +47,7 @@ public enum DATE_FOOTER_PREF { private boolean provenance = true; private boolean comments = true; private boolean annotations = true; - private boolean pageName = true; + private boolean restartPageNumberPerDoc = true; private boolean includeFieldLastModifiedDate = true; @NotNull private ExportPageSize pageSize = ExportPageSize.A4; @@ -67,11 +67,7 @@ public ExportScope getExportScope() { return exportScope; } - /** - * A name() String of an {@link ExportFormat} enum - * - * @param exportFormat - */ + /** A name() String of an {@link ExportFormat} enum */ public void setExportFormat(String exportFormat) { this.exportFormat = ExportFormat.valueOf(exportFormat); } @@ -110,8 +106,8 @@ public String toString() { + comments + ", annotations=" + annotations - + ", pageName=" - + pageName + + ", restartPageNumberPerDoc=" + + restartPageNumberPerDoc + ", pageSize=" + pageSize + ", dateType=" diff --git a/src/main/java/com/researchspace/export/pdf/PdfProcessor.java b/src/main/java/com/researchspace/export/pdf/PdfProcessor.java index 60d9547a1..34bb2f90f 100644 --- a/src/main/java/com/researchspace/export/pdf/PdfProcessor.java +++ b/src/main/java/com/researchspace/export/pdf/PdfProcessor.java @@ -64,18 +64,32 @@ public void makeExport( ExportToFileConfig config) throws IOException { - int startPage; + // 1 pdf export can contain multiple docs + int pdfPageLength; try { - startPage = doExportPdf(tempExportFile, documentData, strucDoc, config); + pdfPageLength = doExportPdf(tempExportFile, documentData, strucDoc, config); } catch (DocumentException e) { throw new IOException("Could not generate PDFWriter", e); } + int startPage = calculatePageNumber(config, pdfPageLength); + config.setStartPage(startPage); + } - if (!config.isPageName()) { - config.setStartPage(startPage); - } else { - config.setStartPage(0); + /*** + * The pdf writer expects the start page to be either: + * - 0 for a new doc, or when restarting the page numbering for each doc on a + * multi-doc/notebook export + * - the length of the existing pdf on multi-doc/notebook export when the user has selected + * not to restart the page numbering for each individual doc + * */ + private int calculatePageNumber(ExportToFileConfig config, int pdfPageLength) { + if (!config.isRestartPageNumberPerDoc()) { + int currentStartPage = config.getStartPage(); + return currentStartPage == 0 + ? currentStartPage + pdfPageLength + : currentStartPage + pdfPageLength - 1; } + return 0; } private int doExportPdf( @@ -85,7 +99,7 @@ private int doExportPdf( ExportToFileConfig config) throws DocumentException, IOException { - log.info("Before: {}", documentData.getDocumentAsHtml()); + log.debug("Before: {}", documentData.getDocumentAsHtml()); documentData = preProcessHTML(documentData); String html = pdfHtmlGenerator.prepareHtml(documentData, strucDoc, config); diff --git a/src/main/webapp/WEB-INF/pages/export/export_otherDialogs.jsp b/src/main/webapp/WEB-INF/pages/export/export_otherDialogs.jsp index 2dfa68786..7f35c92b8 100644 --- a/src/main/webapp/WEB-INF/pages/export/export_otherDialogs.jsp +++ b/src/main/webapp/WEB-INF/pages/export/export_otherDialogs.jsp @@ -21,7 +21,7 @@ - +