Compare commits

..

13 Commits

Author SHA1 Message Date
Anthony Stirling
768cb20e75 Update check_properties.yml 2024-12-21 01:02:25 +00:00
Anthony Stirling
339bbbf4b1 Update swagger.yml 2024-12-21 01:00:46 +00:00
Anthony Stirling
475036d12e Update build.yml 2024-12-21 01:00:37 +00:00
Anthony Stirling
b1fa2246a1 Create codeql.yml 2024-12-21 00:58:18 +00:00
Anthony Stirling
abaab580be Update PR-Demo-Comment.yml 2024-12-21 00:50:12 +00:00
Anthony Stirling
1d700ae062 Update PR-Demo-Comment.yml 2024-12-21 00:49:06 +00:00
Anthony Stirling
bba3d65368 Create SECURITY.md 2024-12-21 00:23:58 +00:00
Anthony Stirling
e3d2bd3b1b Merge pull request #2513 from PeterDaveHelloKitchen/zh_TW
Update and improve zh_TW Traditional Chinese locale
2024-12-20 17:05:36 +00:00
Anthony Stirling
a71cb7f5d9 Merge pull request #2509 from Ludy87/btn_standardize
standardize the submit button
2024-12-20 10:24:49 +00:00
Ludy87
a9e250547a standardize the submit button 2024-12-20 11:08:57 +01:00
Anthony Stirling
30bcdbd7be Merge pull request #2507 from Ludy87/remove_redundant_entries
remove redundant entries
2024-12-20 09:13:28 +00:00
Ludy87
61603aebb2 remove redundant entries 2024-12-20 09:59:12 +01:00
Peter Dave Hello
26340626df Update and improve zh_TW Traditional Chinese locale 2024-12-20 03:55:31 +08:00
17 changed files with 229 additions and 116 deletions

View File

@@ -3,7 +3,9 @@ name: PR Deployment via Comment
on: on:
issue_comment: issue_comment:
types: [created] types: [created]
permissions:
pull-requests: write
contents: write
jobs: jobs:
check-comment: check-comment:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -54,7 +54,8 @@ jobs:
# ) # )
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@v4

View File

@@ -14,6 +14,9 @@ jobs:
check-files: check-files:
if: github.event_name == 'pull_request_target' if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps: steps:
- name: Checkout main branch first - name: Checkout main branch first
uses: actions/checkout@v4 uses: actions/checkout@v4

