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:
issue_comment:
types: [created]
permissions:
pull-requests: write
contents: write
jobs:
check-comment:
runs-on: ubuntu-latest

View File

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

View File

@@ -14,6 +14,9 @@ jobs:
check-files:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout main branch first
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:
branches:
- master
permissions:
contents: read
jobs:
push:
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 {
mavenCentral()
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://maven.pkg.github.com/jcefmaven/jcefmaven" }

View File

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

View File

@@ -89,10 +89,10 @@
<td style="align-content: center;">
<form th:action="@{'/api/v1/user/admin/changeUserEnabled/' + ${user.username}}" method="post" onsubmit="return confirmChangeUserStatus()">
<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>
</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>
</button>
</form>

View File

@@ -19,7 +19,7 @@
<form id="PDFToCSVForm" th:action="@{'/api/v1/convert/pdf/csv'}" method="post" enctype="multipart/form-data">
<input id="pageId" type="hidden" name="pageId">
<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>
<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="width" type="hidden" name="width">
<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>
<div id="canvasesContainer" style="position: relative; margin: 20px 0; width: auto;">
<canvas id="cropPdfCanvas" style="width: 100%"></canvas>

View File

@@ -93,7 +93,7 @@
<input type="checkbox" name="remember-me" id="remember-me">
<label for="remember-me" th:text="#{login.rememberme}"></label>
</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>
<div class="mt-3"> <!-- Added a margin-top for spacing -->
<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>
<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="@{'/js/pages/change-metadata.js'}">
</script>

View File

@@ -2,8 +2,7 @@
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}"
xmlns:th="https://www.thymeleaf.org">
<head>
<th:block
th:insert="~{fragments/common :: head(title=#{removeImage.title}, header=#{removeImage.header})}"></th:block>
<th:block th:insert="~{fragments/common :: head(title=#{removeImage.title}, header=#{removeImage.header})}"></th:block>
<link rel="stylesheet" th:href="@{'/css/removeImage.css'}">
</head>
@@ -20,7 +19,7 @@
<span class="material-symbols-rounded tool-header-icon word">remove_selection</span>
<span class="tool-header-text" th:text="#{removeImage.header}"></span>
</div>
<form th:action="@{'api/v1/general/remove-image-pdf'}" method="post" enctype="multipart/form-data">
<form th:action="@{'api/v1/general/remove-image-pdf'}" method="post" enctype="multipart/form-data">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='application/pdf')}"></div>
<br>

View File

@@ -131,7 +131,7 @@
<label for="convertPDFToImage" th:text="#{watermark.selectText.10}"></label>
</div>
<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>
</form>

View File

@@ -74,7 +74,7 @@
<label for="convertPDFToImage" th:text="#{autoRedact.convertPDFToImageLabel}"></label>
</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>
</div>
</div>

View File

@@ -26,7 +26,7 @@
<input type="text" id="watermarkText" name="watermarkText" class="form-control" placeholder="Stirling-PDF" required />
</div>
<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>
</form>
</div>