Skip to content

Commit

Permalink
splitPdf sections cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Frooodle committed Dec 17, 2023
1 parent 31ac877 commit 57b4830
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ public ResponseEntity<byte[]> splitPdf(@ModelAttribute SplitPdfBySectionsRequest
PDDocument sourceDocument = PDDocument.load(file.getInputStream());

// Process the PDF based on split parameters
int horiz = request.getHorizontalDivisions();
int verti = request.getVerticalDivisions();
int horiz = request.getHorizontalDivisions() + 1;
int verti = request.getVerticalDivisions() + 1;

List<PDDocument> splitDocuments = splitPdfPages(sourceDocument, horiz, verti);
List<PDDocument> splitDocuments = splitPdfPages(sourceDocument, verti, horiz);
for (PDDocument doc : splitDocuments) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
doc.save(baos);
Expand Down Expand Up @@ -108,7 +108,7 @@ public List<PDDocument> splitPdfPages(PDDocument document, int horizontalDivisio
try (PDPageContentStream contentStream = new PDPageContentStream(subDoc, subPage)) {
// Set clipping area and position
float translateX = -subPageWidth * i;
float translateY = height - subPageHeight * (j + 1) - subPageHeight;
float translateY = height - subPageHeight * (verticalDivisions - j);

contentStream.saveGraphicsState();
contentStream.addRect(0, 0, subPageWidth, subPageHeight);
Expand All @@ -129,6 +129,7 @@ public List<PDDocument> splitPdfPages(PDDocument document, int horizontalDivisio
}





}
63 changes: 60 additions & 3 deletions src/main/resources/templates/split-pdf-by-sections.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,70 @@ <h2 th:text="#{split-by-sections.header}"></h2>
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>

<label for="horizontalDivisions" th:text="#{split-by-sections.horizontal.label}">Horizontal Divisions</label>
<input type="number" id="horizontalDivisions" name="horizontalDivisions" class="form-control" min="1" required th:placeholder="#{split-by-sections.horizontal.placeholder}">
<input type="number" id="horizontalDivisions" name="horizontalDivisions" class="form-control" min="0" max="300" value="0" required th:placeholder="#{split-by-sections.horizontal.placeholder}">
<br>

<label for="verticalDivisions" th:text="#{split-by-sections.vertical.label}">Vertical Divisions</label>
<input type="number" id="verticalDivisions" name="verticalDivisions" class="form-control" min="1" required th:placeholder="#{split-by-sections.vertical.placeholder}">
<input type="number" id="verticalDivisions" name="verticalDivisions" class="form-control" min="0" max="300" required value="1" th:placeholder="#{split-by-sections.vertical.placeholder}">
<br>

<style>
.pdf-visual-aid {
width: 150px; /* Adjust as needed */
height: 200px; /* Adjust as needed */
border: 1px solid black; /* Represents the PDF page */
position: relative;
}
.line {
position: absolute;
background-color: red; /* Line color */
}

</style>

<div id="pdfVisualAid" class="pdf-visual-aid"></div>
<Script>
function updateVisualAid() {
const horizontalDivisions = document.getElementById('horizontalDivisions').value;
const verticalDivisions = document.getElementById('verticalDivisions').value;
const aid = document.getElementById('pdfVisualAid');

if(horizontalDivisions > 300)
horizontalDivisions = 300
if(verticalDivisions > 300)
verticalDivisions = 300
// Clear existing lines
aid.innerHTML = '';

// Add horizontal lines
for (let i = 0; i < horizontalDivisions; i++) {
const line = document.createElement('div');
line.classList.add('line');
line.style.width = '100%';
line.style.height = '1px';
line.style.top = `${((i + 1) / (parseInt(horizontalDivisions) + 1)) * 100}%`;
aid.appendChild(line);
}

// Add vertical lines
for (let i = 0; i < verticalDivisions; i++) {
const line = document.createElement('div');
line.classList.add('line');
line.style.height = '100%';
line.style.width = '1px';
line.style.left = `${((i + 1) / (parseInt(verticalDivisions) + 1)) * 100}%`;
aid.appendChild(line);
}
}

// Event listeners
document.getElementById('horizontalDivisions').addEventListener('input', updateVisualAid);
document.getElementById('verticalDivisions').addEventListener('input', updateVisualAid);

// Initial draw
updateVisualAid();

</Script>
</br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{split-by-sections.submit}">Submit</button>
</form>

Expand Down

0 comments on commit 57b4830

Please sign in to comment.