Compare commits
34 Commits
fixPipelin
...
aws
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c297b4c561 | ||
|
|
50b4473a0a | ||
|
|
58b07d0d0d | ||
|
|
32a505609a | ||
|
|
69da443096 | ||
|
|
ee6fbdd61f | ||
|
|
a5da7fc2c3 | ||
|
|
1f92318df4 | ||
|
|
9df5e2aca0 | ||
|
|
6aad45fcec | ||
|
|
ec5018cc80 | ||
|
|
2404ceb46e | ||
|
|
f23a2d508f | ||
|
|
f5ca02df1d | ||
|
|
1e29cf43fb | ||
|
|
ebfe00717d | ||
|
|
063a7244a3 | ||
|
|
7b9e52dec6 | ||
|
|
296dbc5dea | ||
|
|
f6654a06d9 | ||
|
|
219adb99ec | ||
|
|
23a7b11a74 | ||
|
|
6ac804e994 | ||
|
|
09ff207888 | ||
|
|
880ca6af7f | ||
|
|
3797a6827c | ||
|
|
0f5d95661c | ||
|
|
d5aea7f0b6 | ||
|
|
0412263d01 | ||
|
|
d3d9158641 | ||
|
|
c785fb20d1 | ||
|
|
ac09831654 | ||
|
|
487a82eb65 | ||
|
|
0f5db746c7 |
2
.github/workflows/PR-Demo-Comment.yml
vendored
2
.github/workflows/PR-Demo-Comment.yml
vendored
@@ -121,7 +121,7 @@ jobs:
|
|||||||
password: ${{ secrets.DOCKER_HUB_API }}
|
password: ${{ secrets.DOCKER_HUB_API }}
|
||||||
|
|
||||||
- name: Build and push PR-specific image
|
- name: Build and push PR-specific image
|
||||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
|
|||||||
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@@ -49,7 +49,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload Test Reports
|
- name: Upload Test Reports
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: test-reports-jdk-${{ matrix.jdk-version }}
|
name: test-reports-jdk-${{ matrix.jdk-version }}
|
||||||
path: |
|
path: |
|
||||||
@@ -80,7 +80,7 @@ jobs:
|
|||||||
|
|
||||||
- name: FAILED - check the licenses for compatibility
|
- name: FAILED - check the licenses for compatibility
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: dependencies-without-allowed-license.json
|
name: dependencies-without-allowed-license.json
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
4
.github/workflows/licenses-update.yml
vendored
4
.github/workflows/licenses-update.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3
|
uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # v1.11.5
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
|
|
||||||
- name: FAILED - check the licenses for compatibility
|
- name: FAILED - check the licenses for compatibility
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: dependencies-without-allowed-license.json
|
name: dependencies-without-allowed-license.json
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
10
.github/workflows/multiOSReleases.yml
vendored
10
.github/workflows/multiOSReleases.yml
vendored
@@ -80,7 +80,7 @@ jobs:
|
|||||||
mv ./build/libs/Stirling-PDF-${{ needs.read_versions.outputs.version }}.jar ./binaries/Stirling-PDF${{ matrix.file_suffix }}.jar
|
mv ./build/libs/Stirling-PDF-${{ needs.read_versions.outputs.version }}.jar ./binaries/Stirling-PDF${{ matrix.file_suffix }}.jar
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
@@ -114,7 +114,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Upload signed artifacts
|
- name: Upload signed artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
@@ -188,7 +188,7 @@ jobs:
|
|||||||
run: ls -R ./binaries
|
run: ls -R ./binaries
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
@@ -224,7 +224,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install Cosign
|
- name: Install Cosign
|
||||||
if: matrix.os == 'windows-latest'
|
if: matrix.os == 'windows-latest'
|
||||||
uses: sigstore/cosign-installer@c56c2d3e59e4281cc41dea2217323ba5694b171e # v3.8.0
|
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
|
||||||
|
|
||||||
- name: Generate key pair
|
- name: Generate key pair
|
||||||
if: matrix.os == 'windows-latest'
|
if: matrix.os == 'windows-latest'
|
||||||
@@ -255,7 +255,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Upload signed artifacts
|
- name: Upload signed artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|||||||
2
.github/workflows/pre_commit.yml
vendored
2
.github/workflows/pre_commit.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3
|
uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # v1.11.5
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
|
|||||||
108
.github/workflows/push-docker.yml
vendored
108
.github/workflows/push-docker.yml
vendored
@@ -6,6 +6,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- main
|
- main
|
||||||
|
- aws
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -42,7 +43,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install cosign
|
- name: Install cosign
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
uses: sigstore/cosign-installer@c56c2d3e59e4281cc41dea2217323ba5694b171e # v3.8.0
|
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
|
||||||
with:
|
with:
|
||||||
cosign-release: "v2.4.1"
|
cosign-release: "v2.4.1"
|
||||||
|
|
||||||
@@ -74,100 +75,30 @@ jobs:
|
|||||||
id: repoowner
|
id: repoowner
|
||||||
run: echo "lowercase=$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')" >> $GITHUB_OUTPUT
|
run: echo "lowercase=$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Generate tags
|
- name: Configure AWS credentials
|
||||||
id: meta
|
uses: aws-actions/configure-aws-credentials@v4
|
||||||
uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1
|
|
||||||
with:
|
with:
|
||||||
images: |
|
role-to-assume: ${{ secrets.AWS_GITHUB_ROLE }}
|
||||||
${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf
|
aws-region: ${{ secrets.AWS_REGION }}
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf
|
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/stirling-pdf
|
|
||||||
${{ secrets.DOCKER_HUB_ORG_USERNAME }}/stirling-pdf
|
|
||||||
tags: |
|
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }},enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
type=raw,value=alpha,enable=${{ github.ref == 'refs/heads/main' }}
|
|
||||||
|
|
||||||
- name: Build and push main Dockerfile
|
- name: Login to AWS Public ECR
|
||||||
id: build-push-regular
|
uses: aws-actions/amazon-ecr-login@v2
|
||||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
|
||||||
with:
|
with:
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
registry-type: public
|
||||||
context: .
|
|
||||||
file: ./Dockerfile
|
|
||||||
push: true
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
|
||||||
provenance: true
|
|
||||||
sbom: true
|
|
||||||
|
|
||||||
- name: Sign regular images
|
|
||||||
if: github.ref == 'refs/heads/master'
|
|
||||||
env:
|
|
||||||
DIGEST: ${{ steps.build-push-regular.outputs.digest }}
|
|
||||||
TAGS: ${{ steps.meta.outputs.tags }}
|
|
||||||
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
|
||||||
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
echo "$TAGS" | tr ',' '\n' | while read -r tag; do
|
|
||||||
cosign sign --yes \
|
|
||||||
--key env://COSIGN_PRIVATE_KEY \
|
|
||||||
"${tag}@${DIGEST}"
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Generate tags ultra-lite
|
|
||||||
id: meta2
|
|
||||||
uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1
|
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
|
||||||
images: |
|
|
||||||
${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf
|
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf
|
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/stirling-pdf
|
|
||||||
${{ secrets.DOCKER_HUB_ORG_USERNAME }}/stirling-pdf
|
|
||||||
tags: |
|
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }}
|
|
||||||
|
|
||||||
- name: Build and push Dockerfile-ultra-lite
|
|
||||||
id: build-push-lite
|
|
||||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile.ultra-lite
|
|
||||||
push: true
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
tags: ${{ steps.meta2.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta2.outputs.labels }}
|
|
||||||
build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
|
|
||||||
platforms: linux/amd64,linux/arm64/v8
|
|
||||||
provenance: true
|
|
||||||
sbom: true
|
|
||||||
|
|
||||||
- name: Generate tags fat
|
- name: Generate tags fat
|
||||||
id: meta3
|
id: meta3
|
||||||
uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1
|
uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf
|
public.ecr.aws/${{ secrets.AWS_PUBLIC_ECR_ALIAS }}/stirling-pdf
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/s-pdf
|
|
||||||
ghcr.io/${{ steps.repoowner.outputs.lowercase }}/stirling-pdf
|
|
||||||
${{ secrets.DOCKER_HUB_ORG_USERNAME }}/stirling-pdf
|
|
||||||
tags: |
|
tags: |
|
||||||
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-fat,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=${{ steps.versionNumber.outputs.versionNumber }}-fat,enable=${{ github.ref == 'refs/heads/aws' }}
|
||||||
type=raw,value=latest-fat,enable=${{ github.ref == 'refs/heads/master' }}
|
type=raw,value=latest-fat,enable=${{ github.ref == 'refs/heads/aws' }}
|
||||||
|
|
||||||
- name: Build and push main Dockerfile fat
|
- name: Build and push main Dockerfile fat
|
||||||
id: build-push-fat
|
id: build-push-fat
|
||||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0
|
||||||
if: github.ref != 'refs/heads/main'
|
|
||||||
with:
|
with:
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
context: .
|
context: .
|
||||||
@@ -182,14 +113,5 @@ jobs:
|
|||||||
provenance: true
|
provenance: true
|
||||||
sbom: true
|
sbom: true
|
||||||
|
|
||||||
- name: Sign fat images
|
|
||||||
if: github.ref == 'refs/heads/master'
|
|
||||||
env:
|
|
||||||
DIGEST: ${{ steps.build-push-fat.outputs.digest }}
|
|
||||||
TAGS: ${{ steps.meta3.outputs.tags }}
|
|
||||||
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
|
||||||
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
|
|
||||||
run: |
|
|
||||||
echo "$TAGS" | tr ',' '\n' | while read -r tag; do
|
|
||||||
cosign sign --key env://COSIGN_PRIVATE_KEY --yes "${tag}@${DIGEST}"
|
|
||||||
done
|
|
||||||
|
|||||||
6
.github/workflows/releaseArtifacts.yml
vendored
6
.github/workflows/releaseArtifacts.yml
vendored
@@ -63,7 +63,7 @@ jobs:
|
|||||||
ls -R ./build/launch4j
|
ls -R ./build/launch4j
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: binaries${{ matrix.file_suffix }}
|
name: binaries${{ matrix.file_suffix }}
|
||||||
path: |
|
path: |
|
||||||
@@ -95,7 +95,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Install Cosign
|
- name: Install Cosign
|
||||||
uses: sigstore/cosign-installer@c56c2d3e59e4281cc41dea2217323ba5694b171e # v3.8.0
|
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
|
||||||
|
|
||||||
- name: Generate key pair
|
- name: Generate key pair
|
||||||
run: cosign generate-key-pair
|
run: cosign generate-key-pair
|
||||||
@@ -139,7 +139,7 @@ jobs:
|
|||||||
./launch4j/Stirling-PDF-Server${{ matrix.file_suffix }}.exe
|
./launch4j/Stirling-PDF-Server${{ matrix.file_suffix }}.exe
|
||||||
|
|
||||||
- name: Upload signed artifacts
|
- name: Upload signed artifacts
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: signed${{ matrix.file_suffix }}
|
name: signed${{ matrix.file_suffix }}
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
6
.github/workflows/scorecards.yml
vendored
6
.github/workflows/scorecards.yml
vendored
@@ -44,7 +44,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Run analysis"
|
- name: "Run analysis"
|
||||||
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
|
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
|
||||||
with:
|
with:
|
||||||
results_file: results.sarif
|
results_file: results.sarif
|
||||||
results_format: sarif
|
results_format: sarif
|
||||||
@@ -66,7 +66,7 @@ jobs:
|
|||||||
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
|
||||||
# format to the repository Actions tab.
|
# format to the repository Actions tab.
|
||||||
- name: "Upload artifact"
|
- name: "Upload artifact"
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: SARIF file
|
name: SARIF file
|
||||||
path: results.sarif
|
path: results.sarif
|
||||||
@@ -74,6 +74,6 @@ jobs:
|
|||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9
|
uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
4
.github/workflows/sonarqube.yml
vendored
4
.github/workflows/sonarqube.yml
vendored
@@ -46,7 +46,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload Problems Report on Failure
|
- name: Upload Problems Report on Failure
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: gradle-problems-report
|
name: gradle-problems-report
|
||||||
path: build/reports/problems/problems-report.html
|
path: build/reports/problems/problems-report.html
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Upload Sonar Logs on Failure
|
- name: Upload Sonar Logs on Failure
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||||
with:
|
with:
|
||||||
name: sonar-logs
|
name: sonar-logs
|
||||||
path: |
|
path: |
|
||||||
|
|||||||
4
.github/workflows/sync_files.yml
vendored
4
.github/workflows/sync_files.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3
|
uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # v1.11.5
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.GH_APP_ID }}
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate GitHub App Token
|
- name: Generate GitHub App Token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3
|
uses: actions/create-github-app-token@0d564482f06ca65fa9e77e2510873638c82206f2 # v1.11.5
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.GH_APP_ID }}
|
app-id: ${{ vars.GH_APP_ID }}
|
||||||
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
|
|||||||
2
.github/workflows/testdriver.yml
vendored
2
.github/workflows/testdriver.yml
vendored
@@ -46,7 +46,7 @@ jobs:
|
|||||||
password: ${{ secrets.DOCKER_HUB_API }}
|
password: ${{ secrets.DOCKER_HUB_API }}
|
||||||
|
|
||||||
- name: Build and push test image
|
- name: Build and push test image
|
||||||
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./Dockerfile
|
file: ./Dockerfile
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/a
|
|||||||
qpdf \
|
qpdf \
|
||||||
tesseract-ocr-data-eng \
|
tesseract-ocr-data-eng \
|
||||||
|
|
||||||
font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra \
|
font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra font-liberation font-linux-libertine \
|
||||||
# CV
|
# CV
|
||||||
py3-opencv \
|
py3-opencv \
|
||||||
python3 \
|
python3 \
|
||||||
|
|||||||
@@ -148,11 +148,11 @@ Stirling-PDF currently supports 39 languages!
|
|||||||
| Simplified Chinese (简体中文) (zh_CN) |  |
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
| Slovakian (Slovensky) (sk_SK) |  |
|
| Slovakian (Slovensky) (sk_SK) |  |
|
||||||
| Slovenian (Slovenščina) (sl_SI) |  |
|
| Slovenian (Slovenščina) (sl_SI) |  |
|
||||||
| Spanish (Español) (es_ES) |  |
|
| Spanish (Español) (es_ES) |  |
|
||||||
| Swedish (Svenska) (sv_SE) |  |
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
| Thai (ไทย) (th_TH) |  |
|
| Thai (ไทย) (th_TH) |  |
|
||||||
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||||
| Turkish (Türkçe) (tr_TR) |  |
|
| Turkish (Türkçe) (tr_TR) |  |
|
||||||
| Ukrainian (Українська) (uk_UA) |  |
|
| Ukrainian (Українська) (uk_UA) |  |
|
||||||
| Vietnamese (Tiếng Việt) (vi_VN) |  |
|
| Vietnamese (Tiếng Việt) (vi_VN) |  |
|
||||||
|
|||||||
15
build.gradle
15
build.gradle
@@ -1,6 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id "java"
|
id "java"
|
||||||
id "org.springframework.boot" version "3.4.1"
|
id "org.springframework.boot" version "3.4.3"
|
||||||
id "io.spring.dependency-management" version "1.1.7"
|
id "io.spring.dependency-management" version "1.1.7"
|
||||||
id "org.springdoc.openapi-gradle-plugin" version "1.8.0"
|
id "org.springdoc.openapi-gradle-plugin" version "1.8.0"
|
||||||
id "io.swagger.swaggerhub" version "1.3.2"
|
id "io.swagger.swaggerhub" version "1.3.2"
|
||||||
@@ -15,12 +15,12 @@ plugins {
|
|||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
springBootVersion = "3.4.2"
|
springBootVersion = "3.4.3"
|
||||||
pdfboxVersion = "3.0.4"
|
pdfboxVersion = "3.0.4"
|
||||||
imageioVersion = "3.12.0"
|
imageioVersion = "3.12.0"
|
||||||
lombokVersion = "1.18.36"
|
lombokVersion = "1.18.36"
|
||||||
bouncycastleVersion = "1.80"
|
bouncycastleVersion = "1.80"
|
||||||
springSecuritySamlVersion = "6.4.2"
|
springSecuritySamlVersion = "6.4.3"
|
||||||
openSamlVersion = "4.3.2"
|
openSamlVersion = "4.3.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,8 +294,8 @@ configurations.all {
|
|||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
//tmp for security bumps
|
//tmp for security bumps
|
||||||
implementation 'ch.qos.logback:logback-core:1.5.15'
|
implementation 'ch.qos.logback:logback-core:1.5.16'
|
||||||
implementation 'ch.qos.logback:logback-classic:1.5.15'
|
implementation 'ch.qos.logback:logback-classic:1.5.16'
|
||||||
|
|
||||||
|
|
||||||
// Exclude vulnerable BouncyCastle version used in tableau
|
// Exclude vulnerable BouncyCastle version used in tableau
|
||||||
@@ -306,8 +306,7 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
|
||||||
implementation 'org.apache.commons:commons-compress:1.26.0'
|
implementation "me.friwi:jcefmaven:132.3.1"
|
||||||
implementation "me.friwi:jcefmaven:127.3.1"
|
|
||||||
implementation "org.openjfx:javafx-controls:21"
|
implementation "org.openjfx:javafx-controls:21"
|
||||||
implementation "org.openjfx:javafx-swing:21"
|
implementation "org.openjfx:javafx-swing:21"
|
||||||
}
|
}
|
||||||
@@ -332,7 +331,7 @@ dependencies {
|
|||||||
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
|
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
|
||||||
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
|
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
|
||||||
|
|
||||||
implementation "org.springframework.session:spring-session-core:3.4.1"
|
implementation "org.springframework.session:spring-session-core:3.4.2"
|
||||||
implementation "org.springframework:spring-jdbc:6.2.3"
|
implementation "org.springframework:spring-jdbc:6.2.3"
|
||||||
|
|
||||||
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package stirling.software.SPDF;
|
package stirling.software.SPDF;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ServerSocket;
|
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
@@ -29,6 +28,7 @@ import stirling.software.SPDF.UI.WebBrowser;
|
|||||||
import stirling.software.SPDF.config.ConfigInitializer;
|
import stirling.software.SPDF.config.ConfigInitializer;
|
||||||
import stirling.software.SPDF.config.InstallationPathConfig;
|
import stirling.software.SPDF.config.InstallationPathConfig;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
|
import stirling.software.SPDF.utils.UrlUtils;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@@ -64,6 +64,12 @@ public class SPDFApplication {
|
|||||||
app.setHeadless(false);
|
app.setHeadless(false);
|
||||||
props.put("java.awt.headless", "false");
|
props.put("java.awt.headless", "false");
|
||||||
props.put("spring.main.web-application-type", "servlet");
|
props.put("spring.main.web-application-type", "servlet");
|
||||||
|
|
||||||
|
int desiredPort = 8080;
|
||||||
|
String port = UrlUtils.findAvailablePort(desiredPort);
|
||||||
|
props.put("server.port", port);
|
||||||
|
System.setProperty("server.port", port);
|
||||||
|
log.info("Desktop UI mode: Using port {}", port);
|
||||||
}
|
}
|
||||||
|
|
||||||
app.setAdditionalProfiles(getActiveProfile(args));
|
app.setAdditionalProfiles(getActiveProfile(args));
|
||||||
@@ -160,7 +166,17 @@ public class SPDFApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Value("${server.port:8080}")
|
@Value("${server.port:8080}")
|
||||||
public void setServerPortStatic(String port) {
|
public void setServerPort(String port) {
|
||||||
|
if ("auto".equalsIgnoreCase(port)) {
|
||||||
|
// Use Spring Boot's automatic port assignment (server.port=0)
|
||||||
|
SPDFApplication.serverPortStatic =
|
||||||
|
"0"; // This will let Spring Boot assign an available port
|
||||||
|
} else {
|
||||||
|
SPDFApplication.serverPortStatic = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setServerPortStatic(String port) {
|
||||||
if ("auto".equalsIgnoreCase(port)) {
|
if ("auto".equalsIgnoreCase(port)) {
|
||||||
// Use Spring Boot's automatic port assignment (server.port=0)
|
// Use Spring Boot's automatic port assignment (server.port=0)
|
||||||
SPDFApplication.serverPortStatic =
|
SPDFApplication.serverPortStatic =
|
||||||
@@ -197,36 +213,11 @@ public class SPDFApplication {
|
|||||||
return new String[] {"default"};
|
return new String[] {"default"};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isPortAvailable(int port) {
|
|
||||||
try (ServerSocket socket = new ServerSocket(port)) {
|
|
||||||
return true;
|
|
||||||
} catch (IOException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optionally keep this method if you want to provide a manual port-incrementation fallback.
|
|
||||||
private static String findAvailablePort(int startPort) {
|
|
||||||
int port = startPort;
|
|
||||||
while (!isPortAvailable(port)) {
|
|
||||||
port++;
|
|
||||||
}
|
|
||||||
return String.valueOf(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getStaticBaseUrl() {
|
public static String getStaticBaseUrl() {
|
||||||
return baseUrlStatic;
|
return baseUrlStatic;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNonStaticBaseUrl() {
|
|
||||||
return baseUrlStatic;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getStaticPort() {
|
public static String getStaticPort() {
|
||||||
return serverPortStatic;
|
return serverPortStatic;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNonStaticPort() {
|
|
||||||
return serverPortStatic;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ package stirling.software.SPDF.config;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import stirling.software.SPDF.config.interfaces.ShowAdminInterface;
|
import stirling.software.SPDF.config.interfaces.ShowAdminInterface;
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
|
|
||||||
@Service
|
@Configuration
|
||||||
class AppUpdateService {
|
class AppUpdateService {
|
||||||
|
|
||||||
private final ApplicationProperties applicationProperties;
|
private final ApplicationProperties applicationProperties;
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ public class RuntimePathConfig {
|
|||||||
String weasyPrintPath = isDocker ? "/opt/venv/bin/weasyprint" : "weasyprint";
|
String weasyPrintPath = isDocker ? "/opt/venv/bin/weasyprint" : "weasyprint";
|
||||||
String unoConvertPath = isDocker ? "/opt/venv/bin/unoconvert" : "unoconvert";
|
String unoConvertPath = isDocker ? "/opt/venv/bin/unoconvert" : "unoconvert";
|
||||||
|
|
||||||
|
|
||||||
// Check for custom operation paths
|
// Check for custom operation paths
|
||||||
Operations operations = properties.getSystem().getCustomPaths().getOperations();
|
Operations operations = properties.getSystem().getCustomPaths().getOperations();
|
||||||
if (operations != null) {
|
if (operations != null) {
|
||||||
@@ -82,5 +81,4 @@ public class RuntimePathConfig {
|
|||||||
private boolean isRunningInDocker() {
|
private boolean isRunningInDocker() {
|
||||||
return Files.exists(Paths.get("/.dockerenv"));
|
return Files.exists(Paths.get("/.dockerenv"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ public class CompressController {
|
|||||||
this.pdfDocumentFactory = pdfDocumentFactory;
|
this.pdfDocumentFactory = pdfDocumentFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void compressImagesInPDF(Path pdfFile, double initialScaleFactor) throws Exception {
|
private void compressImagesInPDF(Path pdfFile, double initialScaleFactor, boolean grayScale)
|
||||||
|
throws Exception {
|
||||||
byte[] fileBytes = Files.readAllBytes(pdfFile);
|
byte[] fileBytes = Files.readAllBytes(pdfFile);
|
||||||
try (PDDocument doc = Loader.loadPDF(fileBytes)) {
|
try (PDDocument doc = Loader.loadPDF(fileBytes)) {
|
||||||
double scaleFactor = initialScaleFactor;
|
double scaleFactor = initialScaleFactor;
|
||||||
@@ -77,11 +78,23 @@ public class CompressController {
|
|||||||
bufferedImage.getScaledInstance(
|
bufferedImage.getScaledInstance(
|
||||||
newWidth, newHeight, Image.SCALE_SMOOTH);
|
newWidth, newHeight, Image.SCALE_SMOOTH);
|
||||||
|
|
||||||
BufferedImage scaledBufferedImage =
|
BufferedImage scaledBufferedImage;
|
||||||
|
if (grayScale
|
||||||
|
|| bufferedImage.getType() == BufferedImage.TYPE_BYTE_GRAY) {
|
||||||
|
scaledBufferedImage =
|
||||||
|
new BufferedImage(
|
||||||
|
newWidth, newHeight, BufferedImage.TYPE_BYTE_GRAY);
|
||||||
|
scaledBufferedImage
|
||||||
|
.getGraphics()
|
||||||
|
.drawImage(scaledImage, 0, 0, null);
|
||||||
|
} else {
|
||||||
|
scaledBufferedImage =
|
||||||
new BufferedImage(
|
new BufferedImage(
|
||||||
newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
|
newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
|
||||||
scaledBufferedImage.getGraphics().drawImage(scaledImage, 0, 0, null);
|
scaledBufferedImage
|
||||||
|
.getGraphics()
|
||||||
|
.drawImage(scaledImage, 0, 0, null);
|
||||||
|
}
|
||||||
ByteArrayOutputStream compressedImageStream =
|
ByteArrayOutputStream compressedImageStream =
|
||||||
new ByteArrayOutputStream();
|
new ByteArrayOutputStream();
|
||||||
ImageIO.write(scaledBufferedImage, "jpeg", compressedImageStream);
|
ImageIO.write(scaledBufferedImage, "jpeg", compressedImageStream);
|
||||||
@@ -140,6 +153,7 @@ public class CompressController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean sizeMet = false;
|
boolean sizeMet = false;
|
||||||
|
boolean grayscaleEnabled = Boolean.TRUE.equals(request.getGrayscale());
|
||||||
while (!sizeMet && optimizeLevel <= 9) {
|
while (!sizeMet && optimizeLevel <= 9) {
|
||||||
|
|
||||||
// Apply additional image compression for levels 6-9
|
// Apply additional image compression for levels 6-9
|
||||||
@@ -153,7 +167,7 @@ public class CompressController {
|
|||||||
case 9 -> 0.5; // 60% of original size
|
case 9 -> 0.5; // 60% of original size
|
||||||
default -> 1.0;
|
default -> 1.0;
|
||||||
};
|
};
|
||||||
compressImagesInPDF(tempInputFile, scaleFactor);
|
compressImagesInPDF(tempInputFile, scaleFactor, grayscaleEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run QPDF optimization
|
// Run QPDF optimization
|
||||||
@@ -170,6 +184,7 @@ public class CompressController {
|
|||||||
command.add("--compression-level=" + optimizeLevel);
|
command.add("--compression-level=" + optimizeLevel);
|
||||||
command.add("--compress-streams=y");
|
command.add("--compress-streams=y");
|
||||||
command.add("--object-streams=generate");
|
command.add("--object-streams=generate");
|
||||||
|
command.add("--no-warn");
|
||||||
command.add(tempInputFile.toString());
|
command.add(tempInputFile.toString());
|
||||||
command.add(tempOutputFile.toString());
|
command.add(tempOutputFile.toString());
|
||||||
|
|
||||||
|
|||||||
@@ -30,4 +30,13 @@ public class OptimizePdfRequest extends PDFFile {
|
|||||||
"Whether to normalize the PDF content for better compatibility. Default is false.",
|
"Whether to normalize the PDF content for better compatibility. Default is false.",
|
||||||
defaultValue = "false")
|
defaultValue = "false")
|
||||||
private Boolean normalize = false;
|
private Boolean normalize = false;
|
||||||
|
|
||||||
|
@Schema(
|
||||||
|
description = "Whether to convert the PDF to grayscale. Default is false.",
|
||||||
|
defaultValue = "false")
|
||||||
|
private Boolean grayscale = false;
|
||||||
|
|
||||||
|
public Boolean getGrayscale() {
|
||||||
|
return grayscale;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,8 +207,7 @@ public class PostHogService {
|
|||||||
|
|
||||||
private void addIfNotEmpty(Map<String, Object> map, String key, Object value) {
|
private void addIfNotEmpty(Map<String, Object> map, String key, Object value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
if (value instanceof String) {
|
if (value instanceof String strValue) {
|
||||||
String strValue = (String) value;
|
|
||||||
if (!StringUtils.isBlank(strValue)) {
|
if (!StringUtils.isBlank(strValue)) {
|
||||||
map.put(key, strValue.trim());
|
map.put(key, strValue.trim());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package stirling.software.SPDF.utils;
|
package stirling.software.SPDF.utils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
public class UrlUtils {
|
public class UrlUtils {
|
||||||
@@ -14,4 +17,20 @@ public class UrlUtils {
|
|||||||
|
|
||||||
return scheme + "://" + serverName + ":" + serverPort + contextPath;
|
return scheme + "://" + serverName + ":" + serverPort + contextPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isPortAvailable(int port) {
|
||||||
|
try (ServerSocket socket = new ServerSocket(port)) {
|
||||||
|
return true;
|
||||||
|
} catch (IOException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String findAvailablePort(int startPort) {
|
||||||
|
int port = startPort;
|
||||||
|
while (!isPortAvailable(port)) {
|
||||||
|
port++;
|
||||||
|
}
|
||||||
|
return String.valueOf(port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=تطبيق التدرج الرمادي للضغط
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Sıxma üçün Boz Rəng Tətbiq Edin
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Версия
|
|||||||
validateSignature.cert.keyUsage=Предназначение на ключа за използване
|
validateSignature.cert.keyUsage=Предназначение на ключа за използване
|
||||||
validateSignature.cert.selfSigned=Самостоятелно подписан
|
validateSignature.cert.selfSigned=Самостоятелно подписан
|
||||||
validateSignature.cert.bits=битове
|
validateSignature.cert.bits=битове
|
||||||
|
compress.grayscale.label=Приложи сива скала за компресиране
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplicar escala de grisos per a la compressió
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Verze
|
|||||||
validateSignature.cert.keyUsage=Použití klíče
|
validateSignature.cert.keyUsage=Použití klíče
|
||||||
validateSignature.cert.selfSigned=Podepsaný sám sebou
|
validateSignature.cert.selfSigned=Podepsaný sám sebou
|
||||||
validateSignature.cert.bits=bitů
|
validateSignature.cert.bits=bitů
|
||||||
|
compress.grayscale.label=Použít stupnici šedi pro kompresi
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Anvend gråskala til komprimering
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Schlüsselverwendung
|
validateSignature.cert.keyUsage=Schlüsselverwendung
|
||||||
validateSignature.cert.selfSigned=Selbstsigniert
|
validateSignature.cert.selfSigned=Selbstsigniert
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Graustufen für Komprimierung anwenden
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Έκδοση
|
|||||||
validateSignature.cert.keyUsage=Χρήση κλειδιού
|
validateSignature.cert.keyUsage=Χρήση κλειδιού
|
||||||
validateSignature.cert.selfSigned=Αυτο-υπογεγραμμένο
|
validateSignature.cert.selfSigned=Αυτο-υπογεγραμμένο
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Εφαρμογή κλίμακας του γκρι για συμπίεση
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Apply Grayscale for Compression
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Apply Grayscale for Compression
|
||||||
|
|||||||
@@ -138,13 +138,13 @@ analytics.settings=Puede cambiar la configuración de analíticas en el archivo
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=Favoritos
|
navbar.favorite=Favoritos
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=Nuevo y recientemente actualizado
|
||||||
navbar.darkmode=Modo oscuro
|
navbar.darkmode=Modo oscuro
|
||||||
navbar.language=Idiomas
|
navbar.language=Idiomas
|
||||||
navbar.settings=Configuración
|
navbar.settings=Configuración
|
||||||
navbar.allTools=Herramientas
|
navbar.allTools=Herramientas
|
||||||
navbar.multiTool=Multi herramientas
|
navbar.multiTool=Multi herramientas
|
||||||
navbar.search=Search
|
navbar.search=Buscar
|
||||||
navbar.sections.organize=Organizar
|
navbar.sections.organize=Organizar
|
||||||
navbar.sections.convertTo=Convertir a PDF
|
navbar.sections.convertTo=Convertir a PDF
|
||||||
navbar.sections.convertFrom=Convertir desde PDF
|
navbar.sections.convertFrom=Convertir desde PDF
|
||||||
@@ -246,14 +246,14 @@ database.info_1=Al importar datos, es fundamental garantizar la estructura corre
|
|||||||
database.info_2=El nombre del archivo no importa al cargarlo. Posteriormente se le cambiará el nombre para que siga el formato backup_user_yyyyMMddHHmm.sql, lo que garantiza una convención de nomenclatura coherente.
|
database.info_2=El nombre del archivo no importa al cargarlo. Posteriormente se le cambiará el nombre para que siga el formato backup_user_yyyyMMddHHmm.sql, lo que garantiza una convención de nomenclatura coherente.
|
||||||
database.submit=Importar Copia de Seguridad
|
database.submit=Importar Copia de Seguridad
|
||||||
database.importIntoDatabaseSuccessed=Importación a la base de datos ha sido exitosa
|
database.importIntoDatabaseSuccessed=Importación a la base de datos ha sido exitosa
|
||||||
database.backupCreated=Database backup successful
|
database.backupCreated=Respaldo de la Base de Datos exitoso
|
||||||
database.fileNotFound=Archivo no encontrado
|
database.fileNotFound=Archivo no encontrado
|
||||||
database.fileNullOrEmpty=El archivo no debe ser nulo o vacío.
|
database.fileNullOrEmpty=El archivo no debe ser nulo o vacío.
|
||||||
database.failedImportFile=Archivo de importación fallido
|
database.failedImportFile=Archivo de importación fallido
|
||||||
database.notSupported=This function is not available for your database connection.
|
database.notSupported=Esta función no esta disponible para su conexión de Base de Datos
|
||||||
|
|
||||||
session.expired=Tu sesión ha caducado. Actualice la página e inténtelo de nuevo.
|
session.expired=Tu sesión ha caducado. Actualice la página e inténtelo de nuevo.
|
||||||
session.refreshPage=Refresh Page
|
session.refreshPage=Refrescar Página
|
||||||
|
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
@@ -262,18 +262,18 @@ home.desc=Su ventanilla única autohospedada para todas sus necesidades PDF
|
|||||||
home.searchBar=Buscar características...
|
home.searchBar=Buscar características...
|
||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=View/Edit PDF
|
home.viewPdf.title=Ver/Editar PDF
|
||||||
home.viewPdf.desc=Ver, anotar, añadir texto o imágenes
|
home.viewPdf.desc=Ver, anotar, añadir texto o imágenes
|
||||||
viewPdf.tags=ver,leer,anotar,texto,imagen
|
viewPdf.tags=ver,leer,anotar,texto,imagen
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=Agregar Favoritos
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=Ocultar Favoritos
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=Mostrar Favoritos
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=Página de inicio anterior
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=¡Prueba nuestra nueva página de inicio!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=Alfabetico
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=Popularidad Global
|
||||||
home.sortBy=Sort by:
|
home.sortBy=Ordenado por:
|
||||||
|
|
||||||
home.multiTool.title=Multi-herramienta PDF
|
home.multiTool.title=Multi-herramienta PDF
|
||||||
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
||||||
@@ -462,9 +462,9 @@ home.MarkdownToPDF.title=Markdown a PDF
|
|||||||
home.MarkdownToPDF.desc=Convierte cualquier archivo Markdown a PDF
|
home.MarkdownToPDF.desc=Convierte cualquier archivo Markdown a PDF
|
||||||
MarkdownToPDF.tags=margen,contenido web,transformación,convertir
|
MarkdownToPDF.tags=margen,contenido web,transformación,convertir
|
||||||
|
|
||||||
home.PDFToMarkdown.title=PDF to Markdown
|
home.PDFToMarkdown.title=PDF a Markdown
|
||||||
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
home.PDFToMarkdown.desc=Convierte cualquier PDF a Markdown
|
||||||
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
PDFToMarkdown.tags=markup,contenido web,transformación,convertir,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Obtener toda la información en PDF
|
home.getPdfInfo.title=Obtener toda la información en PDF
|
||||||
home.getPdfInfo.desc=Obtiene toda la información posible de archivos PDF
|
home.getPdfInfo.desc=Obtiene toda la información posible de archivos PDF
|
||||||
@@ -489,9 +489,9 @@ home.autoRedact.title=Auto Redactar
|
|||||||
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
||||||
autoRedact.tags=Redactar,Ocultar,ocultar,negro,subrayador,oculto
|
autoRedact.tags=Redactar,Ocultar,ocultar,negro,subrayador,oculto
|
||||||
|
|
||||||
home.redact.title=Manual Redaction
|
home.redact.title=Redacción Manual
|
||||||
home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s)
|
home.redact.desc=Redacta un PDF basado en el texto seleccionado, dibuja formas y/o página(s) selecionada(s)
|
||||||
redact.tags=Redact,Hide,black out,black,marker,hidden,manual
|
redact.tags=Redactar,Ocultar,oscurece,negro,marcador,oculto,manual
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF a CSV
|
home.tableExtraxt.title=PDF a CSV
|
||||||
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
||||||
@@ -533,9 +533,9 @@ home.splitPdfByChapters.title=Dividir PDF por capítulos
|
|||||||
home.splitPdfByChapters.desc=Divida un PDF en varios archivos según su estructura de capítulos.
|
home.splitPdfByChapters.desc=Divida un PDF en varios archivos según su estructura de capítulos.
|
||||||
splitPdfByChapters.tags=dividir,capítulos,marcadores,organizar
|
splitPdfByChapters.tags=dividir,capítulos,marcadores,organizar
|
||||||
|
|
||||||
home.validateSignature.title=Validate PDF Signature
|
home.validateSignature.title=Validar firma del PDF
|
||||||
home.validateSignature.desc=Verify digital signatures and certificates in PDF documents
|
home.validateSignature.desc=Verifica firmas digitales y certificados en los documentos PDF
|
||||||
validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate
|
validateSignature.tags=firma,verificar,validar,pdf,certificado,firma digital,validar firma,validar certificado
|
||||||
|
|
||||||
#replace-invert-color
|
#replace-invert-color
|
||||||
replace-color.title=Reemplazar-Invertir-Color
|
replace-color.title=Reemplazar-Invertir-Color
|
||||||
@@ -580,50 +580,50 @@ login.oauth2invalidRequest=Solicitud no válida
|
|||||||
login.oauth2AccessDenied=Acceso denegado
|
login.oauth2AccessDenied=Acceso denegado
|
||||||
login.oauth2InvalidTokenResponse=Respuesta de token no válida
|
login.oauth2InvalidTokenResponse=Respuesta de token no válida
|
||||||
login.oauth2InvalidIdToken=Token de identificación no válido
|
login.oauth2InvalidIdToken=Token de identificación no válido
|
||||||
login.relyingPartyRegistrationNotFound=No relying party registration found
|
login.relyingPartyRegistrationNotFound=No hay registro de terceros confiables
|
||||||
login.userIsDisabled=El usuario está desactivado, actualmente el acceso está bloqueado para ese nombre de usuario. Por favor, póngase en contacto con el administrador.
|
login.userIsDisabled=El usuario está desactivado, actualmente el acceso está bloqueado para ese nombre de usuario. Por favor, póngase en contacto con el administrador.
|
||||||
login.alreadyLoggedIn=Ya has iniciado sesión en
|
login.alreadyLoggedIn=Ya has iniciado sesión en
|
||||||
login.alreadyLoggedIn2=dispositivos. Cierra sesión en los dispositivos y vuelve a intentarlo.
|
login.alreadyLoggedIn2=dispositivos. Cierra sesión en los dispositivos y vuelve a intentarlo.
|
||||||
login.toManySessions=Tienes demasiadas sesiones activas
|
login.toManySessions=Tienes demasiadas sesiones activas
|
||||||
|
|
||||||
#auto-redact
|
#auto-redact
|
||||||
autoRedact.title=Auto Redactar
|
autoRedact.title=Auto Censurar Texto
|
||||||
autoRedact.header=Auto Redactar
|
autoRedact.header=Auto Censurar Texto
|
||||||
autoRedact.colorLabel=Color
|
autoRedact.colorLabel=Color
|
||||||
autoRedact.textsToRedactLabel=Texto para Redactar (separado por líneas)
|
autoRedact.textsToRedactLabel=Texto para Censurar (separado por líneas)
|
||||||
autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
|
autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
|
||||||
autoRedact.useRegexLabel=Usar Regex
|
autoRedact.useRegexLabel=Usar Regex
|
||||||
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
|
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
|
||||||
autoRedact.customPaddingLabel=Extra Padding personalizado
|
autoRedact.customPaddingLabel=Extra Padding personalizado
|
||||||
autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para quitar el texto detrás del cajetín)
|
autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para eliminar el texto detrás del cajetín de censura)
|
||||||
autoRedact.submitButton=Enviar
|
autoRedact.submitButton=Enviar
|
||||||
|
|
||||||
#redact
|
#redact
|
||||||
redact.title=Manual Redaction
|
redact.title=Censurar texto Manualmente
|
||||||
redact.header=Manual Redaction
|
redact.header=Censurar texto Manualmente
|
||||||
redact.submit=Redact
|
redact.submit=Enviar
|
||||||
redact.textBasedRedaction=Text based Redaction
|
redact.textBasedRedaction=Censura basada en texto
|
||||||
redact.pageBasedRedaction=Page-based Redaction
|
redact.pageBasedRedaction=Censura basada en la página
|
||||||
redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box)
|
redact.convertPDFToImageLabel=Convertir PDF a PDF-Image (Utilizado para eliminar el texto detrás del cajetín de censura)
|
||||||
redact.pageRedactionNumbers.title=Pages
|
redact.pageRedactionNumbers.title=Páginas
|
||||||
redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1)
|
||||||
redact.redactionColor.title=Redaction Color
|
redact.redactionColor.title=Color del cajetín
|
||||||
redact.export=Export
|
redact.export=Exportar
|
||||||
redact.upload=Upload
|
redact.upload=Cargar
|
||||||
redact.boxRedaction=Box draw redaction
|
redact.boxRedaction=Dibujar cajetín de censura
|
||||||
redact.zoom=Zoom
|
redact.zoom=Zoom
|
||||||
redact.zoomIn=Zoom in
|
redact.zoomIn=Zoom in
|
||||||
redact.zoomOut=Zoom out
|
redact.zoomOut=Zoom out
|
||||||
redact.nextPage=Next Page
|
redact.nextPage=Siguiente página
|
||||||
redact.previousPage=Previous Page
|
redact.previousPage=Pagina Anterior
|
||||||
redact.toggleSidebar=Toggle Sidebar
|
redact.toggleSidebar=Activar/desactivar barra lateral
|
||||||
redact.showThumbnails=Show Thumbnails
|
redact.showThumbnails=Mostrar Miniaturas
|
||||||
redact.showDocumentOutline=Show Document Outline (double-click to expand/collapse all items)
|
redact.showDocumentOutline=Mostra Esquema del documento (doble-click para expandir/colapsar elementos)
|
||||||
redact.showAttatchments=Show Attachments
|
redact.showAttatchments=Mostrar Adjuntos
|
||||||
redact.showLayers=Show Layers (double-click to reset all layers to the default state)
|
redact.showLayers=Mostrar Capas (doble-click para reiniciar las capas a su estado inicial)
|
||||||
redact.colourPicker=Colour Picker
|
redact.colourPicker=Seleccionador de Color
|
||||||
redact.findCurrentOutlineItem=Find current outline item
|
redact.findCurrentOutlineItem=Buscar elemento actual de esquema
|
||||||
redact.applyChanges=Apply Changes
|
redact.applyChanges=Aplicar Cambios
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=Mostrar Javascript
|
showJS.title=Mostrar Javascript
|
||||||
@@ -661,9 +661,9 @@ MarkdownToPDF.credit=Usa WeasyPrint
|
|||||||
|
|
||||||
|
|
||||||
#pdf-to-markdown
|
#pdf-to-markdown
|
||||||
PDFToMarkdown.title=PDF To Markdown
|
PDFToMarkdown.title=PDF a Markdown
|
||||||
PDFToMarkdown.header=PDF To Markdown
|
PDFToMarkdown.header=PDF a Markdown
|
||||||
PDFToMarkdown.submit=Convert
|
PDFToMarkdown.submit=Convertir
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
@@ -713,14 +713,14 @@ AddStampRequest.submit=Enviar
|
|||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Desinfectar archivo PDF
|
sanitizePDF.title=Limpiar archivo PDF
|
||||||
sanitizePDF.header=Desinfectar un archivo PDF
|
sanitizePDF.header=Limpiar un archivo PDF
|
||||||
sanitizePDF.selectText.1=Eliminar acciones JavaScript
|
sanitizePDF.selectText.1=Eliminar código JavaScript
|
||||||
sanitizePDF.selectText.2=Eliminar archivos incrustados
|
sanitizePDF.selectText.2=Eliminar archivos incrustados
|
||||||
sanitizePDF.selectText.3=Eliminar metadatos
|
sanitizePDF.selectText.3=Eliminar metadatos
|
||||||
sanitizePDF.selectText.4=Eliminar enlaces
|
sanitizePDF.selectText.4=Eliminar enlaces
|
||||||
sanitizePDF.selectText.5=Eliminar fuentes
|
sanitizePDF.selectText.5=Eliminar fuentes
|
||||||
sanitizePDF.submit=Desinfectar PDF
|
sanitizePDF.submit=Limpiar PDF
|
||||||
|
|
||||||
|
|
||||||
#addPageNumbers
|
#addPageNumbers
|
||||||
@@ -874,13 +874,13 @@ sign.save=Guardar Firma
|
|||||||
sign.personalSigs=Firmas Personales
|
sign.personalSigs=Firmas Personales
|
||||||
sign.sharedSigs=Firmas compartidas
|
sign.sharedSigs=Firmas compartidas
|
||||||
sign.noSavedSigs=No se encontraron firmas guardadas
|
sign.noSavedSigs=No se encontraron firmas guardadas
|
||||||
sign.addToAll=Add to all pages
|
sign.addToAll=Agregar a todas las páginas
|
||||||
sign.delete=Delete
|
sign.delete=Eliminar
|
||||||
sign.first=First page
|
sign.first=Primera página
|
||||||
sign.last=Last page
|
sign.last=Última página
|
||||||
sign.next=Next page
|
sign.next=Siguiente página
|
||||||
sign.previous=Previous page
|
sign.previous=Página anterior
|
||||||
sign.maintainRatio=Toggle maintain aspect ratio
|
sign.maintainRatio=Activar/desactivar la relación de aspecto
|
||||||
|
|
||||||
|
|
||||||
#repair
|
#repair
|
||||||
@@ -952,7 +952,7 @@ compress.title=Comprimir
|
|||||||
compress.header=Comprimir PDF
|
compress.header=Comprimir PDF
|
||||||
compress.credit=Este servicio utiliza qpdf para compresión/optimización de PDF
|
compress.credit=Este servicio utiliza qpdf para compresión/optimización de PDF
|
||||||
compress.selectText.1=Modo manual - De 1 a 5
|
compress.selectText.1=Modo manual - De 1 a 5
|
||||||
compress.selectText.1.1=In optimization levels 6 to 9, in addition to general PDF compression, image resolution is scaled down to further reduce file size. Higher levels result in stronger image compression (up to 50% of the original size), achieving greater size reduction but with potential quality loss in images.
|
compress.selectText.1.1=En los niveles de optimización 6 a 9, además de la compresión general de PDF, se reduce la resolución de la imagen para reducir aún más el tamaño del archivo. Los niveles más altos dan como resultado una mayor compresión de la imagen (hasta el 50 % del tamaño original), lo que permite lograr una mayor reducción del tamaño, pero con una posible pérdida de calidad en las imágenes.
|
||||||
compress.selectText.2=Nivel de optimización:
|
compress.selectText.2=Nivel de optimización:
|
||||||
compress.selectText.3=4 (Terrible para imágenes de texto)
|
compress.selectText.3=4 (Terrible para imágenes de texto)
|
||||||
compress.selectText.4=Modo automático: ajusta automáticamente la calidad para que el PDF tenga el tamaño exacto
|
compress.selectText.4=Modo automático: ajusta automáticamente la calidad para que el PDF tenga el tamaño exacto
|
||||||
@@ -1000,42 +1000,42 @@ pdfOrganiser.placeholder=(por ej., 1,3,2 o 4-8,2,10-12 o 2n-1)
|
|||||||
multiTool.title=Multi-herramienta PDF
|
multiTool.title=Multi-herramienta PDF
|
||||||
multiTool.header=Multi-herramienta PDF
|
multiTool.header=Multi-herramienta PDF
|
||||||
multiTool.uploadPrompts=Nombre del archivo
|
multiTool.uploadPrompts=Nombre del archivo
|
||||||
multiTool.selectAll=Select All
|
multiTool.selectAll=Seleccionar Todo
|
||||||
multiTool.deselectAll=Deselect All
|
multiTool.deselectAll=Deseleccionar Todo
|
||||||
multiTool.selectPages=Page Select
|
multiTool.selectPages=Seleccionar página(s)
|
||||||
multiTool.selectedPages=Selected Pages
|
multiTool.selectedPages=Página(s) Selecccionada(s)
|
||||||
multiTool.page=Page
|
multiTool.page=Página
|
||||||
multiTool.deleteSelected=Delete Selected
|
multiTool.deleteSelected=Borrar selecionado(s)
|
||||||
multiTool.downloadAll=Export
|
multiTool.downloadAll=Exportar
|
||||||
multiTool.downloadSelected=Export Selected
|
multiTool.downloadSelected=Exportar selecionado(s)
|
||||||
|
|
||||||
multiTool.insertPageBreak=Insert Page Break
|
multiTool.insertPageBreak=Insertar salto página
|
||||||
multiTool.addFile=Add File
|
multiTool.addFile=Agregar Archivo
|
||||||
multiTool.rotateLeft=Rotate Left
|
multiTool.rotateLeft=Rotar a la izquierda
|
||||||
multiTool.rotateRight=Rotate Right
|
multiTool.rotateRight=Rotar a la derecha
|
||||||
multiTool.split=Split
|
multiTool.split=Dividir
|
||||||
multiTool.moveLeft=Move Left
|
multiTool.moveLeft=Mover a la izquierda
|
||||||
multiTool.moveRight=Move Right
|
multiTool.moveRight=Mover a la derecha
|
||||||
multiTool.delete=Delete
|
multiTool.delete=Borrar
|
||||||
multiTool.dragDropMessage=Page(s) Selected
|
multiTool.dragDropMessage=Página(s) Selecccionada(s)
|
||||||
multiTool.undo=Undo
|
multiTool.undo=Deshacer
|
||||||
multiTool.redo=Redo
|
multiTool.redo=Rehacer
|
||||||
|
|
||||||
#decrypt
|
#decrypt
|
||||||
decrypt.passwordPrompt=This file is password-protected. Please enter the password:
|
decrypt.passwordPrompt=Este archivo está protegido con contraseña. Introdúzca la contraseña:
|
||||||
decrypt.cancelled=Operation cancelled for PDF: {0}
|
decrypt.cancelled=Operación cancelada para el PDF: {0}
|
||||||
decrypt.noPassword=No password provided for encrypted PDF: {0}
|
decrypt.noPassword=No se proporcionó contraseña para PDF cifrado: {0}
|
||||||
decrypt.invalidPassword=Please try again with the correct password.
|
decrypt.invalidPassword=Por favor, inténtelo de nuevo con la contraseña correcta.
|
||||||
decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0}
|
decrypt.invalidPasswordHeader=Contraseña incorrecta o cifrado no compatible para PDF: {0}
|
||||||
decrypt.unexpectedError=There was an error processing the file. Please try again.
|
decrypt.unexpectedError=Se produjo un error al procesar el archivo. Inténtalo nuevamente.
|
||||||
decrypt.serverError=Server error while decrypting: {0}
|
decrypt.serverError=Error del servidor al descifrar: {0}
|
||||||
decrypt.success=File decrypted successfully.
|
decrypt.success=Archivo descifrado exitosamente.
|
||||||
|
|
||||||
#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=Esta función también está disponible en nuestra <a href="{0}">página de herramientas múltiples</a>. ¡Échale un vistazo para ver una interfaz de usuario página por página mejorada y funciones adicionales!
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View/Edit PDF
|
viewPdf.title=Ver/Editar PDF
|
||||||
viewPdf.header=Ver PDF
|
viewPdf.header=Ver PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
@@ -1337,50 +1337,51 @@ splitByChapters.submit=Dividir PDF
|
|||||||
|
|
||||||
#File Chooser
|
#File Chooser
|
||||||
fileChooser.click=Click
|
fileChooser.click=Click
|
||||||
fileChooser.or=or
|
fileChooser.or=o
|
||||||
fileChooser.dragAndDrop=Drag & Drop
|
fileChooser.dragAndDrop=Arrastrar & Soltar
|
||||||
fileChooser.dragAndDropPDF=Drag & Drop PDF file
|
fileChooser.dragAndDropPDF=Arrastrar & Soltar archivo PDF
|
||||||
fileChooser.dragAndDropImage=Drag & Drop Image file
|
fileChooser.dragAndDropImage=Arrastrar & Soltar archivo de Imagen
|
||||||
fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here
|
fileChooser.hoveredDragAndDrop=Arrastrar & Soltar archivos(s) aquí
|
||||||
|
|
||||||
#release notes
|
#release notes
|
||||||
releases.footer=Releases
|
releases.footer=Versiones
|
||||||
releases.title=Release Notes
|
releases.title=Notas de la versión
|
||||||
releases.header=Release Notes
|
releases.header=Notas de la versión
|
||||||
releases.current.version=Current Release
|
releases.current.version=versión Actual
|
||||||
releases.note=Release notes are only available in English
|
releases.note=Las notas de la versión solo están disponibles en Inglés
|
||||||
|
|
||||||
#Validate Signature
|
#Validate Signature
|
||||||
validateSignature.title=Validate PDF Signatures
|
validateSignature.title=Validar firmas del PDF
|
||||||
validateSignature.header=Validate Digital Signatures
|
validateSignature.header=Validar firmas del PDF
|
||||||
validateSignature.selectPDF=Select signed PDF file
|
validateSignature.selectPDF=Seleccione el archivo PDF firmado
|
||||||
validateSignature.submit=Validate Signatures
|
validateSignature.submit=Validar firmas
|
||||||
validateSignature.results=Validation Results
|
validateSignature.results=Resultados de la Validación
|
||||||
validateSignature.status=Status
|
validateSignature.status=Estador
|
||||||
validateSignature.signer=Signer
|
validateSignature.signer=Firmante
|
||||||
validateSignature.date=Date
|
validateSignature.date=Fecha
|
||||||
validateSignature.reason=Reason
|
validateSignature.reason=Razón
|
||||||
validateSignature.location=Location
|
validateSignature.location=Ubicación
|
||||||
validateSignature.noSignatures=No digital signatures found in this document
|
validateSignature.noSignatures=No se encontrario firmas digiales en este documento
|
||||||
validateSignature.status.valid=Valid
|
validateSignature.status.valid=Válido
|
||||||
validateSignature.status.invalid=Invalid
|
validateSignature.status.invalid=Inválido
|
||||||
validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity
|
validateSignature.chain.invalid=Error en la validación de la cadena de certificados: no se puede verificar la identidad del firmante
|
||||||
validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified
|
validateSignature.trust.invalid=El certificado no se encuentra en los almacenes de confianza: no se puede verificar la fuente
|
||||||
validateSignature.cert.expired=Certificate has expired
|
validateSignature.cert.expired=Certificado expiredo
|
||||||
validateSignature.cert.revoked=Certificate has been revoked
|
validateSignature.cert.revoked=Certificado fue revocado
|
||||||
validateSignature.signature.info=Signature Information
|
validateSignature.signature.info=Información de la firma
|
||||||
validateSignature.signature=Signature
|
validateSignature.signature=Firma
|
||||||
validateSignature.signature.mathValid=Signature is mathematically valid BUT:
|
validateSignature.signature.mathValid=La firma es matemáticamente válida aunque:
|
||||||
validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional)
|
validateSignature.selectCustomCert=Archivo de certificado personalizado X.509 (opcional)
|
||||||
validateSignature.cert.info=Certificate Details
|
validateSignature.cert.info=Detalles Certificado
|
||||||
validateSignature.cert.issuer=Issuer
|
validateSignature.cert.issuer=Emisor
|
||||||
validateSignature.cert.subject=Subject
|
validateSignature.cert.subject=Subject
|
||||||
validateSignature.cert.serialNumber=Serial Number
|
validateSignature.cert.serialNumber=Número Serie
|
||||||
validateSignature.cert.validFrom=Valid From
|
validateSignature.cert.validFrom=Válido desde
|
||||||
validateSignature.cert.validUntil=Valid Until
|
validateSignature.cert.validUntil=Válido hasta
|
||||||
validateSignature.cert.algorithm=Algorithm
|
validateSignature.cert.algorithm=Algoritmo
|
||||||
validateSignature.cert.keySize=Key Size
|
validateSignature.cert.keySize=Tamaño llave
|
||||||
validateSignature.cert.version=Version
|
validateSignature.cert.version=Versión
|
||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Uso de la llave
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Autofirmado
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplicar escala de grises para compresión
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplikatu grisezko eskala konpresiorako
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=نسخه
|
|||||||
validateSignature.cert.keyUsage=کاربرد کلید
|
validateSignature.cert.keyUsage=کاربرد کلید
|
||||||
validateSignature.cert.selfSigned=با امضای خود
|
validateSignature.cert.selfSigned=با امضای خود
|
||||||
validateSignature.cert.bits=بیتها
|
validateSignature.cert.bits=بیتها
|
||||||
|
compress.grayscale.label=اعمال مقیاس خاکستری برای فشردهسازی
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Usage de la clé
|
validateSignature.cert.keyUsage=Usage de la clé
|
||||||
validateSignature.cert.selfSigned=Auto-signé
|
validateSignature.cert.selfSigned=Auto-signé
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Appliquer l'échelle de gris pour la compression
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Leagan
|
|||||||
validateSignature.cert.keyUsage=Úsáid Eochrach
|
validateSignature.cert.keyUsage=Úsáid Eochrach
|
||||||
validateSignature.cert.selfSigned=Féin-Sínithe
|
validateSignature.cert.selfSigned=Féin-Sínithe
|
||||||
validateSignature.cert.bits=giotáin
|
validateSignature.cert.bits=giotáin
|
||||||
|
compress.grayscale.label=Cuir Scála Liath i bhFeidhm le Comhbhrú
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=संस्करण
|
|||||||
validateSignature.cert.keyUsage=कुंजी उपयोग
|
validateSignature.cert.keyUsage=कुंजी उपयोग
|
||||||
validateSignature.cert.selfSigned=स्व-हस्ताक्षरित
|
validateSignature.cert.selfSigned=स्व-हस्ताक्षरित
|
||||||
validateSignature.cert.bits=बिट्स
|
validateSignature.cert.bits=बिट्स
|
||||||
|
compress.grayscale.label=संपीड़न के लिए ग्रेस्केल लागू करें
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Primijeni sivinu za kompresiju
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Verzió
|
|||||||
validateSignature.cert.keyUsage=Kulcshasználat
|
validateSignature.cert.keyUsage=Kulcshasználat
|
||||||
validateSignature.cert.selfSigned=Önaláírt
|
validateSignature.cert.selfSigned=Önaláírt
|
||||||
validateSignature.cert.bits=bit
|
validateSignature.cert.bits=bit
|
||||||
|
compress.grayscale.label=Szürkeárnyalatok alkalmazása tömörítéshez
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Terapkan Skala Abu-Abu untuk Kompresi
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Versione
|
|||||||
validateSignature.cert.keyUsage=Utilizzo della chiave
|
validateSignature.cert.keyUsage=Utilizzo della chiave
|
||||||
validateSignature.cert.selfSigned=Autofirmato
|
validateSignature.cert.selfSigned=Autofirmato
|
||||||
validateSignature.cert.bits=bit
|
validateSignature.cert.bits=bit
|
||||||
|
compress.grayscale.label=Applica scala di grigio per la compressione
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=バージョン
|
|||||||
validateSignature.cert.keyUsage=キーの使用法
|
validateSignature.cert.keyUsage=キーの使用法
|
||||||
validateSignature.cert.selfSigned=自己署名
|
validateSignature.cert.selfSigned=自己署名
|
||||||
validateSignature.cert.bits=ビット
|
validateSignature.cert.bits=ビット
|
||||||
|
compress.grayscale.label=圧縮にグレースケールを適用する
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=버전
|
|||||||
validateSignature.cert.keyUsage=키 용도
|
validateSignature.cert.keyUsage=키 용도
|
||||||
validateSignature.cert.selfSigned=자체 서명
|
validateSignature.cert.selfSigned=자체 서명
|
||||||
validateSignature.cert.bits=비트
|
validateSignature.cert.bits=비트
|
||||||
|
compress.grayscale.label=압축을 위해 그레이스케일 적용
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Grijsschaal toepassen voor compressie
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Bruk gråskala for komprimering
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Zastosuj skalę szarości do kompresji
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Versão
|
|||||||
validateSignature.cert.keyUsage=Uso da chave
|
validateSignature.cert.keyUsage=Uso da chave
|
||||||
validateSignature.cert.selfSigned=Autoassinados
|
validateSignature.cert.selfSigned=Autoassinados
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplicar escala de cinza para compressão
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Versão
|
|||||||
validateSignature.cert.keyUsage=Utilização da Chave
|
validateSignature.cert.keyUsage=Utilização da Chave
|
||||||
validateSignature.cert.selfSigned=Auto-Assinado
|
validateSignature.cert.selfSigned=Auto-Assinado
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplicar escala de cinzentos para compressão
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Aplicare scală de gri pentru compresie
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Версия
|
|||||||
validateSignature.cert.keyUsage=Использование ключа
|
validateSignature.cert.keyUsage=Использование ключа
|
||||||
validateSignature.cert.selfSigned=Самоподписанный
|
validateSignature.cert.selfSigned=Самоподписанный
|
||||||
validateSignature.cert.bits=бит
|
validateSignature.cert.bits=бит
|
||||||
|
compress.grayscale.label=Применить шкалу серого для сжатия
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Použiť odtiene šedej na kompresiu
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Različica
|
|||||||
validateSignature.cert.keyUsage=Uporaba ključa
|
validateSignature.cert.keyUsage=Uporaba ključa
|
||||||
validateSignature.cert.selfSigned=Samopodpisano
|
validateSignature.cert.selfSigned=Samopodpisano
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Uporabi sivinsko lestvico za stiskanje
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Primeni sivinu za kompresiju
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Tillämpa gråskala för komprimering
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=ใช้ระดับสีเทาสำหรับการบีบอัด
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Sıkıştırma için Gri Ton Uygula
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Застосувати відтінки сірого для стиснення
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=Version
|
|||||||
validateSignature.cert.keyUsage=Key Usage
|
validateSignature.cert.keyUsage=Key Usage
|
||||||
validateSignature.cert.selfSigned=Self-Signed
|
validateSignature.cert.selfSigned=Self-Signed
|
||||||
validateSignature.cert.bits=bits
|
validateSignature.cert.bits=bits
|
||||||
|
compress.grayscale.label=Áp dụng thang độ xám để nén
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=པར་གཞི།
|
|||||||
validateSignature.cert.keyUsage=ལྡེ་མིག་བེད་སྤྱོད།
|
validateSignature.cert.keyUsage=ལྡེ་མིག་བེད་སྤྱོད།
|
||||||
validateSignature.cert.selfSigned=རང་མིང་རྟགས།
|
validateSignature.cert.selfSigned=རང་མིང་རྟགས།
|
||||||
validateSignature.cert.bits=གནས།
|
validateSignature.cert.bits=གནས།
|
||||||
|
compress.grayscale.label=应用灰度进行压缩
|
||||||
|
|||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=版本
|
|||||||
validateSignature.cert.keyUsage=密钥用途
|
validateSignature.cert.keyUsage=密钥用途
|
||||||
validateSignature.cert.selfSigned=自签名
|
validateSignature.cert.selfSigned=自签名
|
||||||
validateSignature.cert.bits=比特
|
validateSignature.cert.bits=比特
|
||||||
|
compress.grayscale.label=应用灰度进行压缩
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ analytics.settings=您可以在 config/settings.yml 檔案中變更分析功能
|
|||||||
# NAVBAR #
|
# NAVBAR #
|
||||||
#############
|
#############
|
||||||
navbar.favorite=我的最愛
|
navbar.favorite=我的最愛
|
||||||
navbar.recent=New and recently updated
|
navbar.recent=最新與近期更新
|
||||||
navbar.darkmode=深色模式
|
navbar.darkmode=深色模式
|
||||||
navbar.language=語言
|
navbar.language=語言
|
||||||
navbar.settings=設定
|
navbar.settings=設定
|
||||||
@@ -262,18 +262,18 @@ home.desc=您的本機一站式 PDF 解決方案。
|
|||||||
home.searchBar=搜尋功能...
|
home.searchBar=搜尋功能...
|
||||||
|
|
||||||
|
|
||||||
home.viewPdf.title=View/Edit PDF
|
home.viewPdf.title=檢視/編輯 PDF
|
||||||
home.viewPdf.desc=檢視、註釋、新增文字或圖片
|
home.viewPdf.desc=檢視、註釋、新增文字或圖片
|
||||||
viewPdf.tags=檢視,閱讀,註釋,文字,圖片
|
viewPdf.tags=檢視,閱讀,註釋,文字,圖片
|
||||||
|
|
||||||
home.setFavorites=Set Favourites
|
home.setFavorites=設定我的最愛
|
||||||
home.hideFavorites=Hide Favourites
|
home.hideFavorites=隱藏我的最愛
|
||||||
home.showFavorites=Show Favourites
|
home.showFavorites=顯示我的最愛
|
||||||
home.legacyHomepage=Old homepage
|
home.legacyHomepage=舊版首頁
|
||||||
home.newHomePage=Try our new homepage!
|
home.newHomePage=嘗試使用全新首頁!
|
||||||
home.alphabetical=Alphabetical
|
home.alphabetical=按照字母排序
|
||||||
home.globalPopularity=Global Popularity
|
home.globalPopularity=熱門程度
|
||||||
home.sortBy=Sort by:
|
home.sortBy=排序方式:
|
||||||
|
|
||||||
home.multiTool.title=PDF 複合工具
|
home.multiTool.title=PDF 複合工具
|
||||||
home.multiTool.desc=合併、旋轉、重新排列和移除頁面
|
home.multiTool.desc=合併、旋轉、重新排列和移除頁面
|
||||||
@@ -623,7 +623,7 @@ redact.showAttatchments=顯示附件
|
|||||||
redact.showLayers=顯示圖層(按兩下可將所有圖層重設為預設狀態)
|
redact.showLayers=顯示圖層(按兩下可將所有圖層重設為預設狀態)
|
||||||
redact.colourPicker=顏色選擇器
|
redact.colourPicker=顏色選擇器
|
||||||
redact.findCurrentOutlineItem=尋找目前的大綱項目
|
redact.findCurrentOutlineItem=尋找目前的大綱項目
|
||||||
redact.applyChanges=Apply Changes
|
redact.applyChanges=套用變更
|
||||||
|
|
||||||
#showJS
|
#showJS
|
||||||
showJS.title=顯示 JavaScript
|
showJS.title=顯示 JavaScript
|
||||||
@@ -992,7 +992,7 @@ pdfOrganiser.mode.7=刪除第一頁
|
|||||||
pdfOrganiser.mode.8=刪除最後一頁
|
pdfOrganiser.mode.8=刪除最後一頁
|
||||||
pdfOrganiser.mode.9=刪除第一頁和最後一頁
|
pdfOrganiser.mode.9=刪除第一頁和最後一頁
|
||||||
pdfOrganiser.mode.10=奇偶合併
|
pdfOrganiser.mode.10=奇偶合併
|
||||||
pdfOrganiser.mode.11=Duplicate all pages
|
pdfOrganiser.mode.11=複製所有頁面
|
||||||
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
pdfOrganiser.placeholder=(例如 1,3,2 或 4-8,2,10-12 或 2n-1)
|
||||||
|
|
||||||
|
|
||||||
@@ -1035,7 +1035,7 @@ decrypt.success=檔案已成功解密。
|
|||||||
multiTool-advert.message=此功能也可以在我們的<a href="{0}">複合工具頁面</a>中使用。前往查看並體驗更強大的逐頁操作介面及其他進階功能!
|
multiTool-advert.message=此功能也可以在我們的<a href="{0}">複合工具頁面</a>中使用。前往查看並體驗更強大的逐頁操作介面及其他進階功能!
|
||||||
|
|
||||||
#view pdf
|
#view pdf
|
||||||
viewPdf.title=View/Edit PDF
|
viewPdf.title=檢視/編輯 PDF
|
||||||
viewPdf.header=檢視 PDF
|
viewPdf.header=檢視 PDF
|
||||||
|
|
||||||
#pageRemover
|
#pageRemover
|
||||||
@@ -1384,3 +1384,4 @@ validateSignature.cert.version=版本
|
|||||||
validateSignature.cert.keyUsage=金鑰用途
|
validateSignature.cert.keyUsage=金鑰用途
|
||||||
validateSignature.cert.selfSigned=自我簽署
|
validateSignature.cert.selfSigned=自我簽署
|
||||||
validateSignature.cert.bits=位元
|
validateSignature.cert.bits=位元
|
||||||
|
compress.grayscale.label=應用灰階進行壓縮
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ system:
|
|||||||
showUpdateOnlyAdmin: false # only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
showUpdateOnlyAdmin: false # only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
||||||
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
|
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
|
||||||
tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
|
tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
|
||||||
enableAnalytics: 'true' # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
|
enableAnalytics: 'undefined' # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
|
||||||
disableSanitize: false # set to true to disable Sanitize HTML; (can lead to injections in HTML)
|
disableSanitize: false # set to true to disable Sanitize HTML; (can lead to injections in HTML)
|
||||||
datasource:
|
datasource:
|
||||||
enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration
|
enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-classic",
|
"moduleName": "ch.qos.logback:logback-classic",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.5.15",
|
"moduleVersion": "1.5.16",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "ch.qos.logback:logback-core",
|
"moduleName": "ch.qos.logback:logback-core",
|
||||||
"moduleUrl": "http://www.qos.ch",
|
"moduleUrl": "http://www.qos.ch",
|
||||||
"moduleVersion": "1.5.15",
|
"moduleVersion": "1.5.16",
|
||||||
"moduleLicense": "GNU Lesser General Public License",
|
"moduleLicense": "GNU Lesser General Public License",
|
||||||
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
"moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"
|
||||||
},
|
},
|
||||||
@@ -168,21 +168,21 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.google.errorprone:error_prone_annotations",
|
"moduleName": "com.google.errorprone:error_prone_annotations",
|
||||||
"moduleUrl": "https://errorprone.info/error_prone_annotations",
|
"moduleUrl": "https://errorprone.info/error_prone_annotations",
|
||||||
"moduleVersion": "2.28.0",
|
"moduleVersion": "2.27.0",
|
||||||
"moduleLicense": "Apache 2.0",
|
"moduleLicense": "Apache 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.google.guava:failureaccess",
|
"moduleName": "com.google.guava:failureaccess",
|
||||||
"moduleUrl": "https://github.com/google/guava/",
|
"moduleUrl": "https://github.com/google/guava/",
|
||||||
"moduleVersion": "1.0.2",
|
"moduleVersion": "1.0.1",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.google.guava:guava",
|
"moduleName": "com.google.guava:guava",
|
||||||
"moduleUrl": "https://github.com/google/guava/",
|
"moduleUrl": "https://github.com/google/guava/",
|
||||||
"moduleVersion": "33.3.1-jre",
|
"moduleVersion": "31.1-jre",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -195,8 +195,8 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.google.j2objc:j2objc-annotations",
|
"moduleName": "com.google.j2objc:j2objc-annotations",
|
||||||
"moduleUrl": "https://github.com/google/j2objc/",
|
"moduleUrl": "https://github.com/google/j2objc/",
|
||||||
"moduleVersion": "3.0.0",
|
"moduleVersion": "1.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -263,7 +263,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "com.nimbusds:oauth2-oidc-sdk",
|
"moduleName": "com.nimbusds:oauth2-oidc-sdk",
|
||||||
"moduleUrl": "https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions",
|
"moduleUrl": "https://bitbucket.org/connect2id/oauth-2.0-sdk-with-openid-connect-extensions",
|
||||||
"moduleVersion": "9.43.4",
|
"moduleVersion": "9.43.6",
|
||||||
"moduleLicense": "Apache License, version 2.0",
|
"moduleLicense": "Apache License, version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
||||||
},
|
},
|
||||||
@@ -512,7 +512,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "commons-codec:commons-codec",
|
"moduleName": "commons-codec:commons-codec",
|
||||||
"moduleUrl": "https://commons.apache.org/proper/commons-codec/",
|
"moduleUrl": "https://commons.apache.org/proper/commons-codec/",
|
||||||
"moduleVersion": "1.17.1",
|
"moduleVersion": "1.17.2",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -553,7 +553,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-commons",
|
"moduleName": "io.micrometer:micrometer-commons",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.14.2",
|
"moduleVersion": "1.14.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -567,14 +567,14 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-jakarta9",
|
"moduleName": "io.micrometer:micrometer-jakarta9",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.14.2",
|
"moduleVersion": "1.14.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "io.micrometer:micrometer-observation",
|
"moduleName": "io.micrometer:micrometer-observation",
|
||||||
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
"moduleUrl": "https://github.com/micrometer-metrics/micrometer",
|
||||||
"moduleVersion": "1.14.2",
|
"moduleVersion": "1.14.4",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -720,14 +720,14 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "me.friwi:jcef-api",
|
"moduleName": "me.friwi:jcef-api",
|
||||||
"moduleUrl": "https://bitbucket.org/chromiumembedded/java-cef/",
|
"moduleUrl": "https://bitbucket.org/chromiumembedded/java-cef/",
|
||||||
"moduleVersion": "jcef-99c2f7a+cef-127.3.1+g6cbb30e+chromium-127.0.6533.100",
|
"moduleVersion": "jcef-1770317+cef-132.3.1+g144febe+chromium-132.0.6834.83",
|
||||||
"moduleLicense": "BSD License",
|
"moduleLicense": "BSD License",
|
||||||
"moduleLicenseUrl": "https://bitbucket.org/chromiumembedded/java-cef/src/master/LICENSE.txt"
|
"moduleLicenseUrl": "https://bitbucket.org/chromiumembedded/java-cef/src/master/LICENSE.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "me.friwi:jcefmaven",
|
"moduleName": "me.friwi:jcefmaven",
|
||||||
"moduleUrl": "https://github.com/jcefmaven/jcefmaven/",
|
"moduleUrl": "https://github.com/jcefmaven/jcefmaven/",
|
||||||
"moduleVersion": "127.3.1",
|
"moduleVersion": "132.3.1",
|
||||||
"moduleLicense": "Apache-2.0 License",
|
"moduleLicense": "Apache-2.0 License",
|
||||||
"moduleLicenseUrl": "https://github.com/jcefmaven/jcefmaven/blob/master/LICENSE"
|
"moduleLicenseUrl": "https://github.com/jcefmaven/jcefmaven/blob/master/LICENSE"
|
||||||
},
|
},
|
||||||
@@ -747,14 +747,14 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "net.minidev:accessors-smart",
|
"moduleName": "net.minidev:accessors-smart",
|
||||||
"moduleUrl": "https://urielch.github.io/",
|
"moduleUrl": "https://urielch.github.io/",
|
||||||
"moduleVersion": "2.5.1",
|
"moduleVersion": "2.5.2",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "net.minidev:json-smart",
|
"moduleName": "net.minidev:json-smart",
|
||||||
"moduleUrl": "https://urielch.github.io/",
|
"moduleUrl": "https://urielch.github.io/",
|
||||||
"moduleVersion": "2.5.1",
|
"moduleVersion": "2.5.2",
|
||||||
"moduleLicense": "The Apache Software License, Version 2.0",
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -781,7 +781,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.apache.commons:commons-compress",
|
"moduleName": "org.apache.commons:commons-compress",
|
||||||
"moduleUrl": "https://commons.apache.org/proper/commons-compress/",
|
"moduleUrl": "https://commons.apache.org/proper/commons-compress/",
|
||||||
"moduleVersion": "1.26.0",
|
"moduleVersion": "1.27.1",
|
||||||
"moduleLicense": "Apache-2.0",
|
"moduleLicense": "Apache-2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -883,7 +883,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
"moduleName": "org.apache.tomcat.embed:tomcat-embed-el",
|
||||||
"moduleUrl": "https://tomcat.apache.org/",
|
"moduleUrl": "https://tomcat.apache.org/",
|
||||||
"moduleVersion": "10.1.34",
|
"moduleVersion": "10.1.36",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
"moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
},
|
},
|
||||||
@@ -1195,7 +1195,7 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.hibernate.orm:hibernate-core",
|
"moduleName": "org.hibernate.orm:hibernate-core",
|
||||||
"moduleUrl": "https://www.hibernate.org/orm/6.6",
|
"moduleUrl": "https://www.hibernate.org/orm/6.6",
|
||||||
"moduleVersion": "6.6.4.Final",
|
"moduleVersion": "6.6.8.Final",
|
||||||
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
"moduleLicense": "GNU Library General Public License v2.1 or later",
|
||||||
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
"moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1"
|
||||||
},
|
},
|
||||||
@@ -1392,238 +1392,238 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot",
|
"moduleName": "org.springframework.boot:spring-boot",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
"moduleName": "org.springframework.boot:spring-boot-autoconfigure",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
"moduleName": "org.springframework.boot:spring-boot-devtools",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter",
|
"moduleName": "org.springframework.boot:spring-boot-starter",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
"moduleName": "org.springframework.boot:spring-boot-starter-actuator",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
"moduleName": "org.springframework.boot:spring-boot-starter-data-jpa",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
"moduleName": "org.springframework.boot:spring-boot-starter-jdbc",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-jetty",
|
"moduleName": "org.springframework.boot:spring-boot-starter-jetty",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
"moduleName": "org.springframework.boot:spring-boot-starter-json",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
"moduleName": "org.springframework.boot:spring-boot-starter-logging",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-oauth2-client",
|
"moduleName": "org.springframework.boot:spring-boot-starter-oauth2-client",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
"moduleName": "org.springframework.boot:spring-boot-starter-security",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
"moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
"moduleName": "org.springframework.boot:spring-boot-starter-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-boot",
|
"moduleUrl": "https://spring.io/projects/spring-boot",
|
||||||
"moduleVersion": "3.4.2",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-commons",
|
"moduleName": "org.springframework.data:spring-data-commons",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-data",
|
"moduleUrl": "https://spring.io/projects/spring-data",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.data:spring-data-jpa",
|
"moduleName": "org.springframework.data:spring-data-jpa",
|
||||||
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
"moduleUrl": "https://projects.spring.io/spring-data-jpa",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-config",
|
"moduleName": "org.springframework.security:spring-security-config",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-core",
|
"moduleName": "org.springframework.security:spring-security-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-crypto",
|
"moduleName": "org.springframework.security:spring-security-crypto",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-client",
|
"moduleName": "org.springframework.security:spring-security-oauth2-client",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-core",
|
"moduleName": "org.springframework.security:spring-security-oauth2-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-oauth2-jose",
|
"moduleName": "org.springframework.security:spring-security-oauth2-jose",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-saml2-service-provider",
|
"moduleName": "org.springframework.security:spring-security-saml2-service-provider",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.security:spring-security-web",
|
"moduleName": "org.springframework.security:spring-security-web",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-security",
|
"moduleUrl": "https://spring.io/projects/spring-security",
|
||||||
"moduleVersion": "6.4.2",
|
"moduleVersion": "6.4.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework.session:spring-session-core",
|
"moduleName": "org.springframework.session:spring-session-core",
|
||||||
"moduleUrl": "https://spring.io/projects/spring-session",
|
"moduleUrl": "https://spring.io/projects/spring-session",
|
||||||
"moduleVersion": "3.4.1",
|
"moduleVersion": "3.4.2",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aop",
|
"moduleName": "org.springframework:spring-aop",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-aspects",
|
"moduleName": "org.springframework:spring-aspects",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-beans",
|
"moduleName": "org.springframework:spring-beans",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-context",
|
"moduleName": "org.springframework:spring-context",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-core",
|
"moduleName": "org.springframework:spring-core",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-expression",
|
"moduleName": "org.springframework:spring-expression",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-jcl",
|
"moduleName": "org.springframework:spring-jcl",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
@@ -1637,21 +1637,21 @@
|
|||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-orm",
|
"moduleName": "org.springframework:spring-orm",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-tx",
|
"moduleName": "org.springframework:spring-tx",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.springframework:spring-web",
|
"moduleName": "org.springframework:spring-web",
|
||||||
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
"moduleUrl": "https://github.com/spring-projects/spring-framework",
|
||||||
"moduleVersion": "6.2.1",
|
"moduleVersion": "6.2.3",
|
||||||
"moduleLicense": "Apache License, Version 2.0",
|
"moduleLicense": "Apache License, Version 2.0",
|
||||||
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -57,13 +57,17 @@ async function checkForUpdate() {
|
|||||||
// Initialize the update button as hidden
|
// Initialize the update button as hidden
|
||||||
var updateBtn = document.getElementById("update-btn") || null;
|
var updateBtn = document.getElementById("update-btn") || null;
|
||||||
var updateLink = document.getElementById("update-link") || null;
|
var updateLink = document.getElementById("update-link") || null;
|
||||||
|
var updateLinkLegacy = document.getElementById("update-link-legacy") || null;
|
||||||
if (updateBtn !== null) {
|
if (updateBtn !== null) {
|
||||||
updateBtn.style.display = "none";
|
updateBtn.style.display = "none";
|
||||||
}
|
}
|
||||||
if (updateLink !== null) {
|
if (updateLink !== null) {
|
||||||
|
updateLink.style.display = "none";
|
||||||
|
}
|
||||||
|
if (updateLinkLegacy !== null) {
|
||||||
console.log("hidden!");
|
console.log("hidden!");
|
||||||
if (!updateLink.classList.contains("visually-hidden")) {
|
if (!updateLinkLegacy.classList.contains("visually-hidden")) {
|
||||||
updateLink.classList.add("visually-hidden");
|
updateLinkLegacy.classList.add("visually-hidden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,16 +80,19 @@ async function checkForUpdate() {
|
|||||||
document.getElementById("update-btn").style.display = "block";
|
document.getElementById("update-btn").style.display = "block";
|
||||||
}
|
}
|
||||||
if (updateLink !== null) {
|
if (updateLink !== null) {
|
||||||
|
document.getElementById("update-link").style.display = "flex";
|
||||||
|
}
|
||||||
|
if (updateLinkLegacy !== null) {
|
||||||
document.getElementById("app-update").innerHTML = updateAvailable.replace("{0}", '<b>' + currentVersion + '</b>').replace("{1}", '<b>' + latestVersion + '</b>');
|
document.getElementById("app-update").innerHTML = updateAvailable.replace("{0}", '<b>' + currentVersion + '</b>').replace("{1}", '<b>' + latestVersion + '</b>');
|
||||||
if (updateLink.classList.contains("visually-hidden")) {
|
if (updateLinkLegacy.classList.contains("visually-hidden")) {
|
||||||
updateLink.classList.remove("visually-hidden");
|
updateLinkLegacy.classList.remove("visually-hidden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("visible");
|
console.log("visible");
|
||||||
} else {
|
} else {
|
||||||
if (updateLink !== null) {
|
if (updateLinkLegacy !== null) {
|
||||||
if (!updateLink.classList.contains("visually-hidden")) {
|
if (!updateLinkLegacy.classList.contains("visually-hidden")) {
|
||||||
updateLink.classList.add("visually-hidden");
|
updateLinkLegacy.classList.add("visually-hidden");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("hidden");
|
console.log("hidden");
|
||||||
|
|||||||
@@ -73,12 +73,6 @@ function reorderCards(container) {
|
|||||||
cards.sort(function (a, b) {
|
cards.sort(function (a, b) {
|
||||||
var aIsFavorite = localStorage.getItem(a.id) === 'favorite';
|
var aIsFavorite = localStorage.getItem(a.id) === 'favorite';
|
||||||
var bIsFavorite = localStorage.getItem(b.id) === 'favorite';
|
var bIsFavorite = localStorage.getItem(b.id) === 'favorite';
|
||||||
if (a.id === 'update-link') {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (b.id === 'update-link') {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (aIsFavorite && !bIsFavorite) {
|
if (aIsFavorite && !bIsFavorite) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap
vendored
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap
vendored
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-H.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/78-H.bcmap
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-V.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/78-V.bcmap
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-H.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/Add-H.bcmap
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-V.bcmap
vendored
BIN
src/main/resources/static/pdfjs/cmaps/Add-V.bcmap
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user