48
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: "CodeQL"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '30 1 * * 0' # Runs at 01:30 UTC every Sunday
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
actions: read
contents: read
security-events: false
strategy:
fail-fast: false
matrix:
language: [ 'java' ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: security-extended,security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

View File

@@ -5,7 +5,8 @@ on:
push: push:
branches: branches:
- master - master
permissions:
contents: read
jobs: jobs:
push: push:
runs-on: ubuntu-latest runs-on: ubuntu-latest

63
SECURITY.md Normal file
View File

@@ -0,0 +1,63 @@
# Security Policy
## Reporting a Vulnerability
The Stirling-PDF team takes security vulnerabilities seriously. We appreciate your efforts to responsibly disclose your findings.
### How to Report
You can report security vulnerabilities through two channels:
1. **GitHub Security Advisory**:
- Navigate to the [Security tab](https://github.com/Stirling-Tools/Stirling-PDF/security) in our repository
- Click on "Report a vulnerability"
- Provide a detailed description of the vulnerability
2. **Direct Email**:
- Send your report to security@stirlingpdf.com
- Please include as much information as possible about the vulnerability
### What to Include
When reporting a vulnerability, please provide:
- A clear description of the vulnerability
- Steps to reproduce the issue
- Any potential impact
- If possible, suggestions for addressing the vulnerability
- Your contact information for follow-up questions
### Response Time
We aim to acknowledge receipt of your vulnerability report within 48 hours
### Process
1. Submit your report through one of the channels above
2. Receive an acknowledgment from our team
3. Our team will investigate and validate the issue
4. We will work on a fix and keep you updated on our progress
5. Once resolved, we will publish the fix and acknowledge your contribution (if desired)
### Bug Bounty
At this time, we do not offer a bug bounty program. However, we greatly appreciate your efforts in making Stirling-PDF more secure and will acknowledge your contribution in our release notes (unless you prefer to remain anonymous).
## Supported Versions
Only the latest version of Stirling-PDF is supported for security updates. We do not backport security fixes to older versions.
| Version | Supported |
| ------- | ------------------ |
| Latest | :white_check_mark: |
| Older | :x: |
**Please note:** Before reporting a security issue, ensure you are using the latest version of Stirling-PDF. Security reports for older versions will not be accepted.
## Security Best Practices
When deploying Stirling-PDF:
1. Always use the latest version
2. Follow our deployment guidelines
3. Regularly check for and apply updates

View File

@@ -38,10 +38,6 @@ java {
repositories { repositories {
mavenCentral() mavenCentral()
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
maven {
url 'https://build.shibboleth.net/maven/releases'
}
maven { url "https://build.shibboleth.net/maven/releases" } maven { url "https://build.shibboleth.net/maven/releases" }
maven { url "https://maven.pkg.github.com/jcefmaven/jcefmaven" } maven { url "https://maven.pkg.github.com/jcefmaven/jcefmaven" }

View File

@@ -81,7 +81,7 @@ page=頁面
pages=頁面 pages=頁面
loading=載入中... loading=載入中...
addToDoc=新增至文件 addToDoc=新增至文件
reset=Reset reset=重設
legal.privacy=隱私權政策 legal.privacy=隱私權政策
legal.terms=使用條款 legal.terms=使用條款
@@ -142,7 +142,7 @@ navbar.language=語言
navbar.settings=設定 navbar.settings=設定
navbar.allTools=工具 navbar.allTools=工具
navbar.multiTool=複合工具 navbar.multiTool=複合工具
navbar.search=Search navbar.search=搜尋
navbar.sections.organize=整理 navbar.sections.organize=整理
navbar.sections.convertTo=轉換為 PDF navbar.sections.convertTo=轉換為 PDF
navbar.sections.convertFrom=從 PDF 轉換 navbar.sections.convertFrom=從 PDF 轉換
@@ -238,13 +238,13 @@ database.creationDate=建立日期
database.fileSize=檔案大小 database.fileSize=檔案大小
database.deleteBackupFile=刪除備份檔案 database.deleteBackupFile=刪除備份檔案
database.importBackupFile=匯入備份檔案 database.importBackupFile=匯入備份檔案
database.createBackupFile=Create Backup File database.createBackupFile=建立備份檔案
database.downloadBackupFile=下載備份檔案 database.downloadBackupFile=下載備份檔案
database.info_1=在匯入資料時,確保正確的結構至關重要。如果您不確定自己在做什麼,請尋求專業人士的建議和支援。結構錯誤可能會導致應用程式故障,甚至完全無法執行應用程式。 database.info_1=在匯入資料時,確保正確的結構至關重要。如果您不確定自己在做什麼,請尋求專業人士的建議和支援。結構錯誤可能會導致應用程式故障,甚至完全無法執行應用程式。
database.info_2=上傳時檔案名稱並不重要。上傳後將重新命名為 backup_user_yyyyMMddHHmm.sql 格式,以確保命名規範一致。 database.info_2=上傳時檔案名稱並不重要。上傳後將重新命名為 backup_user_yyyyMMddHHmm.sql 格式,以確保命名規範一致。
database.submit=匯入備份 database.submit=匯入備份
database.importIntoDatabaseSuccessed=成功匯入資料庫 database.importIntoDatabaseSuccessed=成功匯入資料庫
database.backupCreated=Database backup successful database.backupCreated=資料庫備份成功
database.fileNotFound=找不到檔案 database.fileNotFound=找不到檔案
database.fileNullOrEmpty=檔案不得為空或空白 database.fileNullOrEmpty=檔案不得為空或空白
database.failedImportFile=匯入檔案失敗 database.failedImportFile=匯入檔案失敗
@@ -255,7 +255,7 @@ session.refreshPage=重新整理頁面
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=的本機主機一站式 PDF 需求解決方案。 home.desc=的本機一站式 PDF 解決方案。
home.searchBar=搜尋功能... home.searchBar=搜尋功能...
@@ -514,9 +514,9 @@ home.splitPdfByChapters.title=依章節分割 PDF
home.splitPdfByChapters.desc=根據 PDF 的章節結構將其分割成多個檔案。 home.splitPdfByChapters.desc=根據 PDF 的章節結構將其分割成多個檔案。
splitPdfByChapters.tags=分割,章節,書籤,整理 splitPdfByChapters.tags=分割,章節,書籤,整理
home.validateSignature.title=Validate PDF Signature home.validateSignature.title=驗證 PDF 簽章
home.validateSignature.desc=Verify digital signatures and certificates in PDF documents home.validateSignature.desc=驗證 PDF 文件中的數位簽章與憑證
validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate validateSignature.tags=簽章,驗證,確認,pdf,憑證,數位簽章,驗證簽章,驗證憑證
#replace-invert-color #replace-invert-color
replace-color.title=取代-反轉顏色 replace-color.title=取代-反轉顏色
@@ -629,12 +629,12 @@ HTMLToPDF.help=接受 HTML 文件和包含所需 html/css/images 等的 ZIP
HTMLToPDF.submit=轉換 HTMLToPDF.submit=轉換
HTMLToPDF.credit=此服務使用 WeasyPrint 進行轉換 HTMLToPDF.credit=此服務使用 WeasyPrint 進行轉換
HTMLToPDF.zoom=用於顯示網站的縮放級別。 HTMLToPDF.zoom=用於顯示網站的縮放級別。
HTMLToPDF.pageWidth=頁面寬度-以釐米為單位(空則使用預設值) HTMLToPDF.pageWidth=頁面寬度-以公分為單位(空則使用預設值)
HTMLToPDF.pageHeight=頁面高度-以釐米為單位(空則使用預設值) HTMLToPDF.pageHeight=頁面高度-以公分為單位(空則使用預設值)
HTMLToPDF.marginTop=頁面的上邊距-以毫米為單位(空則使用預設值) HTMLToPDF.marginTop=頁面的上邊距-以毫米為單位(空則使用預設值)
HTMLToPDF.marginBottom=頁面的下邊距-以毫米為單位(空則使用預設值) HTMLToPDF.marginBottom=頁面的下邊距-以毫米為單位(空則使用預設值)
HTMLToPDF.marginLeft=頁面的左邊距-以毫米為單位(空則使用預設值) HTMLToPDF.marginLeft=頁面的左邊距-以毫米為單位(空則使用預設值)
HTMLToPDF.marginRight=頁面的右邊距-以毫米為單位(空則使用預設值) HTMLToPDF.marginRight=頁面的右邊距-以毫米為單位(空則使用預設值)
HTMLToPDF.printBackground=渲染網站的背景。 HTMLToPDF.printBackground=渲染網站的背景。
HTMLToPDF.defaultHeader=啟用預設標頭(名稱和頁碼) HTMLToPDF.defaultHeader=啟用預設標頭(名稱和頁碼)
HTMLToPDF.cssMediaType=更改頁面的 CSS 媒體類型。 HTMLToPDF.cssMediaType=更改頁面的 CSS 媒體類型。
@@ -748,13 +748,13 @@ scalePages.submit=送出
certSign.title=憑證簽章 certSign.title=憑證簽章
certSign.header=使用你的憑證簽章(進行中) certSign.header=使用你的憑證簽章(進行中)
certSign.selectPDF=選擇要簽章的 PDF 檔案: certSign.selectPDF=選擇要簽章的 PDF 檔案:
certSign.jksNote=注意:如果你的證書類型未在下面列出,請使用 keytool 命令列工具將其轉換為 Java Keystore .jks然後選擇下面的 .jks 文件選項。 certSign.jksNote=注意:如果你的證書類型未被列在下方,請使用 keytool 命令列工具將其轉換為 Java Keystore .jks案格式,然後選擇下面的 .jks 檔案選項。
certSign.selectKey=選擇你的私鑰文件PKCS#8 格式,可能是 .pem 或 .der certSign.selectKey=選擇你的私鑰檔案PKCS#8 格式,副檔名可能是 .pem 或 .der
certSign.selectCert=選擇你的憑證文件X.509 格式,可能是 .pem 或 .der certSign.selectCert=選擇你的憑證檔案X.509 格式,副檔名可能是 .pem 或 .der
certSign.selectP12=選擇你的 PKCS#12 金鑰庫文件(.p12 或 .pfx選,如果提供,它應包含你的私鑰和憑證): certSign.selectP12=選擇你的 PKCS#12 金鑰庫檔案(副檔名可能是 .p12 或 .pfx,如果提供,它應包含你的私鑰和憑證):
certSign.selectJKS=選擇你的 Java Keystore 檔 .jks 或 .keystore certSign.selectJKS=選擇你的 Java Keystore 檔 副檔名可能是 .jks 或 .keystore
certSign.certType=憑證類型 certSign.certType=憑證類型
certSign.password=輸入你的金鑰庫或私鑰密碼(如果有): certSign.password=輸入你的金鑰庫或私鑰密碼(如果有的話
certSign.showSig=顯示簽章 certSign.showSig=顯示簽章
certSign.reason=原因 certSign.reason=原因
certSign.location=位置 certSign.location=位置
@@ -824,12 +824,12 @@ sign.save=儲存簽章
sign.personalSigs=個人簽章 sign.personalSigs=個人簽章
sign.sharedSigs=共用簽章 sign.sharedSigs=共用簽章
sign.noSavedSigs=尚未儲存任何簽章 sign.noSavedSigs=尚未儲存任何簽章
sign.addToAll=Add to all pages sign.addToAll=新增至所有頁面
sign.delete=Delete sign.delete=刪除
sign.first=First page sign.first=第一頁
sign.last=Last page sign.last=最後一頁
sign.next=Next page sign.next=下一頁
sign.previous=Previous page sign.previous=上一頁
#repair #repair
repair.title=修復 repair.title=修復
@@ -946,39 +946,39 @@ pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1
multiTool.title=PDF 複合工具 multiTool.title=PDF 複合工具
multiTool.header=PDF 複合工具 multiTool.header=PDF 複合工具
multiTool.uploadPrompts=檔名 multiTool.uploadPrompts=檔名
multiTool.selectAll=Select All multiTool.selectAll=全選
multiTool.deselectAll=Deselect All multiTool.deselectAll=取消全選
multiTool.selectPages=Page Select multiTool.selectPages=選取頁面
multiTool.selectedPages=Selected Pages multiTool.selectedPages=已選取的頁面
multiTool.page=Page multiTool.page=頁面
multiTool.deleteSelected=Delete Selected multiTool.deleteSelected=刪除已選取的項目
multiTool.downloadAll=Export multiTool.downloadAll=匯出
multiTool.downloadSelected=Export Selected multiTool.downloadSelected=匯出已選取的項目
multiTool.insertPageBreak=Insert Page Break multiTool.insertPageBreak=插入分頁符號
multiTool.addFile=Add File multiTool.addFile=新增檔案
multiTool.rotateLeft=Rotate Left multiTool.rotateLeft=向左旋轉
multiTool.rotateRight=Rotate Right multiTool.rotateRight=向右旋轉
multiTool.split=Split multiTool.split=分割
multiTool.moveLeft=Move Left multiTool.moveLeft=向左移動
multiTool.moveRight=Move Right multiTool.moveRight=向右移動
multiTool.delete=Delete multiTool.delete=刪除
multiTool.dragDropMessage=Page(s) Selected multiTool.dragDropMessage=已選取的頁面
multiTool.undo=Undo multiTool.undo=復原
multiTool.redo=Redo multiTool.redo=重做
#decrypt #decrypt
decrypt.passwordPrompt=This file is password-protected. Please enter the password: decrypt.passwordPrompt=此檔案已受密碼保護。請輸入密碼:
decrypt.cancelled=Operation cancelled for PDF: {0} decrypt.cancelled=已取消處理 PDF{0}
decrypt.noPassword=No password provided for encrypted PDF: {0} decrypt.noPassword=未提供加密 PDF 的密碼:{0}
decrypt.invalidPassword=Please try again with the correct password. decrypt.invalidPassword=請重新輸入正確的密碼。
decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} decrypt.invalidPasswordHeader=密碼錯誤或不支援的加密方式,PDF{0}
decrypt.unexpectedError=There was an error processing the file. Please try again. decrypt.unexpectedError=處理檔案時發生錯誤。請再試一次。
decrypt.serverError=Server error while decrypting: {0} decrypt.serverError=解密時發生伺服器錯誤:{0}
decrypt.success=File decrypted successfully. decrypt.success=檔案已成功解密。
#multiTool-advert #multiTool-advert
multiTool-advert.message=This feature is also available in our <a href="{0}">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features! multiTool-advert.message=此功能也可以在我們的<a href="{0}">複合工具頁面</a>中使用。前往查看並體驗更強大的逐頁操作介面及其他進階功能!
#view pdf #view pdf
viewPdf.title=檢視 PDF viewPdf.title=檢視 PDF
@@ -1195,7 +1195,7 @@ split-by-size-or-count.submit=送出
#overlay-pdfs #overlay-pdfs
overlay-pdfs.header=覆蓋 PDF 檔案 overlay-pdfs.header=覆蓋 PDF 檔案
overlay-pdfs.baseFile.label=選擇基 PDF 檔案 overlay-pdfs.baseFile.label=選擇基 PDF 檔案
overlay-pdfs.overlayFiles.label=選擇覆蓋 PDF 檔案 overlay-pdfs.overlayFiles.label=選擇覆蓋 PDF 檔案
overlay-pdfs.mode.label=選擇覆蓋模式 overlay-pdfs.mode.label=選擇覆蓋模式
overlay-pdfs.mode.sequential=序列覆蓋 overlay-pdfs.mode.sequential=序列覆蓋
@@ -1281,49 +1281,49 @@ splitByChapters.desc.4=允許重複:如果勾選,允許同一頁面上的多
splitByChapters.submit=分割 PDF splitByChapters.submit=分割 PDF
#File Chooser #File Chooser
fileChooser.click=Click fileChooser.click=點選
fileChooser.or=or fileChooser.or=
fileChooser.dragAndDrop=Drag & Drop fileChooser.dragAndDrop=拖放檔案
fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here fileChooser.hoveredDragAndDrop=將檔案拖放至此
#release notes #release notes
releases.footer=Releases releases.footer=版本資訊
releases.title=Release Notes releases.title=版本資訊
releases.header=Release Notes releases.header=版本資訊
releases.current.version=Current Release releases.current.version=目前版本
releases.note=Release notes are only available in English releases.note=版本資訊僅提供英文版本
#Validate Signature #Validate Signature
validateSignature.title=Validate PDF Signatures validateSignature.title=驗證 PDF 簽章
validateSignature.header=Validate Digital Signatures validateSignature.header=驗證數位簽章
validateSignature.selectPDF=Select signed PDF file validateSignature.selectPDF=選擇已簽章的 PDF 檔案
validateSignature.submit=Validate Signatures validateSignature.submit=驗證簽章
validateSignature.results=Validation Results validateSignature.results=驗證結果
validateSignature.status=Status validateSignature.status=狀態
validateSignature.signer=Signer validateSignature.signer=簽署者
validateSignature.date=Date validateSignature.date=日期
validateSignature.reason=Reason validateSignature.reason=原因
validateSignature.location=Location validateSignature.location=位置
validateSignature.noSignatures=No digital signatures found in this document validateSignature.noSignatures=此文件中未找到數位簽章
validateSignature.status.valid=Valid validateSignature.status.valid=有效
validateSignature.status.invalid=Invalid validateSignature.status.invalid=無效
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity validateSignature.chain.invalid=憑證鏈驗證失敗 - 無法驗證簽署者身份
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified validateSignature.trust.invalid=憑證不在信任儲存區中 - 無法驗證來源
validateSignature.cert.expired=Certificate has expired validateSignature.cert.expired=憑證已過期
validateSignature.cert.revoked=Certificate has been revoked validateSignature.cert.revoked=憑證已被撤銷
validateSignature.signature.info=Signature Information validateSignature.signature.info=簽章資訊
validateSignature.signature=Signature validateSignature.signature=簽章
validateSignature.signature.mathValid=Signature is mathematically valid BUT: validateSignature.signature.mathValid=簽章在數學上有效,但:
validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) validateSignature.selectCustomCert=自訂 X.509 憑證檔案(選填)
validateSignature.cert.info=Certificate Details validateSignature.cert.info=憑證詳細資訊
validateSignature.cert.issuer=Issuer validateSignature.cert.issuer=發行者
validateSignature.cert.subject=Subject validateSignature.cert.subject=主旨
validateSignature.cert.serialNumber=Serial Number validateSignature.cert.serialNumber=序號
validateSignature.cert.validFrom=Valid From validateSignature.cert.validFrom=有效期自
validateSignature.cert.validUntil=Valid Until validateSignature.cert.validUntil=有效期至
validateSignature.cert.algorithm=Algorithm validateSignature.cert.algorithm=演算法
validateSignature.cert.keySize=Key Size validateSignature.cert.keySize=金鑰長度
validateSignature.cert.version=Version validateSignature.cert.version=版本
validateSignature.cert.keyUsage=Key Usage validateSignature.cert.keyUsage=金鑰用途
validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.selfSigned=自我簽署
validateSignature.cert.bits=bits validateSignature.cert.bits=位元

View File

@@ -89,10 +89,10 @@
<td style="align-content: center;"> <td style="align-content: center;">
<form th:action="@{'/api/v1/user/admin/changeUserEnabled/' + ${user.username}}" method="post" onsubmit="return confirmChangeUserStatus()"> <form th:action="@{'/api/v1/user/admin/changeUserEnabled/' + ${user.username}}" method="post" onsubmit="return confirmChangeUserStatus()">
<input type="hidden" name="enabled" th:value="!${user.enabled}" /> <input type="hidden" name="enabled" th:value="!${user.enabled}" />
<button th:if="${user.enabled}" th:title="#{adminUserSettings.enabledUser}" type="submit" class="btn btn-success btn-sm"> <button type="submit" th:if="${user.enabled}" th:title="#{adminUserSettings.enabledUser}" class="btn btn-success btn-sm">
<span class="material-symbols-rounded">person</span> <span class="material-symbols-rounded">person</span>
</button> </button>
<button th:unless="${user.enabled}" th:title="#{adminUserSettings.disabledUser}" type="submit" class="btn btn-danger btn-sm"> <button type="submit" th:unless="${user.enabled}" th:title="#{adminUserSettings.disabledUser}" class="btn btn-danger btn-sm">
<span class="material-symbols-rounded">person_off</span> <span class="material-symbols-rounded">person_off</span>
</button> </button>
</form> </form>

View File

@@ -19,7 +19,7 @@
<form id="PDFToCSVForm" th:action="@{'/api/v1/convert/pdf/csv'}" method="post" enctype="multipart/form-data"> <form id="PDFToCSVForm" th:action="@{'/api/v1/convert/pdf/csv'}" method="post" enctype="multipart/form-data">
<input id="pageId" type="hidden" name="pageId"> <input id="pageId" type="hidden" name="pageId">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='application/pdf')}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='application/pdf')}"></div>
<button type="submit" class="btn btn-primary" th:text="#{PDFToCSV.submit}" id="submitBtn"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToCSV.submit}"></button>
</form> </form>
<p id="instruction-text" style="margin: 0; display: none" th:text="#{PDFToCSV.prompt}"></p> <p id="instruction-text" style="margin: 0; display: none" th:text="#{PDFToCSV.prompt}"></p>

