Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
737be6c458 | ||
|
|
2e8abb7bb2 | ||
|
|
e2d75ead27 | ||
|
|
28e89a373f | ||
|
|
b4451da2f4 | ||
|
|
8353c399d2 | ||
|
|
af1b156ba6 | ||
|
|
3654743d95 | ||
|
|
58bd9b36cd | ||
|
|
d31b379b5c | ||
|
|
35c85bfeb8 | ||
|
|
64469061fd | ||
|
|
57c343910f | ||
|
|
319ba24be0 | ||
|
|
ec12470188 | ||
|
|
ec88e893c8 | ||
|
|
4ef5a0688b | ||
|
|
86438d7ad3 | ||
|
|
3b15a166c5 | ||
|
|
907a0fb4ff | ||
|
|
8b28bf66fa | ||
|
|
6bd7eadd85 | ||
|
|
a46a570c8a | ||
|
|
a64acb3126 | ||
|
|
2229f38602 | ||
|
|
901bf50d54 |
29
.github/pull_request_template.md
vendored
29
.github/pull_request_template.md
vendored
@@ -1,15 +1,34 @@
|
|||||||
# Description
|
# Description of Changes
|
||||||
|
|
||||||
Please provide a summary of the changes, including relevant motivation and context.
|
Please provide a summary of the changes, including:
|
||||||
|
|
||||||
|
- What was changed
|
||||||
|
- Why the change was made
|
||||||
|
- Any challenges encountered
|
||||||
|
|
||||||
Closes #(issue_number)
|
Closes #(issue_number)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Checklist
|
## Checklist
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
- [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
|
- [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
|
||||||
|
- [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable)
|
||||||
|
- [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable)
|
||||||
- [ ] I have performed a self-review of my own code
|
- [ ] I have performed a self-review of my own code
|
||||||
- [ ] I have attached images of the change if it is UI based
|
|
||||||
- [ ] I have commented my code, particularly in hard-to-understand areas
|
|
||||||
- [ ] If my code has heavily changed functionality I have updated relevant docs on [Stirling-PDFs doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
|
|
||||||
- [ ] My changes generate no new warnings
|
- [ ] My changes generate no new warnings
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed)
|
||||||
- [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only)
|
- [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only)
|
||||||
|
|
||||||
|
### UI Changes (if applicable)
|
||||||
|
|
||||||
|
- [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR)
|
||||||
|
|
||||||
|
### Testing (if applicable)
|
||||||
|
|
||||||
|
- [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details.
|
||||||
|
|||||||
78
.github/scripts/check_language_properties.py
vendored
78
.github/scripts/check_language_properties.py
vendored
@@ -21,25 +21,60 @@ import argparse
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def find_duplicate_keys(file_path):
|
||||||
|
"""
|
||||||
|
Identifies duplicate keys in a .properties file.
|
||||||
|
:param file_path: Path to the .properties file.
|
||||||
|
:return: List of tuples (key, first_occurrence_line, duplicate_line).
|
||||||
|
"""
|
||||||
|
keys = {}
|
||||||
|
duplicates = []
|
||||||
|
|
||||||
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
|
for line_number, line in enumerate(file, start=1):
|
||||||
|
stripped_line = line.strip()
|
||||||
|
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if not stripped_line or stripped_line.startswith("#"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Split the line into key and value
|
||||||
|
if "=" in stripped_line:
|
||||||
|
key, _ = stripped_line.split("=", 1)
|
||||||
|
key = key.strip()
|
||||||
|
|
||||||
|
# Check if the key already exists
|
||||||
|
if key in keys:
|
||||||
|
duplicates.append((key, keys[key], line_number))
|
||||||
|
else:
|
||||||
|
keys[key] = line_number
|
||||||
|
|
||||||
|
return duplicates
|
||||||
|
|
||||||
|
|
||||||
# Maximum size for properties files (e.g., 200 KB)
|
# Maximum size for properties files (e.g., 200 KB)
|
||||||
MAX_FILE_SIZE = 200 * 1024
|
MAX_FILE_SIZE = 200 * 1024
|
||||||
|
|
||||||
|
|
||||||
def parse_properties_file(file_path):
|
def parse_properties_file(file_path):
|
||||||
"""Parses a .properties file and returns a list of objects (including comments, empty lines, and line numbers)."""
|
"""
|
||||||
|
Parses a .properties file and returns a structured list of its contents.
|
||||||
|
:param file_path: Path to the .properties file.
|
||||||
|
:return: List of dictionaries representing each line in the file.
|
||||||
|
"""
|
||||||
properties_list = []
|
properties_list = []
|
||||||
with open(file_path, "r", encoding="utf-8") as file:
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
for line_number, line in enumerate(file, start=1):
|
for line_number, line in enumerate(file, start=1):
|
||||||
stripped_line = line.strip()
|
stripped_line = line.strip()
|
||||||
|
|
||||||
# Empty lines
|
# Handle empty lines
|
||||||
if not stripped_line:
|
if not stripped_line:
|
||||||
properties_list.append(
|
properties_list.append(
|
||||||
{"line_number": line_number, "type": "empty", "content": ""}
|
{"line_number": line_number, "type": "empty", "content": ""}
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Comments
|
# Handle comments
|
||||||
if stripped_line.startswith("#"):
|
if stripped_line.startswith("#"):
|
||||||
properties_list.append(
|
properties_list.append(
|
||||||
{
|
{
|
||||||
@@ -50,7 +85,7 @@ def parse_properties_file(file_path):
|
|||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Key-value pairs
|
# Handle key-value pairs
|
||||||
match = re.match(r"^([^=]+)=(.*)$", line)
|
match = re.match(r"^([^=]+)=(.*)$", line)
|
||||||
if match:
|
if match:
|
||||||
key, value = match.groups()
|
key, value = match.groups()
|
||||||
@@ -67,9 +102,14 @@ def parse_properties_file(file_path):
|
|||||||
|
|
||||||
|
|
||||||
def write_json_file(file_path, updated_properties):
|
def write_json_file(file_path, updated_properties):
|
||||||
|
"""
|
||||||
|
Writes updated properties back to the file in their original format.
|
||||||
|
:param file_path: Path to the .properties file.
|
||||||
|
:param updated_properties: List of updated properties to write.
|
||||||
|
"""
|
||||||
updated_lines = {entry["line_number"]: entry for entry in updated_properties}
|
updated_lines = {entry["line_number"]: entry for entry in updated_properties}
|
||||||
|
|
||||||
# Sort by line numbers and retain comments and empty lines
|
# Sort lines by their numbers and retain comments and empty lines
|
||||||
all_lines = sorted(set(updated_lines.keys()))
|
all_lines = sorted(set(updated_lines.keys()))
|
||||||
|
|
||||||
original_format = []
|
original_format = []
|
||||||
@@ -88,8 +128,8 @@ def write_json_file(file_path, updated_properties):
|
|||||||
# Replace entries with those from the current JSON
|
# Replace entries with those from the current JSON
|
||||||
original_format.append(entry)
|
original_format.append(entry)
|
||||||
|
|
||||||
# Write back in the original format
|
# Write the updated content back to the file
|
||||||
with open(file_path, "w", encoding="utf-8") as file:
|
with open(file_path, "w", encoding="utf-8", newline="\n") as file:
|
||||||
for entry in original_format:
|
for entry in original_format:
|
||||||
if entry["type"] == "comment":
|
if entry["type"] == "comment":
|
||||||
file.write(f"{entry['content']}\n")
|
file.write(f"{entry['content']}\n")
|
||||||
@@ -100,6 +140,12 @@ def write_json_file(file_path, updated_properties):
|
|||||||
|
|
||||||
|
|
||||||
def update_missing_keys(reference_file, file_list, branch=""):
|
def update_missing_keys(reference_file, file_list, branch=""):
|
||||||
|
"""
|
||||||
|
Updates missing keys in the translation files based on the reference file.
|
||||||
|
:param reference_file: Path to the reference .properties file.
|
||||||
|
:param file_list: List of translation files to update.
|
||||||
|
:param branch: Branch where the files are located.
|
||||||
|
"""
|
||||||
reference_properties = parse_properties_file(reference_file)
|
reference_properties = parse_properties_file(reference_file)
|
||||||
for file_path in file_list:
|
for file_path in file_list:
|
||||||
basename_current_file = os.path.basename(os.path.join(branch, file_path))
|
basename_current_file = os.path.basename(os.path.join(branch, file_path))
|
||||||
@@ -245,6 +291,24 @@ def check_for_differences(reference_file, file_list, branch, actor):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
report.append("2. **Test Status:** ✅ **_Passed_**")
|
report.append("2. **Test Status:** ✅ **_Passed_**")
|
||||||
|
|
||||||
|
if find_duplicate_keys(os.path.join(branch, file_path)):
|
||||||
|
has_differences = True
|
||||||
|
output = "\n".join(
|
||||||
|
[
|
||||||
|
f" - `{key}`: first at line {first}, duplicate at `line {duplicate}`"
|
||||||
|
for key, first, duplicate in find_duplicate_keys(
|
||||||
|
os.path.join(branch, file_path)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
report.append("3. **Test Status:** ❌ **_Failed_**")
|
||||||
|
report.append(" - **Issue:**")
|
||||||
|
report.append(" - duplicate entries were found:")
|
||||||
|
report.append(output)
|
||||||
|
else:
|
||||||
|
report.append("3. **Test Status:** ✅ **_Passed_**")
|
||||||
|
|
||||||
report.append("")
|
report.append("")
|
||||||
report.append("---")
|
report.append("---")
|
||||||
report.append("")
|
report.append("")
|
||||||
|
|||||||
9
.github/workflows/multiOSReleases.yml
vendored
9
.github/workflows/multiOSReleases.yml
vendored
@@ -130,8 +130,8 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
platform: win-
|
platform: win-
|
||||||
# - os: macos-latest
|
- os: macos-latest
|
||||||
# platform: mac-
|
platform: mac-
|
||||||
# - os: ubuntu-latest
|
# - os: ubuntu-latest
|
||||||
# platform: linux-
|
# platform: linux-
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@@ -168,6 +168,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DOCKER_ENABLE_SECURITY: false
|
DOCKER_ENABLE_SECURITY: false
|
||||||
STIRLING_PDF_DESKTOP_UI: true
|
STIRLING_PDF_DESKTOP_UI: true
|
||||||
|
BROWSER_OPEN: true
|
||||||
|
|
||||||
# Rename and collect artifacts based on OS
|
# Rename and collect artifacts based on OS
|
||||||
- name: Prepare artifacts
|
- name: Prepare artifacts
|
||||||
@@ -202,8 +203,8 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
platform: win-
|
platform: win-
|
||||||
# - os: macos-latest
|
- os: macos-latest
|
||||||
# platform: mac-
|
platform: mac-
|
||||||
# - os: ubuntu-latest
|
# - os: ubuntu-latest
|
||||||
# platform: linux-
|
# platform: linux-
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
104
.github/workflows/sync_files.yml
vendored
104
.github/workflows/sync_files.yml
vendored
@@ -13,47 +13,116 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
sync-readme:
|
read_bot_entries:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
outputs:
|
||||||
contents: write
|
userName: ${{ steps.get-user-id.outputs.user_name }}
|
||||||
pull-requests: write
|
userEmail: ${{ steps.get-user-id.outputs.user_email }}
|
||||||
|
committer: ${{ steps.committer.outputs.committer }}
|
||||||
steps:
|
steps:
|
||||||
- name: Harden Runner
|
- name: Harden Runner
|
||||||
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Generate GitHub App Token
|
||||||
|
id: generate-token
|
||||||
|
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.GH_APP_ID }}
|
||||||
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
|
- name: Get GitHub App User ID
|
||||||
|
id: get-user-id
|
||||||
|
run: |
|
||||||
|
USER_NAME="${{ steps.generate-token.outputs.app-slug }}[bot]"
|
||||||
|
USER_ID=$(gh api "/users/$USER_NAME" --jq .id)
|
||||||
|
USER_EMAIL="$USER_ID+$USER_NAME@users.noreply.github.com"
|
||||||
|
echo "user_name=$USER_NAME" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "user_email=$USER_EMAIL" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "user-id=$USER_ID" >> "$GITHUB_OUTPUT"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
|
- id: committer
|
||||||
|
run: |
|
||||||
|
COMMITTER="${{ steps.get-user-id.outputs.user_name }} <${{ steps.get-user-id.outputs.user_email }}>"
|
||||||
|
echo "committer=$COMMITTER" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
sync-files:
|
||||||
|
needs: ["read_bot_entries"]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
||||||
|
with:
|
||||||
|
egress-policy: audit
|
||||||
|
|
||||||
|
- name: Generate GitHub App Token
|
||||||
|
id: generate-token
|
||||||
|
uses: actions/create-github-app-token@c1a285145b9d317df6ced56c09f525b5c2b6f755 # v1.11.1
|
||||||
|
with:
|
||||||
|
app-id: ${{ vars.GH_APP_ID }}
|
||||||
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
cache: 'pip' # caching pip dependencies
|
cache: 'pip' # caching pip dependencies
|
||||||
- name: Install dependencies
|
|
||||||
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
|
- name: Sync translation property files
|
||||||
- name: Sync README
|
run: |
|
||||||
run: python scripts/counter_translation.py
|
python .github/scripts/check_language_properties.py --reference-file "src/main/resources/messages_en_GB.properties" --branch main
|
||||||
|
|
||||||
- name: Set up git config
|
- name: Set up git config
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "github-actions[bot]"
|
git config --global user.name ${{ needs.read_bot_entries.outputs.userName }}
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
git config --global user.email ${{ needs.read_bot_entries.outputs.userEmail }}
|
||||||
|
|
||||||
- name: Run git add
|
- name: Run git add
|
||||||
run: |
|
run: |
|
||||||
git add .
|
git add .
|
||||||
git diff --staged --quiet || git commit -m ":memo: Sync README
|
git diff --staged --quiet || git commit -m ":memo: Sync translation files" || echo "no changes"
|
||||||
> Made via sync_files.yml" || echo "no changes"
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
|
||||||
|
|
||||||
|
- name: Sync README
|
||||||
|
run: |
|
||||||
|
python scripts/counter_translation.py
|
||||||
|
|
||||||
|
- name: Run git add
|
||||||
|
run: |
|
||||||
|
git add .
|
||||||
|
git diff --staged --quiet || git commit -m ":memo: Sync README.md" || echo "no changes"
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
commit-message: Update files
|
commit-message: Update files
|
||||||
committer: GitHub Action <action@github.com>
|
committer: ${{ needs.read_bot_entries.outputs.committer }}
|
||||||
author: GitHub Action <action@github.com>
|
author: ${{ needs.read_bot_entries.outputs.committer }}
|
||||||
signoff: true
|
signoff: true
|
||||||
branch: sync_readme
|
branch: sync_readme
|
||||||
title: ":memo: Update README: Translation Progress Table"
|
title: ":memo: Sync translation files + Update README.md (Translation Progress Table)"
|
||||||
body: |
|
body: |
|
||||||
|
#### Description
|
||||||
|
|
||||||
|
This Pull Request was automatically generated to synchronize updates to translation files and documentation. The changes include:
|
||||||
|
|
||||||
|
1. **Synchronization of Translation Files:**
|
||||||
|
- Updated content based on the latest changes in `messages_en_GB.properties`.
|
||||||
|
- Ensured consistency between all language files and the reference file.
|
||||||
|
|
||||||
|
2. **Update README.md:**
|
||||||
|
- Generated the translation progress table.
|
||||||
|
- Displayed the current status of translations for all supported languages.
|
||||||
|
|
||||||
|
---
|
||||||
Auto-generated by [create-pull-request][1]
|
Auto-generated by [create-pull-request][1]
|
||||||
|
|
||||||
[1]: https://github.com/peter-evans/create-pull-request
|
[1]: https://github.com/peter-evans/create-pull-request
|
||||||
@@ -61,3 +130,6 @@ jobs:
|
|||||||
delete-branch: true
|
delete-branch: true
|
||||||
labels: Documentation,Translation,github-actions
|
labels: Documentation,Translation,github-actions
|
||||||
sign-commits: true
|
sign-commits: true
|
||||||
|
add-paths: |
|
||||||
|
README.md
|
||||||
|
src/main/resources/messages_*.properties
|
||||||
|
|||||||
73
.github/workflows/update-translations.yml
vendored
73
.github/workflows/update-translations.yml
vendored
@@ -1,73 +0,0 @@
|
|||||||
name: Update Translations
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches: ["main"]
|
|
||||||
paths:
|
|
||||||
- "src/main/resources/messages_en_GB.properties"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-translations-main:
|
|
||||||
if: github.event_name == 'push'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- name: Harden Runner
|
|
||||||
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
|
||||||
with:
|
|
||||||
egress-policy: audit
|
|
||||||
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
||||||
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
|
||||||
with:
|
|
||||||
python-version: "3.12"
|
|
||||||
|
|
||||||
- name: Run Python script to check files
|
|
||||||
id: run-check
|
|
||||||
run: |
|
|
||||||
echo "Running Python script to check files..."
|
|
||||||
python .github/scripts/check_language_properties.py \
|
|
||||||
--reference-file src/main/resources/messages_en_GB.properties \
|
|
||||||
--branch main
|
|
||||||
|
|
||||||
- name: Set up git config
|
|
||||||
run: |
|
|
||||||
git config --global user.name "github-actions[bot]"
|
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
|
|
||||||
- name: Add translation keys
|
|
||||||
run: |
|
|
||||||
git add src/main/resources/messages_*.properties
|
|
||||||
git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
id: cpr
|
|
||||||
if: env.CHANGES_DETECTED == 'true'
|
|
||||||
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
commit-message: "Update translation files"
|
|
||||||
committer: GitHub Action <action@github.com>
|
|
||||||
author: GitHub Action <action@github.com>
|
|
||||||
signoff: true
|
|
||||||
branch: update_translation_files
|
|
||||||
title: "Update translation files"
|
|
||||||
add-paths: |
|
|
||||||
src/main/resources/messages_*.properties
|
|
||||||
body: |
|
|
||||||
Auto-generated by [create-pull-request][1]
|
|
||||||
|
|
||||||
[1]: https://github.com/peter-evans/create-pull-request
|
|
||||||
draft: false
|
|
||||||
delete-branch: true
|
|
||||||
labels: Translation,github-actions
|
|
||||||
sign-commits: true
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -21,6 +21,7 @@ pipeline/finishedFolders/
|
|||||||
customFiles/
|
customFiles/
|
||||||
configs/
|
configs/
|
||||||
watchedFolders/
|
watchedFolders/
|
||||||
|
clientWebUI/
|
||||||
!cucumber/
|
!cucumber/
|
||||||
!cucumber/exampleFiles/
|
!cucumber/exampleFiles/
|
||||||
!cucumber/exampleFiles/example_html.zip
|
!cucumber/exampleFiles/example_html.zip
|
||||||
|
|||||||
@@ -592,7 +592,7 @@ dependencies {
|
|||||||
2. Generate new verification metadata and keys:
|
2. Generate new verification metadata and keys:
|
||||||
```bash
|
```bash
|
||||||
# Generate verification metadata with signatures and checksums
|
# Generate verification metadata with signatures and checksums
|
||||||
./gradlew clean dependencies buildEnvironment --write-verification-metadata sha256,pgp
|
./gradlew clean dependencies buildEnvironment spotlessApply --write-verification-metadata sha256,pgp
|
||||||
|
|
||||||
# Export the .keys file
|
# Export the .keys file
|
||||||
./gradlew --export-keys
|
./gradlew --export-keys
|
||||||
|
|||||||
39
README.md
39
README.md
@@ -113,45 +113,46 @@ Visit our comprehensive documentation at [docs.stirlingpdf.com](https://docs.sti
|
|||||||
|
|
||||||
## Supported Languages
|
## Supported Languages
|
||||||
|
|
||||||
Stirling-PDF currently supports 38 languages!
|
Stirling-PDF currently supports 39 languages!
|
||||||
|
|
||||||
| Language | Progress |
|
| Language | Progress |
|
||||||
| -------------------------------------------- | -------------------------------------- |
|
| -------------------------------------------- | -------------------------------------- |
|
||||||
| Arabic (العربية) (ar_AR) |  |
|
| Arabic (العربية) (ar_AR) |  |
|
||||||
| Azerbaijani (Azərbaycan Dili) (az_AZ) |  |
|
| Azerbaijani (Azərbaycan Dili) (az_AZ) |  |
|
||||||
| Basque (Euskara) (eu_ES) |  |
|
| Basque (Euskara) (eu_ES) |  |
|
||||||
| Bulgarian (Български) (bg_BG) |  |
|
| Bulgarian (Български) (bg_BG) |  |
|
||||||
| Catalan (Català) (ca_CA) |  |
|
| Catalan (Català) (ca_CA) |  |
|
||||||
| Croatian (Hrvatski) (hr_HR) |  |
|
| Croatian (Hrvatski) (hr_HR) |  |
|
||||||
| Czech (Česky) (cs_CZ) |  |
|
| Czech (Česky) (cs_CZ) |  |
|
||||||
| Danish (Dansk) (da_DK) |  |
|
| Danish (Dansk) (da_DK) |  |
|
||||||
| Dutch (Nederlands) (nl_NL) |  |
|
| Dutch (Nederlands) (nl_NL) |  |
|
||||||
| English (English) (en_GB) |  |
|
| English (English) (en_GB) |  |
|
||||||
| English (US) (en_US) |  |
|
| English (US) (en_US) |  |
|
||||||
| French (Français) (fr_FR) |  |
|
| French (Français) (fr_FR) |  |
|
||||||
| German (Deutsch) (de_DE) |  |
|
| German (Deutsch) (de_DE) |  |
|
||||||
| Greek (Ελληνικά) (el_GR) |  |
|
| Greek (Ελληνικά) (el_GR) |  |
|
||||||
| Hindi (हिंदी) (hi_IN) |  |
|
| Hindi (हिंदी) (hi_IN) |  |
|
||||||
| Hungarian (Magyar) (hu_HU) |  |
|
| Hungarian (Magyar) (hu_HU) |  |
|
||||||
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
||||||
| Irish (Gaeilge) (ga_IE) |  |
|
| Irish (Gaeilge) (ga_IE) |  |
|
||||||
| Italian (Italiano) (it_IT) |  |
|
| Italian (Italiano) (it_IT) |  |
|
||||||
| Japanese (日本語) (ja_JP) |  |
|
| Japanese (日本語) (ja_JP) |  |
|
||||||
| Korean (한국어) (ko_KR) |  |
|
| Korean (한국어) (ko_KR) |  |
|
||||||
| Norwegian (Norsk) (no_NB) |  |
|
| Norwegian (Norsk) (no_NB) |  |
|
||||||
| Persian (فارسی) (fa_IR) |  |
|
| Persian (فارسی) (fa_IR) |  |
|
||||||
| Polish (Polski) (pl_PL) |  |
|
| Polish (Polski) (pl_PL) |  |
|
||||||
| Portuguese (Português) (pt_PT) |  |
|
| Portuguese (Português) (pt_PT) |  |
|
||||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||||
| Romanian (Română) (ro_RO) |  |
|
| Romanian (Română) (ro_RO) |  |
|
||||||
| Russian (Русский) (ru_RU) |  |
|
| Russian (Русский) (ru_RU) |  |
|
||||||
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) |  |
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
| Slovakian (Slovensky) (sk_SK) |  |
|
| Slovakian (Slovensky) (sk_SK) |  |
|
||||||
| Spanish (Español) (es_ES) |  |
|
| Slovenian (Slovenščina) (sl_SI) |  |
|
||||||
| Swedish (Svenska) (sv_SE) |  |
|
| Spanish (Español) (es_ES) |  |
|
||||||
| Thai (ไทย) (th_TH) |  |
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
| Thai (ไทย) (th_TH) |  |
|
||||||
|
| 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) |  |
|
||||||
|
|||||||
90
build.gradle
90
build.gradle
@@ -5,10 +5,10 @@ plugins {
|
|||||||
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"
|
||||||
id "edu.sc.seis.launch4j" version "3.0.6"
|
id "edu.sc.seis.launch4j" version "3.0.6"
|
||||||
id "com.diffplug.spotless" version "7.0.1"
|
id "com.diffplug.spotless" version "7.0.2"
|
||||||
id "com.github.jk1.dependency-license-report" version "2.9"
|
id "com.github.jk1.dependency-license-report" version "2.9"
|
||||||
//id "nebula.lint" version "19.0.3"
|
//id "nebula.lint" version "19.0.3"
|
||||||
id("org.panteleyev.jpackageplugin") version "1.6.0"
|
id("org.panteleyev.jpackageplugin") version "1.6.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
import com.github.jk1.license.render.*
|
import com.github.jk1.license.render.*
|
||||||
@@ -25,7 +25,7 @@ ext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "stirling.software"
|
group = "stirling.software"
|
||||||
version = "0.37.1"
|
version = "0.38.0"
|
||||||
|
|
||||||
|
|
||||||
java {
|
java {
|
||||||
@@ -35,9 +35,9 @@ java {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url "https://jitpack.io" }
|
maven { url = "https://jitpack.io" }
|
||||||
maven { url "https://build.shibboleth.net/maven/releases" }
|
maven { url = "https://build.shibboleth.net/maven/releases" }
|
||||||
maven { url "https://maven.pkg.github.com/jcefmaven/jcefmaven" }
|
maven { url = "https://maven.pkg.github.com/jcefmaven/jcefmaven" }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") {
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") {
|
||||||
exclude "stirling/software/SPDF/UI/impl/**"
|
exclude "stirling/software/SPDF/UI/impl/**"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -111,18 +111,15 @@ def getMacVersion(String version) {
|
|||||||
|
|
||||||
jpackage {
|
jpackage {
|
||||||
input = "build/libs"
|
input = "build/libs"
|
||||||
|
destination = "${projectDir}/build/jpackage"
|
||||||
|
mainJar = "Stirling-PDF-${project.version}.jar"
|
||||||
appName = "Stirling-PDF"
|
appName = "Stirling-PDF"
|
||||||
appVersion = project.version
|
appVersion = project.version
|
||||||
vendor = "Stirling-Software"
|
vendor = "Stirling-Software"
|
||||||
appDescription = "Stirling PDF - Your Local PDF Editor"
|
appDescription = "Stirling PDF - Your Local PDF Editor"
|
||||||
|
|
||||||
mainJar = "Stirling-PDF-${project.version}.jar"
|
|
||||||
mainClass = "org.springframework.boot.loader.launch.JarLauncher"
|
|
||||||
|
|
||||||
icon = "src/main/resources/static/favicon.ico"
|
icon = "src/main/resources/static/favicon.ico"
|
||||||
|
verbose = true
|
||||||
|
// mainClass = "org.springframework.boot.loader.launch.JarLauncher"
|
||||||
|
|
||||||
// JVM Options
|
// JVM Options
|
||||||
javaOptions = [
|
javaOptions = [
|
||||||
@@ -136,20 +133,15 @@ jpackage {
|
|||||||
"--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED",
|
"--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED",
|
||||||
"--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED",
|
"--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED",
|
||||||
"--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED",
|
"--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED",
|
||||||
"--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED"
|
"--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
destination = "${projectDir}/build/jpackage"
|
|
||||||
|
|
||||||
// Windows-specific configuration
|
// Windows-specific configuration
|
||||||
windows {
|
windows {
|
||||||
launcherAsService = false
|
launcherAsService = false
|
||||||
appVersion = project.version
|
appVersion = project.version
|
||||||
|
|
||||||
winConsole = false
|
winConsole = false
|
||||||
winMenu = true // Creates start menu entry
|
winMenu = true // Creates start menu entry
|
||||||
winShortcut = true // Creates desktop shortcut
|
winShortcut = true // Creates desktop shortcut
|
||||||
winShortcutPrompt = true // Lets user choose whether to create shortcuts
|
winShortcutPrompt = true // Lets user choose whether to create shortcuts
|
||||||
@@ -165,7 +157,7 @@ jpackage {
|
|||||||
|
|
||||||
// macOS-specific configuration
|
// macOS-specific configuration
|
||||||
mac {
|
mac {
|
||||||
appVersion = getMacVersion(project.version.toString())
|
appVersion = getMacVersion(project.version.toString())
|
||||||
icon = "src/main/resources/static/favicon.icns"
|
icon = "src/main/resources/static/favicon.icns"
|
||||||
type = "dmg"
|
type = "dmg"
|
||||||
macPackageIdentifier = "com.stirling.software.pdf"
|
macPackageIdentifier = "com.stirling.software.pdf"
|
||||||
@@ -189,7 +181,7 @@ jpackage {
|
|||||||
|
|
||||||
// Linux-specific configuration
|
// Linux-specific configuration
|
||||||
linux {
|
linux {
|
||||||
appVersion = project.version
|
appVersion = project.version
|
||||||
icon = "src/main/resources/static/favicon.png"
|
icon = "src/main/resources/static/favicon.png"
|
||||||
type = "deb" // Can also use "rpm" for Red Hat-based systems
|
type = "deb" // Can also use "rpm" for Red Hat-based systems
|
||||||
|
|
||||||
@@ -237,9 +229,9 @@ launch4j {
|
|||||||
outfile="Stirling-PDF.exe"
|
outfile="Stirling-PDF.exe"
|
||||||
|
|
||||||
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
||||||
headerType = "gui"
|
headerType = "gui"
|
||||||
} else {
|
} else {
|
||||||
headerType = "console"
|
headerType = "console"
|
||||||
}
|
}
|
||||||
jarTask = tasks.bootJar
|
jarTask = tasks.bootJar
|
||||||
|
|
||||||
@@ -247,13 +239,11 @@ launch4j {
|
|||||||
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
||||||
|
|
||||||
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
||||||
variables=["BROWSER_OPEN=true", "STIRLING_PDF_DESKTOP_UI=true"]
|
variables=["BROWSER_OPEN=true", "STIRLING_PDF_DESKTOP_UI=true"]
|
||||||
} else {
|
} else {
|
||||||
variables=["BROWSER_OPEN=true"]
|
variables=["BROWSER_OPEN=true"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jreMinVersion="17"
|
jreMinVersion="17"
|
||||||
|
|
||||||
mutexName="Stirling-PDF"
|
mutexName="Stirling-PDF"
|
||||||
@@ -275,7 +265,7 @@ spotless {
|
|||||||
importOrder("java", "javax", "org", "com", "net", "io")
|
importOrder("java", "javax", "org", "com", "net", "io")
|
||||||
toggleOffOn()
|
toggleOffOn()
|
||||||
trimTrailingWhitespace()
|
trimTrailingWhitespace()
|
||||||
indentWithSpaces()
|
leadingTabsToSpaces()
|
||||||
endWithNewline()
|
endWithNewline()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -294,10 +284,10 @@ configurations.all {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
|
||||||
implementation "me.friwi:jcefmaven:127.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"
|
||||||
}
|
}
|
||||||
|
|
||||||
//security updates
|
//security updates
|
||||||
@@ -323,10 +313,10 @@ 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:$springBootVersion"
|
implementation "org.springframework.session:spring-session-core:$springBootVersion"
|
||||||
implementation "org.springframework:spring-jdbc:6.2.1"
|
implementation "org.springframework:spring-jdbc:6.2.1"
|
||||||
|
|
||||||
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
||||||
// Don't upgrade h2database
|
// Don't upgrade h2database
|
||||||
runtimeOnly "com.h2database:h2:2.3.232"
|
runtimeOnly "com.h2database:h2:2.3.232"
|
||||||
runtimeOnly "org.postgresql:postgresql:42.7.4"
|
runtimeOnly "org.postgresql:postgresql:42.7.4"
|
||||||
@@ -336,7 +326,7 @@ dependencies {
|
|||||||
implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion"
|
implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion"
|
||||||
}
|
}
|
||||||
implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
||||||
// implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion'
|
// implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion'
|
||||||
implementation 'com.coveo:saml-client:5.0.0'
|
implementation 'com.coveo:saml-client:5.0.0'
|
||||||
|
|
||||||
|
|
||||||
@@ -406,8 +396,8 @@ dependencies {
|
|||||||
implementation "com.bucket4j:bucket4j_jdk17-core:8.14.0"
|
implementation "com.bucket4j:bucket4j_jdk17-core:8.14.0"
|
||||||
implementation "com.fathzer:javaluator:3.0.5"
|
implementation "com.fathzer:javaluator:3.0.5"
|
||||||
|
|
||||||
implementation 'org.jsoup:jsoup:1.18.3'
|
implementation 'com.vladsch.flexmark:flexmark-html2md-converter:0.64.8'
|
||||||
|
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion")
|
developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion")
|
||||||
compileOnly "org.projectlombok:lombok:$lombokVersion"
|
compileOnly "org.projectlombok:lombok:$lombokVersion"
|
||||||
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
|
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
|
||||||
@@ -431,13 +421,13 @@ task writeVersion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
swaggerhubUpload {
|
swaggerhubUpload {
|
||||||
//dependsOn generateOpenApiDocs // Depends on your task generating Swagger docs
|
// dependsOn = generateOpenApiDocs // Depends on your task generating Swagger docs
|
||||||
api "Stirling-PDF" // The name of your API on SwaggerHub
|
api = "Stirling-PDF" // The name of your API on SwaggerHub
|
||||||
owner "Frooodle" // Your SwaggerHub username (or organization name)
|
owner = "Frooodle" // Your SwaggerHub username (or organization name)
|
||||||
version project.version // The version of your API
|
version = project.version // The version of your API
|
||||||
inputFile "./SwaggerDoc.json" // The path to your Swagger docs
|
inputFile = "./SwaggerDoc.json" // The path to your Swagger docs
|
||||||
token "${System.getenv("SWAGGERHUB_API_KEY")}" // Your SwaggerHub API key, passed as an environment variable
|
token = "${System.getenv("SWAGGERHUB_API_KEY")}" // Your SwaggerHub API key, passed as an environment variable
|
||||||
oas "3.0.0" // The version of the OpenAPI Specification you"re using
|
oas = "3.0.0" // The version of the OpenAPI Specification you"re using
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
|
|||||||
@@ -204,4 +204,12 @@ Feature: API Validation
|
|||||||
Then the response status code should be 200
|
Then the response status code should be 200
|
||||||
And the response file should have size greater than 100
|
And the response file should have size greater than 100
|
||||||
And the response file should have extension ".pdf"
|
And the response file should have extension ".pdf"
|
||||||
|
|
||||||
|
Scenario: Convert PDF to Markdown format
|
||||||
|
Given I generate a PDF file as "fileInput"
|
||||||
|
And the pdf contains 3 pages with random text
|
||||||
|
When I send the API request to the endpoint "/api/v1/convert/pdf/markdown"
|
||||||
|
Then the response status code should be 200
|
||||||
|
And the response file should have size greater than 100
|
||||||
|
And the response file should have extension ".md"
|
||||||
|
|
||||||
@@ -12,7 +12,6 @@
|
|||||||
/extract-page
|
/extract-page
|
||||||
/pdf-to-single-page
|
/pdf-to-single-page
|
||||||
/img-to-pdf
|
/img-to-pdf
|
||||||
/markdown-to-pdf
|
|
||||||
/pdf-to-img
|
/pdf-to-img
|
||||||
/pdf-to-text
|
/pdf-to-text
|
||||||
/pdf-to-csv
|
/pdf-to-csv
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,10 +5,14 @@
|
|||||||
<verify-signatures>true</verify-signatures>
|
<verify-signatures>true</verify-signatures>
|
||||||
<keyring-format>armored</keyring-format>
|
<keyring-format>armored</keyring-format>
|
||||||
<trusted-artifacts>
|
<trusted-artifacts>
|
||||||
|
<trust group="com.datastax.oss" name="java-driver-bom" version="4.15.0"/>
|
||||||
<trust group="io.dropwizard.metrics" name="metrics-bom" reason="BOM file, safe to trust"/>
|
<trust group="io.dropwizard.metrics" name="metrics-bom" reason="BOM file, safe to trust"/>
|
||||||
<trust group="io.dropwizard.metrics" name="metrics-parent" reason="BOM parent, https://github.com/gradle/gradle/issues/20194"/>
|
<trust group="io.dropwizard.metrics" name="metrics-parent" reason="BOM parent, https://github.com/gradle/gradle/issues/20194"/>
|
||||||
<trust group="org.springframework" name="spring-framework-bom" reason="Spring BOM file, safe to trust"/>
|
<trust group="org.springframework" name="spring-framework-bom" reason="Spring BOM file, safe to trust"/>
|
||||||
</trusted-artifacts>
|
</trusted-artifacts>
|
||||||
|
<ignored-keys>
|
||||||
|
<ignored-key id="436902AF59EDF60E" reason="Key couldn't be downloaded from any key server"/>
|
||||||
|
</ignored-keys>
|
||||||
<trusted-keys>
|
<trusted-keys>
|
||||||
<trusted-key id="015479E1055341431B4545AB72475FD306B9CAB7" group="com.googlecode.javaewah" name="JavaEWAH" version="1.2.3"/>
|
<trusted-key id="015479E1055341431B4545AB72475FD306B9CAB7" group="com.googlecode.javaewah" name="JavaEWAH" version="1.2.3"/>
|
||||||
<trusted-key id="042B29E928995B9DB963C636C7CA19B7B620D787" group="com.github.stephenc.jcip" name="jcip-annotations" version="1.0-1"/>
|
<trusted-key id="042B29E928995B9DB963C636C7CA19B7B620D787" group="com.github.stephenc.jcip" name="jcip-annotations" version="1.0-1"/>
|
||||||
@@ -43,10 +47,6 @@
|
|||||||
<trusted-key id="19BEAB2D799C020F17C69126B16698A4ADF4D638" group="org.checkerframework" name="checker-qual"/>
|
<trusted-key id="19BEAB2D799C020F17C69126B16698A4ADF4D638" group="org.checkerframework" name="checker-qual"/>
|
||||||
<trusted-key id="1AA8CF92D409A73393D0B736BFF2EE42C8282E76" group="org.apache.activemq" name="activemq-bom" version="6.1.4"/>
|
<trusted-key id="1AA8CF92D409A73393D0B736BFF2EE42C8282E76" group="org.apache.activemq" name="activemq-bom" version="6.1.4"/>
|
||||||
<trusted-key id="1D04A424F505394DBED15D451D0690E353BE126D" group="net.minidev"/>
|
<trusted-key id="1D04A424F505394DBED15D451D0690E353BE126D" group="net.minidev"/>
|
||||||
<trusted-key id="1D2C7EF8ADA0F794B58C7C63436902AF59EDF60E">
|
|
||||||
<trusting group="dev.equo.ide" name="solstice" version="1.7.5"/>
|
|
||||||
<trusting group="dev.equo.ide" name="solstice" version="1.8.0"/>
|
|
||||||
</trusted-key>
|
|
||||||
<trusted-key id="20FC6EC5F628F0EB66F157B8DC97B815CAC4E847" group="io.github.pixee" name="java-security-toolkit" version="1.2.1"/>
|
<trusted-key id="20FC6EC5F628F0EB66F157B8DC97B815CAC4E847" group="io.github.pixee" name="java-security-toolkit" version="1.2.1"/>
|
||||||
<trusted-key id="2518174F4111F02779592A6F9757D7E7E06DD2AC" group="io.prometheus"/>
|
<trusted-key id="2518174F4111F02779592A6F9757D7E7E06DD2AC" group="io.prometheus"/>
|
||||||
<trusted-key id="2655176F748FD83725B4805FF2A01147D830C125" group="org.testcontainers" name="testcontainers-bom"/>
|
<trusted-key id="2655176F748FD83725B4805FF2A01147D830C125" group="org.testcontainers" name="testcontainers-bom"/>
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
<trusted-key id="2B34821418CF19CF1F2A8352953E02E4F573B46F" group="jakarta.platform"/>
|
<trusted-key id="2B34821418CF19CF1F2A8352953E02E4F573B46F" group="jakarta.platform"/>
|
||||||
<trusted-key id="2BCBDD0F23EA1CAFCC11D4860374CF2E8DD1BDFD" group="net.java"/>
|
<trusted-key id="2BCBDD0F23EA1CAFCC11D4860374CF2E8DD1BDFD" group="net.java"/>
|
||||||
<trusted-key id="2DB4F1EF0FA761ECC4EA935C86FDC7E2A11262CB">
|
<trusted-key id="2DB4F1EF0FA761ECC4EA935C86FDC7E2A11262CB">
|
||||||
<trusting group="commons-beanutils" name="commons-beanutils" version="1.10.0"/>
|
<trusting group="commons-beanutils"/>
|
||||||
<trusting group="commons-codec"/>
|
<trusting group="commons-codec"/>
|
||||||
<trusting group="commons-io"/>
|
<trusting group="commons-io"/>
|
||||||
<trusting group="commons-logging"/>
|
<trusting group="commons-logging"/>
|
||||||
@@ -67,12 +67,14 @@
|
|||||||
<trusted-key id="2E3A1AFFE42B5F53AF19F780BCF4173966770193" group="org.jetbrains" name="annotations" version="13.0"/>
|
<trusted-key id="2E3A1AFFE42B5F53AF19F780BCF4173966770193" group="org.jetbrains" name="annotations" version="13.0"/>
|
||||||
<trusted-key id="2FC53E6B1F681184F4CCD637F5C81DE10A0B8ECC" group="org.yaml" name="snakeyaml" version="2.3"/>
|
<trusted-key id="2FC53E6B1F681184F4CCD637F5C81DE10A0B8ECC" group="org.yaml" name="snakeyaml" version="2.3"/>
|
||||||
<trusted-key id="3262A061C42FC4C7BBB5C25C1CF0293FA53CA458" group="org.apache.tomcat.embed"/>
|
<trusted-key id="3262A061C42FC4C7BBB5C25C1CF0293FA53CA458" group="org.apache.tomcat.embed"/>
|
||||||
|
<trusted-key id="33FD4BFD33554634053D73C0C2148900BCD3C2AF" group="org.jetbrains" name="annotations" version="24.0.1"/>
|
||||||
<trusted-key id="34441E504A937F43EB0DAEF96A65176A0FB1CD0B" group="org.apache.groovy" name="groovy-bom"/>
|
<trusted-key id="34441E504A937F43EB0DAEF96A65176A0FB1CD0B" group="org.apache.groovy" name="groovy-bom"/>
|
||||||
<trusted-key id="3690C240CE51B4670D30AD1C38EE757D69184620" group="org.tukaani" name="xz" version="1.9"/>
|
<trusted-key id="3690C240CE51B4670D30AD1C38EE757D69184620" group="org.tukaani" name="xz" version="1.9"/>
|
||||||
<trusted-key id="3750777B9C4B7D233B9D0C40307A96FBA0292109" group="org.postgresql" name="postgresql" version="42.7.4"/>
|
<trusted-key id="3750777B9C4B7D233B9D0C40307A96FBA0292109" group="org.postgresql" name="postgresql" version="42.7.4"/>
|
||||||
<trusted-key id="38319E05F62674572CDF886170B2EBE96C112CC9" group="org.cryptacular" name="cryptacular" version="1.2.5"/>
|
<trusted-key id="38319E05F62674572CDF886170B2EBE96C112CC9" group="org.cryptacular" name="cryptacular" version="1.2.5"/>
|
||||||
<trusted-key id="3E61D8C230332482009D7F0EDB901B24CAD38BC4" group="io.swagger.core.v3"/>
|
<trusted-key id="3E61D8C230332482009D7F0EDB901B24CAD38BC4" group="io.swagger.core.v3"/>
|
||||||
<trusted-key id="3F05DDA9F317301E927136D417A27CE7A60FF5F0" group="io.opentelemetry" name="opentelemetry-bom"/>
|
<trusted-key id="3F05DDA9F317301E927136D417A27CE7A60FF5F0" group="io.opentelemetry" name="opentelemetry-bom"/>
|
||||||
|
<trusted-key id="4008F9DFF7DBC968F35F9E712642156411CCE8B3" group="com.vladsch.flexmark"/>
|
||||||
<trusted-key id="4021EEEAFF5DE8404DCD0A270AA3E5C3D232E79B">
|
<trusted-key id="4021EEEAFF5DE8404DCD0A270AA3E5C3D232E79B">
|
||||||
<trusting group="jakarta.enterprise"/>
|
<trusting group="jakarta.enterprise"/>
|
||||||
<trusting group="jakarta.inject"/>
|
<trusting group="jakarta.inject"/>
|
||||||
@@ -138,10 +140,7 @@
|
|||||||
<trusted-key id="9790B1EC52577244529621F38C77ED250E495230" group="com.bucket4j" name="bucket4j_jdk17-core" version="8.14.0"/>
|
<trusted-key id="9790B1EC52577244529621F38C77ED250E495230" group="com.bucket4j" name="bucket4j_jdk17-core" version="8.14.0"/>
|
||||||
<trusted-key id="982C26A0C156D986CC2AD19E3FBA8E8E719022D7" group="org.jboss" name="jboss-parent" version="39"/>
|
<trusted-key id="982C26A0C156D986CC2AD19E3FBA8E8E719022D7" group="org.jboss" name="jboss-parent" version="39"/>
|
||||||
<trusted-key id="9B32CBC0F3F6BA4C13D611FC21871D2A9AB66A31" group="io.rsocket" name="rsocket-bom" version="1.1.3"/>
|
<trusted-key id="9B32CBC0F3F6BA4C13D611FC21871D2A9AB66A31" group="io.rsocket" name="rsocket-bom" version="1.1.3"/>
|
||||||
<trusted-key id="9E3044071B758EBCB7E45673700E4F39BC05364B">
|
<trusted-key id="9E3044071B758EBCB7E45673700E4F39BC05364B" group="org.eclipse.platform" name="org.eclipse.osgi" version="3.18.500"/>
|
||||||
<trusting group="org.eclipse.platform" name="org.eclipse.osgi" version="3.18.300"/>
|
|
||||||
<trusting group="org.eclipse.platform" name="org.eclipse.osgi" version="3.18.500"/>
|
|
||||||
</trusted-key>
|
|
||||||
<trusted-key id="A41A5960555F8CBBC7D8B2D7787F3A057B828D36" group="org.springdoc"/>
|
<trusted-key id="A41A5960555F8CBBC7D8B2D7787F3A057B828D36" group="org.springdoc"/>
|
||||||
<trusted-key id="A5BD02B93E7A40482EB1D66A5F69AD087600B22C" group="org.ow2.asm"/>
|
<trusted-key id="A5BD02B93E7A40482EB1D66A5F69AD087600B22C" group="org.ow2.asm"/>
|
||||||
<trusted-key id="A602970FE1BF5C9C8A9491B97A3C9FE21DFDBF44" group="org.apache.pdfbox"/>
|
<trusted-key id="A602970FE1BF5C9C8A9491B97A3C9FE21DFDBF44" group="org.apache.pdfbox"/>
|
||||||
@@ -150,15 +149,9 @@
|
|||||||
<trusted-key id="A7892505CF1A58076453E52D7999BEFBA1039E8B" group="net.bytebuddy"/>
|
<trusted-key id="A7892505CF1A58076453E52D7999BEFBA1039E8B" group="net.bytebuddy"/>
|
||||||
<trusted-key id="A9789342F598AD5B1175EF357EB97D110DFADD60" group="com.googlecode.concurrent-trees" name="concurrent-trees" version="2.6.1"/>
|
<trusted-key id="A9789342F598AD5B1175EF357EB97D110DFADD60" group="com.googlecode.concurrent-trees" name="concurrent-trees" version="2.6.1"/>
|
||||||
<trusted-key id="AA70C7C433D501636392EC02153E7A3C2B4E5118" group="org.eclipse.ee4j" name="project"/>
|
<trusted-key id="AA70C7C433D501636392EC02153E7A3C2B4E5118" group="org.eclipse.ee4j" name="project"/>
|
||||||
<trusted-key id="AB1DC33940689C44669107094989E0E939C2999B">
|
<trusted-key id="AB1DC33940689C44669107094989E0E939C2999B" group="com.opencsv" name="opencsv" version="5.10"/>
|
||||||
<trusting group="com.opencsv" name="opencsv" version="5.10"/>
|
|
||||||
<trusting group="com.opencsv" name="opencsv" version="5.9"/>
|
|
||||||
</trusted-key>
|
|
||||||
<trusted-key id="B1F250C1F371EBF0E31E86E30E31BBB30C940D01" group="com.posthog.java" name="posthog" version="1.1.1"/>
|
<trusted-key id="B1F250C1F371EBF0E31E86E30E31BBB30C940D01" group="com.posthog.java" name="posthog" version="1.1.1"/>
|
||||||
<trusted-key id="B6E73D84EA4FCC47166087253FAAD2CD5ECBB314">
|
<trusted-key id="B6E73D84EA4FCC47166087253FAAD2CD5ECBB314" group="org.apache.commons" name="commons-parent"/>
|
||||||
<trusting group="commons-beanutils"/>
|
|
||||||
<trusting group="org.apache.commons"/>
|
|
||||||
</trusted-key>
|
|
||||||
<trusted-key id="BA926F64CA647B6D853A38672E2010F8A7FF4A41" group="org.apache" name="apache" version="7"/>
|
<trusted-key id="BA926F64CA647B6D853A38672E2010F8A7FF4A41" group="org.apache" name="apache" version="7"/>
|
||||||
<trusted-key id="BB785E0400E71390977E4D1ADF3CC7C64D56297B" group="jakarta.interceptor" name="jakarta.interceptor-api" version="2.1.0"/>
|
<trusted-key id="BB785E0400E71390977E4D1ADF3CC7C64D56297B" group="jakarta.interceptor" name="jakarta.interceptor-api" version="2.1.0"/>
|
||||||
<trusted-key id="BCA1F17506AF088F3A964A9C0459A2B383ED8C11" group="org.eclipse.angus"/>
|
<trusted-key id="BCA1F17506AF088F3A964A9C0459A2B383ED8C11" group="org.eclipse.angus"/>
|
||||||
@@ -204,7 +197,7 @@
|
|||||||
<trusted-key id="F046369B06B761AC86D9849F71B329993BFFCFDD" group="com.oracle.database.jdbc" name="ojdbc-bom" version="21.9.0.0"/>
|
<trusted-key id="F046369B06B761AC86D9849F71B329993BFFCFDD" group="com.oracle.database.jdbc" name="ojdbc-bom" version="21.9.0.0"/>
|
||||||
<trusted-key id="F0E31196852A34F8855710BD4A6CE7EBC7F4F54B" group="io.prometheus"/>
|
<trusted-key id="F0E31196852A34F8855710BD4A6CE7EBC7F4F54B" group="io.prometheus"/>
|
||||||
<trusted-key id="F1232CDCD94176E7FBA9CFE289A2C76A5EE16E57" group="technology.tabula" name="tabula" version="1.0.5"/>
|
<trusted-key id="F1232CDCD94176E7FBA9CFE289A2C76A5EE16E57" group="technology.tabula" name="tabula" version="1.0.5"/>
|
||||||
<trusted-key id="F3184BCD55F4D016E30D4C9BF42E87F9665015C9" group="org.jsoup" name="jsoup" version="1.18.3"/>
|
<trusted-key id="F3184BCD55F4D016E30D4C9BF42E87F9665015C9" group="org.jsoup" name="jsoup" version="1.15.4"/>
|
||||||
<trusted-key id="F55EF5BB19F52A250FEDC0DF39450183608E49D4" group="com.googlecode.owasp-java-html-sanitizer"/>
|
<trusted-key id="F55EF5BB19F52A250FEDC0DF39450183608E49D4" group="com.googlecode.owasp-java-html-sanitizer"/>
|
||||||
<trusted-key id="F5FEBA84EB26C56457B2CF819E31AB27445478DB" group="org.infinispan"/>
|
<trusted-key id="F5FEBA84EB26C56457B2CF819E31AB27445478DB" group="org.infinispan"/>
|
||||||
<trusted-key id="F60649A7F36F9FBEE21D9AA08AC0378EC753063D" group="com.fathzer"/>
|
<trusted-key id="F60649A7F36F9FBEE21D9AA08AC0378EC753063D" group="com.fathzer"/>
|
||||||
@@ -220,14 +213,9 @@
|
|||||||
</trusted-keys>
|
</trusted-keys>
|
||||||
</configuration>
|
</configuration>
|
||||||
<components>
|
<components>
|
||||||
<component group="com.diffplug.spotless" name="com.diffplug.spotless.gradle.plugin" version="6.25.0">
|
<component group="com.diffplug.spotless" name="com.diffplug.spotless.gradle.plugin" version="7.0.2">
|
||||||
<artifact name="com.diffplug.spotless.gradle.plugin-6.25.0.pom">
|
<artifact name="com.diffplug.spotless.gradle.plugin-7.0.2.pom">
|
||||||
<sha256 value="f45c82b12faacd85acd474eba699322fa5dea88408b247d0e4bde9412908223a" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="ed1ded77a296a6fe21a50279c926c07be14af7c08c2437d3685c70fcf6bba02d" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="com.diffplug.spotless" name="com.diffplug.spotless.gradle.plugin" version="7.0.1">
|
|
||||||
<artifact name="com.diffplug.spotless.gradle.plugin-7.0.1.pom">
|
|
||||||
<sha256 value="d967a0f74c203ddcc5700947aab40f4be2a5a9f7b8d32aab7fc412b2030e7dfc" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
<component group="com.github.Carleslc.Simple-YAML" name="Simple-Configuration" version="1.8.4">
|
<component group="com.github.Carleslc.Simple-YAML" name="Simple-Configuration" version="1.8.4">
|
||||||
@@ -272,11 +260,6 @@
|
|||||||
<sha256 value="7b239eb029b2e4cab00dddf1df204ef4bbf88e78a43619c26fbb1e49bc53c642" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="7b239eb029b2e4cab00dddf1df204ef4bbf88e78a43619c26fbb1e49bc53c642" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
<component group="com.google.guava" name="guava-parent" version="33.3.1-jre">
|
|
||||||
<artifact name="guava-parent-33.3.1-jre.pom">
|
|
||||||
<sha256 value="55441db27e8869dfefe053059bdf478bdc7e95585642bf391f0023345fd56287" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="com.martiansoftware" name="jsap" version="2.1">
|
<component group="com.martiansoftware" name="jsap" version="2.1">
|
||||||
<artifact name="jsap-2.1.jar">
|
<artifact name="jsap-2.1.jar">
|
||||||
<sha256 value="331746fa62cfbc3368260c5a2e660936ad11be612308c120a044e120361d474e" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="331746fa62cfbc3368260c5a2e660936ad11be612308c120a044e120361d474e" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
@@ -290,6 +273,14 @@
|
|||||||
<sha256 value="65d310509352b5425118225ee600a01f83ba72142d035014b5d164bc04b2d284" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="65d310509352b5425118225ee600a01f83ba72142d035014b5d164bc04b2d284" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
|
<component group="dev.equo.ide" name="solstice" version="1.8.1">
|
||||||
|
<artifact name="solstice-1.8.1.jar">
|
||||||
|
<sha256 value="6e5ba2cce813be1d71ccdc2ecf3e49271b14e691bfbbb1a114cf3a30e773b10d" origin="Generated by Gradle" reason="A key couldn't be downloaded"/>
|
||||||
|
</artifact>
|
||||||
|
<artifact name="solstice-1.8.1.module">
|
||||||
|
<sha256 value="a676039ea6af08f257b46e07c2bf1571a46a4d4b5b9ccb86c3fc98d07fafea1b" origin="Generated by Gradle" reason="A key couldn't be downloaded"/>
|
||||||
|
</artifact>
|
||||||
|
</component>
|
||||||
<component group="edu.sc.seis.launch4j" name="edu.sc.seis.launch4j.gradle.plugin" version="3.0.6">
|
<component group="edu.sc.seis.launch4j" name="edu.sc.seis.launch4j.gradle.plugin" version="3.0.6">
|
||||||
<artifact name="edu.sc.seis.launch4j.gradle.plugin-3.0.6.pom">
|
<artifact name="edu.sc.seis.launch4j.gradle.plugin-3.0.6.pom">
|
||||||
<sha256 value="62a4f6752190b9ebf30869e092e4154e41a2c5cd96048ae98a01916f2684465a" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="62a4f6752190b9ebf30869e092e4154e41a2c5cd96048ae98a01916f2684465a" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
@@ -342,21 +333,6 @@
|
|||||||
<sha256 value="7a24e2700485eea087370f1dca6fe0291d7893d38c11aabfe977784fd93b808c" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="7a24e2700485eea087370f1dca6fe0291d7893d38c11aabfe977784fd93b808c" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
<component group="org.apache" name="apache" version="27">
|
|
||||||
<artifact name="apache-27.pom">
|
|
||||||
<sha256 value="b2b0fc69e22a650c3892f1c366d77076f29575c6738df4c7a70a44844484cdf9" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="org.apache" name="apache" version="33">
|
|
||||||
<artifact name="apache-33.pom">
|
|
||||||
<sha256 value="d78bd8524c5f8380a190a6525686629a95dfe512df21111383a6d8c0923a4415" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="org.apache.commons" name="commons-parent" version="78">
|
|
||||||
<artifact name="commons-parent-78.pom">
|
|
||||||
<sha256 value="022d202e655edd04f2a10ecbe453d92977924d38380a4ca8c359f1817a80320e" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="org.hibernate.common" name="hibernate-commons-annotations" version="7.0.3.Final">
|
<component group="org.hibernate.common" name="hibernate-commons-annotations" version="7.0.3.Final">
|
||||||
<artifact name="hibernate-commons-annotations-7.0.3.Final.jar">
|
<artifact name="hibernate-commons-annotations-7.0.3.Final.jar">
|
||||||
<sha256 value="0db2fd57d5e43688ac6ed5cdf36deaf05d84340dcc24c2dd2a2114de38e5175d" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="0db2fd57d5e43688ac6ed5cdf36deaf05d84340dcc24c2dd2a2114de38e5175d" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
@@ -391,11 +367,6 @@
|
|||||||
<sha256 value="9972c894749cda355766217d43ded7009b1eeb26e0301c30914a2db253dd685b" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="9972c894749cda355766217d43ded7009b1eeb26e0301c30914a2db253dd685b" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
<component group="org.junit" name="junit-bom" version="5.11.2">
|
|
||||||
<artifact name="junit-bom-5.11.2.pom">
|
|
||||||
<sha256 value="f48e88538aac145eb3ae0345a9ebd055b28f329a35dce8d1e9281325ca9b0ea2" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="org.opensaml" name="opensaml-bom" version="4.3.0">
|
<component group="org.opensaml" name="opensaml-bom" version="4.3.0">
|
||||||
<artifact name="opensaml-bom-4.3.0.pom">
|
<artifact name="opensaml-bom-4.3.0.pom">
|
||||||
<sha256 value="4dfcc7cd96a2645c6e28df9f166f0e5b2b1a44aa109b3100cdb0ee17e01e02d2" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="4dfcc7cd96a2645c6e28df9f166f0e5b2b1a44aa109b3100cdb0ee17e01e02d2" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
@@ -406,11 +377,6 @@
|
|||||||
<sha256 value="5e9db2f2dc3938835a76f5334997d79c8781511c8b68c1f6df6b384306900319" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="5e9db2f2dc3938835a76f5334997d79c8781511c8b68c1f6df6b384306900319" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
</artifact>
|
</artifact>
|
||||||
</component>
|
</component>
|
||||||
<component group="org.ow2" name="ow2" version="1.5.1">
|
|
||||||
<artifact name="ow2-1.5.1.pom">
|
|
||||||
<sha256 value="321ddbb7ee6fe4f53dea6b4cd6db74154d6bfa42391c1f763b361b9f485acf05" origin="Generated by Gradle"/>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
<component group="org.panteleyev" name="jpackage-gradle-plugin" version="1.6.0">
|
<component group="org.panteleyev" name="jpackage-gradle-plugin" version="1.6.0">
|
||||||
<artifact name="jpackage-gradle-plugin-1.6.0.jar">
|
<artifact name="jpackage-gradle-plugin-1.6.0.jar">
|
||||||
<sha256 value="a8a588ff44a62db1aee62d3da117d2632a7f9a107709ca201da2a59dcb500175" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
<sha256 value="a8a588ff44a62db1aee62d3da117d2632a7f9a107709ca201da2a59dcb500175" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||||
|
|||||||
@@ -50,13 +50,13 @@ ignore = [
|
|||||||
'pipeline.title',
|
'pipeline.title',
|
||||||
'pipelineOptions.pipelineHeader',
|
'pipelineOptions.pipelineHeader',
|
||||||
'pro',
|
'pro',
|
||||||
|
'redact.zoom',
|
||||||
'sponsor',
|
'sponsor',
|
||||||
'text',
|
'text',
|
||||||
'validateSignature.cert.bits',
|
'validateSignature.cert.bits',
|
||||||
'validateSignature.cert.version',
|
'validateSignature.cert.version',
|
||||||
'validateSignature.status',
|
'validateSignature.status',
|
||||||
'watermark.type.1',
|
'watermark.type.1',
|
||||||
'redact.zoom',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[el_GR]
|
[el_GR]
|
||||||
@@ -211,6 +211,11 @@ ignore = [
|
|||||||
'watermark.type.1',
|
'watermark.type.1',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[sl_SI]
|
||||||
|
ignore = [
|
||||||
|
'language.direction',
|
||||||
|
]
|
||||||
|
|
||||||
[sr_LATN_RS]
|
[sr_LATN_RS]
|
||||||
ignore = [
|
ignore = [
|
||||||
'language.direction',
|
'language.direction',
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class EEAppConfig {
|
|||||||
|
|
||||||
@Bean(name = "runningEE")
|
@Bean(name = "runningEE")
|
||||||
public boolean runningEnterpriseEdition() {
|
public boolean runningEnterpriseEdition() {
|
||||||
return licenseKeyChecker.getEnterpriseEnabledResult();
|
return licenseKeyChecker.getEnterpriseEnabledResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean(name = "SSOAutoLogin")
|
@Bean(name = "SSOAutoLogin")
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ public class EndpointConfiguration {
|
|||||||
addEndpointToGroup("Convert", "url-to-pdf");
|
addEndpointToGroup("Convert", "url-to-pdf");
|
||||||
addEndpointToGroup("Convert", "markdown-to-pdf");
|
addEndpointToGroup("Convert", "markdown-to-pdf");
|
||||||
addEndpointToGroup("Convert", "pdf-to-csv");
|
addEndpointToGroup("Convert", "pdf-to-csv");
|
||||||
|
addEndpointToGroup("Convert", "pdf-to-markdown");
|
||||||
|
|
||||||
// Adding endpoints to "Security" group
|
// Adding endpoints to "Security" group
|
||||||
addEndpointToGroup("Security", "add-password");
|
addEndpointToGroup("Security", "add-password");
|
||||||
@@ -243,6 +244,7 @@ public class EndpointConfiguration {
|
|||||||
addEndpointToGroup("Java", REMOVE_BLANKS);
|
addEndpointToGroup("Java", REMOVE_BLANKS);
|
||||||
addEndpointToGroup("Java", "pdf-to-text");
|
addEndpointToGroup("Java", "pdf-to-text");
|
||||||
addEndpointToGroup("Java", "remove-image-pdf");
|
addEndpointToGroup("Java", "remove-image-pdf");
|
||||||
|
addEndpointToGroup("Java", "pdf-to-markdown");
|
||||||
|
|
||||||
// Javascript
|
// Javascript
|
||||||
addEndpointToGroup("Javascript", "pdf-organizer");
|
addEndpointToGroup("Javascript", "pdf-organizer");
|
||||||
@@ -258,9 +260,11 @@ public class EndpointConfiguration {
|
|||||||
// Weasyprint dependent endpoints
|
// Weasyprint dependent endpoints
|
||||||
addEndpointToGroup("Weasyprint", "html-to-pdf");
|
addEndpointToGroup("Weasyprint", "html-to-pdf");
|
||||||
addEndpointToGroup("Weasyprint", "url-to-pdf");
|
addEndpointToGroup("Weasyprint", "url-to-pdf");
|
||||||
|
addEndpointToGroup("Weasyprint", "markdown-to-pdf");
|
||||||
|
|
||||||
// Pdftohtml dependent endpoints
|
// Pdftohtml dependent endpoints
|
||||||
addEndpointToGroup("Pdftohtml", "pdf-to-html");
|
addEndpointToGroup("Pdftohtml", "pdf-to-html");
|
||||||
|
addEndpointToGroup("Pdftohtml", "pdf-to-markdown");
|
||||||
|
|
||||||
// disabled for now while we resolve issues
|
// disabled for now while we resolve issues
|
||||||
disableEndpoint("pdf-to-pdfa");
|
disableEndpoint("pdf-to-pdfa");
|
||||||
|
|||||||
@@ -33,7 +33,11 @@ public class DatabaseConfig {
|
|||||||
public DatabaseConfig(
|
public DatabaseConfig(
|
||||||
ApplicationProperties applicationProperties,
|
ApplicationProperties applicationProperties,
|
||||||
@Qualifier("runningEE") boolean runningEE) {
|
@Qualifier("runningEE") boolean runningEE) {
|
||||||
DATASOURCE_DEFAULT_URL = "jdbc:h2:file:" + InstallationPathConfig.getConfigPath() + File.separator + "stirling-pdf-DB-2.3.232;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE";
|
DATASOURCE_DEFAULT_URL =
|
||||||
|
"jdbc:h2:file:"
|
||||||
|
+ InstallationPathConfig.getConfigPath()
|
||||||
|
+ File.separator
|
||||||
|
+ "stirling-pdf-DB-2.3.232;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE";
|
||||||
this.applicationProperties = applicationProperties;
|
this.applicationProperties = applicationProperties;
|
||||||
this.runningEE = runningEE;
|
this.runningEE = runningEE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,13 @@ public class ConverterWebController {
|
|||||||
return "convert/markdown-to-pdf";
|
return "convert/markdown-to-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/pdf-to-markdown")
|
||||||
|
@Hidden
|
||||||
|
public String convertPdfToMarkdownForm(Model model) {
|
||||||
|
model.addAttribute("currentPage", "pdf-to-markdown");
|
||||||
|
return "convert/pdf-to-markdown";
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/url-to-pdf")
|
@GetMapping("/url-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String convertURLToPdfForm(Model model) {
|
public String convertURLToPdfForm(Model model) {
|
||||||
|
|||||||
@@ -55,7 +55,10 @@ public class GeneralWebController {
|
|||||||
List<String> pipelineConfigs = new ArrayList<>();
|
List<String> pipelineConfigs = new ArrayList<>();
|
||||||
List<Map<String, String>> pipelineConfigsWithNames = new ArrayList<>();
|
List<Map<String, String>> pipelineConfigsWithNames = new ArrayList<>();
|
||||||
if (new File(InstallationPathConfig.getPipelineDefaultWebUIConfigsDir()).exists()) {
|
if (new File(InstallationPathConfig.getPipelineDefaultWebUIConfigsDir()).exists()) {
|
||||||
try (Stream<Path> paths = Files.walk(Paths.get(InstallationPathConfig.getPipelineDefaultWebUIConfigsDir()))) {
|
try (Stream<Path> paths =
|
||||||
|
Files.walk(
|
||||||
|
Paths.get(
|
||||||
|
InstallationPathConfig.getPipelineDefaultWebUIConfigsDir()))) {
|
||||||
List<Path> jsonFiles =
|
List<Path> jsonFiles =
|
||||||
paths.filter(Files::isRegularFile)
|
paths.filter(Files::isRegularFile)
|
||||||
.filter(p -> p.toString().endsWith(".json"))
|
.filter(p -> p.toString().endsWith(".json"))
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package stirling.software.SPDF.model.api.converters;
|
||||||
|
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.model.api.PDFFile;
|
||||||
|
import stirling.software.SPDF.utils.PDFToFile;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "Convert", description = "Convert APIs")
|
||||||
|
@RequestMapping("/api/v1/convert")
|
||||||
|
public class ConvertPDFToMarkdown {
|
||||||
|
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/pdf/markdown")
|
||||||
|
@Operation(
|
||||||
|
summary = "Convert PDF to Markdown",
|
||||||
|
description =
|
||||||
|
"This endpoint converts a PDF file to Markdown format. Input:PDF Output:Markdown Type:SISO")
|
||||||
|
public ResponseEntity<byte[]> processPdfToMarkdown(@ModelAttribute PDFFile request)
|
||||||
|
throws Exception {
|
||||||
|
MultipartFile inputFile = request.getFileInput();
|
||||||
|
PDFToFile pdfToFile = new PDFToFile();
|
||||||
|
return pdfToFile.processPdfToMarkdown(inputFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,9 @@ import org.springframework.http.MediaType;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter;
|
||||||
|
import com.vladsch.flexmark.util.data.MutableDataSet;
|
||||||
|
|
||||||
import io.github.pixee.security.Filenames;
|
import io.github.pixee.security.Filenames;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -28,6 +31,123 @@ import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class PDFToFile {
|
public class PDFToFile {
|
||||||
|
|
||||||
|
public ResponseEntity<byte[]> processPdfToMarkdown(MultipartFile inputFile)
|
||||||
|
throws IOException, InterruptedException {
|
||||||
|
if (!"application/pdf".equals(inputFile.getContentType())) {
|
||||||
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
MutableDataSet options =
|
||||||
|
new MutableDataSet()
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.MAX_BLANK_LINES,
|
||||||
|
2) // Control max consecutive blank lines
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.MAX_TRAILING_BLANK_LINES,
|
||||||
|
1) // Control trailing blank lines
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.SETEXT_HEADINGS,
|
||||||
|
true) // Use Setext headings for h1 and h2
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.OUTPUT_UNKNOWN_TAGS,
|
||||||
|
false) // Don't output HTML for unknown tags
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.TYPOGRAPHIC_QUOTES,
|
||||||
|
true) // Convert quotation marks
|
||||||
|
.set(
|
||||||
|
FlexmarkHtmlConverter.BR_AS_PARA_BREAKS,
|
||||||
|
true) // Convert <br> to paragraph breaks
|
||||||
|
.set(FlexmarkHtmlConverter.CODE_INDENT, " "); // Indent for code blocks
|
||||||
|
|
||||||
|
FlexmarkHtmlConverter htmlToMarkdownConverter =
|
||||||
|
FlexmarkHtmlConverter.builder(options).build();
|
||||||
|
|
||||||
|
String originalPdfFileName = Filenames.toSimpleFileName(inputFile.getOriginalFilename());
|
||||||
|
String pdfBaseName = originalPdfFileName;
|
||||||
|
if (originalPdfFileName.contains(".")) {
|
||||||
|
pdfBaseName = originalPdfFileName.substring(0, originalPdfFileName.lastIndexOf('.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
Path tempInputFile = null;
|
||||||
|
Path tempOutputDir = null;
|
||||||
|
byte[] fileBytes;
|
||||||
|
String fileName = "temp.file";
|
||||||
|
|
||||||
|
try {
|
||||||
|
tempInputFile = Files.createTempFile("input_", ".pdf");
|
||||||
|
inputFile.transferTo(tempInputFile);
|
||||||
|
tempOutputDir = Files.createTempDirectory("output_");
|
||||||
|
|
||||||
|
List<String> command =
|
||||||
|
new ArrayList<>(
|
||||||
|
Arrays.asList(
|
||||||
|
"pdftohtml",
|
||||||
|
"-s",
|
||||||
|
"-noframes",
|
||||||
|
"-c",
|
||||||
|
tempInputFile.toString(),
|
||||||
|
pdfBaseName));
|
||||||
|
|
||||||
|
ProcessExecutorResult returnCode =
|
||||||
|
ProcessExecutor.getInstance(ProcessExecutor.Processes.PDFTOHTML)
|
||||||
|
.runCommandWithOutputHandling(command, tempOutputDir.toFile());
|
||||||
|
// Process HTML files to Markdown
|
||||||
|
File[] outputFiles = Objects.requireNonNull(tempOutputDir.toFile().listFiles());
|
||||||
|
List<File> markdownFiles = new ArrayList<>();
|
||||||
|
|
||||||
|
// Convert HTML files to Markdown
|
||||||
|
for (File outputFile : outputFiles) {
|
||||||
|
if (outputFile.getName().endsWith(".html")) {
|
||||||
|
String html = Files.readString(outputFile.toPath());
|
||||||
|
String markdown = htmlToMarkdownConverter.convert(html);
|
||||||
|
|
||||||
|
String mdFileName = outputFile.getName().replace(".html", ".md");
|
||||||
|
File mdFile = new File(tempOutputDir.toFile(), mdFileName);
|
||||||
|
Files.writeString(mdFile.toPath(), markdown);
|
||||||
|
markdownFiles.add(mdFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's only one markdown file, return it directly
|
||||||
|
if (markdownFiles.size() == 1) {
|
||||||
|
fileName = pdfBaseName + ".md";
|
||||||
|
fileBytes = Files.readAllBytes(markdownFiles.get(0).toPath());
|
||||||
|
} else {
|
||||||
|
// Multiple files - create a zip
|
||||||
|
fileName = pdfBaseName + "ToMarkdown.zip";
|
||||||
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
try (ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream)) {
|
||||||
|
// Add markdown files
|
||||||
|
for (File mdFile : markdownFiles) {
|
||||||
|
ZipEntry mdEntry = new ZipEntry(mdFile.getName());
|
||||||
|
zipOutputStream.putNextEntry(mdEntry);
|
||||||
|
Files.copy(mdFile.toPath(), zipOutputStream);
|
||||||
|
zipOutputStream.closeEntry();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add images and other assets
|
||||||
|
for (File file : outputFiles) {
|
||||||
|
if (!file.getName().endsWith(".html") && !file.getName().endsWith(".md")) {
|
||||||
|
ZipEntry assetEntry = new ZipEntry(file.getName());
|
||||||
|
zipOutputStream.putNextEntry(assetEntry);
|
||||||
|
Files.copy(file.toPath(), zipOutputStream);
|
||||||
|
zipOutputStream.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fileBytes = byteArrayOutputStream.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
if (tempInputFile != null) Files.deleteIfExists(tempInputFile);
|
||||||
|
if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile());
|
||||||
|
}
|
||||||
|
return WebResponseUtils.bytesToWebResponse(
|
||||||
|
fileBytes, fileName, MediaType.APPLICATION_OCTET_STREAM);
|
||||||
|
}
|
||||||
|
|
||||||
public ResponseEntity<byte[]> processPdfToHtml(MultipartFile inputFile)
|
public ResponseEntity<byte[]> processPdfToHtml(MultipartFile inputFile)
|
||||||
throws IOException, InterruptedException {
|
throws IOException, InterruptedException {
|
||||||
if (!"application/pdf".equals(inputFile.getContentType())) {
|
if (!"application/pdf".equals(inputFile.getContentType())) {
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown إلى PDF
|
|||||||
home.MarkdownToPDF.desc=يحول أي ملف Markdown إلى PDF
|
home.MarkdownToPDF.desc=يحول أي ملف Markdown إلى PDF
|
||||||
MarkdownToPDF.tags=لغة الترميز,محتوى الويب,تحويل,تحويل
|
MarkdownToPDF.tags=لغة الترميز,محتوى الويب,تحويل,تحويل
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=الحصول على جميع المعلومات عن PDF
|
home.getPdfInfo.title=الحصول على جميع المعلومات عن PDF
|
||||||
home.getPdfInfo.desc=يجمع أي وكل المعلومات الممكنة عن ملفات PDF
|
home.getPdfInfo.desc=يجمع أي وكل المعلومات الممكنة عن ملفات PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=العمل قيد التقدم
|
|||||||
MarkdownToPDF.credit=يستخدم WeasyPrint
|
MarkdownToPDF.credit=يستخدم WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL إلى PDF
|
URLToPDF.title=URL إلى PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown-dan PDF-ə
|
|||||||
home.MarkdownToPDF.desc=Hər hansı Markdown faylını PDF-ə çevirir
|
home.MarkdownToPDF.desc=Hər hansı Markdown faylını PDF-ə çevirir
|
||||||
MarkdownToPDF.tags=işarələmə,web-məzmun,dəyişmə,çevirmə
|
MarkdownToPDF.tags=işarələmə,web-məzmun,dəyişmə,çevirmə
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDF-in Bütün Məlumatları
|
home.getPdfInfo.title=PDF-in Bütün Məlumatları
|
||||||
home.getPdfInfo.desc=PDF barədə mümkün olan bütün məlumatları əldə edir
|
home.getPdfInfo.desc=PDF barədə mümkün olan bütün məlumatları əldə edir
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=İş davam edir
|
|||||||
MarkdownToPDF.credit=WeasyPrint İstifadə Edir
|
MarkdownToPDF.credit=WeasyPrint İstifadə Edir
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL-i PDF-ə
|
URLToPDF.title=URL-i PDF-ə
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown към PDF
|
|||||||
home.MarkdownToPDF.desc=Преобразува всеки Markdown файл към PDF
|
home.MarkdownToPDF.desc=Преобразува всеки Markdown файл към PDF
|
||||||
MarkdownToPDF.tags=маркиране,уеб-съдържание,трансформация,преобразуване
|
MarkdownToPDF.tags=маркиране,уеб-съдържание,трансформация,преобразуване
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Вземете ЦЯЛАТА информация от PDF
|
home.getPdfInfo.title=Вземете ЦЯЛАТА информация от PDF
|
||||||
home.getPdfInfo.desc=Взима всяка възможна информация от PDF файлове
|
home.getPdfInfo.desc=Взима всяка възможна информация от PDF файлове
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Работата е в ход
|
|||||||
MarkdownToPDF.credit=Използва WeasyPrint
|
MarkdownToPDF.credit=Използва WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL към PDF
|
URLToPDF.title=URL към PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown a PDF
|
|||||||
home.MarkdownToPDF.desc=Converteix qualsevol fitxer Markdown a PDF
|
home.MarkdownToPDF.desc=Converteix qualsevol fitxer Markdown a PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Obteniu Tota la Informació sobre el PDF
|
home.getPdfInfo.title=Obteniu Tota la Informació sobre el PDF
|
||||||
home.getPdfInfo.desc=Recupera tota la informació possible sobre els PDFs
|
home.getPdfInfo.desc=Recupera tota la informació possible sobre els PDFs
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Work in progress
|
|||||||
MarkdownToPDF.credit=Uses WeasyPrint
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL a PDF
|
URLToPDF.title=URL a PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown na PDF
|
|||||||
home.MarkdownToPDF.desc=Převádí libovolný soubor Markdown na PDF
|
home.MarkdownToPDF.desc=Převádí libovolný soubor Markdown na PDF
|
||||||
MarkdownToPDF.tags=markup,obsah-webu,transformace,konvertovat
|
MarkdownToPDF.tags=markup,obsah-webu,transformace,konvertovat
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Získat VŠECHNY informace o PDF
|
home.getPdfInfo.title=Získat VŠECHNY informace o PDF
|
||||||
home.getPdfInfo.desc=Získání všech možných informací o PDF
|
home.getPdfInfo.desc=Získání všech možných informací o PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Práce v průběhu
|
|||||||
MarkdownToPDF.credit=Využívá WeasyPrint
|
MarkdownToPDF.credit=Využívá WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL na PDF
|
URLToPDF.title=URL na PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown til PDF
|
|||||||
home.MarkdownToPDF.desc=Konverterer enhver Markdown-fil til PDF
|
home.MarkdownToPDF.desc=Konverterer enhver Markdown-fil til PDF
|
||||||
MarkdownToPDF.tags=markup,webindhold,transformation,konvertér
|
MarkdownToPDF.tags=markup,webindhold,transformation,konvertér
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Få ALLE Oplysninger om PDF
|
home.getPdfInfo.title=Få ALLE Oplysninger om PDF
|
||||||
home.getPdfInfo.desc=Henter alle mulige oplysninger om PDF'er
|
home.getPdfInfo.desc=Henter alle mulige oplysninger om PDF'er
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Arbejde i gang
|
|||||||
MarkdownToPDF.credit=Bruger WeasyPrint
|
MarkdownToPDF.credit=Bruger WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL Til PDF
|
URLToPDF.title=URL Til PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown zu PDF
|
|||||||
home.MarkdownToPDF.desc=Konvertiert jede Markdown-Datei zu PDF
|
home.MarkdownToPDF.desc=Konvertiert jede Markdown-Datei zu PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,konvertieren
|
MarkdownToPDF.tags=markup,web-content,transformation,konvertieren
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF zu Markdown
|
||||||
|
home.PDFToMarkdown.desc=Konvertiert jedes PDF in Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web inhalt,transformation,konvertieren,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Alle Informationen anzeigen
|
home.getPdfInfo.title=Alle Informationen anzeigen
|
||||||
home.getPdfInfo.desc=Erfasst alle möglichen Informationen in einer PDF
|
home.getPdfInfo.desc=Erfasst alle möglichen Informationen in einer PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=In Arbeit
|
|||||||
MarkdownToPDF.credit=Verwendet WeasyPrint
|
MarkdownToPDF.credit=Verwendet WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF zu Markdown
|
||||||
|
PDFToMarkdown.header=PDF zu Markdown
|
||||||
|
PDFToMarkdown.submit=Konvertieren
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL zu PDF
|
URLToPDF.title=URL zu PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown σε PDF
|
|||||||
home.MarkdownToPDF.desc=Μετατρέπει οποιοδήποτε αρχείο Markdown σε PDF
|
home.MarkdownToPDF.desc=Μετατρέπει οποιοδήποτε αρχείο Markdown σε PDF
|
||||||
MarkdownToPDF.tags=markup,περιεχόμενο-web,μετατροπή,μετατροπή
|
MarkdownToPDF.tags=markup,περιεχόμενο-web,μετατροπή,μετατροπή
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Λήψη ΟΛΩΝ των πληροφοριών του PDF
|
home.getPdfInfo.title=Λήψη ΟΛΩΝ των πληροφοριών του PDF
|
||||||
home.getPdfInfo.desc=Λήψη όλων των δυνατών πληροφοριών για τα PDF
|
home.getPdfInfo.desc=Λήψη όλων των δυνατών πληροφοριών για τα PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Εργασία σε εξέλιξη
|
|||||||
MarkdownToPDF.credit=Χρησιμοποιεί το WeasyPrint
|
MarkdownToPDF.credit=Χρησιμοποιεί το WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL σε PDF
|
URLToPDF.title=URL σε PDF
|
||||||
@@ -1049,7 +1057,7 @@ split.splitPages=Εισάγετε σελίδες για διαχωρισμό:
|
|||||||
split.submit=Διαχωρισμός
|
split.submit=Διαχωρισμός
|
||||||
|
|
||||||
|
|
||||||
#imageToPDF
|
#merge
|
||||||
imageToPDF.title=Εικόνα σε PDF
|
imageToPDF.title=Εικόνα σε PDF
|
||||||
imageToPDF.header=Εικόνα σε PDF
|
imageToPDF.header=Εικόνα σε PDF
|
||||||
imageToPDF.submit=Μετατροπή
|
imageToPDF.submit=Μετατροπή
|
||||||
|
|||||||
@@ -450,8 +450,11 @@ HTMLToPDF.tags=markup,web-content,transformation,convert
|
|||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown to PDF
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Get ALL Info on PDF
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Work in progress
|
|||||||
MarkdownToPDF.credit=Uses WeasyPrint
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
|
|||||||
@@ -450,8 +450,11 @@ HTMLToPDF.tags=markup,web-content,transformation,convert
|
|||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown to PDF
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Get ALL Info on PDF
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Work in progress
|
|||||||
MarkdownToPDF.credit=Uses WeasyPrint
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
|
|||||||
@@ -452,6 +452,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.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,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
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Tarea en proceso
|
|||||||
MarkdownToPDF.credit=Usa WeasyPrint
|
MarkdownToPDF.credit=Usa WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL a PDF
|
URLToPDF.title=URL a PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown PDF-ra
|
|||||||
home.MarkdownToPDF.desc=Bihurtu Markdown fitxategi guztiak PDF
|
home.MarkdownToPDF.desc=Bihurtu Markdown fitxategi guztiak PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Lortu informazio guztia PDF-tik
|
home.getPdfInfo.title=Lortu informazio guztia PDF-tik
|
||||||
home.getPdfInfo.desc=Eskuratu PDF fitxategiko Informazio guztia
|
home.getPdfInfo.desc=Eskuratu PDF fitxategiko Informazio guztia
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Lanean
|
|||||||
MarkdownToPDF.credit=WeasyPrint darabil
|
MarkdownToPDF.credit=WeasyPrint darabil
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL bat PDF-ra
|
URLToPDF.title=URL bat PDF-ra
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=مارکداون به PDF
|
|||||||
home.MarkdownToPDF.desc=تبدیل هر فایل مارکداون به PDF
|
home.MarkdownToPDF.desc=تبدیل هر فایل مارکداون به PDF
|
||||||
MarkdownToPDF.tags=مارکآپ،محتوای وب،تبدیل،تغییر
|
MarkdownToPDF.tags=مارکآپ،محتوای وب،تبدیل،تغییر
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=دریافت تمام اطلاعات در مورد PDF
|
home.getPdfInfo.title=دریافت تمام اطلاعات در مورد PDF
|
||||||
home.getPdfInfo.desc=گرفتن هر اطلاعات ممکن در مورد PDF
|
home.getPdfInfo.desc=گرفتن هر اطلاعات ممکن در مورد PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=در حال پیشرفت
|
|||||||
MarkdownToPDF.credit=از WeasyPrint استفاده میکند
|
MarkdownToPDF.credit=از WeasyPrint استفاده میکند
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL به PDF
|
URLToPDF.title=URL به PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown en PDF
|
|||||||
home.MarkdownToPDF.desc=Convertissez n'importe quel fichier Markdown en PDF.
|
home.MarkdownToPDF.desc=Convertissez n'importe quel fichier Markdown en PDF.
|
||||||
MarkdownToPDF.tags=markdown,markup,contenu Web,transformation,convert
|
MarkdownToPDF.tags=markdown,markup,contenu Web,transformation,convert
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Récupérer les informations
|
home.getPdfInfo.title=Récupérer les informations
|
||||||
home.getPdfInfo.desc=Récupérez toutes les informations possibles sur un PDF.
|
home.getPdfInfo.desc=Récupérez toutes les informations possibles sur un PDF.
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=(Travail en cours).
|
|||||||
MarkdownToPDF.credit=Utilise WeasyPrint.
|
MarkdownToPDF.credit=Utilise WeasyPrint.
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL en PDF
|
URLToPDF.title=URL en PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Marcáil síos go PDF
|
|||||||
home.MarkdownToPDF.desc=Tiontaíonn aon chomhad Markdown go PDF
|
home.MarkdownToPDF.desc=Tiontaíonn aon chomhad Markdown go PDF
|
||||||
MarkdownToPDF.tags=marcáil, ábhar gréasáin, claochlú, tiontú
|
MarkdownToPDF.tags=marcáil, ábhar gréasáin, claochlú, tiontú
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Faigh GACH Eolas ar PDF
|
home.getPdfInfo.title=Faigh GACH Eolas ar PDF
|
||||||
home.getPdfInfo.desc=Grab aon fhaisnéis agus is féidir ar PDFs
|
home.getPdfInfo.desc=Grab aon fhaisnéis agus is féidir ar PDFs
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Obair idir lámha
|
|||||||
MarkdownToPDF.credit=Úsáideann WeasyPrint
|
MarkdownToPDF.credit=Úsáideann WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL go PDF
|
URLToPDF.title=URL go PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown से PDF
|
|||||||
home.MarkdownToPDF.desc=किसी भी Markdown फ़ाइल को PDF में बदलें
|
home.MarkdownToPDF.desc=किसी भी Markdown फ़ाइल को PDF में बदलें
|
||||||
MarkdownToPDF.tags=मार्कअप,वेब-सामग्री,रूपांतरण,बदलें
|
MarkdownToPDF.tags=मार्कअप,वेब-सामग्री,रूपांतरण,बदलें
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDF की सभी जानकारी प्राप्त करें
|
home.getPdfInfo.title=PDF की सभी जानकारी प्राप्त करें
|
||||||
home.getPdfInfo.desc=PDF से संभव सभी जानकारी प्राप्त करें
|
home.getPdfInfo.desc=PDF से संभव सभी जानकारी प्राप्त करें
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=कार्य प्रगति पर है
|
|||||||
MarkdownToPDF.credit=WeasyPrint का उपयोग करता है
|
MarkdownToPDF.credit=WeasyPrint का उपयोग करता है
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL से PDF
|
URLToPDF.title=URL से PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown u PDF
|
|||||||
home.MarkdownToPDF.desc=Pretvara bilo koju Markdown datoteku u PDF
|
home.MarkdownToPDF.desc=Pretvara bilo koju Markdown datoteku u PDF
|
||||||
MarkdownToPDF.tags=oznake,web-sadržaj,transformacija,konvertiranje
|
MarkdownToPDF.tags=oznake,web-sadržaj,transformacija,konvertiranje
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Dohvati SVE informacije o PDF-u
|
home.getPdfInfo.title=Dohvati SVE informacije o PDF-u
|
||||||
home.getPdfInfo.desc=Dohvaća sve moguće informacije o PDF-ovima
|
home.getPdfInfo.desc=Dohvaća sve moguće informacije o PDF-ovima
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Rad u toku
|
|||||||
MarkdownToPDF.credit=Koristi WeasyPrint
|
MarkdownToPDF.credit=Koristi WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL u PDF
|
URLToPDF.title=URL u PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown konvertálása PDF-be
|
|||||||
home.MarkdownToPDF.desc=Markdown fájl konvertálása PDF-be
|
home.MarkdownToPDF.desc=Markdown fájl konvertálása PDF-be
|
||||||
MarkdownToPDF.tags=jelölőnyelv,webtartalom,átalakítás,konvertálás
|
MarkdownToPDF.tags=jelölőnyelv,webtartalom,átalakítás,konvertálás
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDF összes információjának lekérése
|
home.getPdfInfo.title=PDF összes információjának lekérése
|
||||||
home.getPdfInfo.desc=Minden elérhető információ lekérése PDF-ekről
|
home.getPdfInfo.desc=Minden elérhető információ lekérése PDF-ekről
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Fejlesztés alatt
|
|||||||
MarkdownToPDF.credit=WeasyPrint használatával
|
MarkdownToPDF.credit=WeasyPrint használatával
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL konvertálása PDF-be
|
URLToPDF.title=URL konvertálása PDF-be
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Penurunan harga ke PDF
|
|||||||
home.MarkdownToPDF.desc=Mengonversi berkas Markdown apa pun ke PDF
|
home.MarkdownToPDF.desc=Mengonversi berkas Markdown apa pun ke PDF
|
||||||
MarkdownToPDF.tags=markup, konten web, transformasi, konversi
|
MarkdownToPDF.tags=markup, konten web, transformasi, konversi
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Dapatkan Semua Info tentang PDF
|
home.getPdfInfo.title=Dapatkan Semua Info tentang PDF
|
||||||
home.getPdfInfo.desc=Mengambil setiap dan semua informasi yang mungkin ada pada PDF
|
home.getPdfInfo.desc=Mengambil setiap dan semua informasi yang mungkin ada pada PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Pekerjaan sedang berlangsung
|
|||||||
MarkdownToPDF.credit=Menggunakan WeasyPrint
|
MarkdownToPDF.credit=Menggunakan WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL ke PDF
|
URLToPDF.title=URL ke PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown in PDF
|
|||||||
home.MarkdownToPDF.desc=Converte qualsiasi file Markdown in PDF
|
home.MarkdownToPDF.desc=Converte qualsiasi file Markdown in PDF
|
||||||
MarkdownToPDF.tags=markup,contenuto web,trasformazione,conversione
|
MarkdownToPDF.tags=markup,contenuto web,trasformazione,conversione
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF in Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converte qualsiasi PDF in Markdown
|
||||||
|
PDFToMarkdown.tags=markup,contenuto-web,trasformazione,convertire,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Ottieni TUTTE le informazioni in PDF
|
home.getPdfInfo.title=Ottieni TUTTE le informazioni in PDF
|
||||||
home.getPdfInfo.desc=Raccogli tutte le informazioni possibili sui PDF
|
home.getPdfInfo.desc=Raccogli tutte le informazioni possibili sui PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Conversione in corso
|
|||||||
MarkdownToPDF.credit=Utilizza WeasyPrint
|
MarkdownToPDF.credit=Utilizza WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF in Markdown
|
||||||
|
PDFToMarkdown.header=PDF in Markdown
|
||||||
|
PDFToMarkdown.submit=Converti
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL a PDF
|
URLToPDF.title=URL a PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=MarkdownをPDFに変換
|
|||||||
home.MarkdownToPDF.desc=あらゆるMarkdownファイルをPDFに変換します。
|
home.MarkdownToPDF.desc=あらゆるMarkdownファイルをPDFに変換します。
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDFのすべての情報を入手
|
home.getPdfInfo.title=PDFのすべての情報を入手
|
||||||
home.getPdfInfo.desc=PDFのあらゆる情報を取得します。
|
home.getPdfInfo.desc=PDFのあらゆる情報を取得します。
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=処理中
|
|||||||
MarkdownToPDF.credit=WeasyPrintを使用
|
MarkdownToPDF.credit=WeasyPrintを使用
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URLをPDFに変換
|
URLToPDF.title=URLをPDFに変換
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown naar PDF
|
|||||||
home.MarkdownToPDF.desc=Zet Markdown-bestand om naar PDF
|
home.MarkdownToPDF.desc=Zet Markdown-bestand om naar PDF
|
||||||
MarkdownToPDF.tags=markup,web-inhoud,transformatie,omzetten
|
MarkdownToPDF.tags=markup,web-inhoud,transformatie,omzetten
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Haal ALLE informatie op over PDF
|
home.getPdfInfo.title=Haal ALLE informatie op over PDF
|
||||||
home.getPdfInfo.desc=Haalt alle mogelijke informatie op van PDF's
|
home.getPdfInfo.desc=Haalt alle mogelijke informatie op van PDF's
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=In ontwikkeling
|
|||||||
MarkdownToPDF.credit=Gebruikt WeasyPrint
|
MarkdownToPDF.credit=Gebruikt WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL naar PDF
|
URLToPDF.title=URL naar PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown til PDF
|
|||||||
home.MarkdownToPDF.desc=Konverter hvilken som helst Markdown-fil til PDF
|
home.MarkdownToPDF.desc=Konverter hvilken som helst Markdown-fil til PDF
|
||||||
MarkdownToPDF.tags=markup,web-innhold,transformasjon,konverter
|
MarkdownToPDF.tags=markup,web-innhold,transformasjon,konverter
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Få ALL informasjon om PDF
|
home.getPdfInfo.title=Få ALL informasjon om PDF
|
||||||
home.getPdfInfo.desc=Fanger opp all tilgjengelig informasjon om PDF-er
|
home.getPdfInfo.desc=Fanger opp all tilgjengelig informasjon om PDF-er
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Arbeid pågår
|
|||||||
MarkdownToPDF.credit=Bruker WeasyPrint
|
MarkdownToPDF.credit=Bruker WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL Til PDF
|
URLToPDF.title=URL Til PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown do PDF
|
|||||||
home.MarkdownToPDF.desc=Zapisuje dokument Markdown do PDF
|
home.MarkdownToPDF.desc=Zapisuje dokument Markdown do PDF
|
||||||
MarkdownToPDF.tags=znaczniki, treść internetowa, transformacja, konwertowanie
|
MarkdownToPDF.tags=znaczniki, treść internetowa, transformacja, konwertowanie
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Pobierz informacje o pliku PDF
|
home.getPdfInfo.title=Pobierz informacje o pliku PDF
|
||||||
home.getPdfInfo.desc=Pobiera wszelkie informacje o pliku PDF
|
home.getPdfInfo.desc=Pobiera wszelkie informacje o pliku PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Prace trwają
|
|||||||
MarkdownToPDF.credit=Użyj WeasyPrint
|
MarkdownToPDF.credit=Użyj WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL do PDF
|
URLToPDF.title=URL do PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown para PDF
|
|||||||
home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF.
|
home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF.
|
||||||
MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter
|
MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Obter Informações de um PDF
|
home.getPdfInfo.title=Obter Informações de um PDF
|
||||||
home.getPdfInfo.desc=Obtém informações (metadata) de um PDF.
|
home.getPdfInfo.desc=Obtém informações (metadata) de um PDF.
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Em desenvolvimento.
|
|||||||
MarkdownToPDF.credit=Utiliza o WeasyPrint.
|
MarkdownToPDF.credit=Utiliza o WeasyPrint.
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=Converter URL/Site para PDF
|
URLToPDF.title=Converter URL/Site para PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown para PDF
|
|||||||
home.MarkdownToPDF.desc=Converte qualquer ficheiro Markdown para PDF
|
home.MarkdownToPDF.desc=Converte qualquer ficheiro Markdown para PDF
|
||||||
MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter
|
MarkdownToPDF.tags=marcação,conteúdo-web,transformação,converter
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Obter TODA Informação sobre PDF
|
home.getPdfInfo.title=Obter TODA Informação sobre PDF
|
||||||
home.getPdfInfo.desc=Obtém qualquer e toda informação possível sobre PDFs
|
home.getPdfInfo.desc=Obtém qualquer e toda informação possível sobre PDFs
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Trabalho em progresso
|
|||||||
MarkdownToPDF.credit=Usa WeasyPrint
|
MarkdownToPDF.credit=Usa WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL Para PDF
|
URLToPDF.title=URL Para PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown în PDF
|
|||||||
home.MarkdownToPDF.desc=Convertește orice fișier Markdown în PDF
|
home.MarkdownToPDF.desc=Convertește orice fișier Markdown în PDF
|
||||||
MarkdownToPDF.tags=markup,conținut-web,transformare,convertește
|
MarkdownToPDF.tags=markup,conținut-web,transformare,convertește
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Obține TOATE Informațiile despre PDF
|
home.getPdfInfo.title=Obține TOATE Informațiile despre PDF
|
||||||
home.getPdfInfo.desc=Extrage orice și toate informațiile posibile despre PDF-uri
|
home.getPdfInfo.desc=Extrage orice și toate informațiile posibile despre PDF-uri
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Lucrare în curs
|
|||||||
MarkdownToPDF.credit=Folosește WeasyPrint
|
MarkdownToPDF.credit=Folosește WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL în PDF
|
URLToPDF.title=URL în PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown в PDF
|
|||||||
home.MarkdownToPDF.desc=Преобразует любой файл Markdown в PDF
|
home.MarkdownToPDF.desc=Преобразует любой файл Markdown в PDF
|
||||||
MarkdownToPDF.tags=разметка,веб-контент,преобразование,конвертация
|
MarkdownToPDF.tags=разметка,веб-контент,преобразование,конвертация
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Получить ВСЮ информацию о PDF
|
home.getPdfInfo.title=Получить ВСЮ информацию о PDF
|
||||||
home.getPdfInfo.desc=Собирает всю возможную информацию о PDF
|
home.getPdfInfo.desc=Собирает всю возможную информацию о PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=В разработке
|
|||||||
MarkdownToPDF.credit=Использует WeasyPrint
|
MarkdownToPDF.credit=Использует WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL в PDF
|
URLToPDF.title=URL в PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown do PDF
|
|||||||
home.MarkdownToPDF.desc=Konvertuje akýkoľvek Markdown súbor do PDF
|
home.MarkdownToPDF.desc=Konvertuje akýkoľvek Markdown súbor do PDF
|
||||||
MarkdownToPDF.tags=markup, webový obsah, transformácia, konvertovať
|
MarkdownToPDF.tags=markup, webový obsah, transformácia, konvertovať
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Získať všetky informácie o PDF
|
home.getPdfInfo.title=Získať všetky informácie o PDF
|
||||||
home.getPdfInfo.desc=Získava všetky dostupné informácie o PDF
|
home.getPdfInfo.desc=Získava všetky dostupné informácie o PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Práca prebieha
|
|||||||
MarkdownToPDF.credit=Používa WeasyPrint
|
MarkdownToPDF.credit=Používa WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL do PDF
|
URLToPDF.title=URL do PDF
|
||||||
|
|||||||
1375
src/main/resources/messages_sl_SI.properties
Normal file
1375
src/main/resources/messages_sl_SI.properties
Normal file
File diff suppressed because it is too large
Load Diff
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown u PDF
|
|||||||
home.MarkdownToPDF.desc=Konvertuje bilo koji Markdown fajl u PDF
|
home.MarkdownToPDF.desc=Konvertuje bilo koji Markdown fajl u PDF
|
||||||
MarkdownToPDF.tags=oznake,web-sadržaj,transformacija,konvertovanje
|
MarkdownToPDF.tags=oznake,web-sadržaj,transformacija,konvertovanje
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Dohvati SVE informacije o PDF-u
|
home.getPdfInfo.title=Dohvati SVE informacije o PDF-u
|
||||||
home.getPdfInfo.desc=Dobavlja sve moguće informacije o PDF-ovima
|
home.getPdfInfo.desc=Dobavlja sve moguće informacije o PDF-ovima
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Rad u toku
|
|||||||
MarkdownToPDF.credit=Koristi WeasyPrint
|
MarkdownToPDF.credit=Koristi WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL u PDF
|
URLToPDF.title=URL u PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown till PDF
|
|||||||
home.MarkdownToPDF.desc=Konverterar valfri Markdown-fil till PDF
|
home.MarkdownToPDF.desc=Konverterar valfri Markdown-fil till PDF
|
||||||
MarkdownToPDF.tags=markup,webbinnehåll,transformation,konvertera
|
MarkdownToPDF.tags=markup,webbinnehåll,transformation,konvertera
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Hämta ALL information om PDF
|
home.getPdfInfo.title=Hämta ALL information om PDF
|
||||||
home.getPdfInfo.desc=Hämtar all möjlig information om PDF:er
|
home.getPdfInfo.desc=Hämtar all möjlig information om PDF:er
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Pågående arbete
|
|||||||
MarkdownToPDF.credit=Använder WeasyPrint
|
MarkdownToPDF.credit=Använder WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL till PDF
|
URLToPDF.title=URL till PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown เป็น PDF
|
|||||||
home.MarkdownToPDF.desc=แปลงไฟล์ Markdown เป็น PDF
|
home.MarkdownToPDF.desc=แปลงไฟล์ Markdown เป็น PDF
|
||||||
MarkdownToPDF.tags=มาร์กอัป, เนื้อหาเว็บ, การแปลง, การแปลง
|
MarkdownToPDF.tags=มาร์กอัป, เนื้อหาเว็บ, การแปลง, การแปลง
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=รับข้อมูลทั้งหมดเกี่ยวกับ PDF
|
home.getPdfInfo.title=รับข้อมูลทั้งหมดเกี่ยวกับ PDF
|
||||||
home.getPdfInfo.desc=รับข้อมูลที่เป็นไปได้ทั้งหมดเกี่ยวกับ PDF
|
home.getPdfInfo.desc=รับข้อมูลที่เป็นไปได้ทั้งหมดเกี่ยวกับ PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=กำลังดำเนินการ
|
|||||||
MarkdownToPDF.credit=ใช้ WeasyPrint
|
MarkdownToPDF.credit=ใช้ WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL เป็น PDF
|
URLToPDF.title=URL เป็น PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown'dan PDF'e
|
|||||||
home.MarkdownToPDF.desc=Herhangi bir Markdown dosyasını PDF'e dönüştürür
|
home.MarkdownToPDF.desc=Herhangi bir Markdown dosyasını PDF'e dönüştürür
|
||||||
MarkdownToPDF.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür
|
MarkdownToPDF.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDF Hakkında TÜM Bilgiyi Al
|
home.getPdfInfo.title=PDF Hakkında TÜM Bilgiyi Al
|
||||||
home.getPdfInfo.desc=PDF'ler hakkında mümkün olan her türlü bilgiyi toplar
|
home.getPdfInfo.desc=PDF'ler hakkında mümkün olan her türlü bilgiyi toplar
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Devam eden iş
|
|||||||
MarkdownToPDF.credit=WeasyPrint Kullanıyor
|
MarkdownToPDF.credit=WeasyPrint Kullanıyor
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL'den PDF'e
|
URLToPDF.title=URL'den PDF'e
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown у PDF
|
|||||||
home.MarkdownToPDF.desc=Конвертує будь-який файл Markdown у PDF
|
home.MarkdownToPDF.desc=Конвертує будь-який файл Markdown у PDF
|
||||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Отримати ВСЮ інформацію у форматі PDF
|
home.getPdfInfo.title=Отримати ВСЮ інформацію у форматі PDF
|
||||||
home.getPdfInfo.desc=Збирає будь-яку можливу інформацію у PDF-файлах.
|
home.getPdfInfo.desc=Збирає будь-яку можливу інформацію у PDF-файлах.
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Робота в процесі
|
|||||||
MarkdownToPDF.credit=Використовує WeasyPrint
|
MarkdownToPDF.credit=Використовує WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL у PDF
|
URLToPDF.title=URL у PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown sang PDF
|
|||||||
home.MarkdownToPDF.desc=Chuyển đổi bất kỳ tệp Markdown nào thành PDF
|
home.MarkdownToPDF.desc=Chuyển đổi bất kỳ tệp Markdown nào thành PDF
|
||||||
MarkdownToPDF.tags=đánh dấu,nội dung web,chuyển đổi,chuyển
|
MarkdownToPDF.tags=đánh dấu,nội dung web,chuyển đổi,chuyển
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=Lấy TẤT CẢ thông tin về PDF
|
home.getPdfInfo.title=Lấy TẤT CẢ thông tin về PDF
|
||||||
home.getPdfInfo.desc=Lấy bất kỳ và tất cả thông tin có thể về PDF
|
home.getPdfInfo.desc=Lấy bất kỳ và tất cả thông tin có thể về PDF
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=Đang trong quá trình phát triển
|
|||||||
MarkdownToPDF.credit=Sử dụng WeasyPrint
|
MarkdownToPDF.credit=Sử dụng WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL sang PDF
|
URLToPDF.title=URL sang PDF
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown ནས་ PDF ལ།
|
|||||||
home.MarkdownToPDF.desc=Markdown ཡིག་ཆ་གང་རུང་ PDF ལ་བསྒྱུར་བ།
|
home.MarkdownToPDF.desc=Markdown ཡིག་ཆ་གང་རུང་ PDF ལ་བསྒྱུར་བ།
|
||||||
MarkdownToPDF.tags=རྟགས་རྒྱག,དྲ་ངོས་ནང་དོན།,བསྒྱུར་བཅོས།,བསྒྱུར་བ།
|
MarkdownToPDF.tags=རྟགས་རྒྱག,དྲ་ངོས་ནང་དོན།,བསྒྱུར་བཅོས།,བསྒྱུར་བ།
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=PDF ཡི་གནས་ཚུལ་ཆ་ཚང་ལེན་པ།
|
home.getPdfInfo.title=PDF ཡི་གནས་ཚུལ་ཆ་ཚང་ལེན་པ།
|
||||||
home.getPdfInfo.desc=PDF ཡི་གནས་ཚུལ་ཡོད་ཚད་ལེན་པ།
|
home.getPdfInfo.desc=PDF ཡི་གནས་ཚུལ་ཡོད་ཚད་ལེན་པ།
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=ལས་ཀ་བྱེད་བཞིན་པ།
|
|||||||
MarkdownToPDF.credit=WeasyPrint བེད་སྤྱོད་བྱེད་པ།
|
MarkdownToPDF.credit=WeasyPrint བེད་སྤྱོད་བྱེད་པ།
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL ནས་ PDF ལ།
|
URLToPDF.title=URL ནས་ PDF ལ།
|
||||||
|
|||||||
@@ -452,6 +452,9 @@ home.MarkdownToPDF.title=Markdown 转 PDF
|
|||||||
home.MarkdownToPDF.desc=将任何 Markdown 文件转换为 PDF
|
home.MarkdownToPDF.desc=将任何 Markdown 文件转换为 PDF
|
||||||
MarkdownToPDF.tags=标记、网页内容、转换、转换
|
MarkdownToPDF.tags=标记、网页内容、转换、转换
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF to Markdown
|
||||||
|
home.PDFToMarkdown.desc=Converts any PDF to Markdown
|
||||||
|
PDFToMarkdown.tags=markup,web-content,transformation,convert,md
|
||||||
|
|
||||||
home.getPdfInfo.title=获取 PDF 的所有信息
|
home.getPdfInfo.title=获取 PDF 的所有信息
|
||||||
home.getPdfInfo.desc=获取 PDF 的所有可能的信息
|
home.getPdfInfo.desc=获取 PDF 的所有可能的信息
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=正在努力中
|
|||||||
MarkdownToPDF.credit=此服务使用 WeasyPrint 进行文件转换。
|
MarkdownToPDF.credit=此服务使用 WeasyPrint 进行文件转换。
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL 转 PDF
|
URLToPDF.title=URL 转 PDF
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ changeMetadata.tags=標題,作者,日期,建立,時間,出版商,製作人,統
|
|||||||
|
|
||||||
home.fileToPDF.title=檔案轉 PDF
|
home.fileToPDF.title=檔案轉 PDF
|
||||||
home.fileToPDF.desc=將幾乎所有格式轉換為 PDF(DOCX、PNG、XLS、PPT、TXT 等等)
|
home.fileToPDF.desc=將幾乎所有格式轉換為 PDF(DOCX、PNG、XLS、PPT、TXT 等等)
|
||||||
fileToPDF.tags=轉換,格式,文件,圖片,幻燈片,文字,轉換,辦公室,文件,Word,Excel,PowerPoint
|
fileToPDF.tags=轉換,格式,文件,圖片,投影片,文字,轉換,office,docs,Word,Excel,PowerPoint
|
||||||
|
|
||||||
home.ocr.title=OCR / 清理掃描
|
home.ocr.title=OCR / 清理掃描
|
||||||
home.ocr.desc=清理掃描並從 PDF 中的影像中偵測文字並重新新增為文字。
|
home.ocr.desc=清理掃描並從 PDF 中的影像中偵測文字並重新新增為文字。
|
||||||
@@ -344,15 +344,15 @@ extractImages.tags=圖片,照片,儲存,存檔,壓縮檔,捕獲,抓取
|
|||||||
|
|
||||||
home.pdfToPDFA.title=PDF 轉 PDF/A
|
home.pdfToPDFA.title=PDF 轉 PDF/A
|
||||||
home.pdfToPDFA.desc=將 PDF 轉換為長期儲存的 PDF/A
|
home.pdfToPDFA.desc=將 PDF 轉換為長期儲存的 PDF/A
|
||||||
pdfToPDFA.tags=存檔,長期,標準,轉換,儲存,儲存
|
pdfToPDFA.tags=存檔,長期,標準,轉換,儲存,保存
|
||||||
|
|
||||||
home.PDFToWord.title=PDF 轉 Word
|
home.PDFToWord.title=PDF 轉 Word
|
||||||
home.PDFToWord.desc=將 PDF 轉換為 Word 格式(DOC、DOCX 和 ODT)
|
home.PDFToWord.desc=將 PDF 轉換為 Word 格式(DOC、DOCX 和 ODT)
|
||||||
PDFToWord.tags=doc,docx,odt,word,轉換,格式,轉換,辦公室,微軟,docfile
|
PDFToWord.tags=doc,docx,odt,word,轉換,格式,轉檔,office,微軟,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF 轉簡報
|
home.PDFToPresentation.title=PDF 轉簡報
|
||||||
home.PDFToPresentation.desc=將 PDF 轉換為簡報格式(PPT、PPTX 和 ODP)
|
home.PDFToPresentation.desc=將 PDF 轉換為簡報格式(PPT、PPTX 和 ODP)
|
||||||
PDFToPresentation.tags=幻燈片,展示,辦公室,微軟
|
PDFToPresentation.tags=投影片,展示,office,微軟
|
||||||
|
|
||||||
home.PDFToText.title=PDF 轉 RTF(文字)
|
home.PDFToText.title=PDF 轉 RTF(文字)
|
||||||
home.PDFToText.desc=將 PDF 轉換為文字或 RTF 格式
|
home.PDFToText.desc=將 PDF 轉換為文字或 RTF 格式
|
||||||
@@ -365,7 +365,7 @@ PDFToHTML.tags=網頁內容,瀏覽器友善
|
|||||||
|
|
||||||
home.PDFToXML.title=PDF 轉 XML
|
home.PDFToXML.title=PDF 轉 XML
|
||||||
home.PDFToXML.desc=將 PDF 轉換為 XML 格式
|
home.PDFToXML.desc=將 PDF 轉換為 XML 格式
|
||||||
PDFToXML.tags=資料提取,結構化內容,互操作,轉換,轉換
|
PDFToXML.tags=資料提取,結構化內容,互操作,轉換,轉檔
|
||||||
|
|
||||||
home.ScannerImageSplit.title=偵測/分割掃描照片
|
home.ScannerImageSplit.title=偵測/分割掃描照片
|
||||||
home.ScannerImageSplit.desc=從照片/PDF 中分割多張照片
|
home.ScannerImageSplit.desc=從照片/PDF 中分割多張照片
|
||||||
@@ -381,7 +381,7 @@ flatten.tags=靜態,停用,非互動,簡化
|
|||||||
|
|
||||||
home.repair.title=修復
|
home.repair.title=修復
|
||||||
home.repair.desc=嘗試修復損壞/破損的 PDF
|
home.repair.desc=嘗試修復損壞/破損的 PDF
|
||||||
repair.tags=修復,恢復,修正,恢復
|
repair.tags=修復,恢復,修正,復原
|
||||||
|
|
||||||
home.removeBlanks.title=移除空白頁面
|
home.removeBlanks.title=移除空白頁面
|
||||||
home.removeBlanks.desc=偵測並從文件中移除空白頁面
|
home.removeBlanks.desc=偵測並從文件中移除空白頁面
|
||||||
@@ -437,7 +437,7 @@ autoSplitPDF.tags=基於 QR Code,分離,掃描區段,組織
|
|||||||
|
|
||||||
home.sanitizePdf.title=清理
|
home.sanitizePdf.title=清理
|
||||||
home.sanitizePdf.desc=從 PDF 檔案中移除指令碼和其他元素
|
home.sanitizePdf.desc=從 PDF 檔案中移除指令碼和其他元素
|
||||||
sanitizePdf.tags=清理,安全,安全,移除威脅
|
sanitizePdf.tags=清理,安全,無害,移除威脅
|
||||||
|
|
||||||
home.URLToPDF.title=網址/網站轉 PDF
|
home.URLToPDF.title=網址/網站轉 PDF
|
||||||
home.URLToPDF.desc=將任何 http(s) 網址轉換為 PDF
|
home.URLToPDF.desc=將任何 http(s) 網址轉換為 PDF
|
||||||
@@ -445,13 +445,16 @@ URLToPDF.tags=網頁捕獲,儲存頁面,網頁轉文件,存檔
|
|||||||
|
|
||||||
home.HTMLToPDF.title=HTML 轉 PDF
|
home.HTMLToPDF.title=HTML 轉 PDF
|
||||||
home.HTMLToPDF.desc=將任何 HTML 檔案或壓縮檔轉換為 PDF
|
home.HTMLToPDF.desc=將任何 HTML 檔案或壓縮檔轉換為 PDF
|
||||||
HTMLToPDF.tags=標記,網頁內容,轉換,轉換
|
HTMLToPDF.tags=標記,網頁內容,轉換,轉檔
|
||||||
|
|
||||||
|
|
||||||
home.MarkdownToPDF.title=Markdown 轉 PDF
|
home.MarkdownToPDF.title=Markdown 轉 PDF
|
||||||
home.MarkdownToPDF.desc=將任何 Markdown 檔案轉換為 PDF
|
home.MarkdownToPDF.desc=將任何 Markdown 檔案轉換為 PDF
|
||||||
MarkdownToPDF.tags=標記,網頁內容,轉換,轉換
|
MarkdownToPDF.tags=標記,網頁內容,轉換,轉檔,md
|
||||||
|
|
||||||
|
home.PDFToMarkdown.title=PDF 轉 Markdown
|
||||||
|
home.PDFToMarkdown.desc=將任何 PDF 轉換為 Markdown 檔案
|
||||||
|
PDFToMarkdown.tags=標記語言,網頁內容,轉換,轉檔,md
|
||||||
|
|
||||||
home.getPdfInfo.title=取得 PDF 的所有資訊
|
home.getPdfInfo.title=取得 PDF 的所有資訊
|
||||||
home.getPdfInfo.desc=取得 PDF 的所有可能資訊
|
home.getPdfInfo.desc=取得 PDF 的所有可能資訊
|
||||||
@@ -474,11 +477,11 @@ showJS.tags=JS
|
|||||||
|
|
||||||
home.autoRedact.title=自動塗黑
|
home.autoRedact.title=自動塗黑
|
||||||
home.autoRedact.desc=根據輸入的文字自動塗黑 PDF 中的文字
|
home.autoRedact.desc=根據輸入的文字自動塗黑 PDF 中的文字
|
||||||
autoRedact.tags=塗黑,隱藏,塗黑,黑色,標記,隱藏
|
autoRedact.tags=塗改,隱藏,塗黑,黑色,標記,遮蔽
|
||||||
|
|
||||||
home.redact.title=手動塗黑
|
home.redact.title=手動塗黑
|
||||||
home.redact.desc=依據選取的文字、繪製的形狀和選取的頁面塗黑 PDF
|
home.redact.desc=依據選取的文字、繪製的形狀和選取的頁面塗黑 PDF
|
||||||
redact.tags=塗黑,隱藏,黑色標記,黑色,標記,隱藏,手動
|
redact.tags=塗改,隱藏,塗黑,黑色,標記,遮蔽,手動
|
||||||
|
|
||||||
home.tableExtraxt.title=PDF 轉 CSV
|
home.tableExtraxt.title=PDF 轉 CSV
|
||||||
home.tableExtraxt.desc=從 PDF 中提取表格並將其轉換為 CSV
|
home.tableExtraxt.desc=從 PDF 中提取表格並將其轉換為 CSV
|
||||||
@@ -646,6 +649,11 @@ MarkdownToPDF.help=正在進行中
|
|||||||
MarkdownToPDF.credit=此服務使用 WeasyPrint 進行轉換
|
MarkdownToPDF.credit=此服務使用 WeasyPrint 進行轉換
|
||||||
|
|
||||||
|
|
||||||
|
#pdf-to-markdown
|
||||||
|
PDFToMarkdown.title=PDF To Markdown
|
||||||
|
PDFToMarkdown.header=PDF To Markdown
|
||||||
|
PDFToMarkdown.submit=Convert
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL 轉 PDF
|
URLToPDF.title=URL 轉 PDF
|
||||||
@@ -934,7 +942,7 @@ compress.title=壓縮
|
|||||||
compress.header=壓縮 PDF
|
compress.header=壓縮 PDF
|
||||||
compress.credit=此服務使用 qpdf 進行 PDF 壓縮/最佳化。
|
compress.credit=此服務使用 qpdf 進行 PDF 壓縮/最佳化。
|
||||||
compress.selectText.1=手動模式 - 從 1 到 5
|
compress.selectText.1=手動模式 - 從 1 到 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=在最佳化等級 6 到 9 時,除了一般 PDF 壓縮外,圖片解析度也會降低以進一步減少檔案大小。較高的壓縮等級會進行更高強度的圖片壓縮(最多可壓縮到原始大小的 50%),以達到更高的壓縮率,但可能會影響圖片品質。
|
||||||
compress.selectText.2=最佳化等級:
|
compress.selectText.2=最佳化等級:
|
||||||
compress.selectText.3=4(對於含有文字的影像來說結果很糟)
|
compress.selectText.3=4(對於含有文字的影像來說結果很糟)
|
||||||
compress.selectText.4=自動模式 - 自動調整品質使 PDF 達到指定的檔案大小
|
compress.selectText.4=自動模式 - 自動調整品質使 PDF 達到指定的檔案大小
|
||||||
|
|||||||
@@ -376,6 +376,132 @@
|
|||||||
"moduleLicense": "UnboundID SCIM2 SDK Free Use License",
|
"moduleLicense": "UnboundID SCIM2 SDK Free Use License",
|
||||||
"moduleLicenseUrl": "https://github.com/pingidentity/scim2"
|
"moduleLicenseUrl": "https://github.com/pingidentity/scim2"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-emoji",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-gfm-strikethrough",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-ins",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-superscript",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-tables",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-ext-wikilink",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-html2md-converter",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-jira-converter",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-ast",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-builder",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-collection",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-data",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-dependency",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-format",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-html",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-misc",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-options",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-sequence",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "com.vladsch.flexmark:flexmark-util-visitor",
|
||||||
|
"moduleVersion": "0.64.8",
|
||||||
|
"moduleLicense": "BSD 2-Clause License",
|
||||||
|
"moduleLicenseUrl": "http://opensource.org/licenses/BSD-2-Clause"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "com.zaxxer:HikariCP",
|
"moduleName": "com.zaxxer:HikariCP",
|
||||||
"moduleUrl": "https://github.com/brettwooldridge/HikariCP",
|
"moduleUrl": "https://github.com/brettwooldridge/HikariCP",
|
||||||
@@ -1108,6 +1234,20 @@
|
|||||||
"moduleLicense": "Apache License 2.0",
|
"moduleLicense": "Apache License 2.0",
|
||||||
"moduleLicenseUrl": "https://repository.jboss.org/licenses/apache-2.0.txt"
|
"moduleLicenseUrl": "https://repository.jboss.org/licenses/apache-2.0.txt"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.jetbrains:annotations",
|
||||||
|
"moduleUrl": "https://github.com/JetBrains/java-annotations",
|
||||||
|
"moduleVersion": "24.0.1",
|
||||||
|
"moduleLicense": "The Apache Software License, Version 2.0",
|
||||||
|
"moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"moduleName": "org.jsoup:jsoup",
|
||||||
|
"moduleUrl": "https://jsoup.org/",
|
||||||
|
"moduleVersion": "1.15.4",
|
||||||
|
"moduleLicense": "The MIT License",
|
||||||
|
"moduleLicenseUrl": "https://jsoup.org/license"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"moduleName": "org.latencyutils:LatencyUtils",
|
"moduleName": "org.latencyutils:LatencyUtils",
|
||||||
"moduleUrl": "http://latencyutils.github.io/LatencyUtils/",
|
"moduleUrl": "http://latencyutils.github.io/LatencyUtils/",
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ html {
|
|||||||
border-color: rgba(6, 114, 197, 0.82) !important;
|
border-color: rgba(6, 114, 197, 0.82) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pdfToImageBtn:hover .btn-tooltip {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
#redactionsPaletteContainer {
|
#redactionsPaletteContainer {
|
||||||
height: var(--toolButton-height);
|
height: var(--toolButton-height);
|
||||||
width: var(--toolButton-width);
|
width: var(--toolButton-width);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ select#font-select option {
|
|||||||
margin-left: -2.2rem;
|
margin-left: -2.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.draggable-buttons-box>button {
|
.draggable-buttons-box > button {
|
||||||
z-index: 4;
|
z-index: 4;
|
||||||
background-color: rgba(13, 110, 253, 0.1);
|
background-color: rgba(13, 110, 253, 0.1);
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
@@ -40,7 +40,6 @@ select#font-select option {
|
|||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.rotation-handle {
|
.rotation-handle {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
@@ -163,3 +162,76 @@ select#font-select option {
|
|||||||
.small-file-container-saved:hover .drag-icon {
|
.small-file-container-saved:hover .drag-icon {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The container must be positioned relative: */
|
||||||
|
.custom-select {
|
||||||
|
position: relative;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-select select {
|
||||||
|
display: none; /*hide original SELECT element: */
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-selected {
|
||||||
|
background-color: inherit;
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 30px;
|
||||||
|
border-radius: 3rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style the arrow inside the select element: */
|
||||||
|
.select-selected:after {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
top: 50%;
|
||||||
|
right: 10px;
|
||||||
|
translate: 0 -50%;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border: 6px solid transparent;
|
||||||
|
border-color: #fff transparent transparent transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Point the arrow upwards when the select box is open (active): */
|
||||||
|
.select-selected.select-arrow-active:after {
|
||||||
|
border-color: transparent transparent #fff transparent;
|
||||||
|
translate: 0 -75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* style the items (options), including the selected item: */
|
||||||
|
.select-items div,
|
||||||
|
.select-selected {
|
||||||
|
color: inherit;
|
||||||
|
padding: 8px 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-items div {
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-color: transparent transparent transparent transparent;
|
||||||
|
|
||||||
|
line-height: 30px;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Style items (options): */
|
||||||
|
.select-items {
|
||||||
|
position: absolute;
|
||||||
|
background-color: inherit;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 101;
|
||||||
|
border: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide the items when the select box is closed: */
|
||||||
|
.select-hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.select-items div:hover,
|
||||||
|
.same-as-selected {
|
||||||
|
background-color: rgba(54, 54, 54, 0.1);
|
||||||
|
}
|
||||||
|
|||||||
18
src/main/resources/static/images/flags/si.svg
Normal file
18
src/main/resources/static/images/flags/si.svg
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-si" viewBox="0 0 640 480">
|
||||||
|
<defs>
|
||||||
|
<clipPath id="si-a">
|
||||||
|
<path fill-opacity=".7" d="M-15 0h682.6v512H-15.1z"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g fill-rule="evenodd" stroke-width="1pt" clip-path="url(#si-a)" transform="translate(14.1)scale(.9375)">
|
||||||
|
<path fill="#fff" d="M-62 0H962v512H-62z"/>
|
||||||
|
<path fill="#d50000" d="M-62 341.3H962V512H-62z"/>
|
||||||
|
<path fill="#0000bf" d="M-62 170.7H962v170.6H-62z"/>
|
||||||
|
<path fill="#d50000" d="M228.4 93c-4 61.6-6.4 95.4-15.7 111-10.2 16.8-20 29.1-59.7 44-39.6-14.9-49.4-27.2-59.6-44-9.4-15.6-11.7-49.4-15.7-111l5.8-2c11.8-3.6 20.6-6.5 27.1-7.8 9.3-2 17.3-4.2 42.3-4.7 25 .4 33 2.8 42.3 4.8q9.7 2.1 27.3 7.7z"/>
|
||||||
|
<path fill="#0000bf" d="M222.6 91c-3.8 61.5-7 89.7-12 103.2-9.6 23.2-24.8 35.9-57.6 48-32.8-12.1-48-24.8-57.7-48-5-13.6-8-41.7-11.8-103.3q17.4-5.6 27.1-7.7c9.3-2 17.3-4.3 42.3-4.7 25 .4 33 2.7 42.3 4.7a284 284 0 0 1 27.4 7.7z"/>
|
||||||
|
<path fill="#ffdf00" d="m153 109.8 1.5 3.7 7 1-4.5 2.7 4.3 2.9-6.3 1-2 3.4-2-3.5-6-.8 4-3-4.2-2.7 6.7-1z"/>
|
||||||
|
<path fill="#fff" d="m208.3 179.6-3.9-3-2.7-4.6-5.4-4.7-2.9-4.7-5.4-4.9-2.6-4.7-3-2.3-1.8-1.9-5 4.3-2.6 4.7-3.3 3-3.7-2.9-2.7-4.8-10.3-18.3-10.3 18.3-2.7 4.8-3.7 2.9-3.3-3-2.7-4.7-4.9-4.3-1.9 1.8-2.9 2.4-2.6 4.7-5.4 4.9-2.9 4.7-5.4 4.7-2.7 4.6-3.9 3a66 66 0 0 0 18.6 36.3 107 107 0 0 0 36.6 20.5 104 104 0 0 0 36.8-20.5c5.8-6 16.6-19.3 18.6-36.3"/>
|
||||||
|
<path fill="#ffdf00" d="m169.4 83.9 1.6 3.7 7 1-4.6 2.7 4.4 2.9-6.3 1-2 3.4-2-3.5-6-.8 4-3-4.2-2.7 6.6-1zm-33 0 1.6 3.7 7 .9-4.5 2.7 4.3 2.9-6.3 1-2 3.4-2-3.4-6-.9 4-3-4.2-2.7 6.7-1z"/>
|
||||||
|
<path fill="#0000bf" d="M199.7 203h-7.4l-7-.5-8.3-4h-9.4l-8.1 4-6.5.6-6.4-.6-8.1-4H129l-8.4 4-6.9.6-7.6-.1-3.6-6.2.1-.2 11.2 1.9 6.9-.5 8.3-4.1h9.4l8.2 4 6.4.6 6.5-.6 8.1-4h9.4l8.4 4 6.9.6 10.8-2 .2.4zm-86.4 9.5 7.4-.5 8.3-4h9.4l8.2 4 6.4.5 6.4-.5 8.2-4h9.4l8.3 4 7.5.5 4.8-6h-.1l-5.2 1.4-6.9-.5-8.3-4h-9.4l-8.2 4-6.4.6-6.5-.6-8.1-4H129l-8.4 4-6.9.6-5-1.3v.2l4.5 5.6z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -8,21 +8,21 @@ window.goToFirstOrLastPage = goToFirstOrLastPage;
|
|||||||
let currentPreviewSrc = null;
|
let currentPreviewSrc = null;
|
||||||
|
|
||||||
function toggleSignatureView() {
|
function toggleSignatureView() {
|
||||||
const gridView = document.getElementById('gridView');
|
const gridView = document.getElementById("gridView");
|
||||||
const listView = document.getElementById('listView');
|
const listView = document.getElementById("listView");
|
||||||
const gridText = document.querySelector('.grid-view-text');
|
const gridText = document.querySelector(".grid-view-text");
|
||||||
const listText = document.querySelector('.list-view-text');
|
const listText = document.querySelector(".list-view-text");
|
||||||
|
|
||||||
if (gridView.style.display !== 'none') {
|
if (gridView.style.display !== "none") {
|
||||||
gridView.style.display = 'none';
|
gridView.style.display = "none";
|
||||||
listView.style.display = 'block';
|
listView.style.display = "block";
|
||||||
gridText.style.display = 'none';
|
gridText.style.display = "none";
|
||||||
listText.style.display = 'inline';
|
listText.style.display = "inline";
|
||||||
} else {
|
} else {
|
||||||
gridView.style.display = 'block';
|
gridView.style.display = "block";
|
||||||
listView.style.display = 'none';
|
listView.style.display = "none";
|
||||||
gridText.style.display = 'inline';
|
gridText.style.display = "inline";
|
||||||
listText.style.display = 'none';
|
listText.style.display = "none";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,63 +30,204 @@ function previewSignature(element) {
|
|||||||
const src = element.dataset.src;
|
const src = element.dataset.src;
|
||||||
currentPreviewSrc = src;
|
currentPreviewSrc = src;
|
||||||
|
|
||||||
const filename = element.querySelector('.signature-list-name').textContent;
|
const filename = element.querySelector(".signature-list-name").textContent;
|
||||||
|
|
||||||
const previewImage = document.getElementById('previewImage');
|
const previewImage = document.getElementById("previewImage");
|
||||||
const previewFileName = document.getElementById('previewFileName');
|
const previewFileName = document.getElementById("previewFileName");
|
||||||
|
|
||||||
previewImage.src = src;
|
previewImage.src = src;
|
||||||
previewFileName.textContent = filename;
|
previewFileName.textContent = filename;
|
||||||
|
|
||||||
const modal = new bootstrap.Modal(document.getElementById('signaturePreview'));
|
const modal = new bootstrap.Modal(
|
||||||
|
document.getElementById("signaturePreview")
|
||||||
|
);
|
||||||
modal.show();
|
modal.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
function addSignatureFromPreview() {
|
function addSignatureFromPreview() {
|
||||||
if (currentPreviewSrc) {
|
if (currentPreviewSrc) {
|
||||||
DraggableUtils.createDraggableCanvasFromUrl(currentPreviewSrc);
|
DraggableUtils.createDraggableCanvasFromUrl(currentPreviewSrc);
|
||||||
bootstrap.Modal.getInstance(document.getElementById('signaturePreview')).hide();
|
bootstrap.Modal.getInstance(
|
||||||
|
document.getElementById("signaturePreview")
|
||||||
|
).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let originalFileName = '';
|
let originalFileName = "";
|
||||||
document.querySelector('input[name=pdf-upload]').addEventListener('change', async (event) => {
|
document
|
||||||
const fileInput = event.target;
|
.querySelector("input[name=pdf-upload]")
|
||||||
fileInput.addEventListener('file-input-change', async (e) => {
|
.addEventListener("change", async (event) => {
|
||||||
const {allFiles} = e.detail;
|
const fileInput = event.target;
|
||||||
if (allFiles && allFiles.length > 0) {
|
fileInput.addEventListener("file-input-change", async (e) => {
|
||||||
const file = allFiles[0];
|
const { allFiles } = e.detail;
|
||||||
originalFileName = file.name.replace(/\.[^/.]+$/, '');
|
if (allFiles && allFiles.length > 0) {
|
||||||
const pdfData = await file.arrayBuffer();
|
const file = allFiles[0];
|
||||||
pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs';
|
originalFileName = file.name.replace(/\.[^/.]+$/, "");
|
||||||
const pdfDoc = await pdfjsLib.getDocument({data: pdfData}).promise;
|
const pdfData = await file.arrayBuffer();
|
||||||
await DraggableUtils.renderPage(pdfDoc, 0);
|
pdfjsLib.GlobalWorkerOptions.workerSrc =
|
||||||
|
"./pdfjs-legacy/pdf.worker.mjs";
|
||||||
|
const pdfDoc = await pdfjsLib.getDocument({ data: pdfData }).promise;
|
||||||
|
await DraggableUtils.renderPage(pdfDoc, 0);
|
||||||
|
|
||||||
document.querySelectorAll('.show-on-file-selected').forEach((el) => {
|
document.querySelectorAll(".show-on-file-selected").forEach((el) => {
|
||||||
el.style.cssText = '';
|
el.style.cssText = "";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
|
||||||
document.querySelectorAll('.show-on-file-selected').forEach((el) => {
|
|
||||||
el.style.cssText = 'display:none !important';
|
|
||||||
});
|
|
||||||
document.querySelectorAll('.small-file-container-saved img ').forEach((img) => {
|
|
||||||
img.addEventListener('dragstart', (e) => {
|
|
||||||
e.dataTransfer.setData('fileUrl', img.src);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
document.addEventListener('keydown', (e) => {
|
|
||||||
if (e.key === 'Delete') {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
document.querySelectorAll(".show-on-file-selected").forEach((el) => {
|
||||||
|
el.style.cssText = "display:none !important";
|
||||||
|
});
|
||||||
|
document
|
||||||
|
.querySelectorAll(".small-file-container-saved img ")
|
||||||
|
.forEach((img) => {
|
||||||
|
img.addEventListener("dragstart", (e) => {
|
||||||
|
e.dataTransfer.setData("fileUrl", img.src);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
document.addEventListener("keydown", (e) => {
|
||||||
|
if (e.key === "Delete") {
|
||||||
DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted());
|
DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addCustomSelect();
|
||||||
});
|
});
|
||||||
|
|
||||||
const imageUpload = document.querySelector('input[name=image-upload]');
|
function addCustomSelect() {
|
||||||
imageUpload.addEventListener('change', (e) => {
|
let customSelectElementContainer =
|
||||||
|
document.getElementById("signFontSelection");
|
||||||
|
let originalSelectElement =
|
||||||
|
customSelectElementContainer.querySelector("select");
|
||||||
|
|
||||||
|
let optionsCount = originalSelectElement.length;
|
||||||
|
|
||||||
|
let selectedItem = createAndStyleSelectedItem();
|
||||||
|
|
||||||
|
customSelectElementContainer.appendChild(selectedItem);
|
||||||
|
|
||||||
|
let customSelectionsOptionsContainer = createCustomOptionsContainer();
|
||||||
|
createAndAddCustomOptions();
|
||||||
|
customSelectElementContainer.appendChild(customSelectionsOptionsContainer);
|
||||||
|
|
||||||
|
selectedItem.addEventListener("click", function (e) {
|
||||||
|
/* When the select box is clicked, close any other select boxes,
|
||||||
|
and open/close the current select box: */
|
||||||
|
e.stopPropagation();
|
||||||
|
closeAllSelect(this);
|
||||||
|
this.nextSibling.classList.toggle("select-hide");
|
||||||
|
this.classList.toggle("select-arrow-active");
|
||||||
|
});
|
||||||
|
|
||||||
|
function createAndAddCustomOptions() {
|
||||||
|
for (let j = 0; j < optionsCount; j++) {
|
||||||
|
/* For each option in the original select element,
|
||||||
|
create a new DIV that will act as an option item: */
|
||||||
|
let customOptionItem = createAndStyleCustomOption(j);
|
||||||
|
|
||||||
|
customOptionItem.addEventListener("click", onCustomOptionClick);
|
||||||
|
customSelectionsOptionsContainer.appendChild(customOptionItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function createCustomOptionsContainer() {
|
||||||
|
let customSelectionsOptionsContainer = document.createElement("DIV");
|
||||||
|
customSelectionsOptionsContainer.setAttribute(
|
||||||
|
"class",
|
||||||
|
"select-items select-hide"
|
||||||
|
);
|
||||||
|
return customSelectionsOptionsContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createAndStyleSelectedItem() {
|
||||||
|
let selectedItem = document.createElement("DIV");
|
||||||
|
selectedItem.setAttribute("class", "select-selected");
|
||||||
|
selectedItem.innerHTML =
|
||||||
|
originalSelectElement.options[
|
||||||
|
originalSelectElement.selectedIndex
|
||||||
|
].innerHTML;
|
||||||
|
|
||||||
|
selectedItem.style.fontFamily = window.getComputedStyle(
|
||||||
|
originalSelectElement.options[originalSelectElement.selectedIndex]
|
||||||
|
).fontFamily;
|
||||||
|
return selectedItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCustomOptionClick(e) {
|
||||||
|
/* When an item is clicked, update the original select box,
|
||||||
|
and the selected item: */
|
||||||
|
let selectElement =
|
||||||
|
this.parentNode.parentNode.getElementsByTagName("select")[0];
|
||||||
|
let optionsCount = selectElement.length;
|
||||||
|
let currentlySelectedCustomOption = this.parentNode.previousSibling;
|
||||||
|
for (let i = 0; i < optionsCount; i++) {
|
||||||
|
if (selectElement.options[i].innerHTML == this.innerHTML) {
|
||||||
|
selectElement.selectedIndex = i;
|
||||||
|
currentlySelectedCustomOption.innerHTML = this.innerHTML;
|
||||||
|
currentlySelectedCustomOption.style.fontFamily = this.style.fontFamily;
|
||||||
|
|
||||||
|
let previouslySelectedOption =
|
||||||
|
this.parentNode.getElementsByClassName("same-as-selected");
|
||||||
|
|
||||||
|
if (previouslySelectedOption && previouslySelectedOption.length > 0)
|
||||||
|
previouslySelectedOption[0].classList.remove("same-as-selected");
|
||||||
|
|
||||||
|
this.classList.add("same-as-selected");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentlySelectedCustomOption.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
function createAndStyleCustomOption(j) {
|
||||||
|
let customOptionItem = document.createElement("DIV");
|
||||||
|
customOptionItem.innerHTML = originalSelectElement.options[j].innerHTML;
|
||||||
|
customOptionItem.classList.add(originalSelectElement.options[j].className);
|
||||||
|
customOptionItem.style.fontFamily = window.getComputedStyle(
|
||||||
|
originalSelectElement.options[j]
|
||||||
|
).fontFamily;
|
||||||
|
|
||||||
|
if (j == originalSelectElement.selectedIndex)
|
||||||
|
customOptionItem.classList.add("same-as-selected");
|
||||||
|
return customOptionItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeAllSelect(element) {
|
||||||
|
/* A function that will close all select boxes in the document,
|
||||||
|
except the current select box: */
|
||||||
|
let allSelectedOptions = document.getElementsByClassName("select-selected");
|
||||||
|
let allSelectedOptionsCount = allSelectedOptions.length;
|
||||||
|
let indicesOfContainersToHide = [];
|
||||||
|
for (let i = 0; i < allSelectedOptionsCount; i++) {
|
||||||
|
if (element == allSelectedOptions[i]) {
|
||||||
|
indicesOfContainersToHide.push(i);
|
||||||
|
} else {
|
||||||
|
allSelectedOptions[i].classList.remove("select-arrow-active");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hideOptionsContainers(indicesOfContainersToHide);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the user clicks anywhere outside the select box,
|
||||||
|
then close all select boxes: */
|
||||||
|
document.addEventListener("click", closeAllSelect);
|
||||||
|
|
||||||
|
function hideOptionsContainers(containersIndices) {
|
||||||
|
let allOptionsContainers = document.getElementsByClassName("select-items");
|
||||||
|
let allSelectionListsContainerCount = allOptionsContainers.length;
|
||||||
|
for (let i = 0; i < allSelectionListsContainerCount; i++) {
|
||||||
|
if (containersIndices.indexOf(i)) {
|
||||||
|
allOptionsContainers[i].classList.add("select-hide");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const imageUpload = document.querySelector("input[name=image-upload]");
|
||||||
|
imageUpload.addEventListener("change", (e) => {
|
||||||
if (!e.target.files) return;
|
if (!e.target.files) return;
|
||||||
for (const imageFile of e.target.files) {
|
for (const imageFile of e.target.files) {
|
||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
@@ -97,11 +238,11 @@ imageUpload.addEventListener('change', (e) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const signaturePadCanvas = document.getElementById('drawing-pad-canvas');
|
const signaturePadCanvas = document.getElementById("drawing-pad-canvas");
|
||||||
const signaturePad = new SignaturePad(signaturePadCanvas, {
|
const signaturePad = new SignaturePad(signaturePadCanvas, {
|
||||||
minWidth: 1,
|
minWidth: 1,
|
||||||
maxWidth: 2,
|
maxWidth: 2,
|
||||||
penColor: 'black',
|
penColor: "black",
|
||||||
});
|
});
|
||||||
|
|
||||||
function addDraggableFromPad() {
|
function addDraggableFromPad() {
|
||||||
@@ -113,7 +254,7 @@ function addDraggableFromPad() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getCroppedCanvasDataUrl(canvas) {
|
function getCroppedCanvasDataUrl(canvas) {
|
||||||
let originalCtx = canvas.getContext('2d');
|
let originalCtx = canvas.getContext("2d");
|
||||||
let originalWidth = canvas.width;
|
let originalWidth = canvas.width;
|
||||||
let originalHeight = canvas.height;
|
let originalHeight = canvas.height;
|
||||||
let imageData = originalCtx.getImageData(0, 0, originalWidth, originalHeight);
|
let imageData = originalCtx.getImageData(0, 0, originalWidth, originalHeight);
|
||||||
@@ -129,7 +270,8 @@ function getCroppedCanvasDataUrl(canvas) {
|
|||||||
for (y = 0; y < originalHeight; y++) {
|
for (y = 0; y < originalHeight; y++) {
|
||||||
for (x = 0; x < originalWidth; x++) {
|
for (x = 0; x < originalWidth; x++) {
|
||||||
currentPixelColorValueIndex = (y * originalWidth + x) * 4;
|
currentPixelColorValueIndex = (y * originalWidth + x) * 4;
|
||||||
let currentPixelAlphaValue = imageData.data[currentPixelColorValueIndex + 3];
|
let currentPixelAlphaValue =
|
||||||
|
imageData.data[currentPixelColorValueIndex + 3];
|
||||||
if (currentPixelAlphaValue > 0) {
|
if (currentPixelAlphaValue > 0) {
|
||||||
if (minX > x) minX = x;
|
if (minX > x) minX = x;
|
||||||
if (maxX < x) maxX = x;
|
if (maxX < x) maxX = x;
|
||||||
@@ -142,10 +284,15 @@ function getCroppedCanvasDataUrl(canvas) {
|
|||||||
let croppedWidth = maxX - minX;
|
let croppedWidth = maxX - minX;
|
||||||
let croppedHeight = maxY - minY;
|
let croppedHeight = maxY - minY;
|
||||||
if (croppedWidth < 0 || croppedHeight < 0) return null;
|
if (croppedWidth < 0 || croppedHeight < 0) return null;
|
||||||
let cuttedImageData = originalCtx.getImageData(minX, minY, croppedWidth, croppedHeight);
|
let cuttedImageData = originalCtx.getImageData(
|
||||||
|
minX,
|
||||||
|
minY,
|
||||||
|
croppedWidth,
|
||||||
|
croppedHeight
|
||||||
|
);
|
||||||
|
|
||||||
let croppedCanvas = document.createElement('canvas'),
|
let croppedCanvas = document.createElement("canvas"),
|
||||||
croppedCtx = croppedCanvas.getContext('2d');
|
croppedCtx = croppedCanvas.getContext("2d");
|
||||||
|
|
||||||
croppedCanvas.width = croppedWidth;
|
croppedCanvas.width = croppedWidth;
|
||||||
croppedCanvas.height = croppedHeight;
|
croppedCanvas.height = croppedHeight;
|
||||||
@@ -158,9 +305,13 @@ function resizeCanvas() {
|
|||||||
var ratio = Math.max(window.devicePixelRatio || 1, 1);
|
var ratio = Math.max(window.devicePixelRatio || 1, 1);
|
||||||
var additionalFactor = 10;
|
var additionalFactor = 10;
|
||||||
|
|
||||||
signaturePadCanvas.width = signaturePadCanvas.offsetWidth * ratio * additionalFactor;
|
signaturePadCanvas.width =
|
||||||
signaturePadCanvas.height = signaturePadCanvas.offsetHeight * ratio * additionalFactor;
|
signaturePadCanvas.offsetWidth * ratio * additionalFactor;
|
||||||
signaturePadCanvas.getContext('2d').scale(ratio * additionalFactor, ratio * additionalFactor);
|
signaturePadCanvas.height =
|
||||||
|
signaturePadCanvas.offsetHeight * ratio * additionalFactor;
|
||||||
|
signaturePadCanvas
|
||||||
|
.getContext("2d")
|
||||||
|
.scale(ratio * additionalFactor, ratio * additionalFactor);
|
||||||
|
|
||||||
signaturePad.clear();
|
signaturePad.clear();
|
||||||
}
|
}
|
||||||
@@ -174,12 +325,12 @@ new IntersectionObserver((entries, observer) => {
|
|||||||
new ResizeObserver(resizeCanvas).observe(signaturePadCanvas);
|
new ResizeObserver(resizeCanvas).observe(signaturePadCanvas);
|
||||||
|
|
||||||
function addDraggableFromText() {
|
function addDraggableFromText() {
|
||||||
const sigText = document.getElementById('sigText').value;
|
const sigText = document.getElementById("sigText").value;
|
||||||
const font = document.querySelector('select[name=font]').value;
|
const font = document.querySelector("select[name=font]").value;
|
||||||
const fontSize = 100;
|
const fontSize = 100;
|
||||||
|
|
||||||
const canvas = document.createElement('canvas');
|
const canvas = document.createElement("canvas");
|
||||||
const ctx = canvas.getContext('2d');
|
const ctx = canvas.getContext("2d");
|
||||||
ctx.font = `${fontSize}px ${font}`;
|
ctx.font = `${fontSize}px ${font}`;
|
||||||
const textWidth = ctx.measureText(sigText).width;
|
const textWidth = ctx.measureText(sigText).width;
|
||||||
const textHeight = fontSize;
|
const textHeight = fontSize;
|
||||||
@@ -190,7 +341,7 @@ function addDraggableFromText() {
|
|||||||
canvas.height = paragraphs.length * textHeight * 1.35; // for tails
|
canvas.height = paragraphs.length * textHeight * 1.35; // for tails
|
||||||
ctx.font = `${fontSize}px ${font}`;
|
ctx.font = `${fontSize}px ${font}`;
|
||||||
|
|
||||||
ctx.textBaseline = 'top';
|
ctx.textBaseline = "top";
|
||||||
|
|
||||||
let y = 0;
|
let y = 0;
|
||||||
|
|
||||||
@@ -212,8 +363,8 @@ async function goToFirstOrLastPage(page) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById('download-pdf').addEventListener('click', async () => {
|
document.getElementById("download-pdf").addEventListener("click", async () => {
|
||||||
const downloadButton = document.getElementById('download-pdf');
|
const downloadButton = document.getElementById("download-pdf");
|
||||||
const originalContent = downloadButton.innerHTML;
|
const originalContent = downloadButton.innerHTML;
|
||||||
|
|
||||||
downloadButton.disabled = true;
|
downloadButton.disabled = true;
|
||||||
@@ -224,13 +375,13 @@ document.getElementById('download-pdf').addEventListener('click', async () => {
|
|||||||
try {
|
try {
|
||||||
const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument();
|
const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument();
|
||||||
const modifiedPdfBytes = await modifiedPdf.save();
|
const modifiedPdfBytes = await modifiedPdf.save();
|
||||||
const blob = new Blob([modifiedPdfBytes], {type: 'application/pdf'});
|
const blob = new Blob([modifiedPdfBytes], { type: "application/pdf" });
|
||||||
const link = document.createElement('a');
|
const link = document.createElement("a");
|
||||||
link.href = URL.createObjectURL(blob);
|
link.href = URL.createObjectURL(blob);
|
||||||
link.download = originalFileName + '_signed.pdf';
|
link.download = originalFileName + "_signed.pdf";
|
||||||
link.click();
|
link.click();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error downloading PDF:', error);
|
console.error("Error downloading PDF:", error);
|
||||||
} finally {
|
} finally {
|
||||||
downloadButton.disabled = false;
|
downloadButton.disabled = false;
|
||||||
downloadButton.innerHTML = originalContent;
|
downloadButton.innerHTML = originalContent;
|
||||||
|
|||||||
@@ -4919,6 +4919,26 @@ dialog :link {
|
|||||||
left: 3px;
|
left: 3px;
|
||||||
top: var(--toolbar-height);
|
top: var(--toolbar-height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#toolbarViewerRight > div.splitToolbarButton .btn-tooltip {
|
||||||
|
bottom: unset !important;
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#man-shape-redact {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#man-shape-redact .btn-tooltip {
|
||||||
|
bottom: 100%;
|
||||||
|
left: -5px;
|
||||||
|
white-space: normal !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#redactionsPaletteContainer .btn-tooltip {
|
||||||
|
white-space: normal !important;
|
||||||
|
hyphens: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 885px) {
|
@media (max-width: 885px) {
|
||||||
|
|||||||
31
src/main/resources/templates/convert/pdf-to-markdown.html
Normal file
31
src/main/resources/templates/convert/pdf-to-markdown.html
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.language}" th:dir="#{language.direction}" th:data-language="${#locale.toString()}" xmlns:th="https://www.thymeleaf.org">
|
||||||
|
<head>
|
||||||
|
<th:block th:insert="~{fragments/common :: head(title=#{PDFToMarkdown.title}, header=#{PDFToMarkdown.header})}"></th:block>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<th:block th:insert="~{fragments/common :: game}"></th:block>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<th:block th:insert="~{fragments/navbar.html :: navbar}"></th:block>
|
||||||
|
<br><br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-6 bg-card">
|
||||||
|
<div class="tool-header">
|
||||||
|
<span class="material-symbols-rounded tool-header-icon convert">markdown_copy</span>
|
||||||
|
<span class="tool-header-text" th:text="#{PDFToMarkdown.header}"></span>
|
||||||
|
</div>
|
||||||
|
<form method="post" enctype="multipart/form-data" th:action="@{'/api/v1/convert/pdf/markdown'}">
|
||||||
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multipleInputsForSingleRequest=false, accept='.pdf')}"></div>
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{PDFToMarkdown.submit}"></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<th:block th:insert="~{fragments/footer.html :: footer}"></th:block>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_PT"> <img th:src="@{'/images/flags/pt_pt.svg'}" alt="icon" width="20" height="15"> Português (PT)</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="pt_PT"> <img th:src="@{'/images/flags/pt_pt.svg'}" alt="icon" width="20" height="15"> Português (PT)</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ro_RO"> <img th:src="@{'/images/flags/ro.svg'}" alt="icon" width="20" height="15"> Romanian</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ro_RO"> <img th:src="@{'/images/flags/ro.svg'}" alt="icon" width="20" height="15"> Romanian</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sk_SK"> <img th:src="@{'/images/flags/sk.svg'}" alt="icon" width="20" height="15"> Slovensky</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sk_SK"> <img th:src="@{'/images/flags/sk.svg'}" alt="icon" width="20" height="15"> Slovensky</a>
|
||||||
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sl_SI"> <img th:src="@{'/images/flags/si.svg'}" alt="icon" width="20" height="15"> Slovenian</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sv_SE"> <img th:src="@{'/images/flags/se.svg'}" alt="icon" width="20" height="15"> Svenska</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="sv_SE"> <img th:src="@{'/images/flags/se.svg'}" alt="icon" width="20" height="15"> Svenska</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="tr_TR"> <img th:src="@{'/images/flags/tr.svg'}" alt="icon" width="20" height="15"> Türkçe</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="tr_TR"> <img th:src="@{'/images/flags/tr.svg'}" alt="icon" width="20" height="15"> Türkçe</a>
|
||||||
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ru_RU"> <img th:src="@{'/images/flags/ru.svg'}" alt="icon" width="20" height="15"> Русский</a>
|
<a class="dropdown-item lang_dropdown-item" href="" data-bs-language-code="ru_RU"> <img th:src="@{'/images/flags/ru.svg'}" alt="icon" width="20" height="15"> Русский</a>
|
||||||
|
|||||||
@@ -136,6 +136,9 @@
|
|||||||
<div
|
<div
|
||||||
th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-book', 'book', 'home.PDFToBook.title', 'home.PDFToBook.desc', 'PDFToBook.tags', 'convert')}">
|
th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-book', 'book', 'home.PDFToBook.title', 'home.PDFToBook.desc', 'PDFToBook.tags', 'convert')}">
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-markdown', 'markdown_copy', 'home.PDFToMarkdown.title', 'home.PDFToMarkdown.desc', 'PDFToMarkdown.tags', 'convert')}">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Security menu items -->
|
<!-- Security menu items -->
|
||||||
|
|||||||
@@ -192,6 +192,9 @@
|
|||||||
<div
|
<div
|
||||||
th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', toolIcon='book', tags=#{PDFToBook.tags}, toolGroup='convert')}">
|
th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', toolIcon='book', tags=#{PDFToBook.tags}, toolGroup='convert')}">
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
th:replace="~{fragments/card :: card(id='pdf-to-markdown', cardTitle=#{home.PDFToMarkdown.title}, cardText=#{home.PDFToMarkdown.desc}, cardLink='pdf-to-markdown', toolIcon='markdown_copy', tags=#{PDFToMarkdown.tags}, toolGroup='convert')}">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#font-select option[value="[[${font.name}]]"] {
|
#font-select option[value="[[${font.name}]]"] {
|
||||||
font-family: "[[${font.name}]]",
|
font-family: "[[${font.name}]]",
|
||||||
cursive;
|
cursive
|
||||||
|
!important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</th:block>
|
</th:block>
|
||||||
@@ -133,10 +134,12 @@
|
|||||||
<label class="form-check-label" for="sigText" th:text="#{text}"></label>
|
<label class="form-check-label" for="sigText" th:text="#{text}"></label>
|
||||||
<textarea class="form-control" id="sigText" name="sigText" rows="3"></textarea>
|
<textarea class="form-control" id="sigText" name="sigText" rows="3"></textarea>
|
||||||
<label th:text="#{font}"></label>
|
<label th:text="#{font}"></label>
|
||||||
<select class="form-control" name="font" id="font-select">
|
<div id="signFontSelection" class="custom-select form-control">
|
||||||
<option th:each="font : ${fonts}" th:value="${font.name}" th:text="${font.name}"
|
<select class="form-control" name="font" id="font-select">
|
||||||
th:class="${font.name.toLowerCase()+'-font'}"></option>
|
<option th:each="font : ${fonts}" th:value="${font.name}" th:text="${font.name}"
|
||||||
</select>
|
th:class="${font.name.toLowerCase()+'-font'}"></option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<div class="margin-auto-parent">
|
<div class="margin-auto-parent">
|
||||||
<button id="save-text-signature" class="btn btn-outline-success mt-2 margin-center"
|
<button id="save-text-signature" class="btn btn-outline-success mt-2 margin-center"
|
||||||
onclick="addDraggableFromText()" th:text="#{sign.add}"></button>
|
onclick="addDraggableFromText()" th:text="#{sign.add}"></button>
|
||||||
|
|||||||
Reference in New Issue
Block a user