From d6afb07533787f3ebeca4c85e21bad3a4d952153 Mon Sep 17 00:00:00 2001
From: Atrem Petrenko <64548375+Artem-ka-create@users.noreply.github.com>
Date: Tue, 31 Oct 2023 18:58:40 +0100
Subject: [PATCH] starting issue, implementing pdf-to-csv view
---
build.gradle | 64 ++--
.../web/ConverterWebController.java | 8 +
src/main/resources/messages_en_US.properties | 21 +-
src/main/resources/static/images/pdf-csv.svg | 1 +
.../templates/convert/pdf-to-csv.html | 29 ++
.../resources/templates/fragments/navbar.html | 322 +++++++++---------
src/main/resources/templates/home.html | 81 ++---
7 files changed, 293 insertions(+), 233 deletions(-)
create mode 100644 src/main/resources/static/images/pdf-csv.svg
create mode 100644 src/main/resources/templates/convert/pdf-to-csv.html
diff --git a/build.gradle b/build.gradle
index d727205a..42298136 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,15 +46,15 @@ launch4j {
outfile="Stirling-PDF.exe"
headerType="console"
jarTask = tasks.bootJar
-
+
errTitle="Encountered error, Do you have Java 17?"
- downloadUrl="https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe"
+ downloadUrl="https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe"
variables=["BROWSER_OPEN=true"]
jreMinVersion="17"
-
+
mutexName="Stirling-PDF"
windowTitle="Stirling-PDF"
-
+
messagesStartupError="An error occurred while starting Stirling-PDF"
//messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17."
messagesJreVersionError="You are running the wrong version of Java, Please download Java 17."
@@ -63,46 +63,56 @@ launch4j {
}
dependencies {
- implementation 'org.yaml:snakeyaml:2.1'
- implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2'
- implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2'
-
- if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
+ implementation 'org.yaml:snakeyaml:2.1'
+ implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2'
+ implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2'
+
+ if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
implementation 'org.springframework.boot:spring-boot-starter-security:3.1.2'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
- implementation "com.h2database:h2"
+ implementation "com.h2database:h2"
}
-
- testImplementation 'org.springframework.boot:spring-boot-starter-test:3.1.4'
-
-
- // https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio
- implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
- implementation 'commons-io:commons-io:2.13.0'
-
+ testImplementation 'org.springframework.boot:spring-boot-starter-test:3.1.4'
+
+
+
+ // https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio
+ implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
+ implementation 'commons-io:commons-io:2.13.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
-
- //general PDF
+
+ //general PDF
+
+ // https://mvnrepository.com/artifact/com.opencsv/opencsv
+ implementation group: 'com.opencsv', name: 'opencsv', version: '5.7.1'
implementation 'org.apache.pdfbox:pdfbox:2.0.29'
implementation 'org.apache.pdfbox:xmpbox:2.0.29'
implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
- implementation 'org.bouncycastle:bcpkix-jdk15on:1.70'
+ implementation 'org.bouncycastle:bcpkix-jdk15on:1.70'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-core'
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
// https://mvnrepository.com/artifact/org.commonmark/commonmark
- implementation 'org.commonmark:commonmark:0.21.0'
+ implementation 'org.commonmark:commonmark:0.21.0'
// https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
- implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
-
+ implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
+
developmentOnly("org.springframework.boot:spring-boot-devtools")
- compileOnly 'org.projectlombok:lombok:1.18.28'
- annotationProcessor 'org.projectlombok:lombok:1.18.28'
+ compileOnly 'org.projectlombok:lombok:1.18.28'
+ annotationProcessor 'org.projectlombok:lombok:1.18.28'
+
+//// https://mvnrepository.com/artifact/technology.tabula/tabula
+// implementation group: 'technology.tabula', name: 'tabula', version: '1.0.5'
+
+
+// implementation files('/Users/artempetrenko/Java/Stirling-PDF/tabula-1.0.5-jar-with-dependencies.jar')
+ implementation fileTree(include: ['tabula-1.0.5-jar-with-dependencies.jar'],dir: 'libs')
}
+
task writeVersion {
def propsFile = file('src/main/resources/version.properties')
def props = new Properties()
@@ -128,7 +138,7 @@ jar {
attributes 'Implementation-Title': 'Stirling-PDF',
'Implementation-Version': project.version
}
-
+
}
tasks.named('test') {
diff --git a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java
index 76e7be8f..3bad71c9 100644
--- a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java
+++ b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java
@@ -99,6 +99,14 @@ public class ConverterWebController {
return modelAndView;
}
+ @GetMapping("/pdf-to-csv")
+ @Hidden
+ public ModelAndView pdfToCSV() {
+ ModelAndView modelAndView = new ModelAndView("convert/pdf-to-csv");
+ modelAndView.addObject("currentPage", "pdf-to-csv");
+ return modelAndView;
+ }
+
@GetMapping("/pdf-to-pdfa")
@Hidden
diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties
index a15f9ab6..b82d0619 100644
--- a/src/main/resources/messages_en_US.properties
+++ b/src/main/resources/messages_en_US.properties
@@ -93,7 +93,6 @@ account.accountSettings=Account Settings
account.adminSettings=Admin Settings - View and Add Users
account.userControlSettings=User Control Settings
account.changeUsername=Change Username
-account.changeUsername=Change Username
account.password=Confirmation Password
account.oldPassword=Old password
account.newPassword=New Password
@@ -334,7 +333,12 @@ showJS.tags=JS
home.autoRedact.title=Auto Redact
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
-showJS.tags=JS
+autoRedact.tags=JS
+
+home.tableExtraxt.title=Table Extraction
+home.tableExtraxt.desc=Table Extraction from PDF to CSV
+tableExtraxt.tags=CSV
+
###########################
# #
@@ -563,7 +567,7 @@ ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a pho
ScannerImageSplit.selectText.9=Border Size:
ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1).
-
+
#OCR
ocr.title=OCR / Scan Cleanup
ocr.header=Cleanup Scans / OCR (Optical Character Recognition)
@@ -682,8 +686,8 @@ imageToPDF.selectText.2=Auto rotate PDF
imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images)
imageToPDF.selectText.4=Merge into single PDF
imageToPDF.selectText.5=Convert to separate PDFs
-
-
+
+
#pdfToImage
pdfToImage.title=PDF to Image
pdfToImage.header=PDF to Image
@@ -773,7 +777,6 @@ changeMetadata.keywords=Keywords:
changeMetadata.modDate=Modification Date (yyyy/MM/dd HH:mm:ss):
changeMetadata.producer=Producer:
changeMetadata.subject=Subject:
-changeMetadata.title=Title:
changeMetadata.trapped=Trapped:
changeMetadata.selectText.4=Other Metadata:
changeMetadata.selectText.5=Add Custom Metadata Entry
@@ -823,3 +826,9 @@ PDFToXML.title=PDF to XML
PDFToXML.header=PDF to XML
PDFToXML.credit=This service uses LibreOffice for file conversion.
PDFToXML.submit=Convert
+
+#PDFToCSV
+PDFToCSV.title=PDF to CSV
+PDFToCSV.header=PDF to CSV
+PDFToCSV.credit=This service uses LibreOffice for file conversion.
+PDFToCSV.submit=Convert
diff --git a/src/main/resources/static/images/pdf-csv.svg b/src/main/resources/static/images/pdf-csv.svg
new file mode 100644
index 00000000..95d68c10
--- /dev/null
+++ b/src/main/resources/static/images/pdf-csv.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/main/resources/templates/convert/pdf-to-csv.html b/src/main/resources/templates/convert/pdf-to-csv.html
new file mode 100644
index 00000000..bad849fb
--- /dev/null
+++ b/src/main/resources/templates/convert/pdf-to-csv.html
@@ -0,0 +1,29 @@
+
+
+
+