View File

@@ -22,7 +22,7 @@
<input id="y" type="hidden" name="y"> <input id="y" type="hidden" name="y">
<input id="width" type="hidden" name="width"> <input id="width" type="hidden" name="width">
<input id="height" type="hidden" name="height"> <input id="height" type="hidden" name="height">
<button id="submitBtn" type="submit" class="btn btn-primary" th:text="#{crop.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{crop.submit}"></button>
</form> </form>
<div id="canvasesContainer" style="position: relative; margin: 20px 0; width: auto;"> <div id="canvasesContainer" style="position: relative; margin: 20px 0; width: auto;">
<canvas id="cropPdfCanvas" style="width: 100%"></canvas> <canvas id="cropPdfCanvas" style="width: 100%"></canvas>

View File

@@ -93,7 +93,7 @@
<input type="checkbox" name="remember-me" id="remember-me"> <input type="checkbox" name="remember-me" id="remember-me">
<label for="remember-me" th:text="#{login.rememberme}"></label> <label for="remember-me" th:text="#{login.rememberme}"></label>
</div> </div>
<button class="w-100 btn btn-lg btn-primary" type="submit" th:text="#{login.signin}">Sign in</button> <button type="submit" class="w-100 btn btn-lg btn-primary" th:text="#{login.signin}">Sign in</button>
</form> </form>
<div class="mt-3"> <!-- Added a margin-top for spacing --> <div class="mt-3"> <!-- Added a margin-top for spacing -->
<div class="dropdown text-center"> <div class="dropdown text-center">

