Compare commits
121 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3bffc1da76 | ||
|
|
631d3948bd | ||
|
|
5774a22b64 | ||
|
|
39345bb6bb | ||
|
|
57b483047e | ||
|
|
0fb7633da8 | ||
|
|
dae2f33772 | ||
|
|
31ac877612 | ||
|
|
79dcf99cce | ||
|
|
c28a40ffe8 | ||
|
|
12dccab460 | ||
|
|
0a26e2e6d6 | ||
|
|
74f6cd63f4 | ||
|
|
e8de5739fa | ||
|
|
1b2734d99c | ||
|
|
206cf40cb5 | ||
|
|
78473e96fd | ||
|
|
b7d6ac2cc3 | ||
|
|
4068d9530f | ||
|
|
8a331956c2 | ||
|
|
1d3e018a56 | ||
|
|
3602034938 | ||
|
|
eb4e2d5fca | ||
|
|
b6671939e5 | ||
|
|
41d09e40a1 | ||
|
|
9b0dba7f65 | ||
|
|
ac0dc8b5c7 | ||
|
|
723216c693 | ||
|
|
46f9a5057f | ||
|
|
8a2633ca93 | ||
|
|
a03470d2de | ||
|
|
ef7c98e5cb | ||
|
|
c9cd1331d2 | ||
|
|
ddc14517b8 | ||
|
|
578aecf977 | ||
|
|
b1ca938053 | ||
|
|
298fe349c1 | ||
|
|
f4364a3f33 | ||
|
|
e0f068bc9d | ||
|
|
d7f8219b80 | ||
|
|
87bc0fc975 | ||
|
|
9f21ce96de | ||
|
|
1f29033f17 | ||
|
|
59c7978330 | ||
|
|
8b55ffff96 | ||
|
|
a94808fd19 | ||
|
|
7b2ffcff01 | ||
|
|
28a9daff62 | ||
|
|
435753f50b | ||
|
|
1e6f288d72 | ||
|
|
6d3fece5a6 | ||
|
|
db926c50d8 | ||
|
|
dd9333f42e | ||
|
|
3fa5acc51c | ||
|
|
15fa3df424 | ||
|
|
06c4ec95d5 | ||
|
|
1a6afc1582 | ||
|
|
ad2e1e4a18 | ||
|
|
a1d0dcff41 | ||
|
|
08da0f5c56 | ||
|
|
0b666674f7 | ||
|
|
d3fe467f6f | ||
|
|
732fa0ec40 | ||
|
|
7a7c978df2 | ||
|
|
9d052b310f | ||
|
|
8ff1a63276 | ||
|
|
ffd413ce7f | ||
|
|
f2607bd161 | ||
|
|
ba5f3e12d7 | ||
|
|
ddc48429b1 | ||
|
|
b8b7adbaf9 | ||
|
|
4ae945d08a | ||
|
|
12f5a5e6d0 | ||
|
|
f85a7cb04d | ||
|
|
2f6a885bb0 | ||
|
|
c8ac1f7029 | ||
|
|
d6afb07533 | ||
|
|
a55f9f0ec8 | ||
|
|
06401d875b | ||
|
|
4a29fd4b73 | ||
|
|
02c53b90b3 | ||
|
|
6ca1d82188 | ||
|
|
18c5f5bb2b | ||
|
|
33d21a7a85 | ||
|
|
c48c3e8897 | ||
|
|
67f34016ce | ||
|
|
c1434df259 | ||
|
|
dd0eaf9182 | ||
|
|
cfe50bcd81 | ||
|
|
a75bbff7cf | ||
|
|
2e9d88da0e | ||
|
|
124c7801c5 | ||
|
|
8490613ada | ||
|
|
80553ce95a | ||
|
|
d9206bfd2a | ||
|
|
7aae688db2 | ||
|
|
347b4cfa85 | ||
|
|
f2eebcc396 | ||
|
|
19c26f0552 | ||
|
|
d532db91f9 | ||
|
|
bd0bf404f5 | ||
|
|
e51a9c209a | ||
|
|
6bf172fb25 | ||
|
|
a1e93e0f5d | ||
|
|
6392f6ec12 | ||
|
|
fbdff5c97f | ||
|
|
2ecc4ed080 | ||
|
|
3318cb96b2 | ||
|
|
6be0a1fb05 | ||
|
|
ab1297aee0 | ||
|
|
25a0cb7681 | ||
|
|
116b034878 | ||
|
|
038de2e264 | ||
|
|
7e51cf8c5a | ||
|
|
a1eadba769 | ||
|
|
3145f5fdd0 | ||
|
|
8393dd4731 | ||
|
|
768877d969 | ||
|
|
14a90f5e50 | ||
|
|
99b0150e7a | ||
|
|
db488b39bb |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1,5 +1,6 @@
|
||||
# Ignore all JavaScript files in a directory
|
||||
src/main/resources/static/pdfjs/* linguist-vendored
|
||||
src/main/resources/static/pdfjs/** linguist-vendored
|
||||
src/main/resources/static/css/bootstrap-icons.css linguist-vendored
|
||||
src/main/resources/static/css/bootstrap.min.css linguist-vendored
|
||||
src/main/resources/static/css/fonts/* linguist-vendored
|
||||
|
||||
4
.github/workflows/push-docker.yml
vendored
4
.github/workflows/push-docker.yml
vendored
@@ -140,3 +140,7 @@ jobs:
|
||||
tags: ${{ steps.meta3.outputs.tags }}
|
||||
labels: ${{ steps.meta3.outputs.labels }}
|
||||
platforms: linux/amd64,linux/arm64/v8
|
||||
- name: Build and Push Helm Chart
|
||||
run: |
|
||||
helm package chart/stirling-pdf
|
||||
helm push stirling-pdf-chart-1.0.0.tgz oci://registry-1.docker.io/frooodle
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -119,4 +119,5 @@ watchedFolders/
|
||||
*.db
|
||||
/build
|
||||
|
||||
/.vscode
|
||||
/.vscode
|
||||
/.idea
|
||||
8
.idea/.gitignore
generated
vendored
8
.idea/.gitignore
generated
vendored
@@ -1,8 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
@@ -1,5 +1,5 @@
|
||||
# Use the base image
|
||||
FROM frooodle/stirling-pdf-base:beta4
|
||||
FROM frooodle/stirling-pdf-base:version8
|
||||
|
||||
ARG VERSION_TAG
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
FROM bellsoft/liberica-openjdk-debian:17
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libreoffice-core-nogui \
|
||||
libreoffice-core \
|
||||
libreoffice-common \
|
||||
libreoffice-writer-nogui \
|
||||
libreoffice-calc-nogui \
|
||||
libreoffice-impress-nogui \
|
||||
libreoffice-writer \
|
||||
libreoffice-calc \
|
||||
libreoffice-impress \
|
||||
unoconv && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
@@ -30,12 +30,18 @@ RUN mkdir -p /scripts /usr/share/fonts/opentype/noto /configs /customFiles
|
||||
# chown -R stirlingpdfuser:stirlingpdfgroup /usr/share/fonts/opentype/noto /configs /customFiles
|
||||
|
||||
# Copy necessary files
|
||||
COPY ./scripts/download-security-jar.sh /scripts/download-security-jar.sh
|
||||
COPY ./scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
||||
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
|
||||
COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto/
|
||||
COPY build/libs/*.jar app.jar
|
||||
|
||||
# Set font cache and permissions
|
||||
RUN fc-cache -f -v
|
||||
RUN fc-cache -f -v && \
|
||||
chmod +x /scripts/init-without-ocr.sh && \
|
||||
chmod +x /scripts/download-security-jar.sh
|
||||
|
||||
|
||||
# chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||
|
||||
|
||||
@@ -50,5 +56,5 @@ ENV DOCKER_ENABLE_SECURITY=false
|
||||
|
||||
# Run the application
|
||||
#USER stirlingpdfuser
|
||||
|
||||
ENTRYPOINT ["/scripts/init-without-ocr.sh"]
|
||||
CMD ["java", "-jar", "/app.jar"]
|
||||
|
||||
@@ -2,33 +2,42 @@
|
||||
FROM bellsoft/liberica-openjdk-alpine:17
|
||||
|
||||
# Set Environment Variables
|
||||
ENV PUID=1000 \
|
||||
PGID=1000 \
|
||||
UMASK=022 \
|
||||
DOCKER_ENABLE_SECURITY=false \
|
||||
ENV DOCKER_ENABLE_SECURITY=false \
|
||||
HOME=/home/stirlingpdfuser \
|
||||
VERSION_TAG=$VERSION_TAG
|
||||
VERSION_TAG=$VERSION_TAG
|
||||
# PUID=1000 \
|
||||
# PGID=1000 \
|
||||
# UMASK=022 \
|
||||
|
||||
# Create user and group using Alpine's addgroup and adduser
|
||||
RUN addgroup -g $PGID stirlingpdfgroup && \
|
||||
adduser -u $PUID -G stirlingpdfgroup -s /bin/sh -D stirlingpdfuser && \
|
||||
mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
|
||||
#RUN addgroup -g $PGID stirlingpdfgroup && \
|
||||
# adduser -u $PUID -G stirlingpdfgroup -s /bin/sh -D stirlingpdfuser && \
|
||||
# mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
|
||||
|
||||
# Set up necessary directories and permissions
|
||||
RUN mkdir -p /scripts /configs /customFiles && \
|
||||
chown -R stirlingpdfuser:stirlingpdfgroup /scripts /configs /customFiles
|
||||
#RUN mkdir -p /scripts /configs /customFiles && \
|
||||
# chown -R stirlingpdfuser:stirlingpdfgroup /scripts /configs /customFiles
|
||||
|
||||
RUN mkdir -p /scripts /usr/share/fonts/opentype/noto /configs /customFiles
|
||||
COPY ./scripts/download-security-jar.sh /scripts/download-security-jar.sh
|
||||
COPY ./scripts/init-without-ocr.sh /scripts/init-without-ocr.sh
|
||||
|
||||
COPY build/libs/*.jar app.jar
|
||||
|
||||
# Set font cache and permissions
|
||||
RUN chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||
#RUN chown stirlingpdfuser:stirlingpdfgroup /app.jar
|
||||
|
||||
RUN chmod +x /scripts/init-without-ocr.sh && \
|
||||
chmod +x /scripts/download-security-jar.sh && \
|
||||
apk add --no-cache curl
|
||||
|
||||
# Expose the application port
|
||||
EXPOSE 8080
|
||||
|
||||
# Set environment variables
|
||||
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
|
||||
ENV DOCKER_ENABLE_SECURITY=false
|
||||
|
||||
ENTRYPOINT ["/scripts/init-without-ocr.sh"]
|
||||
|
||||
# Run the application
|
||||
CMD ["java", "-jar", "/app.jar"]
|
||||
|
||||
@@ -1,37 +1,50 @@
|
||||
# Main stage
|
||||
FROM bellsoft/liberica-openjdk-debian:17 AS base
|
||||
FROM ubuntu:latest AS base
|
||||
|
||||
|
||||
|
||||
# JDK for app
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libreoffice-core-nogui \
|
||||
openjdk-17-jre
|
||||
|
||||
# Doc conversion
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
libreoffice-core \
|
||||
libreoffice-common \
|
||||
libreoffice-writer-nogui \
|
||||
libreoffice-calc-nogui \
|
||||
libreoffice-impress-nogui \
|
||||
python3-uno \
|
||||
libreoffice-writer \
|
||||
libreoffice-calc \
|
||||
libreoffice-impress \
|
||||
python3-uno \
|
||||
curl \
|
||||
unoconv
|
||||
|
||||
|
||||
# OCR MY PDF (unpaper for descew and other advanced featues)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common gnupg2 && \
|
||||
add-apt-repository ppa:alex-p/tesseract-ocr5 && apt install -y --no-install-recommends tesseract-ocr && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ghostscript \
|
||||
python3-pip \
|
||||
unoconv \
|
||||
pngquant \
|
||||
unpaper \
|
||||
ocrmypdf && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
ocrmypdf \
|
||||
unpaper && \
|
||||
pip install --upgrade pip && \
|
||||
pip install --no-cache-dir --upgrade ocrmypdf && \
|
||||
pip install --no-cache-dir --upgrade pillow==10.0.1 reportlab==3.6.13 wheel==0.38.1 setuptools==65.5.1 pyjwt==2.4.0 cryptography==39.0.1
|
||||
|
||||
|
||||
#CV and HTML
|
||||
RUN pip install --no-cache-dir opencv-python-headless WeasyPrint
|
||||
|
||||
|
||||
# cleanup and etc
|
||||
RUN rm -rf /var/lib/apt/lists/* && \
|
||||
mkdir /usr/share/tesseract-ocr-original && \
|
||||
cp -r /usr/share/tesseract-ocr/* /usr/share/tesseract-ocr-original && \
|
||||
rm -rf /usr/share/tesseract-ocr
|
||||
|
||||
# Python packages stage
|
||||
FROM base AS python-packages
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
libffi-dev \
|
||||
libssl-dev \
|
||||
zlib1g-dev \
|
||||
libjpeg-dev && \
|
||||
pip install --upgrade pip && \
|
||||
pip install --no-cache-dir \
|
||||
opencv-python-headless WeasyPrint && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Final stage: Copy necessary files from the previous stage
|
||||
FROM base
|
||||
COPY --from=python-packages /usr/local /usr/local
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
|
||||
This document provides instructions on how to add additional language packs for the OCR tab in Stirling-PDF, both inside and outside of Docker.
|
||||
|
||||
## My OCR used to work and now doesnt!
|
||||
Please update your tesseract docker volume path version from 4.00 to 5
|
||||
|
||||
## How does the OCR Work
|
||||
Stirling-PDF uses [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF) which in turn uses tesseract for its text recognition.
|
||||
All credit goes to them for this awesome work!
|
||||
@@ -18,9 +21,9 @@ Depending on your requirements, you can choose the appropriate language pack for
|
||||
### Installing Language Packs
|
||||
|
||||
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need.
|
||||
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tesseract-ocr/4.00/tessdata` (Debian) or `/usr/share/tesseract/tessdata` (Fedora)
|
||||
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tesseract-ocr/5/tessdata` (Debian) or `/usr/share/tesseract/tessdata` (Fedora)
|
||||
|
||||
# DO NOT REMOVE EXISTING ENG.TRAINEDDATA, ITS REQUIRED.
|
||||
# DO NOT REMOVE EXISTING ENG.TRAINEDDATA, IT'S REQUIRED.
|
||||
|
||||
#### Docker
|
||||
|
||||
@@ -34,14 +37,14 @@ services:
|
||||
your_service_name:
|
||||
image: your_docker_image_name
|
||||
volumes:
|
||||
- /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata
|
||||
- /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata
|
||||
```
|
||||
|
||||
|
||||
#### Docker run
|
||||
Add the following to your existing docker run command
|
||||
```bash
|
||||
-v /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata
|
||||
-v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata
|
||||
```
|
||||
|
||||
#### Non-Docker
|
||||
|
||||
20
Jenkinsfile
vendored
20
Jenkinsfile
vendored
@@ -22,12 +22,24 @@ pipeline {
|
||||
def appVersion = sh(returnStdout: true, script: './gradlew printVersion -q').trim()
|
||||
def image = "frooodle/s-pdf:$appVersion"
|
||||
withCredentials([string(credentialsId: 'docker_hub_access_token', variable: 'DOCKER_HUB_ACCESS_TOKEN')]) {
|
||||
sh "docker login --username frooodle --password $DOCKER_HUB_ACCESS_TOKEN"
|
||||
sh "docker login --username frooodle --password $DOCKER_HUB_ACCESS_TOKEN"
|
||||
sh "docker push $image"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Helm Push') {
|
||||
steps {
|
||||
script {
|
||||
//TODO: Read chartVersion from Chart.yaml
|
||||
def chartVersion = '1.0.0'
|
||||
withCredentials([string(credentialsId: 'docker_hub_access_token', variable: 'DOCKER_HUB_ACCESS_TOKEN')]) {
|
||||
sh "docker login --username frooodle --password $DOCKER_HUB_ACCESS_TOKEN"
|
||||
sh "helm package chart/stirling-pdf"
|
||||
sh "helm push stirling-pdf-chart-1.0.0.tgz oci://registry-1.docker.io/frooodle"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
To run the application without Docker, you will need to manually install all dependencies and build the necessary components.
|
||||
To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components.
|
||||
|
||||
Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install.
|
||||
|
||||
@@ -8,6 +8,8 @@ The following guide assumes you have a basic understanding of using a command li
|
||||
It should work on most Linux distributions and MacOS. For Windows, you might need to use Windows Subsystem for Linux (WSL) for certain steps.
|
||||
The amount of dependencies is to actually reduce overall size, ie installing LibreOffice sub components rather than full LibreOffice package.
|
||||
|
||||
You could theoretically use a Distrobox/Toolbox, if your Distribution has old or not all Packages. But you might just as well use the Docker Container then.
|
||||
|
||||
### Step 1: Prerequisites
|
||||
|
||||
Install the following software, if not already installed:
|
||||
@@ -137,7 +139,7 @@ Easiest is to use the langpacks provided by your repositories. Skip the other st
|
||||
Manual:
|
||||
|
||||
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need.
|
||||
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tesseract-ocr/4.00/tessdata`
|
||||
2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tesseract-ocr/5/tessdata`
|
||||
3.
|
||||
Please view [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html) for more info.
|
||||
**IMPORTANT:** DO NOT REMOVE EXISTING `eng.traineddata`, IT'S REQUIRED.
|
||||
|
||||
19
README.md
19
README.md
@@ -32,6 +32,7 @@ Feel free to request any features or bug fixes either in github issues or our [D
|
||||
## **PDF Features**
|
||||
|
||||
### **Page Operations**
|
||||
- View and modify PDFs - View multi page PDFs with custom viewing sorting and searching. Plus on page edit features like annotate, draw and adding text and images. (Using PDF.js with Joxit and Liberation.Liberation fonts)
|
||||
- Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
|
||||
- Merge multiple PDFs together into a single resultant file.
|
||||
- Split PDFs into multiple files at specified page numbers or extract all pages as individual files.
|
||||
@@ -80,7 +81,7 @@ Feel free to request any features or bug fixes either in github issues or our [D
|
||||
- Get all information on a PDF to view or export as JSON.
|
||||
|
||||
|
||||
For a overview of the tasks and the technology each uses please view [groups.md](https://github.com/Frooodle/Stirling-PDF/blob/main/Groups.md)
|
||||
For a overview of the tasks and the technology each uses please view [Endpoint-groups.md](https://github.com/Frooodle/Stirling-PDF/blob/main/Endpoint-groups.md)
|
||||
Hosted instance/demo of the app can be seen [here](https://pdf.adminforge.de/) hosted by the team at adminforge.de
|
||||
|
||||
## Technologies used
|
||||
@@ -98,7 +99,7 @@ Hosted instance/demo of the app can be seen [here](https://pdf.adminforge.de/) h
|
||||
### Locally
|
||||
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/LocalRunGuide.md
|
||||
|
||||
### Docker
|
||||
### Docker / Podman
|
||||
https://hub.docker.com/r/frooodle/s-pdf
|
||||
|
||||
Stirling PDF has 3 different versions, a Full version, Lite, and ultra-Lite. Depending on the types of features you use you may want a smaller image to save on space.
|
||||
@@ -112,8 +113,9 @@ Docker Run
|
||||
```
|
||||
docker run -d \
|
||||
-p 8080:8080 \
|
||||
-v /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata \
|
||||
-v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata \
|
||||
-v /location/of/extraConfigs:/configs \
|
||||
-v /location/of/logs:/logs \
|
||||
-e DOCKER_ENABLE_SECURITY=false \
|
||||
--name stirling-pdf \
|
||||
frooodle/s-pdf:latest
|
||||
@@ -132,19 +134,21 @@ services:
|
||||
ports:
|
||||
- '8080:8080'
|
||||
volumes:
|
||||
- /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata #Required for extra OCR languages
|
||||
- /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata #Required for extra OCR languages
|
||||
- /location/of/extraConfigs:/configs
|
||||
# - /location/of/customFiles:/customFiles/
|
||||
# - /location/of/logs:/logs/
|
||||
environment:
|
||||
- DOCKER_ENABLE_SECURITY=false
|
||||
```
|
||||
|
||||
Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".
|
||||
|
||||
## Enable OCR/Compression feature
|
||||
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md
|
||||
|
||||
## Want to add your own language?
|
||||
Stirling PDF currently supports 18!
|
||||
Stirling PDF currently supports 20!
|
||||
- English (English) (en_GB)
|
||||
- English (US) (en_US)
|
||||
- Arabic (العربية) (ar_AR)
|
||||
@@ -163,6 +167,8 @@ Stirling PDF currently supports 18!
|
||||
- Basque (Euskara) (eu_ES)
|
||||
- Japanese (日本語) (ja_JP)
|
||||
- Dutch (Nederlands) (nl_NL)
|
||||
- Greek (el_GR)
|
||||
- Turkish (Türkçe) (tr_TR)
|
||||
|
||||
If you want to add your own language to Stirling-PDF please refer
|
||||
https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md
|
||||
@@ -217,7 +223,7 @@ metrics:
|
||||
enabled: true # 'true' to enable Info APIs endpoints (view http://localhost:8080/swagger-ui/index.html#/API to learn more), 'false' to disable
|
||||
```
|
||||
### Extra notes
|
||||
- Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Frooodle/Stirling-PDF/blob/main/groups.md)
|
||||
- Endpoints. Currently, the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma separate lists of endpoints and groups to disable as example ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages would disable both image-to-pdf and remove pages, GROUPS_TO_REMOVE=LibreOffice Would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Frooodle/Stirling-PDF/blob/main/Endpoint-groups.md)
|
||||
- customStaticFilePath. Customise static files such as the app logo by placing files in the /customFiles/static/ directory. An example of customising app logo is placing a /customFiles/static/favicon.svg to override current SVG. This can be used to change any images/icons/css/fonts/js etc in Stirling-PDF
|
||||
|
||||
### Environment only parameters
|
||||
@@ -257,7 +263,6 @@ For API usage you must provide a header with 'X-API-Key' and the associated API
|
||||
- Folder support with auto scanning to perform operations on
|
||||
- Redact text (Via UI not just automated way)
|
||||
- Add Forms
|
||||
- Annotations
|
||||
- Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing
|
||||
- Fill forms mannual and automatic
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ add-image | ✔️ | ✔️ | ✔️
|
||||
add-watermark | ✔️ | ✔️ | ✔️
|
||||
adjust-contrast | ✔️ | ✔️ | ✔️
|
||||
auto-split-pdf | ✔️ | ✔️ | ✔️
|
||||
auto-redact | ✔️ | ✔️ | ✔️
|
||||
auto-rename | ✔️ | ✔️ | ✔️
|
||||
cert-sign | ✔️ | ✔️ | ✔️
|
||||
crop | ✔️ | ✔️ | ✔️
|
||||
@@ -33,7 +34,9 @@ img-to-pdf | ✔️ | ✔️ | ✔️
|
||||
markdown-to-pdf | ✔️ | ✔️ | ✔️
|
||||
merge-pdfs | ✔️ | ✔️ | ✔️
|
||||
multi-page-layout | ✔️ | ✔️ | ✔️
|
||||
overlay-pdf | ✔️ | ✔️ | ✔️
|
||||
pdf-organizer | ✔️ | ✔️ | ✔️
|
||||
pdf-to-csv | ✔️ | ✔️ | ✔️
|
||||
pdf-to-img | ✔️ | ✔️ | ✔️
|
||||
pdf-to-single-page | ✔️ | ✔️ | ✔️
|
||||
remove-pages | ✔️ | ✔️ | ✔️
|
||||
@@ -43,6 +46,8 @@ sanitize-pdf | ✔️ | ✔️ | ✔️
|
||||
scale-pages | ✔️ | ✔️ | ✔️
|
||||
sign | ✔️ | ✔️ | ✔️
|
||||
show-javascript | ✔️ | ✔️ | ✔️
|
||||
split-by-size-or-count | ✔️ | ✔️ | ✔️
|
||||
split-pdf-by-sections | ✔️ | ✔️ | ✔️
|
||||
split-pdfs | ✔️ | ✔️ | ✔️
|
||||
file-to-pdf | | ✔️ | ✔️
|
||||
pdf-to-html | | ✔️ | ✔️
|
||||
|
||||
83
build.gradle
83
build.gradle
@@ -2,13 +2,13 @@ plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '3.1.2'
|
||||
id 'io.spring.dependency-management' version '1.1.3'
|
||||
id 'org.springdoc.openapi-gradle-plugin' version '1.6.0'
|
||||
id 'org.springdoc.openapi-gradle-plugin' version '1.8.0'
|
||||
id "io.swagger.swaggerhub" version "1.2.0"
|
||||
id 'edu.sc.seis.launch4j' version '3.0.5'
|
||||
}
|
||||
|
||||
group = 'stirling.software'
|
||||
version = '0.14.5'
|
||||
version = '0.17.2'
|
||||
sourceCompatibility = '17'
|
||||
|
||||
repositories {
|
||||
@@ -32,7 +32,6 @@ sourceSets {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
openApi {
|
||||
apiDocsUrl = "http://localhost:8080/v1/api-docs"
|
||||
outputDir = file("$projectDir")
|
||||
@@ -46,15 +45,15 @@ launch4j {
|
||||
outfile="Stirling-PDF.exe"
|
||||
headerType="console"
|
||||
jarTask = tasks.bootJar
|
||||
|
||||
|
||||
errTitle="Encountered error, Do you have Java 17?"
|
||||
downloadUrl="https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe"
|
||||
downloadUrl="https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe"
|
||||
variables=["BROWSER_OPEN=true"]
|
||||
jreMinVersion="17"
|
||||
|
||||
|
||||
mutexName="Stirling-PDF"
|
||||
windowTitle="Stirling-PDF"
|
||||
|
||||
|
||||
messagesStartupError="An error occurred while starting Stirling-PDF"
|
||||
//messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17."
|
||||
messagesJreVersionError="You are running the wrong version of Java, Please download Java 17."
|
||||
@@ -63,46 +62,64 @@ launch4j {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'org.yaml:snakeyaml:2.1'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2'
|
||||
//security updates
|
||||
implementation 'ch.qos.logback:logback-classic:1.4.14'
|
||||
implementation 'ch.qos.logback:logback-core:1.4.14'
|
||||
implementation 'org.springframework:spring-webmvc:6.0.15'
|
||||
|
||||
if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-security:3.1.2'
|
||||
implementation 'org.yaml:snakeyaml:2.1'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.6'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.6'
|
||||
|
||||
if (System.getenv('DOCKER_ENABLE_SECURITY') != 'false') {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-security:3.1.6'
|
||||
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
|
||||
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
|
||||
implementation "com.h2database:h2"
|
||||
implementation "com.h2database:h2"
|
||||
}
|
||||
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.1.4'
|
||||
|
||||
|
||||
|
||||
// https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio
|
||||
implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
|
||||
implementation 'commons-io:commons-io:2.13.0'
|
||||
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.1.6'
|
||||
|
||||
|
||||
|
||||
// https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio
|
||||
implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
|
||||
implementation 'com.github.jai-imageio:jai-imageio-core:1.4.0'
|
||||
implementation 'com.github.jai-imageio:jai-imageio-jpeg2000:1.3.0'
|
||||
implementation 'commons-io:commons-io:2.15.1'
|
||||
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
|
||||
|
||||
//general PDF
|
||||
|
||||
// https://mvnrepository.com/artifact/com.opencsv/opencsv
|
||||
implementation ('com.opencsv:opencsv:5.7.1') {
|
||||
exclude group: 'commons-logging', module: 'commons-logging'
|
||||
}
|
||||
|
||||
//general PDF
|
||||
implementation 'org.apache.pdfbox:pdfbox:2.0.29'
|
||||
implementation 'org.apache.pdfbox:xmpbox:2.0.29'
|
||||
implementation 'org.bouncycastle:bcprov-jdk15on:1.70'
|
||||
implementation 'org.bouncycastle:bcpkix-jdk15on:1.70'
|
||||
implementation ('org.apache.pdfbox:pdfbox:2.0.29'){
|
||||
exclude group: 'commons-logging', module: 'commons-logging'
|
||||
}
|
||||
|
||||
implementation ('org.apache.pdfbox:xmpbox:2.0.29'){
|
||||
exclude group: 'commons-logging', module: 'commons-logging'
|
||||
}
|
||||
|
||||
implementation 'org.bouncycastle:bcprov-jdk18on:1.77'
|
||||
implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
||||
implementation 'io.micrometer:micrometer-core'
|
||||
implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
|
||||
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
||||
implementation 'org.commonmark:commonmark:0.21.0'
|
||||
implementation 'org.commonmark:commonmark:0.21.0'
|
||||
// https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
|
||||
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
|
||||
|
||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||
compileOnly 'org.projectlombok:lombok:1.18.28'
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.28'
|
||||
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0'
|
||||
|
||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||
compileOnly 'org.projectlombok:lombok:1.18.30'
|
||||
annotationProcessor 'org.projectlombok:lombok:1.18.28'
|
||||
}
|
||||
|
||||
|
||||
task writeVersion {
|
||||
def propsFile = file('src/main/resources/version.properties')
|
||||
def props = new Properties()
|
||||
@@ -128,7 +145,7 @@ jar {
|
||||
attributes 'Implementation-Title': 'Stirling-PDF',
|
||||
'Implementation-Version': project.version
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
tasks.named('test') {
|
||||
|
||||
@@ -9,7 +9,7 @@ keywords:
|
||||
maintainers:
|
||||
- name: Frooodle
|
||||
url: https://github.com/Frooodle/Stirling-PDF
|
||||
name: stirling-pdf
|
||||
name: stirling-pdf-chart
|
||||
sources:
|
||||
- https://github.com/Frooodle/Stirling-PDF
|
||||
version: 1.0.0
|
||||
|
||||
19
scripts/download-security-jar.sh
Normal file
19
scripts/download-security-jar.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
echo "Running Stirling PDF with DOCKER_ENABLE_SECURITY=${DOCKER_ENABLE_SECURITY} and VERSION_TAG=${VERSION_TAG}"
|
||||
# Check for DOCKER_ENABLE_SECURITY and download the appropriate JAR if required
|
||||
if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then
|
||||
if [ ! -f app-security.jar ]; then
|
||||
echo "Trying to download from: https://github.com/Frooodle/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||
curl -L -o app-security.jar https://github.com/Frooodle/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar
|
||||
|
||||
# If the first download attempt failed, try with the 'v' prefix
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Trying to download from: https://github.com/Frooodle/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||
curl -L -o app-security.jar https://github.com/Frooodle/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar
|
||||
fi
|
||||
|
||||
if [ $? -eq 0 ]; then # checks if curl was successful
|
||||
rm -f app.jar
|
||||
ln -s app-security.jar app.jar
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
6
scripts/init-without-ocr.sh
Normal file
6
scripts/init-without-ocr.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
/scripts/download-security-jar.sh
|
||||
|
||||
# Run the main command
|
||||
exec "$@"
|
||||
@@ -3,7 +3,11 @@
|
||||
# Copy the original tesseract-ocr files to the volume directory without overwriting existing files
|
||||
echo "Copying original files without overwriting existing files"
|
||||
mkdir -p /usr/share/tesseract-ocr
|
||||
cp -rn /usr/share/tesseract-ocr-original/* /usr/share/tesseract-ocr
|
||||
cp -rn /usr/share/tesseract-ocr-original/* /usr/share/tesseract-ocr
|
||||
|
||||
if [ -d /usr/share/tesseract-ocr/4.00/tessdata ]; then
|
||||
cp -r /usr/share/tesseract-ocr/4.00/tessdata/* /usr/share/tesseract-ocr/5/tessdata/ || true;
|
||||
fi
|
||||
|
||||
# Check if TESSERACT_LANGS environment variable is set and is not empty
|
||||
if [[ -n "$TESSERACT_LANGS" ]]; then
|
||||
@@ -16,25 +20,7 @@ if [[ -n "$TESSERACT_LANGS" ]]; then
|
||||
done
|
||||
fi
|
||||
|
||||
# Check for DOCKER_ENABLE_SECURITY and download the appropriate JAR if required
|
||||
if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then
|
||||
if [ ! -f app-security.jar ]; then
|
||||
echo "Trying to download from: https://github.com/Frooodle/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||
curl -L -o app-security.jar https://github.com/Frooodle/Stirling-PDF/releases/download/v$VERSION_TAG/Stirling-PDF-with-login.jar
|
||||
|
||||
# If the first download attempt failed, try with the 'v' prefix
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Trying to download from: https://github.com/Frooodle/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar"
|
||||
curl -L -o app-security.jar https://github.com/Frooodle/Stirling-PDF/releases/download/$VERSION_TAG/Stirling-PDF-with-login.jar
|
||||
fi
|
||||
|
||||
if [ $? -eq 0 ]; then # checks if curl was successful
|
||||
rm -f app.jar
|
||||
ln -s app-security.jar app.jar
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
/scripts/download-security-jar.sh
|
||||
|
||||
# Run the main command
|
||||
exec "$@"
|
||||
@@ -1,6 +1,5 @@
|
||||
package stirling.software.SPDF.config;
|
||||
|
||||
import org.springframework.beans.PropertyEditorRegistrar;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -81,6 +81,10 @@ public class EndpointConfiguration {
|
||||
addEndpointToGroup("PageOps", "auto-split-pdf");
|
||||
addEndpointToGroup("PageOps", "extract-page");
|
||||
addEndpointToGroup("PageOps", "pdf-to-single-page");
|
||||
addEndpointToGroup("PageOps", "split-by-size-or-count");
|
||||
addEndpointToGroup("PageOps", "overlay-pdf");
|
||||
addEndpointToGroup("PageOps", "split-pdf-by-sections");
|
||||
|
||||
|
||||
// Adding endpoints to "Convert" group
|
||||
addEndpointToGroup("Convert", "pdf-to-img");
|
||||
@@ -96,6 +100,8 @@ public class EndpointConfiguration {
|
||||
addEndpointToGroup("Convert", "html-to-pdf");
|
||||
addEndpointToGroup("Convert", "url-to-pdf");
|
||||
addEndpointToGroup("Convert", "markdown-to-pdf");
|
||||
addEndpointToGroup("Convert", "pdf-to-csv");
|
||||
|
||||
|
||||
// Adding endpoints to "Security" group
|
||||
addEndpointToGroup("Security", "add-password");
|
||||
@@ -104,6 +110,7 @@ public class EndpointConfiguration {
|
||||
addEndpointToGroup("Security", "add-watermark");
|
||||
addEndpointToGroup("Security", "cert-sign");
|
||||
addEndpointToGroup("Security", "sanitize-pdf");
|
||||
addEndpointToGroup("Security", "auto-redact");
|
||||
|
||||
|
||||
// Adding endpoints to "Other" group
|
||||
@@ -197,6 +204,11 @@ public class EndpointConfiguration {
|
||||
addEndpointToGroup("Java", "pdf-to-single-page");
|
||||
addEndpointToGroup("Java", "markdown-to-pdf");
|
||||
addEndpointToGroup("Java", "show-javascript");
|
||||
addEndpointToGroup("Java", "auto-redact");
|
||||
addEndpointToGroup("Java", "pdf-to-csv");
|
||||
addEndpointToGroup("Java", "split-by-size-or-count");
|
||||
addEndpointToGroup("Java", "overlay-pdf");
|
||||
addEndpointToGroup("Java", "split-pdf-by-sections");
|
||||
|
||||
//Javascript
|
||||
addEndpointToGroup("Javascript", "pdf-organizer");
|
||||
|
||||
@@ -16,6 +16,8 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
|
||||
@Override
|
||||
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
|
||||
throws IOException, ServletException {
|
||||
String ip = request.getRemoteAddr();
|
||||
logger.error("Failed login attempt from IP: " + ip);
|
||||
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
|
||||
setDefaultFailureUrl("/login?error=badcredentials");
|
||||
} else if (exception.getClass().isAssignableFrom(LockedException.class)) {
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package stirling.software.SPDF.controller.api;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.pdfbox.multipdf.Overlay;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.springframework.http.MediaType;
|
||||
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.general.OverlayPdfsRequest;
|
||||
import stirling.software.SPDF.utils.GeneralUtils;
|
||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/general")
|
||||
@Tag(name = "General", description = "General APIs")
|
||||
public class PdfOverlayController {
|
||||
|
||||
@PostMapping(value = "/overlay-pdfs", consumes = "multipart/form-data")
|
||||
@Operation(summary = "Overlay PDF files in various modes", description = "Overlay PDF files onto a base PDF with different modes: Sequential, Interleaved, or Fixed Repeat. Input:PDF Output:PDF Type:MIMO")
|
||||
public ResponseEntity<byte[]> overlayPdfs(@ModelAttribute OverlayPdfsRequest request) throws IOException {
|
||||
MultipartFile baseFile = request.getFileInput();
|
||||
int overlayPos = request.getOverlayPosition();
|
||||
|
||||
MultipartFile[] overlayFiles = request.getOverlayFiles();
|
||||
File[] overlayPdfFiles = new File[overlayFiles.length];
|
||||
try{
|
||||
for (int i = 0; i < overlayFiles.length; i++) {
|
||||
overlayPdfFiles[i] = GeneralUtils.multipartToFile(overlayFiles[i]);
|
||||
}
|
||||
|
||||
String mode = request.getOverlayMode(); // "SequentialOverlay", "InterleavedOverlay", "FixedRepeatOverlay"
|
||||
int[] counts = request.getCounts(); // Used for FixedRepeatOverlay mode
|
||||
|
||||
try (PDDocument basePdf = PDDocument.load(baseFile.getInputStream());
|
||||
Overlay overlay = new Overlay()) {
|
||||
Map<Integer, String> overlayGuide = prepareOverlayGuide(basePdf.getNumberOfPages(), overlayPdfFiles, mode, counts);
|
||||
|
||||
overlay.setInputPDF(basePdf);
|
||||
if(overlayPos == 0) {
|
||||
overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
|
||||
} else {
|
||||
overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
|
||||
}
|
||||
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
overlay.overlay(overlayGuide).save(outputStream);
|
||||
byte[] data = outputStream.toByteArray();
|
||||
String outputFilename = baseFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_overlayed.pdf"; // Remove file extension and append .pdf
|
||||
|
||||
return WebResponseUtils.bytesToWebResponse(data, outputFilename, MediaType.APPLICATION_PDF);
|
||||
}
|
||||
} finally {
|
||||
for (File overlayPdfFile : overlayPdfFiles) {
|
||||
if (overlayPdfFile != null) overlayPdfFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Map<Integer, String> prepareOverlayGuide(int basePageCount, File[] overlayFiles, String mode, int[] counts) throws IOException {
|
||||
Map<Integer, String> overlayGuide = new HashMap<>();
|
||||
switch (mode) {
|
||||
case "SequentialOverlay":
|
||||
sequentialOverlay(overlayGuide, overlayFiles, basePageCount);
|
||||
break;
|
||||
case "InterleavedOverlay":
|
||||
interleavedOverlay(overlayGuide, overlayFiles, basePageCount);
|
||||
break;
|
||||
case "FixedRepeatOverlay":
|
||||
fixedRepeatOverlay(overlayGuide, overlayFiles, counts, basePageCount);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Invalid overlay mode");
|
||||
}
|
||||
return overlayGuide;
|
||||
}
|
||||
|
||||
private void sequentialOverlay(Map<Integer, String> overlayGuide, File[] overlayFiles, int basePageCount) throws IOException {
|
||||
if (overlayFiles.length != 1 || basePageCount != PDDocument.load(overlayFiles[0]).getNumberOfPages()) {
|
||||
throw new IllegalArgumentException("Overlay file count and base page count must match for sequential overlay.");
|
||||
}
|
||||
|
||||
File overlayFile = overlayFiles[0];
|
||||
try (PDDocument overlayPdf = PDDocument.load(overlayFile)) {
|
||||
for (int i = 1; i <= overlayPdf.getNumberOfPages(); i++) {
|
||||
if (i > basePageCount) break;
|
||||
overlayGuide.put(i, overlayFile.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void interleavedOverlay(Map<Integer, String> overlayGuide, File[] overlayFiles, int basePageCount) throws IOException {
|
||||
for (int i = 0; i < basePageCount; i++) {
|
||||
File overlayFile = overlayFiles[i % overlayFiles.length];
|
||||
overlayGuide.put(i + 1, overlayFile.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
private void fixedRepeatOverlay(Map<Integer, String> overlayGuide, File[] overlayFiles, int[] counts, int basePageCount) throws IOException {
|
||||
if (overlayFiles.length != counts.length) {
|
||||
throw new IllegalArgumentException("Counts array length must match the number of overlay files");
|
||||
}
|
||||
int currentPage = 1;
|
||||
for (int i = 0; i < overlayFiles.length; i++) {
|
||||
File overlayFile = overlayFiles[i];
|
||||
int repeatCount = counts[i];
|
||||
for (int j = 0; j < repeatCount; j++) {
|
||||
if (currentPage > basePageCount) break;
|
||||
overlayGuide.put(currentPage++, overlayFile.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Additional classes like OverlayPdfsRequest, WebResponseUtils, etc. are assumed to be defined elsewhere.
|
||||
@@ -12,13 +12,10 @@ 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.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
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.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import stirling.software.SPDF.model.SortTypes;
|
||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||
|
||||
@@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import stirling.software.SPDF.model.api.PDFWithPageNums;
|
||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||
import org.apache.pdfbox.multipdf.Splitter;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/general")
|
||||
@Tag(name = "General", description = "General APIs")
|
||||
@@ -50,24 +50,26 @@ public class SplitPDFController {
|
||||
pageNumbers.add(document.getNumberOfPages()- 1);
|
||||
logger.info("Splitting PDF into pages: {}", pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
|
||||
Splitter splitter = new Splitter();
|
||||
// split the document
|
||||
List<ByteArrayOutputStream> splitDocumentsBoas = new ArrayList<>();
|
||||
|
||||
int previousPageNumber = 1; // PDFBox uses 1-based indexing for pages.
|
||||
int previousPageNumber = 0;
|
||||
for (int splitPoint : pageNumbers) {
|
||||
splitPoint = splitPoint + 1;
|
||||
splitter.setStartPage(previousPageNumber);
|
||||
splitter.setEndPage(splitPoint);
|
||||
List<PDDocument> splitDocuments = splitter.split(document);
|
||||
try (PDDocument splitDocument = new PDDocument()) {
|
||||
for (int i = previousPageNumber; i <= splitPoint; i++) {
|
||||
PDPage page = document.getPage(i);
|
||||
splitDocument.addPage(page);
|
||||
logger.debug("Adding page {} to split document", i);
|
||||
}
|
||||
previousPageNumber = splitPoint + 1;
|
||||
|
||||
for (PDDocument splitDoc : splitDocuments) {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
splitDoc.save(baos);
|
||||
splitDocumentsBoas.add(baos);
|
||||
splitDoc.close();
|
||||
}
|
||||
splitDocument.save(baos);
|
||||
|
||||
previousPageNumber = splitPoint + 1;
|
||||
splitDocumentsBoas.add(baos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Failed splitting documents and saving them", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,4 +108,4 @@ public class SplitPDFController {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
package stirling.software.SPDF.controller.api;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import org.apache.pdfbox.multipdf.LayerUtility;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||
import org.apache.pdfbox.util.Matrix;
|
||||
import org.springframework.http.MediaType;
|
||||
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.SplitPdfBySectionsRequest;
|
||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/general")
|
||||
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
||||
public class SplitPdfBySectionsController {
|
||||
|
||||
|
||||
@PostMapping(value = "/split-pdf-by-sections", consumes = "multipart/form-data")
|
||||
@Operation(summary = "Split PDF pages into smaller sections", description = "Split each page of a PDF into smaller sections based on the user's choice (halves, thirds, quarters, etc.), both vertically and horizontally. Input: PDF, Split Parameters. Output: ZIP containing split documents.")
|
||||
public ResponseEntity<byte[]> splitPdf(@ModelAttribute SplitPdfBySectionsRequest request) throws Exception {
|
||||
List<ByteArrayOutputStream> splitDocumentsBoas = new ArrayList<>();
|
||||
|
||||
MultipartFile file = request.getFileInput();
|
||||
PDDocument sourceDocument = PDDocument.load(file.getInputStream());
|
||||
|
||||
// Process the PDF based on split parameters
|
||||
int horiz = request.getHorizontalDivisions() + 1;
|
||||
int verti = request.getVerticalDivisions() + 1;
|
||||
|
||||
List<PDDocument> splitDocuments = splitPdfPages(sourceDocument, verti, horiz);
|
||||
for (PDDocument doc : splitDocuments) {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
doc.save(baos);
|
||||
doc.close();
|
||||
splitDocumentsBoas.add(baos);
|
||||
}
|
||||
|
||||
sourceDocument.close();
|
||||
|
||||
Path zipFile = Files.createTempFile("split_documents", ".zip");
|
||||
String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", "");
|
||||
byte[] data;
|
||||
|
||||
|
||||
|
||||
try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) {
|
||||
int pageNum = 1;
|
||||
for (int i = 0; i < splitDocumentsBoas.size(); i++) {
|
||||
ByteArrayOutputStream baos = splitDocumentsBoas.get(i);
|
||||
int sectionNum = (i % (horiz * verti)) + 1;
|
||||
String fileName = filename + "_" + pageNum + "_" + sectionNum + ".pdf";
|
||||
byte[] pdf = baos.toByteArray();
|
||||
ZipEntry pdfEntry = new ZipEntry(fileName);
|
||||
zipOut.putNextEntry(pdfEntry);
|
||||
zipOut.write(pdf);
|
||||
zipOut.closeEntry();
|
||||
|
||||
if (sectionNum == horiz * verti) pageNum++;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
data = Files.readAllBytes(zipFile);
|
||||
Files.delete(zipFile);
|
||||
}
|
||||
|
||||
return WebResponseUtils.bytesToWebResponse(data, filename + "_split.zip", MediaType.APPLICATION_OCTET_STREAM);
|
||||
}
|
||||
|
||||
public List<PDDocument> splitPdfPages(PDDocument document, int horizontalDivisions, int verticalDivisions) throws IOException {
|
||||
List<PDDocument> splitDocuments = new ArrayList<>();
|
||||
|
||||
for (PDPage originalPage : document.getPages()) {
|
||||
PDRectangle originalMediaBox = originalPage.getMediaBox();
|
||||
float width = originalMediaBox.getWidth();
|
||||
float height = originalMediaBox.getHeight();
|
||||
float subPageWidth = width / horizontalDivisions;
|
||||
float subPageHeight = height / verticalDivisions;
|
||||
|
||||
LayerUtility layerUtility = new LayerUtility(document);
|
||||
|
||||
for (int i = 0; i < horizontalDivisions; i++) {
|
||||
for (int j = 0; j < verticalDivisions; j++) {
|
||||
PDDocument subDoc = new PDDocument();
|
||||
PDPage subPage = new PDPage(new PDRectangle(subPageWidth, subPageHeight));
|
||||
subDoc.addPage(subPage);
|
||||
|
||||
PDFormXObject form = layerUtility.importPageAsForm(document, document.getPages().indexOf(originalPage));
|
||||
|
||||
try (PDPageContentStream contentStream = new PDPageContentStream(subDoc, subPage)) {
|
||||
// Set clipping area and position
|
||||
float translateX = -subPageWidth * i;
|
||||
float translateY = height - subPageHeight * (verticalDivisions - j);
|
||||
|
||||
contentStream.saveGraphicsState();
|
||||
contentStream.addRect(0, 0, subPageWidth, subPageHeight);
|
||||
contentStream.clip();
|
||||
contentStream.transform(new Matrix(1, 0, 0, 1, translateX, translateY));
|
||||
|
||||
// Draw the form
|
||||
contentStream.drawForm(form);
|
||||
contentStream.restoreGraphicsState();
|
||||
}
|
||||
|
||||
splitDocuments.add(subDoc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return splitDocuments;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
package stirling.software.SPDF.controller.api;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.springframework.http.MediaType;
|
||||
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.general.SplitPdfBySizeOrCountRequest;
|
||||
import stirling.software.SPDF.utils.GeneralUtils;
|
||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/general")
|
||||
@Tag(name = "Misc", description = "Miscellaneous APIs")
|
||||
public class SplitPdfBySizeController {
|
||||
|
||||
|
||||
@PostMapping(value = "/split-by-size-or-count", consumes = "multipart/form-data")
|
||||
@Operation(summary = "Auto split PDF pages into separate documents based on size or count", description = "split PDF into multiple paged documents based on size/count, ie if 20 pages and split into 5, it does 5 documents each 4 pages\r\n"
|
||||
+ " if 10MB and each page is 1MB and you enter 2MB then 5 docs each 2MB (rounded so that it accepts 1.9MB but not 2.1MB) Input:PDF Output:ZIP Type:SIMO")
|
||||
public ResponseEntity<byte[]> autoSplitPdf(@ModelAttribute SplitPdfBySizeOrCountRequest request) throws Exception {
|
||||
List<ByteArrayOutputStream> splitDocumentsBoas = new ArrayList<ByteArrayOutputStream>();
|
||||
|
||||
|
||||
|
||||
MultipartFile file = request.getFileInput();
|
||||
PDDocument sourceDocument = PDDocument.load(file.getInputStream());
|
||||
|
||||
//0 = size, 1 = page count, 2 = doc count
|
||||
int type = request.getSplitType();
|
||||
String value = request.getSplitValue();
|
||||
|
||||
if (type == 0) { // Split by size
|
||||
long maxBytes = GeneralUtils.convertSizeToBytes(value);
|
||||
long currentSize = 0;
|
||||
PDDocument currentDoc = new PDDocument();
|
||||
|
||||
for (PDPage page : sourceDocument.getPages()) {
|
||||
ByteArrayOutputStream pageOutputStream = new ByteArrayOutputStream();
|
||||
PDDocument tempDoc = new PDDocument();
|
||||
tempDoc.addPage(page);
|
||||
tempDoc.save(pageOutputStream);
|
||||
tempDoc.close();
|
||||
|
||||
long pageSize = pageOutputStream.size();
|
||||
if (currentSize + pageSize > maxBytes) {
|
||||
// Save and reset current document
|
||||
splitDocumentsBoas.add(currentDocToByteArray(currentDoc));
|
||||
currentDoc = new PDDocument();
|
||||
currentSize = 0;
|
||||
}
|
||||
|
||||
currentDoc.addPage(page);
|
||||
currentSize += pageSize;
|
||||
}
|
||||
// Add the last document if it contains any pages
|
||||
if (currentDoc.getPages().getCount() != 0) {
|
||||
splitDocumentsBoas.add(currentDocToByteArray(currentDoc));
|
||||
}
|
||||
} else if (type == 1) { // Split by page count
|
||||
int pageCount = Integer.parseInt(value);
|
||||
int currentPageCount = 0;
|
||||
PDDocument currentDoc = new PDDocument();
|
||||
|
||||
for (PDPage page : sourceDocument.getPages()) {
|
||||
currentDoc.addPage(page);
|
||||
currentPageCount++;
|
||||
|
||||
if (currentPageCount == pageCount) {
|
||||
// Save and reset current document
|
||||
splitDocumentsBoas.add(currentDocToByteArray(currentDoc));
|
||||
currentDoc = new PDDocument();
|
||||
currentPageCount = 0;
|
||||
}
|
||||
}
|
||||
// Add the last document if it contains any pages
|
||||
if (currentDoc.getPages().getCount() != 0) {
|
||||
splitDocumentsBoas.add(currentDocToByteArray(currentDoc));
|
||||
}
|
||||
} else if (type == 2) { // Split by doc count
|
||||
int documentCount = Integer.parseInt(value);
|
||||
int totalPageCount = sourceDocument.getNumberOfPages();
|
||||
int pagesPerDocument = totalPageCount / documentCount;
|
||||
int extraPages = totalPageCount % documentCount;
|
||||
int currentPageIndex = 0;
|
||||
|
||||
for (int i = 0; i < documentCount; i++) {
|
||||
PDDocument currentDoc = new PDDocument();
|
||||
int pagesToAdd = pagesPerDocument + (i < extraPages ? 1 : 0);
|
||||
|
||||
for (int j = 0; j < pagesToAdd; j++) {
|
||||
currentDoc.addPage(sourceDocument.getPage(currentPageIndex++));
|
||||
}
|
||||
|
||||
splitDocumentsBoas.add(currentDocToByteArray(currentDoc));
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid argument for split type");
|
||||
}
|
||||
|
||||
sourceDocument.close();
|
||||
|
||||
|
||||
|
||||
Path zipFile = Files.createTempFile("split_documents", ".zip");
|
||||
String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", "");
|
||||
byte[] data;
|
||||
|
||||
try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) {
|
||||
for (int i = 0; i < splitDocumentsBoas.size(); i++) {
|
||||
String fileName = filename + "_" + (i + 1) + ".pdf";
|
||||
ByteArrayOutputStream baos = splitDocumentsBoas.get(i);
|
||||
byte[] pdf = baos.toByteArray();
|
||||
|
||||
ZipEntry pdfEntry = new ZipEntry(fileName);
|
||||
zipOut.putNextEntry(pdfEntry);
|
||||
zipOut.write(pdf);
|
||||
zipOut.closeEntry();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
data = Files.readAllBytes(zipFile);
|
||||
Files.delete(zipFile);
|
||||
}
|
||||
|
||||
return WebResponseUtils.bytesToWebResponse(data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM);
|
||||
}
|
||||
|
||||
private ByteArrayOutputStream currentDocToByteArray(PDDocument document) throws IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
document.save(baos);
|
||||
document.close();
|
||||
return baos;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package stirling.software.SPDF.controller.api.converters;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.ContentDisposition;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
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 com.opencsv.CSVWriter;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import stirling.software.SPDF.controller.api.CropController;
|
||||
import stirling.software.SPDF.controller.api.strippers.PDFTableStripper;
|
||||
import stirling.software.SPDF.model.api.extract.PDFFilePage;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/convert")
|
||||
@Tag(name = "General", description = "General APIs")
|
||||
public class ExtractController {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(CropController.class);
|
||||
|
||||
@PostMapping(value = "/pdf-to-csv", consumes = "multipart/form-data")
|
||||
@Operation(summary = "Extracts a PDF document to csv", description = "This operation takes an input PDF file and returns CSV file of whole page. Input:PDF Output:CSV Type:SISO")
|
||||
public ResponseEntity<String> PdfToCsv(@ModelAttribute PDFFilePage form)
|
||||
throws Exception {
|
||||
|
||||
ArrayList<String> tableData = new ArrayList<>();
|
||||
int columnsCount = 0;
|
||||
|
||||
try (PDDocument document = PDDocument.load(new ByteArrayInputStream(form.getFileInput().getBytes()))) {
|
||||
final double res = 72; // PDF units are at 72 DPI
|
||||
PDFTableStripper stripper = new PDFTableStripper();
|
||||
PDPage pdPage = document.getPage(form.getPageId() - 1);
|
||||
stripper.extractTable(pdPage);
|
||||
columnsCount = stripper.getColumns();
|
||||
for (int c = 0; c < columnsCount; ++c) {
|
||||
for(int r=0; r<stripper.getRows(); ++r) {
|
||||
tableData.add(stripper.getText(r, c));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> notEmptyColumns = new ArrayList<>();
|
||||
|
||||
for (String item: tableData) {
|
||||
if(!item.trim().isEmpty()){
|
||||
notEmptyColumns.add(item);
|
||||
}else{
|
||||
columnsCount--;
|
||||
}
|
||||
}
|
||||
|
||||
List<String> fullTable = notEmptyColumns.stream().map((entity)->
|
||||
entity.replace('\n',' ').replace('\r',' ').trim().replaceAll("\\s{2,}", "|")).toList();
|
||||
|
||||
int rowsCount = fullTable.get(0).split("\\|").length;
|
||||
|
||||
ArrayList<String> headersList = getTableHeaders(columnsCount,fullTable);
|
||||
ArrayList<String> recordList = getRecordsList(rowsCount,fullTable);
|
||||
|
||||
if(headersList.size() == 0 && recordList.size() == 0) {
|
||||
throw new Exception("No table detected, no headers or records found");
|
||||
}
|
||||
|
||||
StringWriter writer = new StringWriter();
|
||||
try (CSVWriter csvWriter = new CSVWriter(writer)) {
|
||||
csvWriter.writeNext(headersList.toArray(new String[0]));
|
||||
for (String record : recordList) {
|
||||
csvWriter.writeNext(record.split("\\|"));
|
||||
}
|
||||
}
|
||||
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentDisposition(ContentDisposition.builder("attachment").filename(form.getFileInput().getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_extracted.csv").build());
|
||||
headers.setContentType(MediaType.parseMediaType("text/csv"));
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.headers(headers)
|
||||
.body(writer.toString());
|
||||
}
|
||||
|
||||
private ArrayList<String> getRecordsList( int rowsCounts ,List<String> items){
|
||||
ArrayList<String> recordsList = new ArrayList<>();
|
||||
|
||||
for (int b=1; b<rowsCounts;b++) {
|
||||
StringBuilder strbldr = new StringBuilder();
|
||||
|
||||
for (int i=0;i<items.size();i++){
|
||||
String[] parts = items.get(i).split("\\|");
|
||||
strbldr.append(parts[b]);
|
||||
if (i!= items.size()-1){
|
||||
strbldr.append("|");
|
||||
}
|
||||
}
|
||||
recordsList.add(strbldr.toString());
|
||||
}
|
||||
|
||||
return recordsList;
|
||||
}
|
||||
private ArrayList<String> getTableHeaders(int columnsCount, List<String> items){
|
||||
ArrayList<String> resultList = new ArrayList<>();
|
||||
for (int i=0;i<columnsCount;i++){
|
||||
String[] parts = items.get(i).split("\\|");
|
||||
resultList.add(parts[0]);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,12 @@
|
||||
package stirling.software.SPDF.controller.api.misc;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.RenderedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.zip.Deflater;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.io.ByteArrayOutputStream;
|
||||
//Required for file input/output
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
//Other required classes
|
||||
import java.util.Random;
|
||||
|
||||
@@ -85,7 +86,7 @@ public class FakeScanControllerWIP {
|
||||
op.filter(sourceImage, destinationImage);
|
||||
|
||||
// Apply a rotation effect
|
||||
double rotationRequired = Math.toRadians((new Random().nextInt(3 - 1) + 1)); // Random angle between 1 and 3 degrees
|
||||
double rotationRequired = Math.toRadians((new SecureRandom().nextInt(3 - 1) + 1)); // Random angle between 1 and 3 degrees
|
||||
double locationX = destinationImage.getWidth() / 2;
|
||||
double locationY = destinationImage.getHeight() / 2;
|
||||
AffineTransform tx = AffineTransform.getRotateInstance(rotationRequired, locationX, locationY);
|
||||
@@ -103,7 +104,7 @@ public class FakeScanControllerWIP {
|
||||
destinationImage = blurOp.filter(destinationImage, null);
|
||||
|
||||
// Add noise to the image based on the "dirtiness"
|
||||
Random random = new Random();
|
||||
Random random = new SecureRandom();
|
||||
for (int y = 0; y < destinationImage.getHeight(); y++) {
|
||||
for (int x = 0; x < destinationImage.getWidth(); x++) {
|
||||
if (random.nextInt(100) < dirtiness) {
|
||||
|
||||
@@ -39,7 +39,7 @@ public class OCRController {
|
||||
private static final Logger logger = LoggerFactory.getLogger(OCRController.class);
|
||||
|
||||
public List<String> getAvailableTesseractLanguages() {
|
||||
String tessdataDir = "/usr/share/tesseract-ocr/4.00/tessdata";
|
||||
String tessdataDir = "/usr/share/tesseract-ocr/5/tessdata";
|
||||
File[] files = new File(tessdataDir).listFiles();
|
||||
if (files == null) {
|
||||
return Collections.emptyList();
|
||||
|
||||
@@ -0,0 +1,358 @@
|
||||
package stirling.software.SPDF.controller.api.strippers;
|
||||
|
||||
import java.awt.Shape;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.fontbox.util.BoundingBox;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||
import org.apache.pdfbox.pdmodel.font.PDFont;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType3Font;
|
||||
import org.apache.pdfbox.text.PDFTextStripper;
|
||||
import org.apache.pdfbox.text.PDFTextStripperByArea;
|
||||
import org.apache.pdfbox.text.TextPosition;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class to extract tabular data from a PDF.
|
||||
* Works by making a first pass of the page to group all nearby text items
|
||||
* together, and then inferring a 2D grid from these regions. Each table cell
|
||||
* is then extracted using a PDFTextStripperByArea object.
|
||||
*
|
||||
* Works best when
|
||||
* headers are included in the detected region, to ensure representative text
|
||||
* in every column.
|
||||
*
|
||||
* Based upon DrawPrintTextLocations PDFBox example
|
||||
* (https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java)
|
||||
*
|
||||
* @author Beldaz
|
||||
*/
|
||||
public class PDFTableStripper extends PDFTextStripper
|
||||
{
|
||||
|
||||
/**
|
||||
* This will print the documents data, for each table cell.
|
||||
*
|
||||
* @param args The command line arguments.
|
||||
*
|
||||
* @throws IOException If there is an error parsing the document.
|
||||
*/
|
||||
/*
|
||||
* Used in methods derived from DrawPrintTextLocations
|
||||
*/
|
||||
private AffineTransform flipAT;
|
||||
private AffineTransform rotateAT;
|
||||
|
||||
/**
|
||||
* Regions updated by calls to writeString
|
||||
*/
|
||||
private Set<Rectangle2D> boxes;
|
||||
|
||||
// Border to allow when finding intersections
|
||||
private double dx = 1.0; // This value works for me, feel free to tweak (or add setter)
|
||||
private double dy = 0.000; // Rows of text tend to overlap, so need to extend
|
||||
|
||||
/**
|
||||
* Region in which to find table (otherwise whole page)
|
||||
*/
|
||||
private Rectangle2D regionArea;
|
||||
|
||||
/**
|
||||
* Number of rows in inferred table
|
||||
*/
|
||||
private int nRows=0;
|
||||
|
||||
/**
|
||||
* Number of columns in inferred table
|
||||
*/
|
||||
private int nCols=0;
|
||||
|
||||
/**
|
||||
* This is the object that does the text extraction
|
||||
*/
|
||||
private PDFTextStripperByArea regionStripper;
|
||||
|
||||
/**
|
||||
* 1D intervals - used for calculateTableRegions()
|
||||
* @author Beldaz
|
||||
*
|
||||
*/
|
||||
public static class Interval {
|
||||
double start;
|
||||
double end;
|
||||
public Interval(double start, double end) {
|
||||
this.start=start; this.end = end;
|
||||
}
|
||||
public void add(Interval col) {
|
||||
if(col.start<start)
|
||||
start = col.start;
|
||||
if(col.end>end)
|
||||
end = col.end;
|
||||
}
|
||||
public static void addTo(Interval x, LinkedList<Interval> columns) {
|
||||
int p = 0;
|
||||
Iterator<Interval> it = columns.iterator();
|
||||
// Find where x should go
|
||||
while(it.hasNext()) {
|
||||
Interval col = it.next();
|
||||
if(x.end>=col.start) {
|
||||
if(x.start<=col.end) { // overlaps
|
||||
x.add(col);
|
||||
it.remove();
|
||||
}
|
||||
break;
|
||||
}
|
||||
++p;
|
||||
}
|
||||
while(it.hasNext()) {
|
||||
Interval col = it.next();
|
||||
if(x.start>col.end)
|
||||
break;
|
||||
x.add(col);
|
||||
it.remove();
|
||||
}
|
||||
columns.add(p, x);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate a new PDFTableStripper object.
|
||||
*
|
||||
* @param document
|
||||
* @throws IOException If there is an error loading the properties.
|
||||
*/
|
||||
public PDFTableStripper() throws IOException
|
||||
{
|
||||
super.setShouldSeparateByBeads(false);
|
||||
regionStripper = new PDFTextStripperByArea();
|
||||
regionStripper.setSortByPosition( true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the region to group text by.
|
||||
*
|
||||
* @param rect The rectangle area to retrieve the text from.
|
||||
*/
|
||||
public void setRegion(Rectangle2D rect )
|
||||
{
|
||||
regionArea = rect;
|
||||
}
|
||||
|
||||
public int getRows()
|
||||
{
|
||||
return nRows;
|
||||
}
|
||||
|
||||
public int getColumns()
|
||||
{
|
||||
return nCols;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the text for the region, this should be called after extractTable().
|
||||
*
|
||||
* @return The text that was identified in that region.
|
||||
*/
|
||||
public String getText(int row, int col)
|
||||
{
|
||||
return regionStripper.getTextForRegion("el"+col+"x"+row);
|
||||
}
|
||||
|
||||
public void extractTable(PDPage pdPage) throws IOException
|
||||
{
|
||||
setStartPage(getCurrentPageNo());
|
||||
setEndPage(getCurrentPageNo());
|
||||
|
||||
boxes = new HashSet<Rectangle2D>();
|
||||
// flip y-axis
|
||||
flipAT = new AffineTransform();
|
||||
flipAT.translate(0, pdPage.getBBox().getHeight());
|
||||
flipAT.scale(1, -1);
|
||||
|
||||
// page may be rotated
|
||||
rotateAT = new AffineTransform();
|
||||
int rotation = pdPage.getRotation();
|
||||
if (rotation != 0)
|
||||
{
|
||||
PDRectangle mediaBox = pdPage.getMediaBox();
|
||||
switch (rotation)
|
||||
{
|
||||
case 90:
|
||||
rotateAT.translate(mediaBox.getHeight(), 0);
|
||||
break;
|
||||
case 270:
|
||||
rotateAT.translate(0, mediaBox.getWidth());
|
||||
break;
|
||||
case 180:
|
||||
rotateAT.translate(mediaBox.getWidth(), mediaBox.getHeight());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
rotateAT.rotate(Math.toRadians(rotation));
|
||||
}
|
||||
// Trigger processing of the document so that writeString is called.
|
||||
try (Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream())) {
|
||||
super.output = dummy;
|
||||
super.processPage(pdPage);
|
||||
}
|
||||
|
||||
Rectangle2D[][] regions = calculateTableRegions();
|
||||
|
||||
// System.err.println("Drawing " + nCols + "x" + nRows + "="+ nRows*nCols + " regions");
|
||||
for(int i=0; i<nCols; ++i) {
|
||||
for(int j=0; j<nRows; ++j) {
|
||||
final Rectangle2D region = regions[i][j];
|
||||
regionStripper.addRegion("el"+i+"x"+j, region);
|
||||
}
|
||||
}
|
||||
|
||||
regionStripper.extractRegions(pdPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Infer a rectangular grid of regions from the boxes field.
|
||||
*
|
||||
* @return 2D array of table regions (as Rectangle2D objects). Note that
|
||||
* some of these regions may have no content.
|
||||
*/
|
||||
private Rectangle2D[][] calculateTableRegions() {
|
||||
|
||||
// Build up a list of all table regions, based upon the populated
|
||||
// regions of boxes field. Treats the horizontal and vertical extents
|
||||
// of each box as distinct
|
||||
LinkedList<Interval> columns = new LinkedList<Interval>();
|
||||
LinkedList<Interval> rows = new LinkedList<Interval>();
|
||||
|
||||
for(Rectangle2D box: boxes) {
|
||||
Interval x = new Interval(box.getMinX(), box.getMaxX());
|
||||
Interval y = new Interval(box.getMinY(), box.getMaxY());
|
||||
|
||||
Interval.addTo(x, columns);
|
||||
Interval.addTo(y, rows);
|
||||
}
|
||||
|
||||
nRows = rows.size();
|
||||
nCols = columns.size();
|
||||
Rectangle2D[][] regions = new Rectangle2D[nCols][nRows];
|
||||
int i=0;
|
||||
// Label regions from top left, rather than the transformed orientation
|
||||
for(Interval column: columns) {
|
||||
int j=0;
|
||||
for(Interval row: rows) {
|
||||
regions[nCols-i-1][nRows-j-1] = new Rectangle2D.Double(column.start, row.start, column.end - column.start, row.end - row.start);
|
||||
++j;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
return regions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register each character's bounding box, updating boxes field to maintain
|
||||
* a list of all distinct groups of characters.
|
||||
*
|
||||
* Overrides the default functionality of PDFTextStripper.
|
||||
* Most of this is taken from DrawPrintTextLocations.java, with extra steps
|
||||
* at end of main loop
|
||||
*/
|
||||
@Override
|
||||
protected void writeString(String string, List<TextPosition> textPositions) throws IOException
|
||||
{
|
||||
for (TextPosition text : textPositions)
|
||||
{
|
||||
// glyph space -> user space
|
||||
// note: text.getTextMatrix() is *not* the Text Matrix, it's the Text Rendering Matrix
|
||||
AffineTransform at = text.getTextMatrix().createAffineTransform();
|
||||
PDFont font = text.getFont();
|
||||
BoundingBox bbox = font.getBoundingBox();
|
||||
|
||||
// advance width, bbox height (glyph space)
|
||||
float xadvance = font.getWidth(text.getCharacterCodes()[0]); // todo: should iterate all chars
|
||||
Rectangle2D.Float rect = new Rectangle2D.Float(0, bbox.getLowerLeftY(), xadvance, bbox.getHeight());
|
||||
|
||||
if (font instanceof PDType3Font)
|
||||
{
|
||||
// bbox and font matrix are unscaled
|
||||
at.concatenate(font.getFontMatrix().createAffineTransform());
|
||||
}
|
||||
else
|
||||
{
|
||||
// bbox and font matrix are already scaled to 1000
|
||||
at.scale(1/1000f, 1/1000f);
|
||||
}
|
||||
Shape s = at.createTransformedShape(rect);
|
||||
s = flipAT.createTransformedShape(s);
|
||||
s = rotateAT.createTransformedShape(s);
|
||||
|
||||
|
||||
//
|
||||
// Merge character's bounding box with boxes field
|
||||
//
|
||||
Rectangle2D bounds = s.getBounds2D();
|
||||
// Pad sides to detect almost touching boxes
|
||||
Rectangle2D hitbox = bounds.getBounds2D();
|
||||
hitbox.add(bounds.getMinX() - dx , bounds.getMinY() - dy);
|
||||
hitbox.add(bounds.getMaxX() + dx , bounds.getMaxY() + dy);
|
||||
|
||||
// Find all overlapping boxes
|
||||
List<Rectangle2D> intersectList = new ArrayList<Rectangle2D>();
|
||||
for(Rectangle2D box: boxes) {
|
||||
if(box.intersects(hitbox)) {
|
||||
intersectList.add(box);
|
||||
}
|
||||
}
|
||||
|
||||
// Combine all touching boxes and update
|
||||
// (NOTE: Potentially this could leave some overlapping boxes un-merged,
|
||||
// but it's sufficient for now and get's fixed up in calculateTableRegions)
|
||||
for(Rectangle2D box: intersectList) {
|
||||
bounds.add(box);
|
||||
boxes.remove(box);
|
||||
}
|
||||
boxes.add(bounds);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method does nothing in this derived class, because beads and regions are incompatible. Beads are
|
||||
* ignored when stripping by area.
|
||||
*
|
||||
* @param aShouldSeparateByBeads The new grouping of beads.
|
||||
*/
|
||||
@Override
|
||||
public final void setShouldSeparateByBeads(boolean aShouldSeparateByBeads)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Adapted from PDFTextStripperByArea
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void processTextPosition( TextPosition text )
|
||||
{
|
||||
if(regionArea!=null && !regionArea.contains( text.getX(), text.getY() ) ) {
|
||||
// skip character
|
||||
} else {
|
||||
super.processTextPosition( text );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,14 @@ public class ConverterWebController {
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
@GetMapping("/pdf-to-csv")
|
||||
@Hidden
|
||||
public ModelAndView pdfToCSV() {
|
||||
ModelAndView modelAndView = new ModelAndView("convert/pdf-to-csv");
|
||||
modelAndView.addObject("currentPage", "pdf-to-csv");
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/pdf-to-pdfa")
|
||||
@Hidden
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
package stirling.software.SPDF.controller.web;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
@@ -81,6 +82,19 @@ public class GeneralWebController {
|
||||
return "merge-pdfs";
|
||||
}
|
||||
|
||||
@GetMapping("/split-pdf-by-sections")
|
||||
@Hidden
|
||||
public String splitPdfBySections(Model model) {
|
||||
model.addAttribute("currentPage", "split-pdf-by-sections");
|
||||
return "split-pdf-by-sections";
|
||||
}
|
||||
|
||||
@GetMapping("/view-pdf")
|
||||
@Hidden
|
||||
public String ViewPdfForm2(Model model) {
|
||||
model.addAttribute("currentPage", "view-pdf");
|
||||
return "view-pdf";
|
||||
}
|
||||
|
||||
@GetMapping("/multi-tool")
|
||||
@Hidden
|
||||
@@ -155,6 +169,20 @@ public class GeneralWebController {
|
||||
return "scale-pages";
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/split-by-size-or-count")
|
||||
@Hidden
|
||||
public String splitBySizeOrCount(Model model) {
|
||||
model.addAttribute("currentPage", "split-by-size-or-count");
|
||||
return "split-by-size-or-count";
|
||||
}
|
||||
|
||||
@GetMapping("/overlay-pdf")
|
||||
@Hidden
|
||||
public String overlayPdf(Model model) {
|
||||
model.addAttribute("currentPage", "overlay-pdf");
|
||||
return "overlay-pdf";
|
||||
}
|
||||
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -78,7 +78,7 @@ public class OtherWebController {
|
||||
}
|
||||
|
||||
public List<String> getAvailableTesseractLanguages() {
|
||||
String tessdataDir = "/usr/share/tesseract-ocr/4.00/tessdata";
|
||||
String tessdataDir = "/usr/share/tesseract-ocr/5/tessdata";
|
||||
File[] files = new File(tessdataDir).listFiles();
|
||||
if (files == null) {
|
||||
return Collections.emptyList();
|
||||
@@ -98,7 +98,7 @@ public class OtherWebController {
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/add-image")
|
||||
@Hidden
|
||||
public String overlayImage(Model model) {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package stirling.software.SPDF.model.api;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper=true)
|
||||
public class SplitPdfBySectionsRequest extends PDFFile {
|
||||
@Schema(description = "Number of horizontal divisions for each PDF page", example = "2")
|
||||
private int horizontalDivisions;
|
||||
|
||||
@Schema(description = "Number of vertical divisions for each PDF page", example = "2")
|
||||
private int verticalDivisions;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package stirling.software.SPDF.model.api.extract;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import stirling.software.SPDF.model.api.PDFFile;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=true)
|
||||
public class PDFFilePage extends PDFFile {
|
||||
|
||||
|
||||
@Schema(description = "Number of chosen page", type = "number")
|
||||
private int pageId;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package stirling.software.SPDF.model.api.general;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import stirling.software.SPDF.model.api.PDFFile;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OverlayPdfsRequest extends PDFFile {
|
||||
|
||||
@Schema(description = "An array of PDF files to be used as overlays on the base PDF. The order in these files is applied based on the selected mode.")
|
||||
private MultipartFile[] overlayFiles;
|
||||
|
||||
@Schema(description = "The mode of overlaying: 'SequentialOverlay' for sequential application, 'InterleavedOverlay' for round-robin application, 'FixedRepeatOverlay' for fixed repetition based on provided counts", required = true)
|
||||
private String overlayMode;
|
||||
|
||||
@Schema(description = "An array of integers specifying the number of times each corresponding overlay file should be applied in the 'FixedRepeatOverlay' mode. This should match the length of the overlayFiles array.", required = false)
|
||||
private int[] counts;
|
||||
|
||||
@Schema(description = "Overlay position 0 is Foregound, 1 is Background")
|
||||
private int overlayPosition;
|
||||
}
|
||||
@@ -3,7 +3,6 @@ package stirling.software.SPDF.model.api.general;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import stirling.software.SPDF.model.api.PDFFile;
|
||||
import stirling.software.SPDF.model.api.PDFWithPageSize;
|
||||
|
||||
@Data
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package stirling.software.SPDF.model.api.general;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import stirling.software.SPDF.model.api.PDFFile;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=true)
|
||||
public class SplitPdfBySizeOrCountRequest extends PDFFile {
|
||||
|
||||
@Schema(description = "Determines the type of split: 0 for size, 1 for page count, 2 for document count", required = false, defaultValue = "0")
|
||||
private int splitType;
|
||||
|
||||
|
||||
@Schema(description = "Value for split: size in MB (e.g., '10MB') or number of pages (e.g., '5')", required = false, defaultValue = "10MB")
|
||||
private String splitValue;
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package stirling.software.SPDF.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.FileVisitResult;
|
||||
@@ -12,6 +15,7 @@ import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
public class GeneralUtils {
|
||||
|
||||
public static void deleteDirectory(Path path) throws IOException {
|
||||
@@ -48,6 +52,18 @@ public class GeneralUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static File multipartToFile(MultipartFile multipart) throws IOException {
|
||||
Path tempFile = Files.createTempFile("overlay-", ".pdf");
|
||||
try (InputStream in = multipart.getInputStream();
|
||||
FileOutputStream out = new FileOutputStream(tempFile.toFile())) {
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = in.read(buffer)) != -1) {
|
||||
out.write(buffer, 0, bytesRead);
|
||||
}
|
||||
}
|
||||
return tempFile.toFile();
|
||||
}
|
||||
|
||||
public static Long convertSizeToBytes(String sizeStr) {
|
||||
if (sizeStr == null) {
|
||||
|
||||
@@ -35,7 +35,7 @@ spring.datasource.url=jdbc:h2:file:./configs/stirling-pdf-DB;DB_CLOSE_DELAY=-1;D
|
||||
spring.datasource.driver-class-name=org.h2.Driver
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=
|
||||
spring.h2.console.enabled=true
|
||||
spring.h2.console.enabled=false
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
|
||||
# Change the default URL path for OpenAPI JSON
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
log4j.rootLogger=ERROR,stdout
|
||||
log4j.logger.com.endeca=INFO
|
||||
# Logger for crawl metrics
|
||||
log4j.logger.com.endeca.itl.web.metrics=INFO
|
||||
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n
|
||||
51
src/main/resources/logback.xml
Normal file
51
src/main/resources/logback.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<configuration>
|
||||
|
||||
<!-- Console Appender -->
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Rolling File Appender -->
|
||||
<appender name="AUTHLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>logs/invalid-auths.log</file>
|
||||
<encoder>
|
||||
<pattern>%d %p %c{1} [%thread] %m%n</pattern>
|
||||
</encoder>
|
||||
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- daily rollover and keep 7 days' worth of history -->
|
||||
<fileNamePattern>logs/auth-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>1</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
<!-- Rolling File Appender -->
|
||||
<appender name="GENERAL" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>logs/info.log</file>
|
||||
<encoder>
|
||||
<pattern>%d %p %c{1} [%thread] %m%n</pattern>
|
||||
</encoder>
|
||||
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- daily rollover and keep 7 days' worth of history -->
|
||||
<fileNamePattern>logs/info-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>1</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
|
||||
<!-- Root Logger -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="GENERAL"/>
|
||||
</root>
|
||||
|
||||
<!-- Specific Logger -->
|
||||
<logger name="stirling.software.SPDF.config.security.CustomAuthenticationFailureHandler" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="AUTHLOG"/>
|
||||
</logger>
|
||||
|
||||
</configuration>
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=أداة متعددة PDF
|
||||
home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=إعادة ترتيب الصفحات
|
||||
multiTool.title=أداة متعددة PDF
|
||||
multiTool.header=أداة متعددة PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=مزيل الصفحة
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=تحويل PDF إلى XML
|
||||
PDFToXML.header=تحويل PDF إلى XML
|
||||
PDFToXML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات.
|
||||
PDFToXML.submit=تحويل
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF ??? CSV
|
||||
PDFToCSV.header=PDF ??? CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=??????
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
###########
|
||||
# Generic #
|
||||
###########
|
||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||
language.direction=ltr
|
||||
|
||||
pdfPrompt=Изберете PDF(и)
|
||||
@@ -25,7 +25,7 @@ downloadPdf=Изтеглете PDF
|
||||
text=Текст
|
||||
font=Шрифт
|
||||
selectFillter=-- Изберете --
|
||||
pageNum=Брой страница
|
||||
pageNum=Брой страница
|
||||
sizes.small=Малък
|
||||
sizes.medium=Среден
|
||||
sizes.large=Голям
|
||||
@@ -92,7 +92,7 @@ account.title=Настройки на акаунта
|
||||
account.accountSettings=Настройки на акаунта
|
||||
account.adminSettings=Настройки на администратора - Преглед и добавяне на потребители
|
||||
account.userControlSettings=Настройки за потребителски контрол
|
||||
account.changeUsername=Нов потребител
|
||||
account.changeUsername=Промени потребител
|
||||
account.changeUsername=Промени потребител
|
||||
account.password=Парола за потвърждение
|
||||
account.oldPassword=Стара парола
|
||||
@@ -119,15 +119,20 @@ adminUserSettings.role=Роля
|
||||
adminUserSettings.actions=Действия
|
||||
adminUserSettings.apiUser=Ограничен API потребител
|
||||
adminUserSettings.webOnlyUser=Само за уеб-потребител
|
||||
adminUserSettings.forceChange = Принудете потребителя да промени потребителското име/парола при влизане
|
||||
adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане
|
||||
adminUserSettings.submit=Съхранете потребителя
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Вашето локално хоствано обслужване на едно място за всички ваши PDF нужди.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Мулти инструмент
|
||||
home.multiTool.desc=Обединяване, завъртане, пренареждане и премахване на страници
|
||||
multiTool.tags=Мултиинструмент,Мулти операции,UI,плъзгане с щракване,потребителска част,страна на клиента,интерактивен,неразрешим,преместване
|
||||
@@ -325,12 +330,30 @@ PdfToSinglePage.tags=единична страница
|
||||
|
||||
home.showJS.title=Показване на Javascript
|
||||
home.showJS.desc=Търси и показва всеки JS, инжектиран в PDF
|
||||
showJS.tags=JS
|
||||
showJS.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
||||
|
||||
home.autoRedact.title=Автоматично редактиране
|
||||
home.autoRedact.desc=Автоматично редактира (зачернява) текст в PDF въз основа на въведен текст
|
||||
showJS.tags=Редактиране,Скриване,затъмняване,черен,маркер,скрит
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -372,9 +395,9 @@ pdfToSinglePage.submit=Преобразуване към единична стр
|
||||
|
||||
|
||||
#pageExtracter
|
||||
pageExtrater.title=Извличане на страници
|
||||
pageExtrater.header=Извличане на страници
|
||||
pageExtrater.submit=Извличане
|
||||
pageExtracter.title=Extract Pages
|
||||
pageExtracter.header=Extract Pages
|
||||
pageExtracter.submit=Extract
|
||||
|
||||
|
||||
#getPdfInfo
|
||||
@@ -632,6 +655,9 @@ pdfOrganiser.submit=Пренареждане на страниците
|
||||
multiTool.title=PDF Мулти инструмент
|
||||
multiTool.header=PDF Мулти инструмент
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Премахване на страници
|
||||
@@ -753,7 +779,7 @@ removePassword.submit=Премахване
|
||||
|
||||
|
||||
#changeMetadata
|
||||
changeMetadata.title=Промени метаданните
|
||||
changeMetadata.title=Заглавие:
|
||||
changeMetadata.header=Промени метаданните
|
||||
changeMetadata.selectText.1=Моля, редактирайте променливите, които искате да промените
|
||||
changeMetadata.selectText.2=Изтрий всички метаданни
|
||||
@@ -814,4 +840,46 @@ PDFToHTML.submit=Преобразуване
|
||||
PDFToXML.title=PDF към XML
|
||||
PDFToXML.header=PDF към XML
|
||||
PDFToXML.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
|
||||
PDFToXML.submit=Преобразуване
|
||||
PDFToXML.submit=Преобразуване
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF ??? CSV
|
||||
PDFToCSV.header=PDF ??? CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=????????
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Desar Usuari
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=L'eina allotjada localment per a necessitats PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Multi Tool
|
||||
home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Reorganitza Pàgines
|
||||
multiTool.title=PDF Multi Tool
|
||||
multiTool.header=PDF Multi Tool
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Eliminació Pàgines
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF a XML
|
||||
PDFToXML.header=PDF a XML
|
||||
PDFToXML.credit=Utilitza LibreOffice per a la conversió d'Arxius.
|
||||
PDFToXML.submit=Converteix
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF a CSV
|
||||
PDFToCSV.header=PDF a CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extracte
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -43,11 +43,11 @@ green=Grün
|
||||
blue=Blau
|
||||
custom=benutzerdefiniert...
|
||||
|
||||
changedCredsMessage=Credentials changed!
|
||||
notAuthenticatedMessage=User not authenticated.
|
||||
userNotFoundMessage=User not found.
|
||||
incorrectPasswordMessage=Current password is incorrect.
|
||||
usernameExistsMessage=New Username already exists.
|
||||
changedCredsMessage=Anmeldedaten geändert!
|
||||
notAuthenticatedMessage=Benutzer nicht authentifiziert.
|
||||
userNotFoundMessage=Benutzer nicht gefunden.
|
||||
incorrectPasswordMessage=Das Passwort ist falsch.
|
||||
usernameExistsMessage=Neuer Benutzername existiert bereits.
|
||||
|
||||
|
||||
|
||||
@@ -77,14 +77,14 @@ settings.accountSettings=Kontoeinstellungen
|
||||
|
||||
|
||||
|
||||
changeCreds.title=Change Credentials
|
||||
changeCreds.header=Update Your Account Details
|
||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
||||
changeCreds.newUsername=New Username
|
||||
changeCreds.oldPassword=Current Password
|
||||
changeCreds.newPassword=New Password
|
||||
changeCreds.confirmNewPassword=Confirm New Password
|
||||
changeCreds.submit=Submit Changes
|
||||
changeCreds.title=Anmeldeinformationen ändern
|
||||
changeCreds.header=Aktualisieren Sie Ihre Kontodaten
|
||||
changeCreds.changeUserAndPassword=Sie verwenden Standard-Anmeldeinformationen. Bitte geben Sie ein neues Passwort (und ggf. einen Benutzernamen) ein.
|
||||
changeCreds.newUsername=Neuer Benutzername
|
||||
changeCreds.oldPassword=Aktuelles Passwort
|
||||
changeCreds.newPassword=Neues Passwort
|
||||
changeCreds.confirmNewPassword=Neues Passwort bestätigen
|
||||
changeCreds.submit=Änderung speichern
|
||||
|
||||
|
||||
|
||||
@@ -92,8 +92,8 @@ account.title=Kontoeinstellungen
|
||||
account.accountSettings=Kontoeinstellungen
|
||||
account.adminSettings=Admin Einstellungen - Benutzer anzeigen und hinzufügen
|
||||
account.userControlSettings=Benutzerkontrolle
|
||||
account.changeUsername=Passwort ändern
|
||||
account.changeUsername=Passwort ändern
|
||||
account.changeUsername=Benutzername ändern
|
||||
account.changeUsername=Benutzername ändern
|
||||
account.password=Bestätigungspasswort
|
||||
account.oldPassword=Altes Passwort
|
||||
account.newPassword=Neues Passwort
|
||||
@@ -119,15 +119,20 @@ adminUserSettings.role=Rolle
|
||||
adminUserSettings.actions=Aktion
|
||||
adminUserSettings.apiUser=Eingeschränkter API-Benutzer
|
||||
adminUserSettings.webOnlyUser=Nur Web-Benutzer
|
||||
adminUserSettings.forceChange=Force user to change username/password on login
|
||||
adminUserSettings.forceChange=Benutzer dazu zwingen, Benutzernamen/Passwort bei der Anmeldung zu ändern
|
||||
adminUserSettings.submit=Benutzer speichern
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Ihr lokal gehosteter One-Stop-Shop für alle Ihre PDF-Anforderungen.
|
||||
home.searchBar=Suche nach Funktionen...
|
||||
|
||||
|
||||
home.viewPdf.title=PDF anzeigen
|
||||
home.viewPdf.desc=Anzeigen, Kommentieren, Text oder Bilder hinzufügen
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF-Multitool
|
||||
home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -328,9 +333,27 @@ home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
|
||||
showJS.tags=JS
|
||||
|
||||
home.autoRedact.title=Automatisch zensieren/schwärzen
|
||||
home.autoRedact.desc=Automatisches zensiertes (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
|
||||
home.autoRedact.desc=Automatisches zensierten (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=Tabelle extrahieren
|
||||
home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren
|
||||
tableExtraxt.tags=CSV
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -430,7 +453,7 @@ addPageNumbers.selectText.5=Seiten zu nummerieren
|
||||
addPageNumbers.selectText.6=Benutzerdefinierter Text
|
||||
addPageNumbers.customTextDesc=Benutzerdefinierter Text
|
||||
addPageNumbers.numberPagesDesc=Welche Seiten nummeriert werden sollen, Standardeinstellung 'alle' ('all'), akzeptiert auch 1-5 oder 2,5,9 usw.
|
||||
addPageNumbers.customNumberDesc=Standardmäßig {n}, akzeptiert auch 'Seite {n} von {insgesamt}', 'Text-{n}', '{Dateiname}-{n} ('{filename}-{n})
|
||||
addPageNumbers.customNumberDesc=Standardmäßig {n}, akzeptiert auch 'Seite {n} von {total}', 'Text-{n}', '{filename}-{n}'
|
||||
addPageNumbers.submit=Seitenzahlen hinzufügen
|
||||
|
||||
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Mehrseitiges Layout
|
||||
pageLayout.header=Mehrseitiges Layout
|
||||
pageLayout.pagesPerSheet=Seiten pro Blatt:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Abschicken
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Seiten anordnen
|
||||
multiTool.title=PDF-Multitool
|
||||
multiTool.header=PDF-Multitool
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Seiten entfernen
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF in XML
|
||||
PDFToXML.header=PDF in XML
|
||||
PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung.
|
||||
PDFToXML.submit=Konvertieren
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF zu CSV
|
||||
PDFToCSV.header=PDF zu CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extrakt
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
###########
|
||||
# Generic #
|
||||
###########
|
||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||
language.direction=ltr
|
||||
|
||||
pdfPrompt=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE PDF(s)
|
||||
@@ -92,7 +92,7 @@ account.title=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u039B\u03B
|
||||
account.accountSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD
|
||||
account.adminSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE - \u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03BA\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
||||
account.userControlSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03A7\u03B5\u03B9\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03A7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD
|
||||
account.changeUsername=\u039D\u03AD\u03BF \u038C\u03BD\u03BF\u03BC\u03B1 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
account.changeUsername=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039F\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
account.changeUsername=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039F\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
account.password=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
||||
account.oldPassword=\u03A0\u03B1\u03BB\u03B9\u03CC\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
|
||||
@@ -106,10 +106,10 @@ account.settingsCompare=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03A1\
|
||||
account.property=Property
|
||||
account.webBrowserSettings=\u03A1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (Web Browser)
|
||||
account.syncToBrowser=\u03A3\u03C5\u03B3\u03C7\u03C1\u03BF\u03BD\u03B9\u03C3\u03BC\u03CC\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD -> \u03A6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (Web Browser)
|
||||
account.syncToAccount= \u03A3\u03C5\u03B3\u03C7\u03C1\u03BF\u03BD\u03B9\u03C3\u03BC\u03CC\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD <- \u03A6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (Web Browser)
|
||||
account.syncToAccount=\u03A3\u03C5\u03B3\u03C7\u03C1\u03BF\u03BD\u03B9\u03C3\u03BC\u03CC\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD <- \u03A6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (Web Browser)
|
||||
|
||||
|
||||
adminUserSettings.title= \u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03B5\u03BB\u03AD\u03B3\u03C7\u03BF\u03C5 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
adminUserSettings.title=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03B5\u03BB\u03AD\u03B3\u03C7\u03BF\u03C5 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
adminUserSettings.header=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03B5\u03BB\u03AD\u03B3\u03C7\u03BF\u03C5 \u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE
|
||||
adminUserSettings.admin=\u0394\u03B9\u03B1\u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03AE\u03C2
|
||||
adminUserSettings.user=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2
|
||||
@@ -119,15 +119,20 @@ adminUserSettings.role=\u03A1\u03CC\u03BB\u03BF\u03C2
|
||||
adminUserSettings.actions=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2
|
||||
adminUserSettings.apiUser=\u03A0\u03B5\u03C1\u03B9\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03B4\u03B9\u03B5\u03C0\u03B1\u03C6\u03AE \u03C0\u03C1\u03BF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03BF\u03CD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03CE\u03BD (API User)
|
||||
adminUserSettings.webOnlyUser=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03BC\u03CC\u03BD\u03BF \u0399\u03C3\u03C4\u03BF\u03CD
|
||||
adminUserSettings.forceChange = \u0391\u03BD\u03B1\u03B3\u03BA\u03AC\u03C3\u03C4\u03B5 \u03C4\u03BF\u03BD \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9 \u03C4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7/\u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7
|
||||
adminUserSettings.forceChange=\u0391\u03BD\u03B1\u03B3\u03BA\u03AC\u03C3\u03C4\u03B5 \u03C4\u03BF\u03BD \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9 \u03C4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7/\u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7
|
||||
adminUserSettings.submit=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc= \u0397 \u03C4\u03BF\u03C0\u03B9\u03BA\u03AC \u03C6\u03B9\u03BB\u03BF\u03BE\u03B5\u03BD\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 one-stop-shop \u03C3\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03AC\u03B3\u03BA\u03B5\u03C2 \u03C3\u03B1\u03C2 \u03C3\u03B5 PDF.
|
||||
home.desc=\u0397 \u03C4\u03BF\u03C0\u03B9\u03BA\u03AC \u03C6\u03B9\u03BB\u03BF\u03BE\u03B5\u03BD\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 one-stop-shop \u03C3\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03AC\u03B3\u03BA\u03B5\u03C2 \u03C3\u03B1\u03C2 \u03C3\u03B5 PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 PDF
|
||||
home.viewPdf.desc=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7, \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C7\u03B5\u03B4\u03AF\u03BF\u03C5, \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF \u03A0\u03BF\u03BB\u03C5\u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03BF
|
||||
home.multiTool.desc=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7, \u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE, \u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03BA\u03B1\u03B9 \u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
||||
@@ -267,7 +272,7 @@ home.scalePages.desc=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03C4\u03BF\u03C5 \u0
|
||||
scalePages.tags=resize,modify,dimension,adapt
|
||||
|
||||
home.pipeline.title=Pipeline (\u0393\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2)
|
||||
home.pipeline.desc= \u0395\u03BA\u03C4\u03AD\u03BB\u03B5\u03C3\u03B7 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03CE\u03BD \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD \u03C3\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF \u03BF\u03C1\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03C2 pipeline scripts
|
||||
home.pipeline.desc=\u0395\u03BA\u03C4\u03AD\u03BB\u03B5\u03C3\u03B7 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03CE\u03BD \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD \u03C3\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF \u03BF\u03C1\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03C2 pipeline scripts
|
||||
pipeline.tags=automate,sequence,scripted,batch-process
|
||||
|
||||
home.add-page-numbers.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CE\u03BD \u03C3\u03B5 \u03A3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2
|
||||
@@ -325,12 +330,30 @@ PdfToSinglePage.tags=single page
|
||||
|
||||
home.showJS.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 Javascript
|
||||
home.showJS.desc=\u0391\u03BD\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1 Javascript \u03C0\u03BF\u03C5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B5\u03BD\u03C3\u03C9\u03BC\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03BF \u03BC\u03AD\u03C3\u03B1 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
|
||||
showJS.tags=JS
|
||||
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||
|
||||
home.autoRedact.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
|
||||
home.autoRedact.desc=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 (\u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1) \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF\u03C5 \u03C3\u03B5 PDF \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2
|
||||
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -494,15 +517,15 @@ scalePages.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
|
||||
certSign.title=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE \u03A0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03BF\u03CD
|
||||
certSign.header=\u03A5\u03C0\u03BF\u03B3\u03C1\u03AC\u03C8\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF PDF \u03BC\u03B5 \u03C4\u03BF \u03C0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2 (\u0395\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C3\u03B5 \u03B5\u03BE\u03AD\u03BB\u03B9\u03BE\u03B7)
|
||||
certSign.selectPDF=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 PDF \u03B3\u03B9\u03B1 \u03C5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE:
|
||||
certSign.selectKey=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C4\u03BF\u03C5 \u03B9\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03BF\u03CD \u03BA\u03BB\u03B5\u03B9\u03B4\u03B9\u03BF\u03CD \u03C3\u03B1\u03C2 (\u03BC\u03BF\u03C1\u03C6\u03AE PKCS#8, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 .pem \u03AE .der):
|
||||
certSign.selectCert=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03BF\u03CD \u03C3\u03B1\u03C2 (\u03BC\u03BF\u03C1\u03C6\u03AE X.509, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 .pem \u03AE .der):
|
||||
certSign.selectP12=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF PKCS#12 Keystore (.p12 \u03AE .pfx) (\u03A0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC, \u03B5\u03AC\u03BD \u03C0\u03B1\u03C1\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9, \u03B8\u03B1 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03C4\u03BF \u03B9\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03CC \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03BA\u03B1\u03B9 \u03C4\u03BF \u03C0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2):
|
||||
certSign.selectKey=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C4\u03BF\u03C5 \u03B9\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03BF\u03CD \u03BA\u03BB\u03B5\u03B9\u03B4\u03B9\u03BF\u03CD \u03C3\u03B1\u03C2 (\u03BC\u03BF\u03C1\u03C6\u03AE PKCS#8, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 .pem \u03AE .der):
|
||||
certSign.selectCert=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03BF\u03CD \u03C3\u03B1\u03C2 (\u03BC\u03BF\u03C1\u03C6\u03AE X.509, \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 .pem \u03AE .der):
|
||||
certSign.selectP12=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF PKCS#12 Keystore (.p12 \u03AE .pfx) (\u03A0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC, \u03B5\u03AC\u03BD \u03C0\u03B1\u03C1\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9, \u03B8\u03B1 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03C4\u03BF \u03B9\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03CC \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03BA\u03B1\u03B9 \u03C4\u03BF \u03C0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03CC \u03C3\u03B1\u03C2):
|
||||
certSign.certType=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03A0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03BF\u03CD
|
||||
certSign.password=\u0395\u03B9\u03C3\u03B1\u03B3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C4\u03BF\u03C5 Keystore \u03AE \u03C4\u03BF\u03C5 \u0399\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03BF\u03CD \u039A\u03BB\u03B5\u03B9\u03B4\u03B9\u03BF\u03CD (\u03B5\u03AC\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9):
|
||||
certSign.password=\u0395\u03B9\u03C3\u03B1\u03B3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C4\u03BF\u03C5 Keystore \u03AE \u03C4\u03BF\u03C5 \u0399\u03B4\u03B9\u03C9\u03C4\u03B9\u03BA\u03BF\u03CD \u039A\u03BB\u03B5\u03B9\u03B4\u03B9\u03BF\u03CD (\u03B5\u03AC\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9):
|
||||
certSign.showSig=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2
|
||||
certSign.reason=\u0391\u03B9\u03C4\u03AF\u03B1
|
||||
certSign.location=\u03A4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C3\u03AF\u03B1
|
||||
certSign.name=\u038C\u03BD\u03BF\u03BC\u03B1
|
||||
certSign.name=\u038C\u03BD\u03BF\u03BC\u03B1
|
||||
certSign.submit=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE PDF
|
||||
|
||||
|
||||
@@ -558,7 +581,7 @@ ScannerImageSplit.selectText.8=\u03A1\u03C5\u03B8\u03BC\u03AF\u03B6\u03B5\u03B9
|
||||
ScannerImageSplit.selectText.9=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2:
|
||||
ScannerImageSplit.selectText.10=\u039F\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03BF\u03C3\u03C4\u03AF\u03B8\u03B5\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03B1\u03B9\u03C1\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BB\u03B5\u03C5\u03BA\u03AC \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C4\u03B7\u03BD \u03AD\u03BE\u03BF\u03B4\u03BF (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 1).
|
||||
|
||||
|
||||
|
||||
#OCR
|
||||
ocr.title=\u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD (OCR) / \u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup
|
||||
ocr.header=\u03A3\u03B1\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 Cleanup / OCR (Optical Character Recognition - \u039F\u03C0\u03C4\u03B9\u03BA\u03AE \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD)
|
||||
@@ -602,7 +625,7 @@ compress.selectText.1=\u03A7\u03B5\u03B9\u03C1\u03BF\u03BA\u03AF\u03BD\u03B7\u03
|
||||
compress.selectText.2=\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u0392\u03B5\u03BB\u03C4\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2:
|
||||
compress.selectText.3=4 (\u03A0\u03BF\u03BB\u03CD \u03BA\u03B1\u03BA\u03CC \u03B3\u03B9\u03B1 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5)
|
||||
compress.selectText.4=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 - Auto mode - \u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03CC\u03B6\u03B5\u03B9 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B1 \u03C4\u03B7\u03BD \u03C0\u03BF\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03B3\u03B9\u03B1 \u03BB\u03AE\u03C8\u03B7 PDF \u03C3\u03C4\u03BF \u03B1\u03BA\u03C1\u03B9\u03B2\u03AD\u03C2 \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2
|
||||
compress.selectText.5=\u0391\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03BC\u03B5\u03BD\u03BF \u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 PDF (\u03C0.\u03C7 25MB, 10.8MB, 25KB)
|
||||
compress.selectText.5=\u0391\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03BC\u03B5\u03BD\u03BF \u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 PDF (\u03C0.\u03C7 25MB, 10.8MB, 25KB)
|
||||
compress.submit=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7
|
||||
|
||||
|
||||
@@ -632,6 +655,9 @@ pdfOrganiser.submit=\u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7
|
||||
multiTool.title=PDF \u03A0\u03BF\u03BB\u03C5\u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03BF
|
||||
multiTool.header=PDF \u03A0\u03BF\u03BB\u03C5\u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03BF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=\u0391\u03C6\u03B1\u03B9\u03C1\u03B5\u03C4\u03AE\u03C2 \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
|
||||
@@ -643,7 +669,7 @@ pageRemover.submit=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03A3\u03B5
|
||||
#rotate
|
||||
rotate.title=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE PDF
|
||||
rotate.header=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE PDF
|
||||
rotate.\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B3\u03C9\u03BD\u03AF\u03B1\u03C2 \u03C0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE\u03C2 (\u03C3\u03B5 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03C9\u03BD 90 \u03BC\u03BF\u03B9\u03C1\u03CE\u03BD):
|
||||
rotate.selectAngle=Select rotation angle (in multiples of 90 degrees):
|
||||
rotate.submit=Rotate
|
||||
|
||||
|
||||
@@ -753,7 +779,7 @@ removePassword.submit=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7
|
||||
|
||||
|
||||
#changeMetadata
|
||||
changeMetadata.title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039C\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||
changeMetadata.title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2:
|
||||
changeMetadata.header=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039C\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||
changeMetadata.selectText.1=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03BF\u03CD\u03BC\u03B5 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03C4\u03B5\u03AF\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03BC\u03B5\u03C4\u03B1\u03B2\u03BB\u03B7\u03C4\u03AD\u03C2 \u03C0\u03BF\u03C5 \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03C4\u03B5
|
||||
changeMetadata.selectText.2=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||
@@ -814,4 +840,46 @@ PDFToHTML.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
|
||||
PDFToXML.title=PDF \u03C3\u03B5 XML
|
||||
PDFToXML.header=PDF \u03C3\u03B5 XML
|
||||
PDFToXML.credit=\u0391\u03C5\u03C4\u03AE \u03B7 \u03C5\u03C0\u03B7\u03C1\u03B5\u03C3\u03AF\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF LibreOffice \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03BC\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD.
|
||||
PDFToXML.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
|
||||
PDFToXML.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF ?? CSV
|
||||
PDFToCSV.header=PDF ?? CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=?????????
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Your locally hosted one-stop-shop for all your PDF needs.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Multi Tool
|
||||
home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=Redact,Hide,black out,black,marker,hidden
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -632,6 +655,9 @@ pdfOrganiser.submit=Rearrange Pages
|
||||
multiTool.title=PDF Multi Tool
|
||||
multiTool.header=PDF Multi Tool
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Page Remover
|
||||
@@ -814,4 +840,46 @@ PDFToHTML.submit=Convert
|
||||
PDFToXML.title=PDF to XML
|
||||
PDFToXML.header=PDF to XML
|
||||
PDFToXML.credit=This service uses LibreOffice for file conversion.
|
||||
PDFToXML.submit=Convert
|
||||
PDFToXML.submit=Convert
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF to CSV
|
||||
PDFToCSV.header=PDF to CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extract
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Your locally hosted one-stop-shop for all your PDF needs.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Multi Tool
|
||||
home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Rearrange Pages
|
||||
multiTool.title=PDF Multi Tool
|
||||
multiTool.header=PDF Multi Tool
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Page Remover
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF to XML
|
||||
PDFToXML.header=PDF to XML
|
||||
PDFToXML.credit=This service uses LibreOffice for file conversion.
|
||||
PDFToXML.submit=Convert
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF to CSV
|
||||
PDFToCSV.header=PDF to CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extract
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -26,7 +26,7 @@ text=Texto
|
||||
font=Fuente
|
||||
selectFillter=-- Seleccionar --
|
||||
pageNum=Número de página
|
||||
sizes.small=Paqueño
|
||||
sizes.small=Pequeño
|
||||
sizes.medium=Mediano
|
||||
sizes.large=Grande
|
||||
sizes.x-large=Extra grande
|
||||
@@ -44,7 +44,7 @@ blue=Azul
|
||||
custom=Personalizado...
|
||||
|
||||
changedCredsMessage=Se cambiaron las credenciales!
|
||||
notAuthenticatedMessage=Usuario njo autentificado.
|
||||
notAuthenticatedMessage=Usuario no autentificado.
|
||||
userNotFoundMessage=Usuario no encontrado.
|
||||
incorrectPasswordMessage=La contraseña actual no es correcta.
|
||||
usernameExistsMessage=El nuevo nombre de usuario está en uso.
|
||||
@@ -70,8 +70,8 @@ settings.appVersion=Versión de la aplicación:
|
||||
settings.downloadOption.title=Elegir la opción de descarga (para descargas de un solo archivo sin ZIP):
|
||||
settings.downloadOption.1=Abrir en la misma ventana
|
||||
settings.downloadOption.2=Abrir en una nueva ventana
|
||||
settings.downloadOption.3=Descargar el fichero
|
||||
settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descargados
|
||||
settings.downloadOption.3=Descargar el archivo
|
||||
settings.zipThreshold=Archivos ZIP cuando excede el número de archivos descargados
|
||||
settings.signOut=Desconectar
|
||||
settings.accountSettings=Configuración de la cuenta
|
||||
|
||||
@@ -125,9 +125,14 @@ adminUserSettings.submit=Guardar Usuario
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Su ventanilla única autohospedada para todas tus necesidades PDF
|
||||
home.desc=Su ventanilla única autohospedada para todas sus necesidades PDF
|
||||
home.searchBar=Buscar características...
|
||||
|
||||
|
||||
home.viewPdf.title=Ver PDF
|
||||
home.viewPdf.desc=Ver, anotar, añadir texto o imágenes
|
||||
viewPdf.tags=ver,leer,anotar,texto,imagen
|
||||
|
||||
home.multiTool.title=Multi-herramienta PDF
|
||||
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
||||
multiTool.tags=Multi-herramienta,Multi-operación,Interfaz de usuario,Arrastrar con un click,front end,lado del cliente
|
||||
@@ -159,12 +164,12 @@ pdfOrganiser.tags=doble cara,pares,impares,ordenar,mover
|
||||
|
||||
|
||||
home.addImage.title=Agregar imagen al PDF
|
||||
home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (en desarrollo)
|
||||
home.addImage.desc=Agregar una imagen en el PDF en una ubicación establecida (en desarrollo)
|
||||
addImage.tags=img,jpg,imagen,fotografía
|
||||
|
||||
home.watermark.title=Añadir marca de agua
|
||||
home.watermark.desc=Añadir una marca de agua predefinida al documento PDF
|
||||
watermark.tags=Texto,repetir,etiquetar,propietario,copyight,marca comercial,img,jpg,imagen,fotografía
|
||||
watermark.tags=Texto,repetir,etiquetar,propietario,copyright,marca comercial,img,jpg,imagen,fotografía
|
||||
|
||||
home.permissions.title=Cambiar permisos
|
||||
home.permissions.desc=Cambiar los permisos del documento PDF
|
||||
@@ -184,7 +189,7 @@ home.removePassword.desc=Eliminar la contraseña del documento PDF
|
||||
removePassword.tags=seguro,Desencriptar,seguridad,quitar contraseña,eliminar contraseña
|
||||
|
||||
home.compressPdfs.title=Comprimir
|
||||
home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero
|
||||
home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del archivo
|
||||
compressPdfs.tags=aplastar,pequeño,diminuto
|
||||
|
||||
|
||||
@@ -192,7 +197,7 @@ home.changeMetadata.title=Cambiar metadatos
|
||||
home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF
|
||||
changeMetadata.tags==Título,autor,fecha,creación,hora,editorial,productor,estadísticas
|
||||
|
||||
home.fileToPDF.title=Convertir fichero a PDF
|
||||
home.fileToPDF.title=Convertir archivo a PDF
|
||||
home.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más)
|
||||
fileToPDF.tags=transformación,formato,documento,imagen,diapositiva,texto,conversión,office,docs,word,excel,powerpoint
|
||||
|
||||
@@ -274,8 +279,8 @@ home.add-page-numbers.title=Añadir números de página
|
||||
home.add-page-numbers.desc=Añadir números de página en un documento en una ubicación concreta
|
||||
add-page-numbers.tags=paginar,etiquetar,organizar,indexar
|
||||
|
||||
home.auto-rename.title=Auto renombrar archivo PDF
|
||||
home.auto-rename.desc=Auto renombrar un archivo PDF según el encabezamiento detectado
|
||||
home.auto-rename.title=Renombrar archivo PDF automáticamente
|
||||
home.auto-rename.desc=Renombrar automáticamente un archivo PDF según el encabezamiento detectado
|
||||
auto-rename.tags=auto-detectar,basado en el encabezamiento,organizar,re-etiquetar
|
||||
|
||||
home.adjust-contrast.title=Ajustar Color/Contraste
|
||||
@@ -296,7 +301,7 @@ sanitizePdf.tags=limpiar,asegurar,seguro,quitar amenazas
|
||||
|
||||
home.URLToPDF.title=URL/Página web a PDF
|
||||
home.URLToPDF.desc=Convierte cualquier dirección http(s) a PDF
|
||||
URLToPDF.tags=captura web,guardar página,web-a-doc,archivo
|
||||
URLToPDF.tags=captura web,guardar página,web a documento,archivo
|
||||
|
||||
home.HTMLToPDF.title=HTML a PDF
|
||||
home.HTMLToPDF.desc=Convierte cualquier archivo HTML o ZIP a PDF
|
||||
@@ -310,7 +315,7 @@ MarkdownToPDF.tags=margen,contenido web,transformación,convertir
|
||||
|
||||
home.getPdfInfo.title=Obtener toda la información en PDF
|
||||
home.getPdfInfo.desc=Obtiene toda la información posible de archivos PDF
|
||||
getPdfInfo.tags=información,datos,stats,estadísticas
|
||||
getPdfInfo.tags=información,datos,estadísticas,estadísticas
|
||||
|
||||
|
||||
home.extractPage.title=Extraer página(s)
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redactar
|
||||
home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF a CSV
|
||||
home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiéndolas a CSV
|
||||
tableExtraxt.tags=CSV,Extraer tabla,extraer,convertir
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -354,7 +377,7 @@ autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
|
||||
autoRedact.useRegexLabel=Usar Regex
|
||||
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
|
||||
autoRedact.customPaddingLabel=Extra Padding personalizado
|
||||
autoRedact.convertPDFToImageLabel=Convertir PDF a imagen-PDF (Utilizado para quitar el texto detrás del cajetín)
|
||||
autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para quitar el texto detrás del cajetín)
|
||||
autoRedact.submitButton=Enviar
|
||||
|
||||
|
||||
@@ -403,7 +426,7 @@ URLToPDF.credit=Utiliza WeasyPrint
|
||||
#html-to-pdf
|
||||
HTMLToPDF.title=HTML a PDF
|
||||
HTMLToPDF.header=HTML a PDF
|
||||
HTMLToPDF.help=Acepta archivos HTML y ZIPs conteniendo los html/css/imágenes etc requeridas
|
||||
HTMLToPDF.help=Acepta archivos HTML y ZIPs conteniendo los html/css/imágenes, etc, requeridas
|
||||
HTMLToPDF.submit=Convertir
|
||||
HTMLToPDF.credit=Utiliza WeasyPrint
|
||||
|
||||
@@ -430,14 +453,14 @@ addPageNumbers.selectText.5=Páginas a numerar
|
||||
addPageNumbers.selectText.6=Texto personalizado
|
||||
addPageNumbers.customTextDesc=Texto personalizado
|
||||
addPageNumbers.numberPagesDesc=Qué páginas numerar, por defecto 'todas', también acepta 1-5 o 2,5,9 etc
|
||||
addPageNumbers.customNumberDesc=Por defecto a {n}, también acepta 'Página {n} de {total}', 'Texto-{n}', '{nombre de archivo}-{n}
|
||||
addPageNumbers.customNumberDesc=Por defecto a {n}, también acepta 'Página {n} de {total}', 'Texto-{n}', '{filename}-{n}
|
||||
addPageNumbers.submit=Añadir Números de Página
|
||||
|
||||
|
||||
#auto-rename
|
||||
auto-rename.title=Auto Renombrar
|
||||
auto-rename.header=Auto Renombrar PDF
|
||||
auto-rename.submit=Auto Renombrar
|
||||
auto-rename.title=Renombrar automáticamente
|
||||
auto-rename.header=Renombrar PDF automáticamente
|
||||
auto-rename.submit=Renombrar automáticamente
|
||||
|
||||
|
||||
#adjustContrast
|
||||
@@ -456,8 +479,8 @@ crop.submit=Entregar
|
||||
|
||||
|
||||
#autoSplitPDF
|
||||
autoSplitPDF.title=Auto Dividir PDF
|
||||
autoSplitPDF.header=Auto Dividir PDF
|
||||
autoSplitPDF.title=Dividir PDF automáticamente
|
||||
autoSplitPDF.header=Dividir PDF automáticamente
|
||||
autoSplitPDF.description=Imprimir, Insertar, Escanear, cargar, y déjenos sepsrar automáticamente sus documentos. No se necesita clasificación manual.
|
||||
autoSplitPDF.selectText.1=Imprimir algunas hojas divisorias desde la parte inferior (Blanco y negro está bien).
|
||||
autoSplitPDF.selectText.2=Escanee todos sus documentos a la vez insertando la hoja divisoria entre ellos.
|
||||
@@ -465,8 +488,8 @@ autoSplitPDF.selectText.3=Cargue un único archivo PDF escaneado de gran tamaño
|
||||
autoSplitPDF.selectText.4=Las páginas divisorias son automáticamente detectadas y eliminadas, garantizando un buen documento final.
|
||||
autoSplitPDF.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
|
||||
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
|
||||
autoSplitPDF.dividerDownload1=Descargar 'Auto Splitter Divider (mínima).pdf'
|
||||
autoSplitPDF.dividerDownload2=Descargar 'Auto Splitter Divider (con instrucciones).pdf'
|
||||
autoSplitPDF.dividerDownload1=Descargar 'Divisor automático (mínima).pdf'
|
||||
autoSplitPDF.dividerDownload2=Descargar 'Divisor automático (con instrucciones).pdf'
|
||||
autoSplitPDF.submit=Entregar
|
||||
|
||||
|
||||
@@ -478,10 +501,7 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Diseño de varias páginas
|
||||
pageLayout.header=Diseño de varias páginas
|
||||
pageLayout.pagesPerSheet=Páginas por hoja:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.addBorder=Añadir bordes
|
||||
pageLayout.submit=Entregar
|
||||
|
||||
|
||||
@@ -494,7 +514,7 @@ scalePages.submit=Entregar
|
||||
|
||||
|
||||
#certSign
|
||||
certSign.title=Firma de certificado
|
||||
certSign.title=Firma con certificado
|
||||
certSign.header=Firmar un PDF con su certificado (en desarrollo)
|
||||
certSign.selectPDF=Seleccione un archivo PDF para firmar:
|
||||
certSign.selectKey=Seleccione su archivo de clave privada (formato PKCS#8, podría ser .pem o .der):
|
||||
@@ -556,7 +576,7 @@ ScannerImageSplit.selectText.3=Tolerancia:
|
||||
ScannerImageSplit.selectText.4=Determinar el rango de variación de color alrededor del color de fondo estimado (predeterminado: 30).
|
||||
ScannerImageSplit.selectText.5=Área mínima:
|
||||
ScannerImageSplit.selectText.6=Establecer el umbral mínimo de área para una foto (predeterminado: 10000).
|
||||
ScannerImageSplit.selectText.7=Área de contorno mínima:
|
||||
ScannerImageSplit.selectText.7=Área mínima de contorno:
|
||||
ScannerImageSplit.selectText.8=Establecer el umbral mínimo del área de contorno para una foto
|
||||
ScannerImageSplit.selectText.9=Tamaño del borde:
|
||||
ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1).
|
||||
@@ -592,8 +612,8 @@ extractImages.submit=Extraer
|
||||
#File to PDF
|
||||
fileToPDF.title=Archivo a PDF
|
||||
fileToPDF.header=Convertir cualquier archivo a PDF
|
||||
fileToPDF.credit=Este servicio usa LibreOffice y Unoconv para la conversión de ficheros
|
||||
fileToPDF.supportedFileTypes=Los tipos de ficheros soportados deben incluir los de abajo; sin embargo, para una completa y acutualizada lista de formatos soportados, por favor consulte la documentación de LibreOffice
|
||||
fileToPDF.credit=Este servicio usa LibreOffice y Unoconv para la conversión de archivos
|
||||
fileToPDF.supportedFileTypes=Los tipos de archivo soportados deben incluir los indicados a continuación; sin embargo, para una completa y acutualizada lista de formatos soportados, por favor consulte la documentación de LibreOffice
|
||||
fileToPDF.submit=Convertir a PDF
|
||||
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Organizar páginas
|
||||
multiTool.title=Multi-herramienta PDF
|
||||
multiTool.header=Multi-herramienta PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=Ver PDF
|
||||
viewPdf.header=Ver PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Eliminador de páginas
|
||||
@@ -669,10 +692,10 @@ split.submit=Dividir
|
||||
imageToPDF.title=Imagen a PDF
|
||||
imageToPDF.header=Imagen a PDF
|
||||
imageToPDF.submit=Convertir
|
||||
imageToPDF.selectLabel=Image Fit Options
|
||||
imageToPDF.fillPage=Fill Page
|
||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||
imageToPDF.selectLabel=Opciones de ajuste de imagen
|
||||
imageToPDF.fillPage=Ocupar toda la página
|
||||
imageToPDF.fitDocumentToImage=Ajustar página a imagen
|
||||
imageToPDF.maintainAspectRatio=Mantener relación de aspecto
|
||||
imageToPDF.selectText.2=Rotación automática del PDF
|
||||
imageToPDF.selectText.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes)
|
||||
imageToPDF.selectText.4=Unir en un único archivo PDF
|
||||
@@ -710,8 +733,8 @@ addPassword.selectText.11=Impedir modificación de anotaciones
|
||||
addPassword.selectText.12=Impedir imprimir
|
||||
addPassword.selectText.13=Impedir imprimir diferentes formatos
|
||||
addPassword.selectText.14=Contraseña
|
||||
addPassword.selectText.15=Restringe qué se puede hacer con el documento una vez abierto (no soportado por todos los lectores)
|
||||
addPassword.selectText.16=Restringe la apertura del propio documento
|
||||
addPassword.selectText.15=Restringir qué se puede hacer con el documento una vez abierto (no soportado por todos los lectores)
|
||||
addPassword.selectText.16=Restringir la apertura del propio documento
|
||||
addPassword.submit=Encriptar
|
||||
|
||||
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF a XML
|
||||
PDFToXML.header=PDF a XML
|
||||
PDFToXML.credit=Este servicio utiliza LibreOffice para la conversión de archivos
|
||||
PDFToXML.submit=Convertir
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF a CSV
|
||||
PDFToCSV.header=PDF a CSV
|
||||
PDFToCSV.prompt=Elija una página para extraer la tabla
|
||||
PDFToCSV.submit=Extraer
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Gorde Erabiltzailea
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Zure leihatila bakarra autoostatatua zure PDF behar guztietarako
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=Erabilera anitzeko tresna PDF
|
||||
home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Idatzi
|
||||
home.autoRedact.desc=Auto Idatzi testua pdf fitxategian sarrerako testuan oinarritua
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Hodia
|
||||
pageLayout.title=Hainbat orrialderen diseinua
|
||||
pageLayout.header=Hainbat orrialderen diseinua
|
||||
pageLayout.pagesPerSheet=Orrialdeak orriko:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Entregatu
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Antolatu orrialdeak
|
||||
multiTool.title=PDF erabilera anitzeko tresna
|
||||
multiTool.header=PDF erabilera anitzeko tresna
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Orrialdeen ezabatzailea
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDFa XML bihurtu
|
||||
PDFToXML.header=PDFa XML bihurtu
|
||||
PDFToXML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko
|
||||
PDFToXML.submit=Bihurtu
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF a CSV
|
||||
PDFToCSV.header=PDF a CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extracto
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
###########
|
||||
# Generic #
|
||||
###########
|
||||
# the direction that the language is written (ltr = left to right, rtl = right to left)
|
||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||
language.direction=ltr
|
||||
|
||||
pdfPrompt=Sélectionnez le(s) PDF
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Ajouter
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Votre application Web hébergée localement pour répondre à tous vos besoins PDF.
|
||||
home.searchBar=Rechercher des fonctionnalités...
|
||||
|
||||
|
||||
home.viewPdf.title=Visionner le PDF
|
||||
home.viewPdf.desc=Visionner, annoter, ajouter du texte ou des images
|
||||
viewPdf.tags=visualiser,lire,annoter,texte,image
|
||||
|
||||
home.multiTool.title=Outil multifonction PDF
|
||||
home.multiTool.desc=Fusionnez, faites pivoter, réorganisez et supprimez des pages.
|
||||
multiTool.tags=outil multifonction,opération multifonction,interface utilisateur,glisser déposer,front-end,client side,interactif,intransigeant,déplacer,multi tool
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Caviarder automatiquement
|
||||
home.autoRedact.desc=Caviardez automatiquement les informations sensibles d\u2019un PDF.
|
||||
showJS.tags=caviarder,redact,auto
|
||||
|
||||
home.tableExtraxt.title=PDF en CSV
|
||||
home.tableExtraxt.desc=Extrait les tableaux d\u2019un PDF et les transforme en CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Séparer automatiquement par taille/nombre
|
||||
home.autoSizeSplitPDF.desc=Séparer un PDF unique en plusieurs documents en fonction de la taille, du nombre de pages ou du nombre de documents.
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Incrustation de PDF
|
||||
home.overlay-pdfs.desc=Incrustation d\u2019un PDF sur un autre PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -430,7 +453,7 @@ addPageNumbers.selectText.5=Pages à numéroter
|
||||
addPageNumbers.selectText.6=Texte personnalisé
|
||||
addPageNumbers.customTextDesc=Texte personnalisé
|
||||
addPageNumbers.numberPagesDesc=Quelles pages numéroter, par défaut 'all' (toutes les pages), accepte également 1-5 ou 2,5,9, etc.
|
||||
addPageNumbers.customNumberDesc=La valeur par défaut est '{n}', accepte également 'Page {n} sur {total}', 'Texte-{n}', '{filename}-{n}
|
||||
addPageNumbers.customNumberDesc=La valeur par défaut est '{n}', accepte également 'Page {n} sur {total}', 'Texte-{n}', '{filename}-{n}'
|
||||
addPageNumbers.submit=Ajouter les numéros de page
|
||||
|
||||
|
||||
@@ -558,7 +581,7 @@ ScannerImageSplit.selectText.8=Définit la surface de contour minimale pour une
|
||||
ScannerImageSplit.selectText.9=Taille de la bordure
|
||||
ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut\u00a0: 1).
|
||||
|
||||
|
||||
|
||||
#OCR
|
||||
ocr.title=OCR / Nettoyage des numérisations
|
||||
ocr.header=OCR (Reconnaissance optique de caractères) / Nettoyage des numérisations
|
||||
@@ -632,6 +655,9 @@ pdfOrganiser.submit=Organiser
|
||||
multiTool.title=Outil multifonction PDF
|
||||
multiTool.header=Outil multifonction PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Supprimer des pages
|
||||
@@ -674,8 +700,8 @@ imageToPDF.selectText.2=Rotation automatique du PDF
|
||||
imageToPDF.selectText.3=Logique multi-fichiers (uniquement activée si vous travaillez avec plusieurs images)
|
||||
imageToPDF.selectText.4=Fusionner en un seul PDF
|
||||
imageToPDF.selectText.5=Convertir en PDF séparés
|
||||
|
||||
|
||||
|
||||
|
||||
#pdfToImage
|
||||
pdfToImage.title=Image en PDF
|
||||
pdfToImage.header=Image en PDF
|
||||
@@ -815,3 +841,45 @@ PDFToXML.title=PDF en XML
|
||||
PDFToXML.header=PDF en XML
|
||||
PDFToXML.credit=Ce service utilise LibreOffice pour la conversion de fichiers.
|
||||
PDFToXML.submit=Convertir
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF en CSV
|
||||
PDFToCSV.header=PDF en CSV
|
||||
PDFToCSV.prompt=Choisir la page pour en extraire le tableau
|
||||
PDFToCSV.submit=Extrait
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Séparer le PDF par taille ou par nombre
|
||||
split-by-size-or-count.type.label=Sélectionner le type de division
|
||||
split-by-size-or-count.type.size=Par taille
|
||||
split-by-size-or-count.type.pageCount=Par nombre de pages
|
||||
split-by-size-or-count.type.docCount=Par nombre de documents
|
||||
split-by-size-or-count.value.label=Entrer la valeur
|
||||
split-by-size-or-count.value.placeholder=Saisir la taille (par exemple, 2MB ou 3KB) ou le nombre (par exemple, 5)
|
||||
split-by-size-or-count.submit=Séparer
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Sélectionner le fichier PDF de base
|
||||
overlay-pdfs.overlayFiles.label=Sélectionner les fichiers PDF à superposer
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Superposition à répétition fixe
|
||||
overlay-pdfs.counts.label=Nombre de superpositions (pour le mode de répétition fixe)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Premier plan
|
||||
overlay-pdfs.position.background=Arrière-plan
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Diviser le PDF en sections
|
||||
split-by-sections.header=Diviser le PDF en sections
|
||||
split-by-sections.horizontal.label=Divisions horizontales
|
||||
split-by-sections.vertical.label=Divisions verticales
|
||||
split-by-sections.horizontal.placeholder=Saisir le nombre de divisions horizontales
|
||||
split-by-sections.vertical.placeholder=Entrer le nombre de divisions verticales
|
||||
split-by-sections.submit=Diviser le PDF
|
||||
|
||||
@@ -43,11 +43,11 @@ green=Verde
|
||||
blue=Blu
|
||||
custom=Personalizzato
|
||||
|
||||
changedCredsMessage=Credentials changed!
|
||||
notAuthenticatedMessage=User not authenticated.
|
||||
userNotFoundMessage=User not found.
|
||||
incorrectPasswordMessage=Current password is incorrect.
|
||||
usernameExistsMessage=New Username already exists.
|
||||
changedCredsMessage=Credenziali cambiate!
|
||||
notAuthenticatedMessage=Utente non autenticato.
|
||||
userNotFoundMessage=Utente non trovato.
|
||||
incorrectPasswordMessage=La password attuale non è corretta.
|
||||
usernameExistsMessage=Il nuovo nome utente esiste già.
|
||||
|
||||
|
||||
|
||||
@@ -77,14 +77,14 @@ settings.accountSettings=Impostazioni Account
|
||||
|
||||
|
||||
|
||||
changeCreds.title=Change Credentials
|
||||
changeCreds.header=Update Your Account Details
|
||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
||||
changeCreds.newUsername=New Username
|
||||
changeCreds.oldPassword=Current Password
|
||||
changeCreds.newPassword=New Password
|
||||
changeCreds.confirmNewPassword=Confirm New Password
|
||||
changeCreds.submit=Submit Changes
|
||||
changeCreds.title=Cambia credenziali
|
||||
changeCreds.header=Aggiorna i dettagli del tuo account
|
||||
changeCreds.changeUserAndPassword=Stai utilizzando le credenziali di accesso predefinite. Inserisci una nuova password (e un nome utente se lo desideri)
|
||||
changeCreds.newUsername=Nuovo nome utente
|
||||
changeCreds.oldPassword=Password attuale
|
||||
changeCreds.newPassword=Nuova Password
|
||||
changeCreds.confirmNewPassword=Conferma Nuova Password
|
||||
changeCreds.submit=Invia modifiche
|
||||
|
||||
|
||||
|
||||
@@ -119,18 +119,23 @@ adminUserSettings.role=Ruolo
|
||||
adminUserSettings.actions=Azioni
|
||||
adminUserSettings.apiUser=Utente API limitato
|
||||
adminUserSettings.webOnlyUser=Utente solo Web
|
||||
adminUserSettings.forceChange=Force user to change username/password on login
|
||||
adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso
|
||||
adminUserSettings.submit=Salva utente
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=La tua pagina self-hostata per gestire qualsiasi PDF.
|
||||
home.searchBar=Cerca funzionalità...
|
||||
|
||||
|
||||
home.viewPdf.title=Visualizza PDF
|
||||
home.viewPdf.desc=Visualizza, annota, aggiungi testo o immagini
|
||||
viewPdf.tags=visualizzare,leggere,annotare,testo,immagine
|
||||
|
||||
home.multiTool.title=Multifunzione PDF
|
||||
home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine
|
||||
multiTool.tags=Strumento multiplo, operazione multipla, interfaccia utente, trascinamento clic, front-end, lato client
|
||||
multiTool.tags=Strumento multiplo,operazione multipla,interfaccia utente,trascinamento clic,front-end,lato client
|
||||
|
||||
home.merge.title=Unisci
|
||||
home.merge.desc=Unisci facilmente più PDF in uno.
|
||||
@@ -138,7 +143,7 @@ merge.tags=unione, operazioni sulla pagina, back end, lato server
|
||||
|
||||
home.split.title=Dividi
|
||||
home.split.desc=Dividi un singolo PDF in più documenti.
|
||||
split.tags=Operazioni sulla pagina, divisione, multi pagina, taglio, lato server
|
||||
split.tags=Operazioni sulla pagina,divisione,multi pagina,taglio,lato server
|
||||
|
||||
home.rotate.title=Ruota
|
||||
home.rotate.desc=Ruota un PDF.
|
||||
@@ -155,7 +160,7 @@ pdfToImage.tags=conversione,img,jpg,immagine,foto
|
||||
|
||||
home.pdfOrganiser.title=Organizza
|
||||
home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine.
|
||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||
pdfOrganiser.tags=duplex,pari,dispari,ordinamento,spostamento
|
||||
|
||||
|
||||
home.addImage.title=Aggiungi Immagine
|
||||
@@ -164,41 +169,41 @@ addImage.tags=img,jpg,picture,photo
|
||||
|
||||
home.watermark.title=Aggiungi Filigrana
|
||||
home.watermark.desc=Aggiungi una filigrana al tuo PDF.
|
||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||
watermark.tags=Testo,ripetizione,etichetta,proprio,copyright,marchio,img,jpg,immagine,foto
|
||||
|
||||
home.permissions.title=Cambia Permessi
|
||||
home.permissions.desc=Cambia i permessi del tuo PDF.
|
||||
permissions.tags=read,write,edit,print
|
||||
permissions.tags=leggere,scrivere,modificare,stampare
|
||||
|
||||
|
||||
home.removePages.title=Rimuovi
|
||||
home.removePages.desc=Elimina alcune pagine dal PDF.
|
||||
removePages.tags=Remove pages,delete pages
|
||||
removePages.tags=Rimuovere pagine,eliminare pagine
|
||||
|
||||
home.addPassword.title=Aggiungi Password
|
||||
home.addPassword.desc=Crittografa il tuo PDF con una password.
|
||||
addPassword.tags=secure,security
|
||||
addPassword.tags=sicuro,sicurezza
|
||||
|
||||
home.removePassword.title=Rimuovi Password
|
||||
home.removePassword.desc=Rimuovi la password dal tuo PDF.
|
||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||
removePassword.tags=Decriptare,proteggere,rimuovere la password,eliminare la password
|
||||
|
||||
home.compressPdfs.title=Comprimi
|
||||
home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni.
|
||||
compressPdfs.tags=squish,small,tiny
|
||||
compressPdfs.tags=comprimere,piccolo,minuscolo
|
||||
|
||||
|
||||
home.changeMetadata.title=Modifica Proprietà
|
||||
home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento PDF.
|
||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||
changeMetadata.tags==Titolo,autore,data,creazione,ora,editore,produttore,statistiche
|
||||
|
||||
home.fileToPDF.title=Converti file in PDF
|
||||
home.fileToPDF.desc=Converti quasi ogni file in PDF (DOCX, PNG, XLS, PPT, TXT e altro)
|
||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||
fileToPDF.tags=trasformazione,formato,documento,immagine,diapositiva,testo,conversione,ufficio,documenti,parola,excel,powerpoint
|
||||
|
||||
home.ocr.title=OCR / Pulisci scansioni
|
||||
home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro.
|
||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||
ocr.tags=riconoscimento,testo,immagine,scansione,lettura,identificazione,rilevamento,modificabile
|
||||
|
||||
|
||||
home.extractImages.title=Estrai immagini
|
||||
@@ -207,120 +212,120 @@ extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||
|
||||
home.pdfToPDFA.title=Converti in PDF/A
|
||||
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine.
|
||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||
pdfToPDFA.tags=archivio,a lungo termine,standard,conversione,archiviazione,conservazione
|
||||
|
||||
home.PDFToWord.title=Da PDF a Word
|
||||
home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT)
|
||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||
PDFToWord.tags=doc,docx,odt,word,trasformazione,formato,conversione,office,microsoft,filedoc
|
||||
|
||||
home.PDFToPresentation.title=Da PDF a presentazioni
|
||||
home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP)
|
||||
PDFToPresentation.tags=slides,show,office,microsoft
|
||||
PDFToPresentation.tags=diapositive,mostra,office,microsoft
|
||||
|
||||
home.PDFToText.title=Da PDF a testo/RTF
|
||||
home.PDFToText.desc=Converti un PDF in testo o RTF.
|
||||
PDFToText.tags=richformat,richtextformat,rich text format
|
||||
PDFToText.tags=Microsoft Rich Format,formato Rich Text,formato Rich Text
|
||||
|
||||
home.PDFToHTML.title=Da PDF ad HTML
|
||||
home.PDFToHTML.desc=Converti un PDF in HTML.
|
||||
PDFToHTML.tags=web content,browser friendly
|
||||
PDFToHTML.tags=contenuto web,facile da usare per il browser
|
||||
|
||||
|
||||
home.PDFToXML.title=Da PDF a XML
|
||||
home.PDFToXML.desc=Converti un PDF in XML.
|
||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||
PDFToXML.tags=estrazione dati,contenuto strutturato,interoperabilità,trasformazione,conversione
|
||||
|
||||
home.ScannerImageSplit.title=Trova/Dividi foto scansionate
|
||||
home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF.
|
||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||
ScannerImageSplit.tags=separa,rileva automaticamente,scansiona,multi-foto,organizza
|
||||
|
||||
home.sign.title=Firma
|
||||
home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine.
|
||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||
sign.tags=autorizza,iniziali,firma-tracciata,segno-testo,firma-immagine
|
||||
|
||||
home.flatten.title=Appiattisci
|
||||
home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF.
|
||||
flatten.tags=static,deactivate,non-interactive,streamline
|
||||
flatten.tags=statico,disattivato,non interattivo,ottimizzato
|
||||
|
||||
home.repair.title=Ripara
|
||||
home.repair.desc=Prova a riparare un PDF corrotto.
|
||||
repair.tags=fix,restore,correction,recover
|
||||
repair.tags=aggiustare,ripristinare,correggere,recuperare
|
||||
|
||||
home.removeBlanks.title=Rimuovi pagine vuote
|
||||
home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF.
|
||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||
removeBlanks.tags=pulire,semplificare,non contenere contenuti,organizzare
|
||||
|
||||
home.compare.title=Compara
|
||||
home.compare.desc=Vedi e compara le differenze tra due PDF.
|
||||
compare.tags=differentiate,contrast,changes,analysis
|
||||
compare.tags=differenziare,contrastare,cambiare,analisi
|
||||
|
||||
home.certSign.title=Firma con certificato
|
||||
home.certSign.desc=Firma un PDF con un certificato/chiave (PEM/P12)
|
||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||
certSign.tags=autenticare,PEM,P12,ufficiale,crittografare
|
||||
|
||||
home.pageLayout.title=Layout multipagina
|
||||
home.pageLayout.desc=Unisci più pagine di un documento PDF in un'unica pagina
|
||||
pageLayout.tags=merge,composite,single-view,organize
|
||||
pageLayout.tags=unire,comporre,visualizzazione singola,organizzare
|
||||
|
||||
home.scalePages.title=Regola le dimensioni/scala della pagina
|
||||
home.scalePages.desc=Modificare le dimensioni/scala della pagina e/o dei suoi contenuti.
|
||||
scalePages.tags=resize,modify,dimension,adapt
|
||||
scalePages.tags=ridimensionare,modificare,dimensionare,adattare
|
||||
|
||||
home.pipeline.title=Pipeline (avanzato)
|
||||
home.pipeline.desc=Esegui più azioni sui PDF definendo script di pipeline
|
||||
pipeline.tags=automate,sequence,scripted,batch-process
|
||||
pipeline.tags=automatizzare,sequenziare,scriptare,elaborare in batch
|
||||
|
||||
home.add-page-numbers.title=Aggiungi numeri di pagina
|
||||
home.add-page-numbers.desc=Aggiungi numeri di pagina in tutto un documento in una posizione prestabilita
|
||||
add-page-numbers.tags=paginate,label,organize,index
|
||||
add-page-numbers.tags=impaginare,etichettare,organizzare,indicizzare
|
||||
|
||||
home.auto-rename.title=Rinomina automaticamente il file PDF
|
||||
home.auto-rename.desc=Rinomina automaticamente un file PDF in base all'intestazione rilevata
|
||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||
auto-rename.tags=arilevamento automatico,basato su intestazione,organizzazione,rietichettatura
|
||||
|
||||
home.adjust-contrast.title=Regola colori/contrasto
|
||||
home.adjust-contrast.desc=Regola contrasto, saturazione e luminosità di un PDF
|
||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||
adjust-contrast.tags=correzione del colore,messa a punto,modifica,miglioramento
|
||||
|
||||
home.crop.title=Ritaglia PDF
|
||||
home.crop.desc=Ritaglia un PDF per ridurne le dimensioni (mantiene il testo!)
|
||||
crop.tags=trim,shrink,edit,shape
|
||||
crop.tags=tagliare,ridurre,modificare,modellare
|
||||
|
||||
home.autoSplitPDF.title=Pagine divise automaticamente
|
||||
home.autoSplitPDF.desc=Dividi automaticamente il PDF scansionato con il codice QR dello divisore di pagina fisico scansionato
|
||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||
autoSplitPDF.tags=Basato su QR,separato,scansiona segmenti,organizza
|
||||
|
||||
home.sanitizePdf.title=Igienizzare
|
||||
home.sanitizePdf.desc=Rimuovi script e altri elementi dai file PDF
|
||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||
sanitizePdf.tags=pulire,proteggere,rimuovere le minacce
|
||||
|
||||
home.URLToPDF.title=URL/sito Web in PDF
|
||||
home.URLToPDF.desc=Converte qualsiasi URL http(s) in PDF
|
||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||
URLToPDF.tags=acquisizione web,salvataggio pagina,web-to-doc,archivio
|
||||
|
||||
home.HTMLToPDF.title=Da HTML a PDF
|
||||
home.HTMLToPDF.desc=Converte qualsiasi file HTML o zip in PDF
|
||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||
HTMLToPDF.tags=markup,contenuto web,trasformazione,conversione
|
||||
|
||||
|
||||
home.MarkdownToPDF.title=Markdown in PDF
|
||||
home.MarkdownToPDF.desc=Converte qualsiasi file Markdown in PDF
|
||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||
MarkdownToPDF.tags=markup,contenuto web,trasformazione,conversione
|
||||
|
||||
|
||||
home.getPdfInfo.title=Ottieni TUTTE le informazioni in PDF
|
||||
home.getPdfInfo.desc=Raccogli tutte le informazioni possibili sui PDF
|
||||
getPdfInfo.tags=infomation,data,stats,statistics
|
||||
getPdfInfo.tags=informazioni,dati,stati,statistiche
|
||||
|
||||
|
||||
home.extractPage.title=Estrai pagina/e
|
||||
home.extractPage.desc=Estrae le pagine selezionate dal PDF
|
||||
extractPage.tags=extract
|
||||
extractPage.tags=estrarre
|
||||
|
||||
|
||||
home.PdfToSinglePage.title=PDF in un'unica pagina di grandi dimensioni
|
||||
home.PdfToSinglePage.desc=Unisce tutte le pagine PDF in un'unica grande pagina
|
||||
PdfToSinglePage.tags=single page
|
||||
PdfToSinglePage.tags=pagina singola
|
||||
|
||||
|
||||
home.showJS.title=Mostra Javascript
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Redazione automatica
|
||||
home.autoRedact.desc=Redige automaticamente (oscura) il testo in un PDF in base al testo immesso
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -429,8 +452,8 @@ addPageNumbers.selectText.4=Numero di partenza
|
||||
addPageNumbers.selectText.5=Pagine da numerare
|
||||
addPageNumbers.selectText.6=Testo personalizzato
|
||||
addPageNumbers.customTextDesc=Testo personalizzato
|
||||
addPageNumbers.numberPagesDesc=Quali pagine numerare, impostazione predefinita "tutte", accetta anche 1-5 o 2,5,9 ecc
|
||||
addPageNumbers.customNumberDesc=Il valore predefinito è {n}, accetta anche 'Pagina {n} di {totale}', 'Testo-{n}', '{nomefile}-{n}
|
||||
addPageNumbers.numberPagesDesc=Quali pagine numerare, impostazione predefinita "all", accetta anche 1-5 o 2,5,9 ecc
|
||||
addPageNumbers.customNumberDesc=Il valore predefinito è {n}, accetta anche 'Pagina {n} di {total}', 'Testo-{n}', '{filename}-{n}
|
||||
addPageNumbers.submit=Aggiungi numeri di pagina
|
||||
|
||||
|
||||
@@ -478,10 +501,7 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Layout multipagina
|
||||
pageLayout.header=Layout multipagina
|
||||
pageLayout.pagesPerSheet=Pagine per foglio:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.addBorder=Aggiungi bordi
|
||||
pageLayout.submit=Invia
|
||||
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Riordina pagine
|
||||
multiTool.title=Multifunzione PDF
|
||||
multiTool.header=Multifunzione PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=Visualizza PDF
|
||||
viewPdf.header=Visualizza PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Rimuovi pagine
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=Da PDF a XML
|
||||
PDFToXML.header=Da PDF a XML
|
||||
PDFToXML.credit=Questo servizio utilizza LibreOffice per la conversione.
|
||||
PDFToXML.submit=Converti
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=Da PDF a CSV
|
||||
PDFToCSV.header=Da PDF a CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Estratto
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -43,11 +43,11 @@ green=緑
|
||||
blue=青
|
||||
custom=カスタム...
|
||||
|
||||
changedCredsMessage=Credentials changed!
|
||||
notAuthenticatedMessage=User not authenticated.
|
||||
userNotFoundMessage=User not found.
|
||||
incorrectPasswordMessage=Current password is incorrect.
|
||||
usernameExistsMessage=New Username already exists.
|
||||
changedCredsMessage=資格情報が変更されました!
|
||||
notAuthenticatedMessage=ユーザーが認証されていません。
|
||||
userNotFoundMessage=ユーザーが見つかりません。
|
||||
incorrectPasswordMessage=現在のパスワードが正しくありません。
|
||||
usernameExistsMessage=新しいユーザー名はすでに存在します。
|
||||
|
||||
|
||||
|
||||
@@ -77,14 +77,14 @@ settings.accountSettings=アカウント設定
|
||||
|
||||
|
||||
|
||||
changeCreds.title=Change Credentials
|
||||
changeCreds.header=Update Your Account Details
|
||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
||||
changeCreds.newUsername=New Username
|
||||
changeCreds.oldPassword=Current Password
|
||||
changeCreds.newPassword=New Password
|
||||
changeCreds.confirmNewPassword=Confirm New Password
|
||||
changeCreds.submit=Submit Changes
|
||||
changeCreds.title=資格情報の変更
|
||||
changeCreds.header=アカウントの詳細を更新する
|
||||
changeCreds.changeUserAndPassword=デフォルトのログイン認証情報を使用しています。新しいパスワード (必要に応じてユーザー名も) を入力してください
|
||||
changeCreds.newUsername=新しいユーザー名
|
||||
changeCreds.oldPassword=現在のパスワード
|
||||
changeCreds.newPassword=新しいパスワード
|
||||
changeCreds.confirmNewPassword=新しいパスワードの確認
|
||||
changeCreds.submit=変更を送信
|
||||
|
||||
|
||||
|
||||
@@ -119,15 +119,20 @@ adminUserSettings.role=役割
|
||||
adminUserSettings.actions=アクション
|
||||
adminUserSettings.apiUser=限定されたAPIユーザー
|
||||
adminUserSettings.webOnlyUser=ウェブ専用ユーザー
|
||||
adminUserSettings.forceChange=Force user to change username/password on login
|
||||
adminUserSettings.forceChange=ログイン時にユーザー名/パスワードを強制的に変更する
|
||||
adminUserSettings.submit=ユーザーの保存
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=PDFのあらゆるニーズに対応するローカルホスティングされた総合窓口です。
|
||||
home.searchBar=機能検索...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=表示、注釈、テキストや画像の追加
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDFマルチツール
|
||||
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=自動塗りつぶし
|
||||
home.autoRedact.desc=入力したテキストに基づいてPDF内のテキストを自動で塗りつぶし(黒塗り)します。
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=パイプライン
|
||||
pageLayout.title=マルチページレイアウト
|
||||
pageLayout.header=マルチページレイアウト
|
||||
pageLayout.pagesPerSheet=1枚あたりのページ数:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=送信
|
||||
|
||||
@@ -495,7 +515,7 @@ scalePages.submit=送信
|
||||
|
||||
#certSign
|
||||
certSign.title=証明書による署名
|
||||
certSign.header=証明書を使用してPDFに署名します。 (進行中)
|
||||
certSign.header=証明書を使用してPDFに署名します。 (制作中)
|
||||
certSign.selectPDF=署名するPDFファイルを選択:
|
||||
certSign.selectKey=秘密キーファイルを選択 (PKCS#8形式、.pemまたは.der) :
|
||||
certSign.selectCert=証明書ファイルを選択 (X.509形式、.pemまたは.der) :
|
||||
@@ -620,8 +640,8 @@ addImage.submit=画像の追加
|
||||
#merge
|
||||
merge.title=結合
|
||||
merge.header=複数のPDFを結合 (2ファイル以上)
|
||||
merge.sortByName=Sort by name
|
||||
merge.sortByDate=Sort by date
|
||||
merge.sortByName=名前で並べ替え
|
||||
merge.sortByDate=日付で並べ替え
|
||||
merge.submit=結合
|
||||
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=ページの整理
|
||||
multiTool.title=PDFマルチツール
|
||||
multiTool.header=PDFマルチツール
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=ページ削除
|
||||
@@ -669,10 +692,10 @@ split.submit=分割
|
||||
imageToPDF.title=画像をPDFに変換
|
||||
imageToPDF.header=画像をPDFに変換
|
||||
imageToPDF.submit=変換
|
||||
imageToPDF.selectLabel=Image Fit Options
|
||||
imageToPDF.fillPage=Fill Page
|
||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||
imageToPDF.selectLabel=画像フィットオプション
|
||||
imageToPDF.fillPage=フルページ
|
||||
imageToPDF.fitDocumentToImage=ページを画像に合わせる
|
||||
imageToPDF.maintainAspectRatio=アスペクト比を維持する
|
||||
imageToPDF.selectText.2=PDFの自動回転
|
||||
imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります)
|
||||
imageToPDF.selectText.4=1つのPDFに結合
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDFをXMLに変換
|
||||
PDFToXML.header=PDFをXMLに変換
|
||||
PDFToXML.credit=本サービスはファイル変換にLibreOfficeを使用しています。
|
||||
PDFToXML.submit=変換
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF??CSV?
|
||||
PDFToCSV.header=PDF??CSV?
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=????
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||
language.direction=ltr
|
||||
|
||||
pdfPrompt=PDF 선택
|
||||
multiPdfPrompt=PDF 선택(2개 이상)
|
||||
multiPdfDropPrompt=사용할 모든 PDF를 선택(또는 드래그 앤 드롭)하세요
|
||||
pdfPrompt=PDF 파일 선택
|
||||
multiPdfPrompt=여러 PDF 파일 선택
|
||||
multiPdfDropPrompt=사용할 모든 PDF 문서를 선택(또는 드래그 앤 드롭)합니다
|
||||
imgPrompt=이미지 선택
|
||||
genericSubmit=제출
|
||||
genericSubmit=확인
|
||||
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
|
||||
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
|
||||
goToPage=이동
|
||||
@@ -30,11 +30,11 @@ sizes.small=Small
|
||||
sizes.medium=Medium
|
||||
sizes.large=Large
|
||||
sizes.x-large=X-Large
|
||||
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect
|
||||
delete=Delete
|
||||
username=Username
|
||||
password=Password
|
||||
welcome=Welcome
|
||||
error.pdfPassword=이 PDF는 비밀번호로 보호되어 있으며, 비밀번호를 입력하지 않았거나, 입력된 비밀번호가 올바르지 않습니다.
|
||||
delete=삭제
|
||||
username=사용자명
|
||||
password=비밀번호
|
||||
welcome=환영합니다.
|
||||
property=Property
|
||||
black=Black
|
||||
white=White
|
||||
@@ -43,11 +43,11 @@ green=Green
|
||||
blue=Blue
|
||||
custom=Custom...
|
||||
|
||||
changedCredsMessage=Credentials changed!
|
||||
changedCredsMessage=계정 정보 변경 성공!
|
||||
notAuthenticatedMessage=User not authenticated.
|
||||
userNotFoundMessage=User not found.
|
||||
incorrectPasswordMessage=Current password is incorrect.
|
||||
usernameExistsMessage=New Username already exists.
|
||||
userNotFoundMessage=사용자를 찾을 수 없습니다.
|
||||
incorrectPasswordMessage=현재 비밀번호가 틀립니다.
|
||||
usernameExistsMessage=새 사용자명이 이미 존재합니다.
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ navbar.convert=변환
|
||||
navbar.security=보안
|
||||
navbar.other=기타
|
||||
navbar.darkmode=다크 모드
|
||||
navbar.pageOps=Page Operations
|
||||
navbar.pageOps=페이지 편집
|
||||
navbar.settings=설정
|
||||
|
||||
#############
|
||||
@@ -72,132 +72,137 @@ settings.downloadOption.1=현재 창에서 열기
|
||||
settings.downloadOption.2=새 창에서 열기
|
||||
settings.downloadOption.3=다운로드
|
||||
settings.zipThreshold=다운로드한 파일 수가 초과된 경우 파일 압축하기
|
||||
settings.signOut=Sign Out
|
||||
settings.accountSettings=Account Settings
|
||||
settings.signOut=로그아웃
|
||||
settings.accountSettings=계정 설정
|
||||
|
||||
|
||||
|
||||
changeCreds.title=Change Credentials
|
||||
changeCreds.header=Update Your Account Details
|
||||
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted)
|
||||
changeCreds.newUsername=New Username
|
||||
changeCreds.oldPassword=Current Password
|
||||
changeCreds.newPassword=New Password
|
||||
changeCreds.confirmNewPassword=Confirm New Password
|
||||
changeCreds.submit=Submit Changes
|
||||
changeCreds.title=계정 정보 변경
|
||||
changeCreds.header=계정 정보 업데이트
|
||||
changeCreds.changeUserAndPassword=기본 제공된 로그인 정보를 사용하고 있습니다. 새 비밀번호를 입력합니다. (필요하다면 사용자명을 변경할 수 있습니다.)
|
||||
changeCreds.newUsername=새 사용자명
|
||||
changeCreds.oldPassword=현재 비밀번호
|
||||
changeCreds.newPassword=새 비밀번호
|
||||
changeCreds.confirmNewPassword=새 비밀번호 확인
|
||||
changeCreds.submit=변경
|
||||
|
||||
|
||||
|
||||
account.title=Account Settings
|
||||
account.accountSettings=Account Settings
|
||||
account.adminSettings=Admin Settings - View and Add Users
|
||||
account.title=계정 설정
|
||||
account.accountSettings=계정 설정
|
||||
account.adminSettings=관리자 설정 - 사용자 추가 및 확인
|
||||
account.userControlSettings=User Control Settings
|
||||
account.changeUsername=Change Username
|
||||
account.changeUsername=Change Username
|
||||
account.changeUsername=사용자명 변경
|
||||
account.changeUsername=사용자명 변경
|
||||
account.password=Confirmation Password
|
||||
account.oldPassword=Old password
|
||||
account.newPassword=New Password
|
||||
account.changePassword=Change Password
|
||||
account.confirmNewPassword=Confirm New Password
|
||||
account.signOut=Sign Out
|
||||
account.yourApiKey=Your API Key
|
||||
account.oldPassword=이전 비밀번호
|
||||
account.newPassword=새 비밀번호
|
||||
account.changePassword=비밀번호 변경
|
||||
account.confirmNewPassword=새 비밀번호 확인
|
||||
account.signOut=로그아웃
|
||||
account.yourApiKey=API 키
|
||||
account.syncTitle=Sync browser settings with Account
|
||||
account.settingsCompare=Settings Comparison:
|
||||
account.property=Property
|
||||
account.webBrowserSettings=Web Browser Setting
|
||||
account.syncToBrowser=Sync Account -> Browser
|
||||
account.syncToAccount=Sync Account <- Browser
|
||||
account.syncToBrowser=계정 -> 브라우저로 동기화
|
||||
account.syncToAccount=브라우저 -> 계정으로 동기화
|
||||
|
||||
|
||||
adminUserSettings.title=User Control Settings
|
||||
adminUserSettings.header=Admin User Control Settings
|
||||
adminUserSettings.admin=Admin
|
||||
adminUserSettings.user=User
|
||||
adminUserSettings.addUser=Add New User
|
||||
adminUserSettings.roles=Roles
|
||||
adminUserSettings.role=Role
|
||||
adminUserSettings.actions=Actions
|
||||
adminUserSettings.apiUser=Limited API User
|
||||
adminUserSettings.webOnlyUser=Web Only User
|
||||
adminUserSettings.forceChange=Force user to change username/password on login
|
||||
adminUserSettings.submit=Save User
|
||||
adminUserSettings.title=사용자 설정
|
||||
adminUserSettings.header=사용자 관리
|
||||
adminUserSettings.admin=관리자
|
||||
adminUserSettings.user=사용자
|
||||
adminUserSettings.addUser=새 사용자 추가
|
||||
adminUserSettings.roles=역할
|
||||
adminUserSettings.role=역할
|
||||
adminUserSettings.actions=동작
|
||||
adminUserSettings.apiUser=제한된 API 사용
|
||||
adminUserSettings.webOnlyUser=웹 사용만 허용
|
||||
adminUserSettings.forceChange=다음 로그인 때 사용자명과 비밀번호를 변경하도록 강제
|
||||
adminUserSettings.submit=사용자 저장
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=당신의 PDF에 필요한 모든 것이 있는 로컬 호스팅된 원스톱 숍입니다.
|
||||
home.desc=당신의 PDF에 필요한 모든 것이 있는 로컬 호스팅된 원스톱 솔루션입니다.
|
||||
home.searchBar=기능 검색...
|
||||
|
||||
|
||||
home.viewPdf.title=PDF 뷰어
|
||||
home.viewPdf.desc=PDF 문서을 보고 주석을 달거나, 텍스트 또는 이미지를 추가합니다.
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF 멀티 툴
|
||||
home.multiTool.desc=페이지를 병합, 회전, 재배열, 제거하세요.
|
||||
home.multiTool.desc=PDF 문서의 페이지를 병합, 회전, 재배열, 제거합니다.
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
|
||||
home.merge.title=병합
|
||||
home.merge.desc=여러 개의 PDF를 쉽게 하나로 합치세요.
|
||||
home.merge.desc=여러 개의 PDF 문서을 쉽게 하나로 합칩니다.
|
||||
merge.tags=merge,Page operations,Back end,server side
|
||||
|
||||
home.split.title=분할
|
||||
home.split.desc=PDF를 여러 개의 문서로 분할하세요.
|
||||
home.split.desc=하나의 PDF 문서을 여러 개의 PDF 문서로 분할합니다.
|
||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||
|
||||
home.rotate.title=회전
|
||||
home.rotate.desc=PDF를 쉽게 회전하세요.
|
||||
home.rotate.desc=PDF 페이지를 회전합니다.
|
||||
rotate.tags=server side
|
||||
|
||||
|
||||
home.imageToPdf.title=Image to PDF
|
||||
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요.
|
||||
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF 문서로 변환합니다.
|
||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||
|
||||
home.pdfToImage.title=PDF to Image
|
||||
home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요.
|
||||
home.pdfToImage.desc=PDF 문서을 이미지(PNG, JPEG, GIF)로 변환합니다.
|
||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||
|
||||
home.pdfOrganiser.title=정렬
|
||||
home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요.
|
||||
home.pdfOrganiser.desc=PDF 문서의 각 페이지를 원하는 순서대로 재배열하거나 제거합니다.
|
||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||
|
||||
|
||||
home.addImage.title=사진 추가
|
||||
home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중)
|
||||
home.addImage.desc=PDF 문서의 설정된 위치에 이미지를 추가합니다. (개발 중)
|
||||
addImage.tags=img,jpg,picture,photo
|
||||
|
||||
home.watermark.title=워터마크 추가
|
||||
home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요.
|
||||
home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가합니다.
|
||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||
|
||||
home.permissions.title=권한 변경
|
||||
home.permissions.desc=PDF 문서의 권한을 변경하세요.
|
||||
home.permissions.desc=PDF 문서의 권한을 변경합니다.
|
||||
permissions.tags=read,write,edit,print
|
||||
|
||||
|
||||
home.removePages.title=제거
|
||||
home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요.
|
||||
home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거합니다.
|
||||
removePages.tags=Remove pages,delete pages
|
||||
|
||||
home.addPassword.title=비밀번호 추가
|
||||
home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요.
|
||||
home.addPassword.title=암호 추가
|
||||
home.addPassword.desc=PDF 문서를 비밀번호로 암호화합니다.
|
||||
addPassword.tags=secure,security
|
||||
|
||||
home.removePassword.title=비밀번호 제거
|
||||
home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요.
|
||||
home.removePassword.desc=PDF 문서에서 비밀번호를 제거합니다.
|
||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||
|
||||
home.compressPdfs.title=압축
|
||||
home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요.
|
||||
home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축합니다.
|
||||
compressPdfs.tags=squish,small,tiny
|
||||
|
||||
|
||||
home.changeMetadata.title=메타데이터 변경
|
||||
home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요.
|
||||
home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가합니다.
|
||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||
|
||||
home.fileToPDF.title=파일을 PDF로 변환
|
||||
home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등)
|
||||
home.fileToPDF.desc=거의 모든 파일을 PDF로 변환합니다(DOCX, PNG, XLS, PPT, TXT 등)
|
||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||
|
||||
home.ocr.title=OCR / 깔끔하게 스캔
|
||||
home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다.
|
||||
home.ocr.desc=깔끔하게 스캔한 뒤, PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다.
|
||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||
|
||||
|
||||
@@ -206,48 +211,48 @@ home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저
|
||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||
|
||||
home.pdfToPDFA.title=PDF to PDF/A
|
||||
home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요.
|
||||
home.pdfToPDFA.desc=장기 보관을 위해 PDF 문서를 PDF/A 문서로 변환합니다.
|
||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||
|
||||
home.PDFToWord.title=PDF to Word
|
||||
home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT)
|
||||
home.PDFToWord.desc=PDF 문서를 Word 형식으로 변환합니다. (DOC, DOCX, ODT)
|
||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||
|
||||
home.PDFToPresentation.title=PDF to 프리젠테이션
|
||||
home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP)
|
||||
home.PDFToPresentation.title=PDF to Presentation
|
||||
home.PDFToPresentation.desc=PDF 문서를 프리젠테이션 형식으로 변환합니다. (PPT, PPTX, ODP)
|
||||
PDFToPresentation.tags=slides,show,office,microsoft
|
||||
|
||||
home.PDFToText.title=PDF to 텍스트/RTF
|
||||
home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요.
|
||||
home.PDFToText.desc=PDF 문서를 텍스트 또는 RTF 형식으로 변환합니다.
|
||||
PDFToText.tags=richformat,richtextformat,rich text format
|
||||
|
||||
home.PDFToHTML.title=PDF to HTML
|
||||
home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요.
|
||||
home.PDFToHTML.desc=PDF 문서를 HTML 형식으로 변환합니다.
|
||||
PDFToHTML.tags=web content,browser friendly
|
||||
|
||||
|
||||
home.PDFToXML.title=PDF to XML
|
||||
home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요.
|
||||
home.PDFToXML.desc=PDF 문서를 XML 형식으로 변환합니다.
|
||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||
|
||||
home.ScannerImageSplit.title=스캔한 사진 감지/분할
|
||||
home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다.
|
||||
home.ScannerImageSplit.desc=스캔된 PDF 문서 내에서 여러 장의 사진을 분할합니다.
|
||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||
|
||||
home.sign.title=서명
|
||||
home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다.
|
||||
home.sign.desc=PDF 문서에 그림, 텍스트, 이미지로 서명을 추가합니다.
|
||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||
|
||||
home.flatten.title=합치기
|
||||
home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요.
|
||||
home.flatten.title=평탄화
|
||||
home.flatten.desc=PDF 문서에서 모든 상호작용 요소와 양식을 제거합니다.
|
||||
flatten.tags=static,deactivate,non-interactive,streamline
|
||||
|
||||
home.repair.title=복구
|
||||
home.repair.desc=손상된 PDF의 복구를 시도합니다.
|
||||
home.repair.desc=손상된 PDF 문서의 복구를 시도합니다.
|
||||
repair.tags=fix,restore,correction,recover
|
||||
|
||||
home.removeBlanks.title=빈 페이지 제거
|
||||
home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다.
|
||||
home.removeBlanks.desc=PDF 문서에서 빈 페이지를 감지하고 제거합니다.
|
||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||
|
||||
home.compare.title=비교
|
||||
@@ -255,253 +260,268 @@ home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다.
|
||||
compare.tags=differentiate,contrast,changes,analysis
|
||||
|
||||
home.certSign.title=인증서로 서명
|
||||
home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12)
|
||||
home.certSign.desc=PDF 문서에 인증서 또는 키로 서명합니다. (PEM/P12)
|
||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||
|
||||
home.pageLayout.title=Multi-Page Layout
|
||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||
home.pageLayout.title=다중 페이지 레이아웃
|
||||
home.pageLayout.desc=PDF 문서의 여러 페이지를 한 페이지로 합칩니다.
|
||||
pageLayout.tags=merge,composite,single-view,organize
|
||||
|
||||
home.scalePages.title=Adjust page size/scale
|
||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||
home.scalePages.title=페이지 크기 및 배율 조정
|
||||
home.scalePages.desc=페이지 및 그 페이지 내용의 크기와 배율을 조정합니다.
|
||||
scalePages.tags=resize,modify,dimension,adapt
|
||||
|
||||
home.pipeline.title=Pipeline (Advanced)
|
||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||
home.pipeline.title=파이프라인 (고급 기능)
|
||||
home.pipeline.desc=파이프라인 스크립트를 사용해서 PDF 문서에 여러 동작을 수행합니다.
|
||||
pipeline.tags=automate,sequence,scripted,batch-process
|
||||
|
||||
home.add-page-numbers.title=Add Page Numbers
|
||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||
home.add-page-numbers.title=페이지 번호 추가
|
||||
home.add-page-numbers.desc=PDF 문서의 페이지마다, 설정한 위치에 페이지 번호를 삽입합니다.
|
||||
add-page-numbers.tags=paginate,label,organize,index
|
||||
|
||||
home.auto-rename.title=Auto Rename PDF File
|
||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||
home.auto-rename.title=자동 이름 변경
|
||||
home.auto-rename.desc=제목을 감지하여 자동으로 PDF 문서의 파일 이름을 변경합니다.
|
||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||
|
||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||
home.adjust-contrast.title=색상/대비 조정
|
||||
home.adjust-contrast.desc=PDF 문서의 대비, 채도, 밝기를 조정합니다.
|
||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||
|
||||
home.crop.title=Crop PDF
|
||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||
home.crop.title=PDF 잘라내기
|
||||
home.crop.desc=PDF 문서를 잘라내서 크기를 줄입니다. (텍스트가 그대로 유지됩니다!)
|
||||
crop.tags=trim,shrink,edit,shape
|
||||
|
||||
home.autoSplitPDF.title=Auto Split Pages
|
||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||
home.autoSplitPDF.title=자동 문서 나누기
|
||||
home.autoSplitPDF.desc=구분용 QR코드가 들어있는 페이지를 경계로 하여, 스캔된 PDF 문서를 자동으로 나눕니다.
|
||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||
|
||||
home.sanitizePdf.title=Sanitize
|
||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||
home.sanitizePdf.title=정제
|
||||
home.sanitizePdf.desc=PDF 문서에서 스크립트와 같은 요소들을 제거합니다.
|
||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||
|
||||
home.URLToPDF.title=URL/Website To PDF
|
||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||
home.URLToPDF.desc=http(s) 웹사이트를 PDF 문서로 변환합니다.
|
||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||
|
||||
home.HTMLToPDF.title=HTML to PDF
|
||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||
home.HTMLToPDF.desc=HTML 파일, 또는 ZIP 파일을 PDF로 변환합니다.
|
||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||
|
||||
|
||||
home.MarkdownToPDF.title=Markdown to PDF
|
||||
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||
home.MarkdownToPDF.desc=마크다운 파일을 PDF 문서로 변환합니다.
|
||||
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||
|
||||
|
||||
home.getPdfInfo.title=Get ALL Info on PDF
|
||||
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||
home.getPdfInfo.title=PDF 정보 읽기
|
||||
home.getPdfInfo.desc=PDF 문서의 가능한 모든 정보를 읽습니다.
|
||||
getPdfInfo.tags=infomation,data,stats,statistics
|
||||
|
||||
|
||||
home.extractPage.title=Extract page(s)
|
||||
home.extractPage.desc=Extracts select pages from PDF
|
||||
home.extractPage.title=페이지 추출
|
||||
home.extractPage.desc=PDF 문서에서 선택한 페이지를 추출합니다.
|
||||
extractPage.tags=extract
|
||||
|
||||
|
||||
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||
home.PdfToSinglePage.title=단일 페이지로 통합
|
||||
home.PdfToSinglePage.desc=PDF 문서의 모든 페이지를 하나의 큰 단일 페이지로 합칩니다.
|
||||
PdfToSinglePage.tags=single page
|
||||
|
||||
|
||||
home.showJS.title=Show Javascript
|
||||
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||
home.showJS.title=JavaScript 보기
|
||||
home.showJS.desc=PDF 문서에 포함되어 있는 JavaScript를 찾아 보여줍니다.
|
||||
showJS.tags=JS
|
||||
|
||||
home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
home.autoRedact.title=자동 검열
|
||||
home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
# #
|
||||
###########################
|
||||
#login
|
||||
login.title=Sign in
|
||||
login.signin=Sign in
|
||||
login.rememberme=Remember me
|
||||
login.invalid=Invalid username or password.
|
||||
login.locked=Your account has been locked.
|
||||
login.signinTitle=Please sign in
|
||||
login.title=로그인
|
||||
login.signin=로그인
|
||||
login.rememberme=로그인 유지
|
||||
login.invalid=사용자 이름이나 비밀번호가 틀립니다.
|
||||
login.locked=계정이 잠겼습니다.
|
||||
login.signinTitle=로그인해 주세요.
|
||||
|
||||
|
||||
#auto-redact
|
||||
autoRedact.title=Auto Redact
|
||||
autoRedact.header=Auto Redact
|
||||
autoRedact.colorLabel=Colour
|
||||
autoRedact.textsToRedactLabel=Text to Redact (line-separated)
|
||||
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret
|
||||
autoRedact.useRegexLabel=Use Regex
|
||||
autoRedact.wholeWordSearchLabel=Whole Word Search
|
||||
autoRedact.customPaddingLabel=Custom Extra Padding
|
||||
autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box)
|
||||
autoRedact.submitButton=Submit
|
||||
autoRedact.title=자동 검열
|
||||
autoRedact.header=자동 검열
|
||||
autoRedact.colorLabel=색상
|
||||
autoRedact.textsToRedactLabel=검열할 텍스트 (줄바꿈으로 구분)
|
||||
autoRedact.textsToRedactPlaceholder=예: \n비밀 \n일급 기밀
|
||||
autoRedact.useRegexLabel=정규표현식 사용
|
||||
autoRedact.wholeWordSearchLabel=전체 단어 일치
|
||||
autoRedact.customPaddingLabel=추가 윤곽(패딩)
|
||||
autoRedact.convertPDFToImageLabel=PDF 문서의 내용을 이미지로 변환 (검열 박스 뒤의 텍스트를 제거하는 데 사용됩니다.)
|
||||
autoRedact.submitButton=적용
|
||||
|
||||
|
||||
#showJS
|
||||
showJS.title=Show Javascript
|
||||
showJS.header=Show Javascript
|
||||
showJS.downloadJS=Download Javascript
|
||||
showJS.submit=Show
|
||||
showJS.title=JavaScript 보기
|
||||
showJS.header=JavaScript 보기
|
||||
showJS.downloadJS=Javascript 다운로드
|
||||
showJS.submit=제출
|
||||
|
||||
|
||||
#pdfToSinglePage
|
||||
pdfToSinglePage.title=PDF To Single Page
|
||||
pdfToSinglePage.header=PDF To Single Page
|
||||
pdfToSinglePage.submit=Convert To Single Page
|
||||
pdfToSinglePage.title=단일 페이지로 통합
|
||||
pdfToSinglePage.header=단일 페이지로 합치기
|
||||
pdfToSinglePage.submit=단일 페이지로 통합
|
||||
|
||||
|
||||
#pageExtracter
|
||||
pageExtracter.title=Extract Pages
|
||||
pageExtracter.header=Extract Pages
|
||||
pageExtracter.submit=Extract
|
||||
pageExtracter.title=페이지 추출
|
||||
pageExtracter.header=페이지 추출
|
||||
pageExtracter.submit=추출
|
||||
|
||||
|
||||
#getPdfInfo
|
||||
getPdfInfo.title=Get Info on PDF
|
||||
getPdfInfo.header=Get Info on PDF
|
||||
getPdfInfo.submit=Get Info
|
||||
getPdfInfo.downloadJson=Download JSON
|
||||
getPdfInfo.title=PDF 정보 읽기
|
||||
getPdfInfo.header=PDF 정보 읽기
|
||||
getPdfInfo.submit=정보 읽기
|
||||
getPdfInfo.downloadJson=JSON으로 다운로드
|
||||
|
||||
|
||||
#markdown-to-pdf
|
||||
MarkdownToPDF.title=Markdown To PDF
|
||||
MarkdownToPDF.header=Markdown To PDF
|
||||
MarkdownToPDF.submit=Convert
|
||||
MarkdownToPDF.help=Work in progress
|
||||
MarkdownToPDF.credit=Uses WeasyPrint
|
||||
MarkdownToPDF.header=Markdown 문서를 PDF 문서로 변환
|
||||
MarkdownToPDF.submit=변환
|
||||
MarkdownToPDF.help=변환중
|
||||
MarkdownToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
||||
|
||||
|
||||
|
||||
#url-to-pdf
|
||||
URLToPDF.title=URL To PDF
|
||||
URLToPDF.header=URL To PDF
|
||||
URLToPDF.submit=Convert
|
||||
URLToPDF.credit=Uses WeasyPrint
|
||||
URLToPDF.header=URL을 PDF 문서로 변환
|
||||
URLToPDF.submit=변환
|
||||
URLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
||||
|
||||
|
||||
#html-to-pdf
|
||||
HTMLToPDF.title=HTML To PDF
|
||||
HTMLToPDF.header=HTML To PDF
|
||||
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required
|
||||
HTMLToPDF.submit=Convert
|
||||
HTMLToPDF.credit=Uses WeasyPrint
|
||||
HTMLToPDF.header=HTML 파일을 PDF 문서로 변환
|
||||
HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다.
|
||||
HTMLToPDF.submit=변환
|
||||
HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
|
||||
|
||||
|
||||
#sanitizePDF
|
||||
sanitizePDF.title=Sanitize PDF
|
||||
sanitizePDF.header=Sanitize a PDF file
|
||||
sanitizePDF.selectText.1=Remove JavaScript actions
|
||||
sanitizePDF.selectText.2=Remove embedded files
|
||||
sanitizePDF.selectText.3=Remove metadata
|
||||
sanitizePDF.selectText.4=Remove links
|
||||
sanitizePDF.selectText.5=Remove fonts
|
||||
sanitizePDF.submit=Sanitize PDF
|
||||
sanitizePDF.title=PDF 정제
|
||||
sanitizePDF.header=PDF 문서 정제
|
||||
sanitizePDF.selectText.1=JavaScript 동작 제거
|
||||
sanitizePDF.selectText.2=임베딩된 파일 제거
|
||||
sanitizePDF.selectText.3=메타데이터 제거
|
||||
sanitizePDF.selectText.4=링크 제거
|
||||
sanitizePDF.selectText.5=폰트 제거
|
||||
sanitizePDF.submit=정제
|
||||
|
||||
|
||||
#addPageNumbers
|
||||
addPageNumbers.title=Add Page Numbers
|
||||
addPageNumbers.header=Add Page Numbers
|
||||
addPageNumbers.selectText.1=Select PDF file:
|
||||
addPageNumbers.selectText.2=Margin Size
|
||||
addPageNumbers.selectText.3=Position
|
||||
addPageNumbers.selectText.4=Starting Number
|
||||
addPageNumbers.selectText.5=Pages to Number
|
||||
addPageNumbers.selectText.6=Custom Text
|
||||
addPageNumbers.customTextDesc=Custom Text
|
||||
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc
|
||||
addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}
|
||||
addPageNumbers.submit=Add Page Numbers
|
||||
addPageNumbers.title=페이지 번호 추가
|
||||
addPageNumbers.header=페이지 번호 추가
|
||||
addPageNumbers.selectText.1=PDF 파일 선택
|
||||
addPageNumbers.selectText.2=여백 크기
|
||||
addPageNumbers.selectText.3=위치
|
||||
addPageNumbers.selectText.4=시작 번호
|
||||
addPageNumbers.selectText.5=번호를 넣을 페이지
|
||||
addPageNumbers.selectText.6=사용자 지정 형식
|
||||
addPageNumbers.customTextDesc=사용자 지정 형식
|
||||
addPageNumbers.numberPagesDesc=번호를 넣을 페이지. 기본값 'all'. 1-5, 2,5,9등도 유효합니다.
|
||||
addPageNumbers.customNumberDesc=기본값 {n}, 다음도 유효합니다: 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}'
|
||||
addPageNumbers.submit=페이지 번호 추가
|
||||
|
||||
|
||||
#auto-rename
|
||||
auto-rename.title=Auto Rename
|
||||
auto-rename.header=Auto Rename PDF
|
||||
auto-rename.submit=Auto Rename
|
||||
auto-rename.title=자동 이름 변경
|
||||
auto-rename.header=PDF 문서 자동 이름 변경
|
||||
auto-rename.submit=이름 변경
|
||||
|
||||
|
||||
#adjustContrast
|
||||
adjustContrast.title=Adjust Contrast
|
||||
adjustContrast.header=Adjust Contrast
|
||||
adjustContrast.contrast=Contrast:
|
||||
adjustContrast.brightness=Brightness:
|
||||
adjustContrast.saturation=Saturation:
|
||||
adjustContrast.download=Download
|
||||
adjustContrast.title=대비 조절
|
||||
adjustContrast.header=대비 조절
|
||||
adjustContrast.contrast=대비:
|
||||
adjustContrast.brightness=밝기:
|
||||
adjustContrast.saturation=채도:
|
||||
adjustContrast.download=다운로드
|
||||
|
||||
|
||||
#crop
|
||||
crop.title=Crop
|
||||
crop.header=Crop Image
|
||||
crop.submit=Submit
|
||||
crop.title=잘라내기
|
||||
crop.header=잘라내기
|
||||
crop.submit=확인
|
||||
|
||||
|
||||
#autoSplitPDF
|
||||
autoSplitPDF.title=Auto Split PDF
|
||||
autoSplitPDF.header=Auto Split PDF
|
||||
autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.
|
||||
autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine).
|
||||
autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them.
|
||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
|
||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
||||
autoSplitPDF.submit=Submit
|
||||
autoSplitPDF.title=자동 문서 나누기
|
||||
autoSplitPDF.header=자동 문서 나누기
|
||||
autoSplitPDF.description=인쇄된 문서에 구분 페이지를 넣고 스캔하여 업로드하세요. 자동으로 문서를 나누어 드립니다. 수동으로 일일이 작업할 필요가 없습니다.
|
||||
autoSplitPDF.selectText.1=아래에서 구분 페이지를 인쇄하세요. (흑백이어도 상관 없습니다.)
|
||||
autoSplitPDF.selectText.2=문서를 나눌 곳에 구분 페이지를 넣고, 모든 문서를 한꺼번에 스캔하세요.
|
||||
autoSplitPDF.selectText.3=스캔된 문서를 Stirling PDF에 업로드하면, Stirling PDF가 알아서 문서를 나눕니다.
|
||||
autoSplitPDF.selectText.4=구분 페이지는 자동으로 감지 및 제거되므로, 깔끔한 결과물을 얻을 수 있습니다.
|
||||
autoSplitPDF.formPrompt=Stirling-PDF 구분 페이지가 있는 PDF 파일 업로드:
|
||||
autoSplitPDF.duplexMode=양면 모드 (앞뒷면 스캐닝)
|
||||
autoSplitPDF.dividerDownload1=PDF 구분 페이지 다운로드
|
||||
autoSplitPDF.dividerDownload2=설명을 포함한 PDF 구분 페이지 다운로드
|
||||
autoSplitPDF.submit=나누기
|
||||
|
||||
|
||||
#pipeline
|
||||
pipeline.title=Pipeline
|
||||
pipeline.title=파이프라인
|
||||
|
||||
|
||||
#pageLayout
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
pageLayout.title=다중 페이지 레이아웃
|
||||
pageLayout.header=다중 페이지 레이아웃
|
||||
pageLayout.pagesPerSheet=1장에 들어갈 페이지 수:
|
||||
pageLayout.addBorder=외곽선 추가
|
||||
pageLayout.submit=확인
|
||||
|
||||
|
||||
#scalePages
|
||||
scalePages.title=Adjust page-scale
|
||||
scalePages.header=Adjust page-scale
|
||||
scalePages.pageSize=Size of a page of the document.
|
||||
scalePages.scaleFactor=Zoom level (crop) of a page.
|
||||
scalePages.submit=Submit
|
||||
scalePages.title=페이지 배율 조절
|
||||
scalePages.header=페이지 배율 조절
|
||||
scalePages.pageSize=페이지의 크기를 조절합니다.
|
||||
scalePages.scaleFactor=페이지 배율 조절 (잘라내기)
|
||||
scalePages.submit=제출
|
||||
|
||||
|
||||
#certSign
|
||||
certSign.title=인증서로 서명
|
||||
certSign.header=PDF에 당신의 인증서로 서명하세요 (개발 중)
|
||||
certSign.selectPDF=서명할 PDF를 선택하세요:
|
||||
certSign.selectKey=개인 키 파일을 선택하세요 (PKCS#8 형식, .pem 또는 .der):
|
||||
certSign.selectCert=인증서 파일을 선택하세요 (X.509 형식, .pem 또는 .der):
|
||||
certSign.selectP12=PKCS#12 키 저장소 파일을 선택하세요 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다):
|
||||
certSign.header=인증서로 PDF 문서에 서명 (개발 중)
|
||||
certSign.selectPDF=서명할 PDF 문서를 선택합니다:
|
||||
certSign.selectKey=개인 키 파일을 선택합니다 (PKCS#8 형식, .pem 또는 .der):
|
||||
certSign.selectCert=인증서 파일을 선택합니다 (X.509 형식, .pem 또는 .der):
|
||||
certSign.selectP12=PKCS#12 키 저장소 파일을 선택합니다 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다):
|
||||
certSign.certType=인증서 유형
|
||||
certSign.password=키 저장소 또는 개인 키 비밀번호를 입력하세요 (있는 경우):
|
||||
certSign.password=키 저장소 또는 개인 키 비밀번호를 입력합니다 (있는 경우):
|
||||
certSign.showSig=서명 보기
|
||||
certSign.reason=이유
|
||||
certSign.location=위치
|
||||
@@ -521,7 +541,7 @@ removeBlanks.submit=빈 페이지 제거
|
||||
|
||||
#compare
|
||||
compare.title=비교
|
||||
compare.header=PDF 비교
|
||||
compare.header=PDF 문서 비교
|
||||
compare.document.1=문서 1
|
||||
compare.document.2=문서 2
|
||||
compare.submit=비교
|
||||
@@ -544,9 +564,9 @@ repair.submit=복구
|
||||
|
||||
|
||||
#flatten
|
||||
flatten.title=합치기
|
||||
flatten.header=PDF 합치기
|
||||
flatten.submit=합치기
|
||||
flatten.title=평탄화
|
||||
flatten.header=PDF 문서의 레이어 평탄화
|
||||
flatten.submit=평탄화
|
||||
|
||||
|
||||
#ScannerImageSplit
|
||||
@@ -564,7 +584,7 @@ ScannerImageSplit.selectText.10=출력에서 흰색 테두리를 방지하기
|
||||
|
||||
#OCR
|
||||
ocr.title=OCR / 깔끔하게 스캔
|
||||
ocr.header=깔끔하게 스캔 / OCR (광학 문자 인식)
|
||||
ocr.header=OCR (광학 문자 인식) / 깔끔하게 스캔
|
||||
ocr.selectText.1=PDF에서 감지할 언어를 선택하십시오 (현재 감지된 언어 목록):
|
||||
ocr.selectText.2=OCR 텍스트가 포함된 텍스트 파일을 OCR 처리된 PDF와 함께 생성
|
||||
ocr.selectText.3=비뚤어진 각도로 스캔한 페이지를 다시 제자리로 돌려 올바른 페이지로 스캔
|
||||
@@ -577,34 +597,34 @@ ocr.selectText.9=추가 설정
|
||||
ocr.selectText.10=OCR 모드
|
||||
ocr.selectText.11=OCR 후 이미지 제거(모든 이미지 제거, 변환 단계의 일부인 경우에만 유용)
|
||||
ocr.selectText.12=렌더 유형(고급)
|
||||
ocr.help=다른 언어 또는 Docker에 포함되지 않은 언어에 대해 사용하는 방법에 대해서는 이 문서를 참조하세요.
|
||||
ocr.help=다른 언어 또는 Docker에 포함되지 않은 언어에 대해 사용하는 방법에 대해서는 이 문서를 참조합니다.
|
||||
ocr.credit=이 서비스는 OCR에 OCRmyPDF와 Tesseract를 사용합니다.
|
||||
ocr.submit=OCR로 PDF 처리
|
||||
ocr.submit=인식
|
||||
|
||||
|
||||
#extractImages
|
||||
extractImages.title=이미지 추출
|
||||
extractImages.header=이미지 추출
|
||||
extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택하세요.
|
||||
extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택합니다.
|
||||
extractImages.submit=추출
|
||||
|
||||
|
||||
#File to PDF
|
||||
fileToPDF.title=File to PDF
|
||||
fileToPDF.header=모든 파일을 PDF로 변환
|
||||
fileToPDF.header=다양한 파일을 PDF로 변환
|
||||
fileToPDF.credit=이 서비스는 파일 변환에 LibreOffice와 Unoconv를 사용합니다.
|
||||
fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같지만, 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조하세요.
|
||||
fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같습니다. 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조합니다.
|
||||
fileToPDF.submit=PDF로 변환
|
||||
|
||||
|
||||
#compress
|
||||
compress.title=압축
|
||||
compress.header=PDF 압축
|
||||
compress.credit=이 서비스는 PDF 압축/최적화를 위해 Ghostscript를 사용합니다.
|
||||
compress.credit=이 서비스는 PDF 압축 및 최적화를 위해 Ghostscript를 사용합니다.
|
||||
compress.selectText.1=수동 모드 - 1에서 4
|
||||
compress.selectText.2=최적화 수준:
|
||||
compress.selectText.3=4 (텍스트 이미지에 적합하지 않음)
|
||||
compress.selectText.4=자동 - 정확한 크기의 PDF를 얻기 위해 품질 자동 조정
|
||||
compress.selectText.4=자동 - 정확한 크기의 PDF 문서를 얻기 위해 품질 자동 조정
|
||||
compress.selectText.5=예상 PDF 크기 (예: 25MB, 10.8MB, 25KB)
|
||||
compress.submit=압축
|
||||
|
||||
@@ -626,19 +646,22 @@ merge.submit=병합
|
||||
|
||||
|
||||
#pdfOrganiser
|
||||
pdfOrganiser.title=페이지 정렬 도구
|
||||
pdfOrganiser.title=페이지 정렬
|
||||
pdfOrganiser.header=PDF 페이지 정렬
|
||||
pdfOrganiser.submit=페이지 재정렬
|
||||
|
||||
|
||||
#multiTool
|
||||
multiTool.title=PDF 멀티 툴
|
||||
multiTool.header=PDF 멀티 툴
|
||||
multiTool.title=PDF 멀티툴
|
||||
multiTool.header=PDF 멀티툴
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=PDF 뷰어
|
||||
viewPdf.header=PDF 뷰어
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=페이지 제거 도구
|
||||
pageRemover.header=PDF 페이지 제거 도구
|
||||
pageRemover.title=페이지 제거
|
||||
pageRemover.header=PDF 페이지 제거
|
||||
pageRemover.pagesToDelete=제거할 페이지 (쉼표로 구분된 페이지 번호 입력):
|
||||
pageRemover.submit=페이지 제거
|
||||
|
||||
@@ -653,8 +676,8 @@ rotate.submit=회전
|
||||
#merge
|
||||
split.title=PDF 분할
|
||||
split.header=PDF 분할
|
||||
split.desc.1=선택한 번호는 분할할 페이지 번호입니다.
|
||||
split.desc.2=예를 들어, 1,3,7-8을 선택하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF로 분할하게 됩니다.
|
||||
split.desc.1=입력한 번호는 분할할 페이지의 번호입니다.
|
||||
split.desc.2=예를 들어, 1,3,7-8을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
|
||||
split.desc.3=문서 #1: 페이지 1
|
||||
split.desc.4=문서 #2: 페이지 2, 3
|
||||
split.desc.5=문서 #3: 페이지 4, 5, 6
|
||||
@@ -666,22 +689,22 @@ split.submit=분할
|
||||
|
||||
|
||||
#merge
|
||||
imageToPDF.title=이미지를 PDF로 변환
|
||||
imageToPDF.title=Image to PDF
|
||||
imageToPDF.header=이미지를 PDF로 변환
|
||||
imageToPDF.submit=변환하기
|
||||
imageToPDF.selectLabel=Image Fit Options
|
||||
imageToPDF.fillPage=Fill Page
|
||||
imageToPDF.fitDocumentToImage=Fit Page to Image
|
||||
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
|
||||
imageToPDF.submit=변환
|
||||
imageToPDF.selectLabel=이미지 맞춤 방법
|
||||
imageToPDF.fillPage=페이지 채우기
|
||||
imageToPDF.fitDocumentToImage=페이지를 이미지 크기에 맞게
|
||||
imageToPDF.maintainAspectRatio=가로/세로 비율 유지
|
||||
imageToPDF.selectText.2=PDF 자동 회전
|
||||
imageToPDF.selectText.3=다중 파일 로직 (여러 이미지로 작업하는 경우에만 활성화됨)
|
||||
imageToPDF.selectText.3=다중 파일 처리 방법 (여러 이미지로 작업하는 경우에만 활성화됨)
|
||||
imageToPDF.selectText.4=단일 PDF로 병합
|
||||
imageToPDF.selectText.5=별도의 PDF로 변환
|
||||
|
||||
|
||||
#pdfToImage
|
||||
pdfToImage.title=PDF를 이미지로 변환
|
||||
pdfToImage.header=PDF를 이미지로 변환
|
||||
pdfToImage.title=PDF to Image
|
||||
pdfToImage.header=PDF 문서를 이미지로 변환
|
||||
pdfToImage.selectText=이미지 형식
|
||||
pdfToImage.singleOrMultiple=이미지 결과 유형
|
||||
pdfToImage.single=단일 큰 이미지
|
||||
@@ -690,28 +713,28 @@ pdfToImage.colorType=색상 유형
|
||||
pdfToImage.color=컬러
|
||||
pdfToImage.grey=그레이스케일
|
||||
pdfToImage.blackwhite=흑백 (데이터 손실 가능성 있음!)
|
||||
pdfToImage.submit=변환하기
|
||||
pdfToImage.submit=변환
|
||||
|
||||
|
||||
#addPassword
|
||||
addPassword.title=암호 추가
|
||||
addPassword.header=암호 추가 (암호화)
|
||||
addPassword.selectText.1=암호화할 PDF 선택
|
||||
addPassword.selectText.1=암호화할 PDF 문서 선택
|
||||
addPassword.selectText.2=암호
|
||||
addPassword.selectText.3=암호화 키 길이
|
||||
addPassword.selectText.4=값이 높을수록 강력하지만, 값이 낮을수록 호환성이 더 좋습니다.
|
||||
addPassword.selectText.5=설정할 권한
|
||||
addPassword.selectText.6=문서 조립 방지
|
||||
addPassword.selectText.7=콘텐츠 추출 방지
|
||||
addPassword.selectText.6=문서 조합 방지 (다른 PDF 문서에 삽입 불가)
|
||||
addPassword.selectText.7=내용 추출 방지
|
||||
addPassword.selectText.8=접근성을 위한 추출 방지
|
||||
addPassword.selectText.9=양식 작성 방지
|
||||
addPassword.selectText.10=수정 방지
|
||||
addPassword.selectText.11=주석 수정 방지
|
||||
addPassword.selectText.12=인쇄 방지
|
||||
addPassword.selectText.13=다른 형식으로 인쇄 방<EFBFBD>
|
||||
addPassword.selectText.14=Owner Password
|
||||
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers)
|
||||
addPassword.selectText.16=Restricts the opening of the document itself<6C>
|
||||
addPassword.selectText.13=다른 형식으로 인쇄 방지
|
||||
addPassword.selectText.14=소유자 암호
|
||||
addPassword.selectText.15=문서를 연 다음 수행할 수 있는 동작을 방지합니다. (모든 뷰어에서 지원되지는 않습니다.)
|
||||
addPassword.selectText.16=문서를 열 수 없도록 방지합니다.
|
||||
addPassword.submit=암호화
|
||||
|
||||
|
||||
@@ -725,8 +748,8 @@ watermark.selectText.4=회전 각도 (0-360):
|
||||
watermark.selectText.5=가로 간격 (각 워터마크 사이의 가로 공간):
|
||||
watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간):
|
||||
watermark.selectText.7=투명도 (0% - 100%):
|
||||
watermark.selectText.8=Watermark Type:
|
||||
watermark.selectText.9=Watermark Image:
|
||||
watermark.selectText.8=워터마크 유형:
|
||||
watermark.selectText.9=워터마크 이미지:
|
||||
watermark.submit=워터마크 추가
|
||||
|
||||
|
||||
@@ -777,14 +800,14 @@ changeMetadata.submit=변경
|
||||
|
||||
#pdfToPDFA
|
||||
pdfToPDFA.title=PDF To PDF/A
|
||||
pdfToPDFA.header=PDF를 PDF/A로 변환
|
||||
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF를 사용합니다.
|
||||
pdfToPDFA.header=PDF 문서를 PDF/A로 변환
|
||||
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF 문서를 사용합니다.
|
||||
pdfToPDFA.submit=변환
|
||||
|
||||
|
||||
#PDFToWord
|
||||
PDFToWord.title=PDF to Word
|
||||
PDFToWord.header=PDF를 Word로 변환
|
||||
PDFToWord.header=PDF 문서를 Word 문서로 변환
|
||||
PDFToWord.selectText.1=출력 파일 형식
|
||||
PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||
PDFToWord.submit=변환
|
||||
@@ -792,15 +815,15 @@ PDFToWord.submit=변환
|
||||
|
||||
#PDFToPresentation
|
||||
PDFToPresentation.title=PDF to Presentation
|
||||
PDFToPresentation.header=PDF를 프레젠테이션으로 변환
|
||||
PDFToPresentation.header=PDF 문서를 프레젠테이션으로 변환
|
||||
PDFToPresentation.selectText.1=출력 파일 형식
|
||||
PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||
PDFToPresentation.submit=변환
|
||||
|
||||
|
||||
#PDFToText
|
||||
PDFToText.title=PDF to RTF (Text)
|
||||
PDFToText.header=PDF를 텍스트/RTF로 변환
|
||||
PDFToText.title=PDF to RTF
|
||||
PDFToText.header=PDF 문서를 RTF(서식 있는 텍스트 문서)로 변환
|
||||
PDFToText.selectText.1=출력 파일 형식
|
||||
PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||
PDFToText.submit=변환
|
||||
@@ -808,13 +831,55 @@ PDFToText.submit=변환
|
||||
|
||||
#PDFToHTML
|
||||
PDFToHTML.title=PDF to HTML
|
||||
PDFToHTML.header=PDF를 HTML로 변환
|
||||
PDFToHTML.header=PDF 문서를 HTML로 변환
|
||||
PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||
PDFToHTML.submit=변환
|
||||
|
||||
|
||||
#PDFToXML
|
||||
PDFToXML.title=PDF to XML
|
||||
PDFToXML.header=PDF를 XML로 변환
|
||||
PDFToXML.header=PDF 문서를 XML로 변환
|
||||
PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
|
||||
PDFToXML.submit=변환
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF? CSV?
|
||||
PDFToCSV.header=PDF? CSV?
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=??
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Sla gebruiker op
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Jouw lokaal gehoste one-stop-shop voor al je PDF-behoeften.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Multitool
|
||||
home.multiTool.desc=Samenvoegen, draaien, herschikken en pagina''s verwijderen
|
||||
multiTool.tags=Multitool,Multi bewerking,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pijplijn
|
||||
pageLayout.title=Meerdere pagina indeling
|
||||
pageLayout.header=Meerdere pagina indeling
|
||||
pageLayout.pagesPerSheet=Pagina''s per vel:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Indienen
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Pagina''s herschikken
|
||||
multiTool.title=PDF Multitool
|
||||
multiTool.header=PDF Multitool
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Pagina verwijderaar
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF naar XML
|
||||
PDFToXML.header=PDF naar XML
|
||||
PDFToXML.credit=Deze service gebruikt LibreOffice voor bestandsconversie.
|
||||
PDFToXML.submit=Converteren
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF naar CSV
|
||||
PDFToCSV.header=PDF naar CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extract
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=Multi narzędzie PDF
|
||||
home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Układ wielu stron
|
||||
pageLayout.header=Układ wielu stron
|
||||
pageLayout.pagesPerSheet=Stron na jednym arkuszu:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Wykonaj
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Zmień kolejność stron
|
||||
multiTool.title=Multi narzędzie PDF
|
||||
multiTool.header=Multi narzędzie PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Narzędzie do usuwania stron
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF na XML
|
||||
PDFToXML.header=PDF na XML
|
||||
PDFToXML.credit=Ta usługa używa LibreOffice do konwersji plików.
|
||||
PDFToXML.submit=Konwertuj
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF na CSV
|
||||
PDFToCSV.header=PDF na CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Wyci?g
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Seu melhor utilitário para suas necessidades de PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=Multiferramenta de PDF
|
||||
home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas
|
||||
multiTool.tags=Multi Ferramenta, Operação Múltipla, Interface do Usuário, Clique e Arraste, Front-end, Lado do Cliente
|
||||
@@ -478,9 +483,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Layout de Múltiplas Páginas
|
||||
pageLayout.header=Layout de Múltiplas Páginas
|
||||
pageLayout.pagesPerSheet=Páginas por folha:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Enviar
|
||||
|
||||
@@ -635,6 +637,9 @@ pdfOrganiser.submit=Reorganizar Páginas
|
||||
multiTool.title=Multiferramenta de PDF
|
||||
multiTool.header=Multiferramenta de PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Remover Página
|
||||
@@ -818,3 +823,8 @@ PDFToXML.title=PDF para XML
|
||||
PDFToXML.header=PDF para XML
|
||||
PDFToXML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos.
|
||||
PDFToXML.submit=Converter
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF para CSV
|
||||
PDFToCSV.header=PDF para CSV
|
||||
PDFToCSV.submit=Eztenna<EFBFBD>
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=Instrument multiplu PDF
|
||||
home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -478,9 +483,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
|
||||
@@ -635,6 +637,9 @@ pdfOrganiser.submit=Rearanjați paginile
|
||||
multiTool.title=Instrument PDF multiplu
|
||||
multiTool.header=Instrument PDF multiplu
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Înlăturare pagini
|
||||
@@ -818,3 +823,8 @@ PDFToXML.title=PDF către XML
|
||||
PDFToXML.header=PDF către XML
|
||||
PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului.
|
||||
PDFToXML.submit=Convert
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF în CSV
|
||||
PDFToCSV.header=PDF în CSV
|
||||
PDFToCSV.submit=Extrage
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=Мультиинструмент PDF
|
||||
home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -365,7 +388,6 @@ showJS.downloadJS=Скачать Javascript
|
||||
showJS.submit=Показать
|
||||
|
||||
|
||||
|
||||
#pdfToSinglePage
|
||||
pdfToSinglePage.title=PDF на одну страницу
|
||||
pdfToSinglePage.header=PDF на одну страницу
|
||||
@@ -480,11 +502,9 @@ pageLayout.title=Многостраничный макет
|
||||
pageLayout.header=Многостраничный макет
|
||||
pageLayout.pagesPerSheet=Страниц на одном листе:
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
pageLayout.submit=Отправить
|
||||
|
||||
|
||||
|
||||
#scalePages
|
||||
scalePages.title=Отрегулировать масштаб страницы
|
||||
scalePages.header=Отрегулировать масштаб страницы
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Переупорядочить страницы
|
||||
multiTool.title=Мультиинструмент PDF
|
||||
multiTool.header=Мультиинструмент PDF
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Удаление страниц
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF в XML
|
||||
PDFToXML.header=PDF в XML
|
||||
PDFToXML.credit=Этот сервис использует LibreOffice для преобразования файлов.
|
||||
PDFToXML.submit=Конвертировать
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF ? CSV
|
||||
PDFToCSV.header=PDF ? CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=???????
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Din lokala one-stop-shop för alla dina PDF-behov.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Multi-verktyg
|
||||
home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor
|
||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
||||
@@ -331,6 +336,24 @@ home.autoRedact.title=Auto Redact
|
||||
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
|
||||
showJS.tags=JS
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -478,9 +501,6 @@ pipeline.title=Pipeline
|
||||
pageLayout.title=Multi Page Layout
|
||||
pageLayout.header=Multi Page Layout
|
||||
pageLayout.pagesPerSheet=Pages per sheet:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=Add Borders
|
||||
pageLayout.submit=Submit
|
||||
|
||||
@@ -635,6 +655,9 @@ pdfOrganiser.submit=Ordna om sidor
|
||||
multiTool.title=PDF-multiverktyg
|
||||
multiTool.header=PDF Multi-verktyg
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Sidborttagare
|
||||
@@ -818,3 +841,45 @@ PDFToXML.title=PDF till XML
|
||||
PDFToXML.header=PDF till XML
|
||||
PDFToXML.credit=Denna tjänst använder LibreOffice för filkonvertering.
|
||||
PDFToXML.submit=Konvertera
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF till CSV
|
||||
PDFToCSV.header=PDF till CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Navvit
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
885
src/main/resources/messages_tr_TR.properties
Normal file
885
src/main/resources/messages_tr_TR.properties
Normal file
@@ -0,0 +1,885 @@
|
||||
###########
|
||||
# Generic #
|
||||
###########
|
||||
# the direction that the language is written (ltr=left to right, rtl = right to left)
|
||||
language.direction=ltr
|
||||
|
||||
pdfPrompt=PDF(leri) seçin
|
||||
multiPdfPrompt=PDF seçin (2+)
|
||||
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
||||
imgPrompt=Resim(leri) seçin
|
||||
genericSubmit=Gönder
|
||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||
goToPage=Git
|
||||
true=Doğru
|
||||
false=Yanlış
|
||||
unknown=Bilinmeyen
|
||||
save=Kaydet
|
||||
close=Kapat
|
||||
filesSelected=dosya seçildi
|
||||
noFavourites=Favori eklenmedi
|
||||
bored=Sıkıldınız mı?
|
||||
alphabet=Alfabe
|
||||
downloadPdf=PDF İndir
|
||||
text=Metin
|
||||
font=Yazı tipi
|
||||
selectFillter=-- Seçiniz --
|
||||
pageNum=Sayfa Numarası
|
||||
sizes.small=Küçük
|
||||
sizes.medium=Orta
|
||||
sizes.large=Büyük
|
||||
sizes.x-large=Çok Büyük
|
||||
error.pdfPassword=PDF belgesi şifreli ve şifre ya sağlanmadı ya da yanlış.
|
||||
delete=Sil
|
||||
username=Kullanıcı Adı
|
||||
password=Parola
|
||||
welcome=Hoş geldiniz
|
||||
property=Özellik
|
||||
black=Siyah
|
||||
white=Beyaz
|
||||
red=Kırmızı
|
||||
green=Yeşil
|
||||
blue=Mavi
|
||||
custom=Özel
|
||||
|
||||
changedCredsMessage=Bilgiler değiştirildi!
|
||||
notAuthenticatedMessage=Kullanıcı doğrulanmadı.
|
||||
userNotFoundMessage=Kullanıcı bulunamadı.
|
||||
incorrectPasswordMessage=Mevcut şifre yanlış.
|
||||
usernameExistsMessage=Yeni Kullanıcı Adı zaten var.
|
||||
|
||||
|
||||
|
||||
#############
|
||||
# NAVBAR #
|
||||
#############
|
||||
navbar.convert=Dönüştür
|
||||
navbar.security=Güvenlik
|
||||
navbar.other=Çeşitli
|
||||
navbar.darkmode=Karanlık Mod
|
||||
navbar.pageOps=Sayfa İşlemleri
|
||||
navbar.settings=Ayarlar
|
||||
|
||||
#############
|
||||
# SETTINGS #
|
||||
#############
|
||||
settings.title=Ayarlar
|
||||
settings.update=Güncelleme mevcut
|
||||
settings.appVersion=Uygulama Sürümü:
|
||||
settings.downloadOption.title=İndirme seçeneği seçin (Zip olmayan tek dosya indirmeler için):
|
||||
settings.downloadOption.1=Aynı pencerede aç
|
||||
settings.downloadOption.2=Yeni pencerede aç
|
||||
settings.downloadOption.3=Dosyayı indir
|
||||
settings.zipThreshold=İndirilen dosya sayısı şu değeri aştığında zip dosyası oluştur:
|
||||
settings.signOut=Oturumu Kapat
|
||||
settings.accountSettings=Hesap Ayarları
|
||||
|
||||
|
||||
|
||||
changeCreds.title=Giriş Bilgilerini Değiştir
|
||||
changeCreds.header=Hesap Detaylarınızı Güncelleyin
|
||||
changeCreds.changeUserAndPassword=Varsayılan giriş bilgilerini kullanıyorsunuz. Lütfen yeni bir şifre (ve istenirse kullanıcı adı) girin
|
||||
changeCreds.newUsername=Yeni Kullanıcı Adı
|
||||
changeCreds.oldPassword=Mevcut Şifre
|
||||
changeCreds.newPassword=Yeni Şifre
|
||||
changeCreds.confirmNewPassword=Yeni Şifreyi Onayla
|
||||
changeCreds.submit=Değişiklikleri Gönder
|
||||
|
||||
|
||||
|
||||
account.title=Hesap Ayarları
|
||||
account.accountSettings=Hesap Ayarları
|
||||
account.adminSettings=Yönetici Ayarları - Kullanıcıları Görüntüle ve Ekle
|
||||
account.userControlSettings=Kullanıcı Kontrol Ayarları
|
||||
account.changeUsername=Kullanıcı Adını Değiştir
|
||||
account.changeUsername=Kullanıcı Adını Değiştir
|
||||
account.password=Onay Şifresi
|
||||
account.oldPassword=Eski Şifre
|
||||
account.newPassword=Yeni Şifre
|
||||
account.changePassword=Şifreyi Değiştir
|
||||
account.confirmNewPassword=Yeni Şifreyi Onayla
|
||||
account.signOut=Çıkış Yap
|
||||
account.yourApiKey=API Anahtarınız
|
||||
account.syncTitle=Hesap Ayarları ile Tarayıcı Ayarlarını Eşitle
|
||||
account.settingsCompare=Ayar Karşılaştırması:
|
||||
account.property=Özellik
|
||||
account.webBrowserSettings=Web Tarayıcı Ayarı
|
||||
account.syncToBrowser=Hesaptan Tarayıcıya Eşitle
|
||||
account.syncToAccount=Tarayıcıdan Hesaba Eşitle
|
||||
|
||||
|
||||
adminUserSettings.title=Kullanıcı Kontrol Ayarları
|
||||
adminUserSettings.header=Yönetici Kullanıcı Kontrol Ayarları
|
||||
adminUserSettings.admin=Yönetici
|
||||
adminUserSettings.user=Kullanıcı
|
||||
adminUserSettings.addUser=Yeni Kullanıcı Ekle
|
||||
adminUserSettings.roles=Roller
|
||||
adminUserSettings.role=Rol
|
||||
adminUserSettings.actions=Eylemler
|
||||
adminUserSettings.apiUser=Sınırlı API Kullanıcısı
|
||||
adminUserSettings.webOnlyUser=Sadece Web Kullanıcısı
|
||||
adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla
|
||||
adminUserSettings.submit=Kullanıcıyı Kaydet
|
||||
|
||||
#############
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=Yerel olarak barındırılan tüm PDF ihtiyaçlarınız için tek durak noktanız.
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF Çoklu Araç
|
||||
home.multiTool.desc=Birleştir, Döndür, Yeniden Düzenle ve Sayfaları Kaldır
|
||||
multiTool.tags=Çoklu Araç,Çoklu işlem,Arayüz,tıklama sürükleme,ön uç,istemci tarafı,etkileşimli,taşınabilir,taşı
|
||||
|
||||
home.merge.title=Birleştir
|
||||
home.merge.desc=Çoklu PDF'leri tek bir dosyada kolayca birleştirin.
|
||||
merge.tags=birleştir,Sayfa işlemleri,Arka uç,sunucu tarafı
|
||||
|
||||
home.split.title=Ayır
|
||||
home.split.desc=PDF'leri birden fazla belgeye ayırın
|
||||
split.tags=Sayfa işlemleri,böl,Çoklu Sayfa,kes,sunucu tarafı
|
||||
|
||||
home.rotate.title=Döndür
|
||||
home.rotate.desc=PDF'lerinizi kolayca döndürün.
|
||||
rotate.tags=sunucu tarafı
|
||||
|
||||
|
||||
home.imageToPdf.title=Resimden PDF'e
|
||||
home.imageToPdf.desc=Bir resmi (PNG, JPEG, GIF) PDF'e dönüştürün.
|
||||
imageToPdf.tags=dönüşüm,img,jpg,fotoğraf,resim
|
||||
|
||||
home.pdfToImage.title=PDF'den Resme
|
||||
home.pdfToImage.desc=PDF'yi bir resme dönüştürün. (PNG, JPEG, GIF)
|
||||
pdfToImage.tags=dönüşüm,img,jpg,fotoğraf,resim
|
||||
|
||||
home.pdfOrganiser.title=Düzenle
|
||||
home.pdfOrganiser.desc=Sayfaları herhangi bir sırayla kaldırın/düzenleyin
|
||||
pdfOrganiser.tags=çift,çift,yan,yana,sırala,taşı
|
||||
|
||||
|
||||
home.addImage.title=Resim Ekle
|
||||
home.addImage.desc=PDF'e belirli bir konuma resim ekler
|
||||
addImage.tags=img,jpg,fotoğraf,resim
|
||||
|
||||
home.watermark.title=Filigran Ekle
|
||||
home.watermark.desc=PDF belgenize özel bir filigran ekleyin.
|
||||
watermark.tags=Metin,tekrarlayan,etiket,kendi,telif hakkı,marka,img,jpg,fotoğraf,resim
|
||||
|
||||
home.permissions.title=İzinleri Değiştir
|
||||
home.permissions.desc=PDF belgenizin izinlerini değiştirin
|
||||
permissions.tags=oku,yaz,düzenle,yazdır
|
||||
|
||||
|
||||
home.removePages.title=Kaldır
|
||||
home.removePages.desc=PDF belgenizden istenmeyen sayfaları silin.
|
||||
removePages.tags=Sayfaları kaldır,sayfaları sil
|
||||
|
||||
home.addPassword.title=Parola Ekle
|
||||
home.addPassword.desc=PDF belgenizi bir parola ile şifreleyin.
|
||||
addPassword.tags=güvenli, güvenlik
|
||||
|
||||
home.removePassword.title=Parolayı Kaldır
|
||||
home.removePassword.desc=PDF belgenizden parola korumasını kaldırın.
|
||||
removePassword.tags=güvenli,Şifreyi çöz,güvenlik,parolasız,parolayı sil
|
||||
|
||||
home.compressPdfs.title=Sıkıştır
|
||||
home.compressPdfs.desc=PDF'lerin dosya boyutunu azaltmak için sıkıştırın.
|
||||
compressPdfs.tags=sıkıştır,küçük,minik
|
||||
|
||||
|
||||
home.changeMetadata.title=Metaveriyi Değiştir
|
||||
home.changeMetadata.desc=Bir PDF belgesinden metaveriyi değiştir/kaldır/ekle
|
||||
changeMetadata.tags=Başlık,yazar,tarih,oluşturma,zaman,yayıncı,üretici,istatistikler
|
||||
|
||||
home.fileToPDF.title=Dosyayı PDF'e Dönüştür
|
||||
home.fileToPDF.desc=Hemen hemen her dosyayı PDF'e dönüştürün (DOCX, PNG, XLS, PPT, TXT ve daha fazlası)
|
||||
fileToPDF.tags=dönüşüm,format,belge,fotoğraf,slayt,metin,dönüşüm,ofis,doküman,word,excel,powerpoint
|
||||
|
||||
home.ocr.title=OCR / Taramaları Temizle
|
||||
home.ocr.desc=Taramaları temizler ve bir PDF içindeki resimlerden metni algılar ve tekrar metin olarak ekler.
|
||||
ocr.tags=tanıma,metin,resim,tarama,okuma,tanımlama,algılama,düzenlenebilir
|
||||
|
||||
|
||||
home.extractImages.title=Resimleri Çıkar
|
||||
home.extractImages.desc=Bir PDF'ten tüm resimleri çıkarır ve bunları zip olarak kaydeder.
|
||||
extractImages.tags=fotoğraf,resim,kaydet,arşiv,zip,yakala,al
|
||||
|
||||
home.pdfToPDFA.title=PDF'den PDF/A'ya
|
||||
home.pdfToPDFA.desc=PDF'yi uzun vadeli saklama için PDF/A'ya dönüştürün
|
||||
pdfToPDFA.tags=arşiv,uzun vadeli,standart,dönüşüm,saklama,koruma
|
||||
|
||||
home.PDFToWord.title=PDF'den Word'e
|
||||
home.PDFToWord.desc=PDF'yi Word formatlarına dönüştürün (DOC, DOCX ve ODT)
|
||||
PDFToWord.tags=doc,docx,odt,word,dönüşüm,format,dönüşüm,ofis,microsoft,docfile
|
||||
|
||||
home.PDFToPresentation.title=PDF'den Sunuma
|
||||
home.PDFToPresentation.desc=PDF'yi Sunum formatlarına dönüştürün (PPT, PPTX ve ODP)
|
||||
PDFToPresentation.tags=slaytlar,show,ofis,microsoft
|
||||
|
||||
home.PDFToText.title=PDF'den RTF (Metin)'e
|
||||
home.PDFToText.desc=PDF'i Metin veya RTF formatına dönüştür
|
||||
PDFToText.tags=zenginformat,zenginmetinformatı,zengin metin formatı
|
||||
|
||||
home.PDFToHTML.title=PDF'den HTML'e
|
||||
home.PDFToHTML.desc=PDF'i HTML formatına dönüştür
|
||||
PDFToHTML.tags=web içeriği,tarayıcı dostu
|
||||
|
||||
|
||||
home.PDFToXML.title=PDF'den XML'e
|
||||
home.PDFToXML.desc=PDF'i XML formatına dönüştür
|
||||
PDFToXML.tags=veri-çıkarımı,yapılandırılmış-içerik,entegrasyon,dönüşüm,dönüştür
|
||||
|
||||
home.ScannerImageSplit.title=Taranmış Fotoğrafları Tespit Et/Böl
|
||||
home.ScannerImageSplit.desc=Bir fotoğraf/PDF içerisindeki birden fazla fotoğrafı ayırır
|
||||
ScannerImageSplit.tags=ayır,otomatik-tespit,taramalar,çoklu-fotoğraf,düzenle
|
||||
|
||||
home.sign.title=İmzala
|
||||
home.sign.desc=Çizim, metin veya resim ile PDF'e imza ekler
|
||||
sign.tags=onayla,başharfler,çizili-imza,metin-imza,resim-imza
|
||||
|
||||
home.flatten.title=Düzleştir
|
||||
home.flatten.desc=PDF'ten tüm etkileşimli öğeleri ve formları kaldırır
|
||||
flatten.tags=statik,devre dışı bırak,etkileşimsiz,sadeleştir
|
||||
|
||||
home.repair.title=Onar
|
||||
home.repair.desc=Bozuk/kırık bir PDF'i onarmaya çalışır
|
||||
repair.tags=onar,geri yükle,düzelt,geri getir
|
||||
|
||||
home.removeBlanks.title=Boş Sayfaları Kaldır
|
||||
home.removeBlanks.desc=Bir belgeden boş sayfaları tespit eder ve kaldırır
|
||||
removeBlanks.tags=temizle,sadeleştir,içeriksiz,düzenle
|
||||
|
||||
home.compare.title=Karşılaştır
|
||||
home.compare.desc=2 PDF Belgesi arasındaki farkları karşılaştırır ve gösterir
|
||||
compare.tags=farklılaştır,karşılaştır,değişiklikler,analiz
|
||||
|
||||
home.certSign.title=Sertifika ile İmzala
|
||||
home.certSign.desc=Bir PDF'i Sertifika/Anahtar (PEM/P12) ile imzalar
|
||||
certSign.tags=doğrula,PEM,P12,resmi,şifrele
|
||||
|
||||
home.pageLayout.title=Çoklu-Sayfa Düzeni
|
||||
home.pageLayout.desc=Bir PDF belgesinin çoklu sayfalarını tek bir sayfada birleştirir
|
||||
pageLayout.tags=birleştir,kompozit,tek-görünüm,düzenle
|
||||
|
||||
home.scalePages.title=Sayfa boyutunu/ölçeğini ayarla
|
||||
home.scalePages.desc=Bir sayfanın ve/veya içeriğinin boyutunu/ölçeğini değiştirir
|
||||
scalePages.tags=boyutlandır,değiştir,boyut,uyarla
|
||||
|
||||
home.pipeline.title=Hattı (İleri Seviye)
|
||||
home.pipeline.desc=Hattı betikleri tanımlayarak PDF'lere birden fazla işlemi çalıştır
|
||||
pipeline.tags=otomatikleştir,sıralı,betikli,toplu-işlem
|
||||
|
||||
home.add-page-numbers.title=Sayfa Numaraları Ekle
|
||||
home.add-page-numbers.desc=Bir belgeye belirli bir konuma sayfa numaraları ekler
|
||||
add-page-numbers.tags=sayfalandır,etiket,düzenle,dizin
|
||||
|
||||
home.auto-rename.title=PDF Dosyasını Otomatik Yeniden Adlandır
|
||||
home.auto-rename.desc=Tespit edilen başlığa dayanarak bir PDF dosyasını otomatik olarak yeniden adlandırır
|
||||
auto-rename.tags=otomatik-tespit,başlık-tabanlı,düzenle,yeniden-etiketle
|
||||
|
||||
home.adjust-contrast.title=Renkleri/Kontrastı Ayarla
|
||||
home.adjust-contrast.desc=Bir PDF'in Kontrastını, Doygunluğunu ve Parlaklığını ayarlar
|
||||
adjust-contrast.tags=renk-düzeltme,ayarla,değiştir,artır
|
||||
|
||||
home.crop.title=PDF'i Kırp
|
||||
home.crop.desc=Boyutunu azaltmak için bir PDF'i kırpar (metni korur!)
|
||||
crop.tags=kırp,küçült,düzenle,şekillendir
|
||||
|
||||
home.autoSplitPDF.title=Sayfaları Otomatik Böl
|
||||
home.autoSplitPDF.desc=Fiziksel taranmış sayfa bölücü QR Kod ile Taranmış PDF'i Otomatik Böl
|
||||
autoSplitPDF.tags=QR-tabanlı,ayır,tarama-segmenti,düzenle
|
||||
|
||||
home.sanitizePdf.title=Temizle
|
||||
home.sanitizePdf.desc=PDF dosyalarından betikleri ve diğer öğeleri kaldırır
|
||||
sanitizePdf.tags=temizle,güvende,korunaklı,tehditleri-kaldır
|
||||
|
||||
home.URLToPDF.title=URL/Websitesi PDF'e
|
||||
home.URLToPDF.desc=Herhangi bir http(s)URL'yi PDF'e dönüştürür
|
||||
URLToPDF.tags=web-yakala,sayfa-kaydet,webten-dökümana,arşivle
|
||||
|
||||
home.HTMLToPDF.title=HTML'den PDF'e
|
||||
home.HTMLToPDF.desc=Herhangi bir HTML dosyasını veya zip'i PDF'e dönüştürür
|
||||
HTMLToPDF.tags=biçimlendirme,web-içeriği,dönüşüm,dönüştür
|
||||
|
||||
|
||||
home.MarkdownToPDF.title=Markdown'dan PDF'e
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
getPdfInfo.tags=bilgi,veri,istatistikler,istatistik
|
||||
|
||||
|
||||
home.extractPage.title=Sayfa(ları) Çıkar
|
||||
home.extractPage.desc=PDF'ten seçili sayfaları çıkarır
|
||||
extractPage.tags=çıkar
|
||||
|
||||
|
||||
home.PdfToSinglePage.title=PDF'i Tek Büyük Sayfaya
|
||||
home.PdfToSinglePage.desc=Tüm PDF sayfalarını tek büyük bir sayfada birleştirir
|
||||
PdfToSinglePage.tags=tek sayfa
|
||||
|
||||
|
||||
home.showJS.title=Javascript'i Göster
|
||||
home.showJS.desc=Bir PDF'e enjekte edilen herhangi bir JS'i araştırır ve gösterir
|
||||
showJS.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||
|
||||
home.autoRedact.title=Otomatik Karartma
|
||||
home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik Karartır (Redakte)
|
||||
showJS.tags=Karart,Gizle,karartma,siyah,markör,gizli
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
# #
|
||||
###########################
|
||||
#login
|
||||
login.title=Giriş Yap
|
||||
login.signin=Giriş Yap
|
||||
login.rememberme=Beni hatırla
|
||||
login.invalid=Geçersiz kullanıcı adı veya şifre.
|
||||
login.locked=Hesabınız kilitlendi.
|
||||
login.signinTitle=Lütfen giriş yapınız.
|
||||
|
||||
|
||||
#auto-redact
|
||||
autoRedact.title=Otomatik Karartma
|
||||
autoRedact.header=Otomatik Karartma
|
||||
autoRedact.colorLabel=Renk
|
||||
autoRedact.textsToRedactLabel=Karartılacak Metin (satır ayrılmış)
|
||||
autoRedact.textsToRedactPlaceholder=Örn. \nGizli \nÇok Gizli
|
||||
autoRedact.useRegexLabel=Regex Kullan
|
||||
autoRedact.wholeWordSearchLabel=Tam Kelime Arama
|
||||
autoRedact.customPaddingLabel=Özel Ekstra Dolgu
|
||||
autoRedact.convertPDFToImageLabel=PDF'i PDF-Görüntü'ye dönüştür (Kutunun arkasındaki metni kaldırmak için kullanılır)
|
||||
autoRedact.submitButton=Gönder
|
||||
|
||||
|
||||
#showJS
|
||||
showJS.title=Javascript'i Göster
|
||||
showJS.header=Javascript'i Göster
|
||||
showJS.downloadJS=Javascript İndir
|
||||
showJS.submit=Göster
|
||||
|
||||
|
||||
#pdfToSinglePage
|
||||
pdfToSinglePage.title=PDF'i Tek Sayfaya
|
||||
pdfToSinglePage.header=PDF'i Tek Sayfaya
|
||||
pdfToSinglePage.submit=Tek Sayfaya Dönüştür
|
||||
|
||||
|
||||
#pageExtracter
|
||||
pageExtracter.title=Sayfaları Çıkar
|
||||
pageExtracter.header=Sayfaları Çıkar
|
||||
pageExtracter.submit=Çıkar
|
||||
|
||||
|
||||
#getPdfInfo
|
||||
getPdfInfo.title=PDF Hakkında Bilgi Al
|
||||
getPdfInfo.header=PDF Hakkında Bilgi Al
|
||||
getPdfInfo.submit=Bilgi Al
|
||||
getPdfInfo.downloadJson=JSON İndir
|
||||
|
||||
|
||||
#markdown-to-pdf
|
||||
MarkdownToPDF.title=Markdown'dan PDF'e
|
||||
MarkdownToPDF.header=Markdown'dan PDF'e
|
||||
MarkdownToPDF.submit=Dönüştür
|
||||
MarkdownToPDF.help=Devam eden iş
|
||||
MarkdownToPDF.credit=WeasyPrint Kullanıyor
|
||||
|
||||
|
||||
|
||||
#url-to-pdf
|
||||
URLToPDF.title=URL'den PDF'e
|
||||
URLToPDF.header=URL'den PDF'e
|
||||
URLToPDF.submit=Dönüştür
|
||||
URLToPDF.credit=WeasyPrint Kullanıyor
|
||||
|
||||
|
||||
#html-to-pdf
|
||||
HTMLToPDF.title=HTML'den PDF'e
|
||||
HTMLToPDF.header=HTML'den PDF'e
|
||||
HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder
|
||||
HTMLToPDF.submit=Dönüştür
|
||||
HTMLToPDF.credit=WeasyPrint Kullanıyor
|
||||
|
||||
|
||||
#sanitizePDF
|
||||
sanitizePDF.title=PDF'i Temizle
|
||||
sanitizePDF.header=PDF dosyasını temizle
|
||||
sanitizePDF.selectText.1=JavaScript işlemlerini kaldır
|
||||
sanitizePDF.selectText.2=Gömülü dosyaları kaldır
|
||||
sanitizePDF.selectText.3=Üst veriyi kaldır
|
||||
sanitizePDF.selectText.4=Linkleri kaldır
|
||||
sanitizePDF.selectText.5=Fontları kaldır
|
||||
sanitizePDF.submit=PDF'i Temizle
|
||||
|
||||
|
||||
#addPageNumbers
|
||||
addPageNumbers.title=Sayfa Numaraları Ekle
|
||||
addPageNumbers.header=Sayfa Numaraları Ekle
|
||||
addPageNumbers.selectText.1=PDF dosyasını seçin:
|
||||
addPageNumbers.selectText.2=Kenar Boyutu
|
||||
addPageNumbers.selectText.3=Pozisyon
|
||||
addPageNumbers.selectText.4=Başlangıç Numarası
|
||||
addPageNumbers.selectText.5=Numaralandırılacak Sayfalar
|
||||
addPageNumbers.selectText.6=Özel Metin
|
||||
addPageNumbers.customTextDesc=Özel Metin
|
||||
addPageNumbers.numberPagesDesc=Hangi sayfaların numaralandırılacağını, varsayılan 'all', ayrıca 1-5 veya 2,5,9 vb. kabul eder
|
||||
addPageNumbers.customNumberDesc=Varsayılan {n}, ayrıca 'Sayfa {n} / {total}', 'Metin-{n}', '{filename}-{n} kabul eder
|
||||
addPageNumbers.submit=Sayfa Numaraları Ekle
|
||||
|
||||
|
||||
#auto-rename
|
||||
auto-rename.title=Otomatik Yeniden Adlandır
|
||||
auto-rename.header=PDF'i Otomatik Yeniden Adlandır
|
||||
auto-rename.submit=Otomatik Yeniden Adlandır
|
||||
|
||||
|
||||
#adjustContrast
|
||||
adjustContrast.title=Kontrastı Ayarla
|
||||
adjustContrast.header=Kontrastı Ayarla
|
||||
adjustContrast.contrast=Kontrast:
|
||||
adjustContrast.brightness=Parlaklık:
|
||||
adjustContrast.saturation=Doygunluk:
|
||||
adjustContrast.download=İndir
|
||||
|
||||
|
||||
#crop
|
||||
crop.title=Kırp
|
||||
crop.header=Resmi Kırp
|
||||
crop.submit=Gönder
|
||||
|
||||
|
||||
#autoSplitPDF
|
||||
autoSplitPDF.title=PDF'i Otomatik Böl
|
||||
autoSplitPDF.header=PDF'i Otomatik Böl
|
||||
autoSplitPDF.description=Yazdır, Ekle, Tara, yükle ve belgelerinizi otomatik olarak ayırmamıza izin ver. Elle sıralama yapmaya gerek yok.
|
||||
autoSplitPDF.selectText.1=Aşağıdan bazı ayırıcı sayfaları yazdırın (Siyah ve beyaz olabilir).
|
||||
autoSplitPDF.selectText.2=Ayırıcı sayfayı aralarına ekleyerek tüm belgelerinizi birden tara.
|
||||
autoSplitPDF.selectText.3=Tek büyük taranmış PDF dosyasını yükleyin ve gerisini Stirling PDF'in halletmesine izin verin.
|
||||
autoSplitPDF.selectText.4=Ayırıcı sayfalar otomatik olarak tespit edilir ve kaldırılır, düzgün bir final belgesi garantilidir.
|
||||
autoSplitPDF.formPrompt=Stirling-PDF Sayfa ayırıcıları içeren PDF'i gönderin:
|
||||
autoSplitPDF.duplexMode=Çift Taraflı Mod (Ön ve arka tarama)
|
||||
autoSplitPDF.dividerDownload1='Otomatik Ayırıcı Ayırıcı (minimal).pdf' indir
|
||||
autoSplitPDF.dividerDownload2='Otomatik Ayırıcı Ayırıcı (talimatlarla).pdf' indir
|
||||
autoSplitPDF.submit=Gönder
|
||||
|
||||
|
||||
#pipeline
|
||||
pipeline.title=Pipeline
|
||||
|
||||
|
||||
#pageLayout
|
||||
pageLayout.title=Çoklu Sayfa Düzeni
|
||||
pageLayout.header=Çoklu Sayfa Düzeni
|
||||
pageLayout.pagesPerSheet=Sayfa başına sayfalar:
|
||||
pageLayout.addBorder=Kenarlık Ekle
|
||||
pageLayout.submit=Gönder
|
||||
|
||||
|
||||
#scalePages
|
||||
scalePages.title=Sayfa Ölçeğini Ayarla
|
||||
scalePages.header=Sayfa Ölçeğini Ayarla
|
||||
scalePages.pageSize=Belgenin bir sayfa boyutu.
|
||||
scalePages.scaleFactor=Bir sayfanın yakınlaştırma seviyesi (kırpma).
|
||||
scalePages.submit=Gönder
|
||||
|
||||
|
||||
#certSign
|
||||
certSign.title=Sertifika İmzalama
|
||||
certSign.header=Sertifikanızla bir PDF imzalayın (Devam eden iş)
|
||||
certSign.selectPDF=İmzalamak için bir PDF Dosyası seçin:
|
||||
certSign.selectKey=Özel Anahtar Dosyanızı Seçin (PKCS#8 formatında, .pem veya .der olabilir):
|
||||
certSign.selectCert=Sertifika Dosyanızı Seçin (X.509 formatında, .pem veya .der olabilir):
|
||||
certSign.selectP12=PKCS#12 Anahtar Deposu Dosyanızı Seçin (.p12 veya .pfx) (İsteğe bağlı, sağlanırsa, özel anahtarınızı ve sertifikanızı içermelidir):
|
||||
certSign.certType=Sertifika Türü
|
||||
certSign.password=Anahtar Deposu veya Özel Anahtar Şifrenizi Girin (Varsa):
|
||||
certSign.showSig=İmzayı Göster
|
||||
certSign.reason=Neden
|
||||
certSign.location=Konum
|
||||
certSign.name=İsim
|
||||
certSign.submit=PDF'i İmzala
|
||||
|
||||
|
||||
#removeBlanks
|
||||
removeBlanks.title=Boşları Kaldır
|
||||
removeBlanks.header=Boş Sayfaları Kaldır
|
||||
removeBlanks.threshold=Pixel Beyazlık Eşiği:
|
||||
removeBlanks.thresholdDesc=Bir beyaz pixelin 'Beyaz' olarak sınıflandırılması için ne kadar beyaz olması gerektiğini belirlemek için eşik. 0 = Siyah, 255 saf beyaz.
|
||||
removeBlanks.whitePercent=Beyaz Yüzde (%):
|
||||
removeBlanks.whitePercentDesc=Bir sayfanın 'beyaz' pixel olması gereken yüzdesi
|
||||
removeBlanks.submit=Boşları Kaldır
|
||||
|
||||
|
||||
#compare
|
||||
compare.title=Karşılaştır
|
||||
compare.header=PDF'leri Karşılaştır
|
||||
compare.document.1=Belge 1
|
||||
compare.document.2=Belge 2
|
||||
compare.submit=Karşılaştır
|
||||
|
||||
|
||||
#sign
|
||||
sign.title=İmzala
|
||||
sign.header=PDF'lere İmza At
|
||||
sign.upload=Resim Yükle
|
||||
sign.draw=İmza Çiz
|
||||
sign.text=Metin Girişi
|
||||
sign.clear=Temizle
|
||||
sign.add=Ekle
|
||||
|
||||
|
||||
#repair
|
||||
repair.title=Onar
|
||||
repair.header=PDF'leri Onar
|
||||
repair.submit=Onar
|
||||
|
||||
|
||||
#flatten
|
||||
flatten.title=Düzleştir
|
||||
flatten.header=PDF'leri Düzleştir
|
||||
flatten.submit=Düzleştir
|
||||
|
||||
|
||||
#ScannerImageSplit
|
||||
ScannerImageSplit.selectText.1=Açı Eşiği:
|
||||
ScannerImageSplit.selectText.2=Resmin döndürülmesi için gereken minimum mutlak açıyı ayarlar (varsayılan: 10).
|
||||
ScannerImageSplit.selectText.3=Tolerans:
|
||||
ScannerImageSplit.selectText.4=Tahmini arka plan rengi etrafındaki renk varyasyon aralığını belirler (varsayılan: 30).
|
||||
ScannerImageSplit.selectText.5=Minimum Alan:
|
||||
ScannerImageSplit.selectText.6=Bir fotoğraf için minimum alan eşiğini ayarlar (varsayılan: 10000).
|
||||
ScannerImageSplit.selectText.7=Minimum Kontur Alanı:
|
||||
ScannerImageSplit.selectText.8=Bir fotoğraf için minimum kontur alanı eşiğini ayarlar
|
||||
ScannerImageSplit.selectText.9=Kenar Boyutu:
|
||||
ScannerImageSplit.selectText.10=Çıktıda beyaz kenarların önlenmesi için eklenen ve kaldırılan kenarın boyutunu ayarlar (varsayılan: 1).
|
||||
|
||||
|
||||
#OCR
|
||||
ocr.title=OCR / Tarama Temizleme
|
||||
ocr.header=Taramaları Temizle / OCR (Optik Karakter Tanıma)
|
||||
ocr.selectText.1=PDF içinde tespit edilecek dilleri seçin (Listelenenler şu anda tespit edilenlerdir):
|
||||
ocr.selectText.2=OCR'li PDF ile birlikte OCR metnini içeren metin dosyası oluştur
|
||||
ocr.selectText.3=Skew açıda taranan sayfaları geri döndürerek düzeltin
|
||||
ocr.selectText.4=OCR'nin arka planda metin bulmasını azaltmak için sayfayı temizle. (Çıktıda değişiklik yok)
|
||||
ocr.selectText.5=OCR'nin arka planda metin bulmasını azaltmak için sayfayı temizle, temizlemeyi çıktıda korur.
|
||||
ocr.selectText.6=İnteraktif metni olan sayfaları yoksay, sadece resim olan sayfaları OCR yapar
|
||||
ocr.selectText.7=Zorla OCR, tüm orijinal metin öğelerini kaldırarak Her sayfayı OCR yapar
|
||||
ocr.selectText.8=Normal (PDF metin içeriyorsa hata verir)
|
||||
ocr.selectText.9=Ek Ayarlar
|
||||
ocr.selectText.10=OCR Modu
|
||||
ocr.selectText.11=OCR'den sonra resimleri kaldır (TÜM resimleri kaldırır, sadece dönüşüm adımının bir parçasıysa yararlıdır)
|
||||
ocr.selectText.12=Render Türü (İleri Seviye)
|
||||
ocr.help=Lütfen bu belgede başka dillerde nasıl kullanılacağı ve/veya docker'da kullanılmaması hakkında bilgi edinin
|
||||
ocr.credit=Bu hizmet OCR için OCRmyPDF ve Tesseract'ı kullanır.
|
||||
ocr.submit=PDF'i OCR ile İşle
|
||||
|
||||
|
||||
#extractImages
|
||||
extractImages.title=Resimleri Çıkar
|
||||
extractImages.header=Resimleri Çıkar
|
||||
extractImages.selectText=Çıkarılan resimleri dönüştürmek için resim formatını seçin
|
||||
extractImages.submit=Çıkar
|
||||
|
||||
|
||||
#File to PDF
|
||||
fileToPDF.title=Dosyadan PDF'e
|
||||
fileToPDF.header=Herhangi bir dosyayı PDF'e dönüştür
|
||||
fileToPDF.credit=Bu hizmet dosya dönüşümü için LibreOffice ve Unoconv'u kullanır.
|
||||
fileToPDF.supportedFileTypes=Desteklenen dosya türleri aşağıdakileri içermelidir ancak desteklenen formatların tam güncellenmiş listesi için lütfen LibreOffice dokümantasyonuna başvurun
|
||||
fileToPDF.submit=PDF'e Dönüştür
|
||||
|
||||
|
||||
#compress
|
||||
compress.title=Sıkıştır
|
||||
compress.header=PDF'i Sıkıştır
|
||||
compress.credit=Bu hizmet PDF Sıkıştırma/Optimizasyonu için Ghostscript kullanır.
|
||||
compress.selectText.1=Manuel Mod - 1'den 4'e
|
||||
compress.selectText.2=Optimizasyon seviyesi:
|
||||
compress.selectText.3=4 (Metin resimleri için hiç uygun değil)
|
||||
compress.selectText.4=Otomatik mod - PDF'in tam boyutuna ulaşmak için kaliteyi otomatik ayarlar
|
||||
compress.selectText.5=Beklenen PDF Boyutu (örn. 25MB, 10.8MB, 25KB)
|
||||
compress.submit=Sıkıştır
|
||||
|
||||
|
||||
#Add image
|
||||
addImage.title=Resim Ekle
|
||||
addImage.header=PDF'e resim ekle
|
||||
addImage.everyPage=Her Sayfa?
|
||||
addImage.upload=Resim ekle
|
||||
addImage.submit=Resim ekle
|
||||
|
||||
|
||||
#merge
|
||||
merge.title=Birleştir
|
||||
merge.header=Çoklu PDF'leri Birleştir (2+)
|
||||
merge.sortByName=İsme göre sırala
|
||||
merge.sortByDate=Tarihe göre sırala
|
||||
merge.submit=Birleştir
|
||||
|
||||
|
||||
#pdfOrganiser
|
||||
pdfOrganiser.title=Sayfa Organizatörü
|
||||
pdfOrganiser.header=PDF Sayfa Organizatörü
|
||||
pdfOrganiser.submit=Sayfaları Yeniden Düzenle
|
||||
|
||||
|
||||
#multiTool
|
||||
multiTool.title=PDF Çoklu Araç
|
||||
multiTool.header=PDF Çoklu Araç
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=Sayfa Silici
|
||||
pageRemover.header=PDF Sayfa silici
|
||||
pageRemover.pagesToDelete=Silinmesi gereken sayfalar (Virgülle ayrılmış sayfa numaraları listesi girin):
|
||||
pageRemover.submit=Sayfaları Sil
|
||||
|
||||
|
||||
#rotate
|
||||
rotate.title=PDF Döndür
|
||||
rotate.header=PDF Döndür
|
||||
rotate.selectAngle=Döndürme açısını seçin (90 derecenin katları olarak):
|
||||
rotate.submit=Döndür
|
||||
|
||||
|
||||
#merge
|
||||
split.title=PDF Ayır
|
||||
split.header=PDF Ayır
|
||||
split.desc.1=Seçtiğiniz numaralar, bir ayrım yapmak istediğiniz sayfa numarasıdır
|
||||
split.desc.2=Bu nedenle, 1,3,7-8 seçmek 10 sayfalı bir belgeyi şunlarla 6 ayrı PDF'e böler:
|
||||
split.desc.3=Belge #1: Sayfa 1
|
||||
split.desc.4=Belge #2: Sayfa 2 ve 3
|
||||
split.desc.5=Belge #3: Sayfa 4, 5 ve 6
|
||||
split.desc.6=Belge #4: Sayfa 7
|
||||
split.desc.7=Belge #5: Sayfa 8
|
||||
split.desc.8=Belge #6: Sayfa 9 ve 10
|
||||
split.splitPages=Ayrılacak sayfaları girin:
|
||||
split.submit=Ayır
|
||||
|
||||
|
||||
#merge
|
||||
imageToPDF.title=Resimden PDF'e
|
||||
imageToPDF.header=Resimden PDF'e
|
||||
imageToPDF.submit=Dönüştür
|
||||
imageToPDF.selectLabel=Resim Uydurma Seçenekleri
|
||||
imageToPDF.fillPage=Sayfayı Doldur
|
||||
imageToPDF.fitDocumentToImage=Resme Uygun Sayfa
|
||||
imageToPDF.maintainAspectRatio=En Boy Oranını Koru
|
||||
imageToPDF.selectText.2=PDF'yi otomatik döndür
|
||||
imageToPDF.selectText.3=Çoklu dosya mantığı (Yalnızca birden fazla resimle çalışırken etkinleştirilir)
|
||||
imageToPDF.selectText.4=Tek bir PDF'e birleştir
|
||||
imageToPDF.selectText.5=Ayrı PDF'lere dönüştür
|
||||
|
||||
|
||||
#pdfToImage
|
||||
pdfToImage.title=PDF'den Resme
|
||||
pdfToImage.header=PDF'den Resme
|
||||
pdfToImage.selectText=Resim Formatı
|
||||
pdfToImage.singleOrMultiple=Sonuç resim tipi
|
||||
pdfToImage.single=Tüm sayfaları birleştiren Tek Büyük Resim
|
||||
pdfToImage.multi=Çoklu Resimler, sayfa başına bir resim
|
||||
pdfToImage.colorType=Renk türü
|
||||
pdfToImage.color=Renk
|
||||
pdfToImage.grey=Gri tonlama
|
||||
pdfToImage.blackwhite=Siyah ve Beyaz (Veri kaybolabilir!)
|
||||
pdfToImage.submit=Dönüştür
|
||||
|
||||
|
||||
#addPassword
|
||||
addPassword.title=Parola Ekle
|
||||
addPassword.header=Parola Ekle (Şifrele)
|
||||
addPassword.selectText.1=Şifrelenecek PDF'i seçin
|
||||
addPassword.selectText.2=Kullanıcı Parolası
|
||||
addPassword.selectText.3=Şifreleme Anahtar Uzunluğu
|
||||
addPassword.selectText.4=Daha yüksek değerler daha güçlüdür, ancak daha düşük değerler daha iyi uyumluluğa sahiptir.
|
||||
addPassword.selectText.5=İzinlerin ayarlanması (Sahip parolası ile birlikte kullanılması önerilir)
|
||||
addPassword.selectText.6=Belgenin birleştirilmesini önle
|
||||
addPassword.selectText.7=İçeriğin çıkarılmasını önle
|
||||
addPassword.selectText.8=Erişilebilirlik için çıkarmanın önlenmesi
|
||||
addPassword.selectText.9=Formun doldurulmasını önle
|
||||
addPassword.selectText.10=Değişikliği önle
|
||||
addPassword.selectText.11=Açıklama değişikliğini önle
|
||||
addPassword.selectText.12=Yazdırmayı önle
|
||||
addPassword.selectText.13=Farklı formatlarda yazdırmayı önle
|
||||
addPassword.selectText.14=Sahip Parolası
|
||||
addPassword.selectText.15=Açıldığında belgeyle ne yapılacağını kısıtlar (Tüm okuyucular tarafından desteklenmez)
|
||||
addPassword.selectText.16=Belgenin kendisinin açılmasını kısıtlar
|
||||
addPassword.submit=Şifrele
|
||||
|
||||
|
||||
#watermark
|
||||
watermark.title=Filigran Ekle
|
||||
watermark.header=Filigran Ekle
|
||||
watermark.selectText.1=Filigran eklemek için PDF seçin:
|
||||
watermark.selectText.2=Filigran Metni:
|
||||
watermark.selectText.3=Yazı Boyutu:
|
||||
watermark.selectText.4=Döndürme (0-360):
|
||||
watermark.selectText.5=genişlikBoşluk (Yatayda her filigran arasında boşluk):
|
||||
watermark.selectText.6=yükseklikBoşluk (Dikeyde her filigran arasında boşluk):
|
||||
watermark.selectText.7=Opaklık (0% - 100%):
|
||||
watermark.selectText.8=Filigran Türü:
|
||||
watermark.selectText.9=Filigran Resmi:
|
||||
watermark.submit=Filigran Ekle
|
||||
|
||||
|
||||
#Change permissions
|
||||
permissions.title=İzinleri Değiştir
|
||||
permissions.header=İzinleri Değiştir
|
||||
permissions.warning=İzinlerin değiştirilemez olması için bunları add-password sayfası aracılığıyla bir parola ile ayarlamaları önerilir
|
||||
permissions.selectText.1=İzinlerini değiştirmek için PDF seçin
|
||||
permissions.selectText.2=Ayarlanacak izinler
|
||||
permissions.selectText.3=Belgenin birleştirilmesini önle
|
||||
permissions.selectText.4=İçeriğin çıkarılmasını önle
|
||||
permissions.selectText.5=Erişilebilirlik için çıkarmanın önlenmesi
|
||||
permissions.selectText.6=Formun doldurulmasını önle
|
||||
permissions.selectText.7=Değişikliği önle
|
||||
permissions.selectText.8=Açıklama değişikliğini önle
|
||||
permissions.selectText.9=Yazdırmayı önle
|
||||
permissions.selectText.10=Farklı formatlarda yazdırmayı önle
|
||||
permissions.submit=Değiştir
|
||||
|
||||
|
||||
#remove password
|
||||
removePassword.title=Parola Kaldır
|
||||
removePassword.header=Parola Kaldır (Şifre Çöz)
|
||||
removePassword.selectText.1=Şifreyi Çözmek için PDF Seçin
|
||||
removePassword.selectText.2=Parola
|
||||
removePassword.submit=Kaldır
|
||||
|
||||
|
||||
#changeMetadata
|
||||
changeMetadata.title=Başlık:
|
||||
changeMetadata.header=Metaveriyi Değiştir
|
||||
changeMetadata.selectText.1=Değiştirmek istediğiniz değişkenleri düzenleyin
|
||||
changeMetadata.selectText.2=Tüm metaveriyi sil
|
||||
changeMetadata.selectText.3=Özel Metaveriyi Göster:
|
||||
changeMetadata.author=Yazar:
|
||||
changeMetadata.creationDate=Oluşturma Tarihi (yyyy/MM/dd HH:mm:ss):
|
||||
changeMetadata.creator=Oluşturan:
|
||||
changeMetadata.keywords=Anahtar Kelimeler:
|
||||
changeMetadata.modDate=Değişiklik Tarihi (yyyy/MM/dd HH:mm:ss):
|
||||
changeMetadata.producer=Üretici:
|
||||
changeMetadata.subject=Konu:
|
||||
changeMetadata.title=Başlık:
|
||||
changeMetadata.trapped=Tuzak:
|
||||
changeMetadata.selectText.4=Diğer Metaveri:
|
||||
changeMetadata.selectText.5=Özel Metaveri Girişi Ekle
|
||||
changeMetadata.submit=Değiştir
|
||||
|
||||
|
||||
#pdfToPDFA
|
||||
pdfToPDFA.title=PDF'den PDF/A'ya
|
||||
pdfToPDFA.header=PDF'den PDF/A'ya
|
||||
pdfToPDFA.credit=Bu hizmet PDF/A dönüşümü için OCRmyPDF kullanır
|
||||
pdfToPDFA.submit=Dönüştür
|
||||
|
||||
|
||||
#PDFToWord
|
||||
PDFToWord.title=PDF'den Word'e
|
||||
PDFToWord.header=PDF'den Word'e
|
||||
PDFToWord.selectText.1=Çıktı dosya formatı
|
||||
PDFToWord.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
||||
PDFToWord.submit=Dönüştür
|
||||
|
||||
|
||||
#PDFToPresentation
|
||||
PDFToPresentation.title=PDF'den Sunuma
|
||||
PDFToPresentation.header=PDF'den Sunuma
|
||||
PDFToPresentation.selectText.1=Çıktı dosya formatı
|
||||
PDFToPresentation.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
||||
PDFToPresentation.submit=Dönüştür
|
||||
|
||||
|
||||
#PDFToText
|
||||
PDFToText.title=PDF'den RTF (Metin)'e
|
||||
PDFToText.header=PDF'den RTF (Metin)'e
|
||||
PDFToText.selectText.1=Çıktı dosya formatı
|
||||
PDFToText.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
||||
PDFToText.submit=Dönüştür
|
||||
|
||||
|
||||
#PDFToHTML
|
||||
PDFToHTML.title=PDF'den HTML'e
|
||||
PDFToHTML.header=PDF'den HTML'e
|
||||
PDFToHTML.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
||||
PDFToHTML.submit=Dönüştür
|
||||
|
||||
|
||||
#PDFToXML
|
||||
PDFToXML.title=PDF'den XML'e
|
||||
PDFToXML.header=PDF'den XML'e
|
||||
PDFToXML.credit=Bu hizmet dosya dönüşümü için LibreOffice kullanır.
|
||||
PDFToXML.submit=Dönüştür
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF to CSV
|
||||
PDFToCSV.header=PDF to CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=Extract
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
@@ -93,6 +93,7 @@ account.accountSettings=帐号设定
|
||||
account.adminSettings=管理员设置 - 查看和添加用户
|
||||
account.userControlSettings=用户控制设置
|
||||
account.changeUsername=更改用户名
|
||||
account.changeUsername=更改用户名
|
||||
account.password=确认密码
|
||||
account.oldPassword=旧密码
|
||||
account.newPassword=新密码
|
||||
@@ -125,8 +126,13 @@ adminUserSettings.submit=保存用户
|
||||
# HOME-PAGE #
|
||||
#############
|
||||
home.desc=CZL一站式服务,满足您的所有PDF需求。
|
||||
home.searchBar=Search for features...
|
||||
|
||||
|
||||
home.viewPdf.title=View PDF
|
||||
home.viewPdf.desc=View, annotate, add text or images
|
||||
viewPdf.tags=view,read,annotate,text,image
|
||||
|
||||
home.multiTool.title=PDF多功能工具
|
||||
home.multiTool.desc=合并、旋转、重新排列和删除PDF页面
|
||||
multiTool.tags=多工具,多操作,用户界面,点击拖动,前端,客户端
|
||||
@@ -156,6 +162,7 @@ home.pdfOrganiser.title=整理
|
||||
home.pdfOrganiser.desc=按任意顺序删除/重新排列页面。
|
||||
pdfOrganiser.tags=双面、偶数、奇数、排序、移动
|
||||
|
||||
|
||||
home.addImage.title=在PDF中添加图片
|
||||
home.addImage.desc=将图像添加到PDF的指定位置。
|
||||
addImage.tags=图像、JPG、图片、照片
|
||||
@@ -168,6 +175,7 @@ home.permissions.title=更改权限
|
||||
home.permissions.desc=更改PDF文档的权限。
|
||||
permissions.tags=阅读、写入、编辑、打印
|
||||
|
||||
|
||||
home.removePages.title=删除
|
||||
home.removePages.desc=从PDF文档中删除不需要的页面。
|
||||
removePages.tags=删除页面、删除
|
||||
@@ -184,6 +192,7 @@ home.compressPdfs.title=压缩
|
||||
home.compressPdfs.desc=压缩PDF文件以减小文件大小。
|
||||
compressPdfs.tags=压缩、小、微小
|
||||
|
||||
|
||||
home.changeMetadata.title=更改元数据
|
||||
home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。
|
||||
changeMetadata.tags=标题、作者、日期、创建、时间、发布者、制作人、统计数据
|
||||
@@ -221,6 +230,7 @@ home.PDFToHTML.title=PDF转HTML
|
||||
home.PDFToHTML.desc=将PDF转换为HTML格式。
|
||||
PDFToHTML.tags=网页内容、浏览器友好
|
||||
|
||||
|
||||
home.PDFToXML.title=PDF转XML
|
||||
home.PDFToXML.desc=将PDF转换为XML格式。
|
||||
PDFToXML.tags=数据提取、结构化内容、互操作、转换
|
||||
@@ -297,22 +307,27 @@ home.HTMLToPDF.title=HTML转PDF
|
||||
home.HTMLToPDF.desc=将任何HTML文件或zip文件转换为PDF
|
||||
HTMLToPDF.tags=标记、网页内容、转换、转换
|
||||
|
||||
|
||||
home.MarkdownToPDF.title=Markdown转PDF
|
||||
home.MarkdownToPDF.desc=将任何Markdown文件转换为PDF
|
||||
MarkdownToPDF.tags=标记、网页内容、转换、转换
|
||||
|
||||
|
||||
home.getPdfInfo.title=获取PDF的所有信息
|
||||
home.getPdfInfo.desc=获取PDF的所有可能的信息
|
||||
getPdfInfo.tags=信息、数据、统计、统计数据
|
||||
|
||||
|
||||
home.extractPage.title=提取页面
|
||||
home.extractPage.desc=从PDF中提取选定的页面
|
||||
extractPage.tags=提取
|
||||
|
||||
|
||||
home.PdfToSinglePage.title=PDF转单一大页
|
||||
home.PdfToSinglePage.desc=将所有PDF页面合并为一个大的单页
|
||||
PdfToSinglePage.tags=单页
|
||||
|
||||
|
||||
home.showJS.title=显示JavaScript
|
||||
home.showJS.desc=搜索并显示嵌入到PDF中的任何JavaScript代码
|
||||
showJS.tags=JavaScript
|
||||
@@ -321,6 +336,24 @@ home.autoRedact.title=自动删除
|
||||
home.autoRedact.desc=根据输入文本自动删除(覆盖)PDF中的文本
|
||||
showJS.tags=JavaScript
|
||||
|
||||
home.tableExtraxt.title=PDF to CSV
|
||||
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV
|
||||
tableExtraxt.tags=CSV,Table Extraction,extract,convert
|
||||
|
||||
|
||||
home.autoSizeSplitPDF.title=Auto Split by Size/Count
|
||||
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count
|
||||
autoSizeSplitPDF.tags=pdf,split,document,organization
|
||||
|
||||
|
||||
home.overlay-pdfs.title=Overlay PDFs
|
||||
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF
|
||||
overlay-pdfs.tags=Overlay
|
||||
|
||||
home.split-by-sections.title=Split PDF by Sections
|
||||
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
|
||||
split-by-sections.tags=Section Split, Divide, Customize
|
||||
|
||||
###########################
|
||||
# #
|
||||
# WEB PAGES #
|
||||
@@ -468,9 +501,6 @@ pipeline.title=流水线
|
||||
pageLayout.title=多页布局
|
||||
pageLayout.header=多页布局
|
||||
pageLayout.pagesPerSheet=每页的页面数:
|
||||
##########################
|
||||
### TODO: Translate ###
|
||||
##########################
|
||||
pageLayout.addBorder=添加边框
|
||||
pageLayout.submit=提交
|
||||
|
||||
@@ -625,6 +655,9 @@ pdfOrganiser.submit=重新排列页面
|
||||
multiTool.title=PDF多功能工具
|
||||
multiTool.header=PDF多功能工具
|
||||
|
||||
#view pdf
|
||||
viewPdf.title=View PDF
|
||||
viewPdf.header=View PDF
|
||||
|
||||
#pageRemover
|
||||
pageRemover.title=删除页面
|
||||
@@ -808,3 +841,45 @@ PDFToXML.title=PDF To XML
|
||||
PDFToXML.header=将PDF转换为XML
|
||||
PDFToXML.credit=此服务使用LibreOffice进行文件转换。
|
||||
PDFToXML.submit=转换
|
||||
|
||||
#PDFToCSV
|
||||
PDFToCSV.title=PDF ? CSV
|
||||
PDFToCSV.header=PDF ? CSV
|
||||
PDFToCSV.prompt=Choose page to extract table
|
||||
PDFToCSV.submit=??
|
||||
|
||||
#split-by-size-or-count
|
||||
split-by-size-or-count.header=Split PDF by Size or Count
|
||||
split-by-size-or-count.type.label=Select Split Type
|
||||
split-by-size-or-count.type.size=By Size
|
||||
split-by-size-or-count.type.pageCount=By Page Count
|
||||
split-by-size-or-count.type.docCount=By Document Count
|
||||
split-by-size-or-count.value.label=Enter Value
|
||||
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5)
|
||||
split-by-size-or-count.submit=Submit
|
||||
|
||||
|
||||
#overlay-pdfs
|
||||
overlay-pdfs.header=Overlay PDF Files
|
||||
overlay-pdfs.baseFile.label=Select Base PDF File
|
||||
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files
|
||||
overlay-pdfs.mode.label=Select Overlay Mode
|
||||
overlay-pdfs.mode.sequential=Sequential Overlay
|
||||
overlay-pdfs.mode.interleaved=Interleaved Overlay
|
||||
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay
|
||||
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode)
|
||||
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1)
|
||||
overlay-pdfs.position.label=Select Overlay Position
|
||||
overlay-pdfs.position.foreground=Foreground
|
||||
overlay-pdfs.position.background=Background
|
||||
overlay-pdfs.submit=Submit
|
||||
|
||||
|
||||
#split-by-sections
|
||||
split-by-sections.title=Split PDF by Sections
|
||||
split-by-sections.header=Split PDF into Sections
|
||||
split-by-sections.horizontal.label=Horizontal Divisions
|
||||
split-by-sections.vertical.label=Vertical Divisions
|
||||
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions
|
||||
split-by-sections.vertical.placeholder=Enter number of vertical divisions
|
||||
split-by-sections.submit=Split PDF
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
#searchBar {
|
||||
background-image: url('/images/search.svg');
|
||||
background-position: 16px 16px;
|
||||
background-repeat: no-repeat;
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
#searchBar {
|
||||
background-image: url('/images/search.svg');
|
||||
background-position: 16px 16px;
|
||||
background-repeat: no-repeat;
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
margin-bottom: 12px;
|
||||
padding: 12px 20px 12px 40px;
|
||||
padding: 12px 20px 12px 40px;
|
||||
border: 1px solid #ddd;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
.dark-mode-search {
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' hei… 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/%3E%3C/svg%3E") !important;
|
||||
color: #f8f9fa !important;
|
||||
background-color: #212529 !important;
|
||||
border-color: #343a40 !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.features-container {
|
||||
@@ -25,10 +32,10 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
background: rgba(13, 110, 253, 0.05);
|
||||
background: rgba(13, 110, 253, 0.05);
|
||||
transition: transform 0.3s, border 0.3s;
|
||||
transform-origin: center center;
|
||||
outline: 2px solid transparent;
|
||||
outline: 2px solid transparent;
|
||||
}
|
||||
|
||||
.feature-card a {
|
||||
|
||||
BIN
src/main/resources/static/fonts/Arimo-Regular.woff2
Normal file
BIN
src/main/resources/static/fonts/Arimo-Regular.woff2
Normal file
Binary file not shown.
BIN
src/main/resources/static/fonts/Tinos-Regular.woff2
Normal file
BIN
src/main/resources/static/fonts/Tinos-Regular.woff2
Normal file
Binary file not shown.
18
src/main/resources/static/images/book-opened.svg
Normal file
18
src/main/resources/static/images/book-opened.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg"
|
||||
width="800px" height="800px" viewBox="0 0 318.336 318.336"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M302.137,74.432h-21.031c-30.496-13.614-56.389-20.611-77.028-20.611c-26.731,0-39.245,11.649-44.906,20.535
|
||||
c-5.658-8.886-18.17-20.535-44.906-20.535c-20.638,0-46.533,7.003-77.037,20.611H16.2c-8.946,0-16.2,7.253-16.2,16.2v157.684
|
||||
c0,8.949,7.254,16.2,16.2,16.2h285.937c8.948,0,16.199-7.251,16.199-16.2V90.632C318.336,81.686,311.085,74.432,302.137,74.432z
|
||||
M154.786,84.265c-0.048,0.25-0.069,0.503-0.069,0.757V233.74c-7.084-8.18-18.95-14.438-38.804-14.438
|
||||
c-35.44,0-79.927,19.432-95.813,26.947V91.528c13.608-6.927,26.31-12.587,38.156-17.096c21.745-8.271,40.526-12.511,56.004-12.511
|
||||
c18.992,0,29.37,6.354,34.986,12.511c3.241,3.554,4.91,7.038,5.698,9.192C154.852,83.985,154.791,84.243,154.786,84.265z
|
||||
M298.234,246.249c-15.884-7.516-60.371-26.947-95.809-26.947c-19.859,0-31.72,6.254-38.805,14.438
|
||||
c-0.261,0.3-0.562,0.58-0.804,0.886V85.48c0.084-0.351,0.269-0.981,0.583-1.825c0.799-2.149,2.499-5.647,5.776-9.218
|
||||
c5.648-6.157,16.026-12.512,34.9-12.512c15.478,0,34.251,4.24,56.004,12.512c11.854,4.509,24.548,10.17,38.153,17.097V246.249
|
||||
L298.234,246.249z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
8
src/main/resources/static/images/flags/tr.svg
Normal file
8
src/main/resources/static/images/flags/tr.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-tr" viewBox="0 0 640 480">
|
||||
<g fill-rule="evenodd">
|
||||
<path fill="#e30a17" d="M0 0h640v480H0z"/>
|
||||
<path fill="#fff" d="M407 247.5c0 66.2-54.6 119.9-122 119.9s-122-53.7-122-120 54.6-119.8 122-119.8 122 53.7 122 119.9z"/>
|
||||
<path fill="#e30a17" d="M413 247.5c0 53-43.6 95.9-97.5 95.9s-97.6-43-97.6-96 43.7-95.8 97.6-95.8 97.6 42.9 97.6 95.9z"/>
|
||||
<path fill="#fff" d="m430.7 191.5-1 44.3-41.3 11.2 40.8 14.5-1 40.7 26.5-31.8 40.2 14-23.2-34.1 28.3-33.9-43.5 12-25.8-37z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 550 B |
3
src/main/resources/static/images/overlay.svg
Normal file
3
src/main/resources/static/images/overlay.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-layers" viewBox="0 0 16 16">
|
||||
<path d="M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882l-7.5-4zm3.515 7.008L14.438 10 8 13.433 1.562 10 4.25 8.567l3.515 1.874a.5.5 0 0 0 .47 0l3.515-1.874zM8 9.433 1.562 6 8 2.567 14.438 6z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 458 B |
1
src/main/resources/static/images/pdf-csv.svg
Normal file
1
src/main/resources/static/images/pdf-csv.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -1,90 +1,150 @@
|
||||
var toggleCount = 0;
|
||||
var lastToggleTime = Date.now();
|
||||
var toggleCount = 0
|
||||
var lastToggleTime = Date.now()
|
||||
|
||||
var elements = {
|
||||
lightModeStyles: null,
|
||||
darkModeStyles: null,
|
||||
rainbowModeStyles: null,
|
||||
darkModeIcon: null
|
||||
};
|
||||
|
||||
function getElements() {
|
||||
elements.lightModeStyles = document.getElementById("light-mode-styles");
|
||||
elements.darkModeStyles = document.getElementById("dark-mode-styles");
|
||||
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles");
|
||||
elements.darkModeIcon = document.getElementById("dark-mode-icon");
|
||||
lightModeStyles: null,
|
||||
darkModeStyles: null,
|
||||
rainbowModeStyles: null,
|
||||
darkModeIcon: null,
|
||||
searchBar: null,
|
||||
formControls: null,
|
||||
navbar: null,
|
||||
navIcons: null,
|
||||
navDropdownMenus: null,
|
||||
}
|
||||
|
||||
function getElements() {
|
||||
elements.lightModeStyles = document.getElementById("light-mode-styles")
|
||||
elements.darkModeStyles = document.getElementById("dark-mode-styles")
|
||||
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles")
|
||||
elements.darkModeIcon = document.getElementById("dark-mode-icon")
|
||||
elements.searchBar = document.getElementById("searchBar")
|
||||
elements.formControls = document.querySelectorAll(".form-control")
|
||||
elements.navbar = document.querySelectorAll("nav.navbar")
|
||||
elements.navIcons = document.querySelectorAll("nav .icon, .navbar-icon")
|
||||
elements.navDropdownMenus = document.querySelectorAll("nav .dropdown-menu")
|
||||
}
|
||||
function setMode(mode) {
|
||||
var event = new CustomEvent('modeChanged', { detail: mode });
|
||||
document.dispatchEvent(event);
|
||||
elements.lightModeStyles.disabled = mode !== "off";
|
||||
elements.darkModeStyles.disabled = mode !== "on";
|
||||
elements.rainbowModeStyles.disabled = mode !== "rainbow";
|
||||
var jumbotron = document.getElementById('jumbotron');
|
||||
if (mode === "on") {
|
||||
elements.darkModeIcon.src = "moon.svg";
|
||||
// Add the table-dark class to tables for dark mode
|
||||
var tables = document.querySelectorAll('.table');
|
||||
tables.forEach(table => {
|
||||
table.classList.add('table-dark');
|
||||
});
|
||||
if(jumbotron) {
|
||||
jumbotron.classList.add('bg-dark');
|
||||
jumbotron.classList.remove('bg-light');
|
||||
}
|
||||
} else if (mode === "off") {
|
||||
elements.darkModeIcon.src = "sun.svg";
|
||||
// Remove the table-dark class for light mode
|
||||
var tables = document.querySelectorAll('.table-dark');
|
||||
tables.forEach(table => {
|
||||
table.classList.remove('table-dark');
|
||||
});
|
||||
if(jumbotron){
|
||||
console.log(mode)
|
||||
jumbotron.classList.remove('bg-dark');
|
||||
jumbotron.classList.add('bg-light');
|
||||
}
|
||||
} else if (mode === "rainbow") {
|
||||
elements.darkModeIcon.src = "rainbow.svg";
|
||||
}
|
||||
var event = new CustomEvent("modeChanged", { detail: mode });
|
||||
document.dispatchEvent(event);
|
||||
|
||||
if (elements && elements.lightModeStyles) {
|
||||
elements.lightModeStyles.disabled = mode !== "off";
|
||||
}
|
||||
if (elements && elements.darkModeStyles) {
|
||||
elements.darkModeStyles.disabled = mode !== "on";
|
||||
}
|
||||
if (elements && elements.rainbowModeStyles) {
|
||||
elements.rainbowModeStyles.disabled = mode !== "rainbow";
|
||||
}
|
||||
|
||||
var jumbotron = document.getElementById("jumbotron");
|
||||
|
||||
if (mode === "on") {
|
||||
if (elements && elements.darkModeIcon) {
|
||||
elements.darkModeIcon.src = "moon.svg";
|
||||
}
|
||||
if (elements && elements.searchBar) {
|
||||
elements.searchBar.classList.add("dark-mode-search");
|
||||
}
|
||||
if (elements && elements.formControls) {
|
||||
elements.formControls.forEach(input => input.classList.add("bg-dark", "text-white"));
|
||||
}
|
||||
if (elements && elements.navbar) {
|
||||
elements.navbar.forEach(navElement => {
|
||||
navElement.classList.remove("navbar-light", "bg-light");
|
||||
navElement.classList.add("navbar-dark", "bg-dark");
|
||||
});
|
||||
}
|
||||
if (elements && elements.navDropdownMenus) {
|
||||
elements.navDropdownMenus.forEach(menu => menu.classList.add("dropdown-menu-dark"));
|
||||
}
|
||||
if (elements && elements.navIcons) {
|
||||
elements.navIcons.forEach(icon => (icon.style.filter = "invert(1)"));
|
||||
}
|
||||
var tables = document.querySelectorAll(".table");
|
||||
tables.forEach(table => {
|
||||
table.classList.add("table-dark");
|
||||
});
|
||||
if (jumbotron) {
|
||||
jumbotron.classList.add("bg-dark");
|
||||
jumbotron.classList.remove("bg-light");
|
||||
}
|
||||
} else if (mode === "off") {
|
||||
if (elements && elements.darkModeIcon) {
|
||||
elements.darkModeIcon.src = "sun.svg";
|
||||
}
|
||||
if (elements && elements.searchBar) {
|
||||
elements.searchBar.classList.remove("dark-mode-search");
|
||||
}
|
||||
if (elements && elements.formControls) {
|
||||
elements.formControls.forEach(input => input.classList.remove("bg-dark", "text-white"));
|
||||
}
|
||||
if (elements && elements.navbar) {
|
||||
elements.navbar.forEach(navElement => {
|
||||
navElement.classList.remove("navbar-dark", "bg-dark");
|
||||
navElement.classList.add("navbar-light", "bg-light");
|
||||
});
|
||||
}
|
||||
if (elements && elements.navDropdownMenus) {
|
||||
elements.navDropdownMenus.forEach(menu => menu.classList.remove("dropdown-menu-dark"));
|
||||
}
|
||||
if (elements && elements.navIcons) {
|
||||
elements.navIcons.forEach(icon => (icon.style.filter = "none"));
|
||||
}
|
||||
var tables = document.querySelectorAll(".table-dark");
|
||||
tables.forEach(table => {
|
||||
table.classList.remove("table-dark");
|
||||
});
|
||||
if (jumbotron) {
|
||||
jumbotron.classList.remove("bg-dark");
|
||||
jumbotron.classList.add("bg-light");
|
||||
}
|
||||
} else if (mode === "rainbow") {
|
||||
if (elements && elements.darkModeIcon) {
|
||||
elements.darkModeIcon.src = "rainbow.svg";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function toggleDarkMode() {
|
||||
var currentTime = Date.now();
|
||||
if (currentTime - lastToggleTime < 1000) {
|
||||
toggleCount++;
|
||||
} else {
|
||||
toggleCount = 1;
|
||||
}
|
||||
lastToggleTime = currentTime;
|
||||
var currentTime = Date.now()
|
||||
if (currentTime - lastToggleTime < 1000) {
|
||||
toggleCount++
|
||||
} else {
|
||||
toggleCount = 1
|
||||
}
|
||||
lastToggleTime = currentTime
|
||||
|
||||
if (toggleCount >= 18) {
|
||||
localStorage.setItem("dark-mode", "rainbow");
|
||||
setMode("rainbow");
|
||||
} else if (localStorage.getItem("dark-mode") == "on") {
|
||||
localStorage.setItem("dark-mode", "off");
|
||||
setMode("off");
|
||||
} else {
|
||||
localStorage.setItem("dark-mode", "on");
|
||||
setMode("on");
|
||||
}
|
||||
if (toggleCount >= 18) {
|
||||
localStorage.setItem("dark-mode", "rainbow")
|
||||
setMode("rainbow")
|
||||
} else if (localStorage.getItem("dark-mode") == "on") {
|
||||
localStorage.setItem("dark-mode", "off")
|
||||
setMode("off")
|
||||
} else {
|
||||
localStorage.setItem("dark-mode", "on")
|
||||
setMode("on")
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
getElements();
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
getElements()
|
||||
|
||||
var currentMode = localStorage.getItem("dark-mode");
|
||||
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
|
||||
setMode(currentMode);
|
||||
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||
setMode("on");
|
||||
} else {
|
||||
setMode("off");
|
||||
var currentMode = localStorage.getItem("dark-mode")
|
||||
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
|
||||
setMode(currentMode)
|
||||
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
||||
setMode("on")
|
||||
} else {
|
||||
setMode("off")
|
||||
}
|
||||
|
||||
var darkModeToggle = document.getElementById("dark-mode-toggle");
|
||||
if (darkModeToggle !== null) {
|
||||
darkModeToggle.addEventListener("click", function (event) {
|
||||
event.preventDefault();
|
||||
toggleDarkMode();
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById("dark-mode-toggle").addEventListener("click", function(event) {
|
||||
event.preventDefault();
|
||||
toggleDarkMode();
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
@@ -16,26 +16,40 @@ function compareVersions(version1, version2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
async function getLatestReleaseVersion() {
|
||||
const url = "https://api.github.com/repos/Frooodle/Stirling-PDF/releases/latest";
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
return data.tag_name.substring(1);
|
||||
}
|
||||
|
||||
async function getLatestReleaseVersion() {
|
||||
const url = "https://api.github.com/repos/Frooodle/Stirling-PDF/releases/latest";
|
||||
try {
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
return data.tag_name ? data.tag_name.substring(1) : "";
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch latest version:", error);
|
||||
return ""; // Return an empty string if the fetch fails
|
||||
}
|
||||
}
|
||||
|
||||
async function checkForUpdate() {
|
||||
const latestVersion = await getLatestReleaseVersion();
|
||||
console.log("latestVersion=" + latestVersion)
|
||||
console.log("currentVersion=" + currentVersion)
|
||||
console.log("compareVersions(latestVersion, currentVersion) > 0)=" + compareVersions(latestVersion, currentVersion))
|
||||
if (latestVersion != null && latestVersion != "" && compareVersions(latestVersion, currentVersion) > 0) {
|
||||
document.getElementById("update-btn").style.display = "block";
|
||||
console.log("visible")
|
||||
} else {
|
||||
document.getElementById("update-btn").style.display = "none";
|
||||
console.log("hidden")
|
||||
// Initialize the update button as hidden
|
||||
var updateBtn = document.getElementById("update-btn");
|
||||
if (updateBtn !== null) {
|
||||
updateBtn.style.display = "none";
|
||||
}
|
||||
|
||||
|
||||
const latestVersion = await getLatestReleaseVersion();
|
||||
console.log("latestVersion=" + latestVersion)
|
||||
console.log("currentVersion=" + currentVersion)
|
||||
console.log("compareVersions(latestVersion, currentVersion) > 0)=" + compareVersions(latestVersion, currentVersion))
|
||||
if (latestVersion && compareVersions(latestVersion, currentVersion) > 0) {
|
||||
document.getElementById("update-btn").style.display = "block";
|
||||
console.log("visible")
|
||||
} else {
|
||||
console.log("hidden")
|
||||
}
|
||||
}
|
||||
|
||||
checkForUpdate();
|
||||
|
||||
document.addEventListener('DOMContentLoaded', (event) => {
|
||||
checkForUpdate();
|
||||
});
|
||||
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-EUC-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/78ms-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/83pv-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/83pv-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90ms-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90msp-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/90pv-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Add-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-RKSJ-H.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Add-RKSJ-H.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-RKSJ-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Add-RKSJ-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Add-V.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Add-V.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-0.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-0.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-1.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-1.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-2.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-2.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-3.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-3.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-4.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-4.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-5.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-5.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-6.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-6.bcmap
vendored
Normal file
Binary file not shown.
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap
vendored
Normal file
BIN
src/main/resources/static/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user