View File

@@ -83,7 +83,7 @@
<button type="button" class="btn btn-secondary" id="addMetadataBtn" th:text="#{changeMetadata.selectText.5}"></button> <button type="button" class="btn btn-secondary" id="addMetadataBtn" th:text="#{changeMetadata.selectText.5}"></button>
<br> <br>
<br> <br>
<button class="btn btn-primary" type="submit" id="submitBtn" th:text="#{changeMetadata.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{changeMetadata.submit}"></button>
<script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script> <script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script>
<script type="module" th:src="@{'/js/pages/change-metadata.js'}"> <script type="module" th:src="@{'/js/pages/change-metadata.js'}">
</script> </script>

View File

@@ -2,8 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" <html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
xmlns:th="https://www.thymeleaf.org"> xmlns:th="https://www.thymeleaf.org">
<head> <head>
<th:block <th:block th:insert="~{fragments/common :: head(title=#{removeImage.title}, header=#{removeImage.header})}"></th:block>
th:insert="~{fragments/common :: head(title=#{removeImage.title}, header=#{removeImage.header})}"></th:block>
<link rel="stylesheet" th:href="@{'/css/removeImage.css'}"> <link rel="stylesheet" th:href="@{'/css/removeImage.css'}">
</head> </head>

View File

@@ -131,7 +131,7 @@
<label for="convertPDFToImage" th:text="#{watermark.selectText.10}"></label> <label for="convertPDFToImage" th:text="#{watermark.selectText.10}"></label>
</div> </div>
<div class="mb-3 text-left"> <div class="mb-3 text-left">
<input type="submit" id="submitBtn" th:value="#{watermark.submit}" class="btn btn-primary"> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{watermark.submit}"></button>
</div> </div>
</form> </form>

View File

@@ -74,7 +74,7 @@
<label for="convertPDFToImage" th:text="#{autoRedact.convertPDFToImageLabel}"></label> <label for="convertPDFToImage" th:text="#{autoRedact.convertPDFToImageLabel}"></label>
</div> </div>
<button type="submit" class="btn btn-primary" th:text="#{autoRedact.submitButton}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{autoRedact.submitButton}"></button>
</form> </form>
</div> </div>
</div> </div>

View File

@@ -26,7 +26,7 @@
<input type="text" id="watermarkText" name="watermarkText" class="form-control" placeholder="Stirling-PDF" required /> <input type="text" id="watermarkText" name="watermarkText" class="form-control" placeholder="Stirling-PDF" required />
</div> </div>
<div class="mb-3 text-center"> <div class="mb-3 text-center">
<input type="submit" id="submitBtn" th:value="#{remove-watermark.submit}" class="btn btn-primary" /> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{remove-watermark.submit}"></button>
</div> </div>
</form> </form>
</div> </div>