Compare commits

...

192 Commits

Author SHA1 Message Date
Anthony Stirling
5774a22b64 possible fixes for overlay 2023-12-17 12:35:50 +00:00
ant
39345bb6bb Merge branch 'main' of git@github.com:Frooodle/Stirling-PDF.git into main 2023-12-17 12:31:24 +00:00
Anthony Stirling
57b483047e splitPdf sections cleanup 2023-12-17 12:23:11 +00:00
Anthony Stirling
0fb7633da8 Merge pull request #528 from NicolasFR/lang/FR_fr-updates
lang: update fr_FR
2023-12-17 11:34:09 +00:00
Nicolas
dae2f33772 lang: update fr_FR 2023-12-17 10:39:33 +01:00
Anthony Stirling
31ac877612 Update build.gradle 2023-12-16 19:56:56 +00:00
Anthony Stirling
79dcf99cce Clean imports and lang updates 2023-12-16 19:30:47 +00:00
Anthony Stirling
c28a40ffe8 Split by sections #506 2023-12-16 19:29:43 +00:00
Anthony Stirling
12dccab460 auth log #522 2023-12-16 18:18:00 +00:00
Anthony Stirling
0a26e2e6d6 new deps 2023-12-16 10:42:27 +00:00
Anthony Stirling
74f6cd63f4 other JS changes 2023-12-16 10:35:45 +00:00
Anthony Stirling
e8de5739fa Resolve has Update button to stay hidden if error 2023-12-16 10:26:35 +00:00
Anthony Stirling
1b2734d99c login enable and security stuff 2023-12-16 10:22:33 +00:00
Anthony Stirling
206cf40cb5 Update Dockerfile-ultra-lite
login
2023-12-16 10:11:34 +00:00
Anthony Stirling
78473e96fd Update Dockerfile-lite
fix for #526 Support for login in lite
2023-12-16 10:08:09 +00:00
Anthony Stirling
b7d6ac2cc3 extra fonts, ocr display full names, overlay fixes 2023-12-12 23:25:56 +00:00
Anthony Stirling
4068d9530f svg 2023-12-11 23:24:13 +00:00
Anthony Stirling
8a331956c2 Merge branch 'main' of git@github.com:Frooodle/Stirling-PDF.git into main 2023-12-11 23:20:43 +00:00
Anthony Stirling
1d3e018a56 init overlay and auto split 2023-12-11 23:20:31 +00:00
Anthony Stirling
3602034938 Merge pull request #520 from NicolasFR/patch-1
Update messages_fr_FR.properties
2023-12-11 18:39:05 +00:00
NicolasFR
eb4e2d5fca Update messages_fr_FR.properties 2023-12-11 17:56:38 +01:00
Anthony Stirling
b6671939e5 Merge pull request #517 from NeilJared/es_ES
Update messages_es_ES.properties
2023-12-11 12:12:17 +00:00
Anthony Stirling
41d09e40a1 Merge branch 'main' into es_ES 2023-12-11 12:11:10 +00:00
Anthony Stirling
9b0dba7f65 Update account.html
#515 fix
2023-12-11 12:10:10 +00:00
NeilJared
ac0dc8b5c7 Update messages_es_ES.properties
Updated es_ES translation
2023-12-11 13:06:59 +01:00
Anthony Stirling
723216c693 Merge pull request #516 from Frooodle/Frooodle-patch-1
Update build.gradle
2023-12-11 11:02:45 +00:00
Anthony Stirling
46f9a5057f Update build.gradle 2023-12-11 11:01:48 +00:00
Anthony Stirling
8a2633ca93 Update build.gradle 2023-12-11 10:59:05 +00:00
Anthony Stirling
a03470d2de Update Dockerfile 2023-12-11 10:09:28 +00:00
Anthony Stirling
ef7c98e5cb Merge pull request #514 from Frooodle/securityStuff
Security stuff
2023-12-11 10:00:57 +00:00
Anthony Stirling
c9cd1331d2 Merge branch 'main' into securityStuff 2023-12-11 09:58:09 +00:00
Anthony Stirling
ddc14517b8 Merge branch 'securityStuff' of git@github.com:Frooodle/Stirling-PDF.git into securityStuff 2023-12-11 09:57:37 +00:00
Anthony Stirling
578aecf977 WeasyPrint 2023-12-11 09:57:28 +00:00
Anthony Stirling
b1ca938053 Merge pull request #513 from Frooodle/securityStuff
fix
2023-12-11 09:35:23 +00:00
Anthony Stirling
298fe349c1 Merge branch 'main' into securityStuff 2023-12-11 09:33:20 +00:00
Anthony Stirling
f4364a3f33 bump 2023-12-11 09:33:05 +00:00
Anthony Stirling
e0f068bc9d test 2023-12-11 09:32:36 +00:00
Anthony Stirling
d7f8219b80 Update view-pdf.html 2023-12-10 23:22:25 +00:00
Anthony Stirling
87bc0fc975 Merge pull request #509 from Frooodle/securityStuff
Docker file security updates and minor fixes to things
2023-12-10 23:10:04 +00:00
Anthony Stirling
9f21ce96de Merge branch 'main' into securityStuff 2023-12-10 23:08:34 +00:00
Anthony Stirling
1f29033f17 docker changes 2023-12-10 23:06:35 +00:00
Anthony Stirling
59c7978330 docker and ocr updates 2023-12-10 22:02:30 +00:00
Anthony Stirling
8b55ffff96 changes 2023-12-10 16:33:44 +00:00
Anthony Stirling
a94808fd19 dark mode fixes 2023-12-10 15:29:12 +00:00
Anthony Stirling
7b2ffcff01 Merge pull request #504 from albanobattistella/patch-1
Update messages_it_IT.properties
2023-12-10 14:11:17 +00:00
Anthony Stirling
28a9daff62 init 2023-12-10 14:09:28 +00:00
albanobattistella
435753f50b Update messages_it_IT.properties 2023-12-08 16:01:14 +01:00
Anthony Stirling
1e6f288d72 Merge pull request #501 from alexdraconian/lang-ko
Add/improve Korean translation
2023-12-07 17:39:28 +00:00
Anthony Stirling
6d3fece5a6 Merge branch 'main' into lang-ko 2023-12-07 16:21:01 +00:00
alexdraconian
db926c50d8 Add/improve Korean translation 2023-12-07 21:47:20 +09:00
Anthony Stirling
dd9333f42e Merge pull request #491 from digitalindependent/patch-1
Typo fixed in HowToUseOCR.md
2023-12-02 23:39:42 +00:00
digitalindependent
3fa5acc51c Typo fixed in HowToUseOCR.md
ITS => IT'S
2023-12-02 22:34:43 +01:00
Anthony Stirling
15fa3df424 Merge pull request #475 from danielr1996/main
ci: add helm package/push to Jenkinsfile
2023-11-30 20:08:31 +00:00
Anthony Stirling
06c4ec95d5 Merge branch 'main' into main 2023-11-24 14:36:19 +00:00
Anthony Stirling
1a6afc1582 Merge pull request #470 from trytomakeyouprivate/main
added Podman and Distrobox notes
2023-11-24 13:35:10 +00:00
trytomakeyouprivate
ad2e1e4a18 Merge branch 'Frooodle:main' into main 2023-11-24 12:56:02 +00:00
Anthony Stirling
a1d0dcff41 Merge pull request #479 from Ludy87/german-translation
update language german
2023-11-17 15:16:57 +00:00
Ludy87
08da0f5c56 update language german 2023-11-17 16:07:02 +01:00
Daniel Richter
0b666674f7 fix(helm): move ci build to github actions
Signed-off-by: Daniel Richter <danielrichter@posteo.de>
2023-11-16 23:04:32 +01:00
Daniel Richter
d3fe467f6f ci: add helm package/push to Jenkinsfile
Signed-off-by: Daniel Richter <danielrichter@posteo.de>
2023-11-12 22:31:35 +01:00
trytomakeyouprivate
732fa0ec40 added Podman and Distrobox note 2023-11-07 11:49:11 +00:00
trytomakeyouprivate
7a7c978df2 added Podman
Podman is supposedly more Secure and used and distributed by Redhat and Fedora. It is CLI compatible with Docker
2023-11-07 11:45:42 +00:00
Anthony Stirling
9d052b310f Merge pull request #459 from Artem-ka-create/issue-372-pdfbox
Issue 372 pdfbox
2023-11-05 19:49:14 +00:00
Atrem Petrenko
8ff1a63276 Merge branch 'main' into issue-372-pdfbox 2023-11-05 14:49:04 +01:00
Anthony Stirling
ffd413ce7f Merge pull request #464 from NeilJared/main
Update messages_es_ES.properties
2023-11-05 11:23:18 +00:00
NeilJared
f2607bd161 Update messages_es_ES.properties
Modified!
2023-11-05 11:59:15 +01:00
NeilJared
ba5f3e12d7 Update messages_es_ES.properties
Updated Spanish translation
2023-11-05 11:39:53 +01:00
Anthony Stirling
ddc48429b1 Merge pull request #403 from Pixee-Bot-Java/pixeebot/drip-2023-10-05-pixee-java/secure-random
Introduced protections against predictable RNG abuse
2023-11-03 00:58:11 +00:00
Anthony Stirling
b8b7adbaf9 Merge pull request #456 from omerbustun/main
Add Turkish language support
2023-11-03 00:52:20 +00:00
Anthony Stirling
4ae945d08a Merge branch 'main' into main 2023-11-03 00:51:12 +00:00
Anthony Stirling
12f5a5e6d0 Merge pull request #460 from sanjeevneo/main
Enhance navbar for dark mode support
2023-11-02 19:16:48 +00:00
sanjeevneo
f85a7cb04d Enhance navbar for dark mode support 2023-11-03 02:15:02 +11:00
Atrem Petrenko
2f6a885bb0 update language properties 2023-11-02 12:13:33 +01:00
Atrem Petrenko
c8ac1f7029 implementing extracting tables from pdf by pdfbox 2023-11-02 11:50:50 +01:00
Atrem Petrenko
d6afb07533 starting issue, implementing pdf-to-csv view 2023-10-31 18:58:40 +01:00
Zach Carroll
a55f9f0ec8 Merge branch 'main' into pixeebot/drip-2023-10-05-pixee-java/secure-random 2023-10-30 15:26:14 -04:00
Ömer Üstün
06401d875b Merge branch 'Frooodle:main' into main 2023-10-30 20:01:26 +03:00
Ömer Üstün
4a29fd4b73 Update README.md 2023-10-30 19:59:15 +03:00
Ömer Üstün
02c53b90b3 Update messages_tr_TR.properties 2023-10-30 19:58:04 +03:00
Ömer Üstün
6ca1d82188 Update messages_tr_TR.properties 2023-10-30 19:19:12 +03:00
Anthony Stirling
18c5f5bb2b Merge pull request #455 from sanjeevneo/main
Optimize Dark Mode Toggle for Additional UI Elements
2023-10-30 10:34:27 +00:00
Anthony Stirling
33d21a7a85 Merge pull request #453 from tkymmm/main
Update messages_ja_JP.properties
2023-10-30 10:34:04 +00:00
Neo
c48c3e8897 Dark Mode Improvements 2023-10-30 18:29:55 +11:00
tkymmm
67f34016ce Update messages_ja_JP.properties 2023-10-30 09:21:02 +09:00
Ömer Üstün
c1434df259 Update messages_tr_TR.properties 2023-10-29 22:55:06 +03:00
Ömer Üstün
dd0eaf9182 Update messages_tr_TR.properties 2023-10-29 22:55:06 +03:00
Ömer Üstün
cfe50bcd81 Update messages_tr_TR.properties 2023-10-29 22:55:06 +03:00
omerbustun
a75bbff7cf Update messages_tr_TR.properties 2023-10-29 22:55:06 +03:00
omerbustun
2e9d88da0e Add Turkish option to navbar language selector
- Updated the navbar to include the Turkish language option.
- Added the Turkish flag SVG to the assets folder.
- Translated a portion of the .properties file to support Turkish.
2023-10-29 22:55:06 +03:00
Anthony Stirling
124c7801c5 Merge pull request #440 from quyleanh/patch-1
Update README.md to correct Endpoint-groups.md link
2023-10-29 15:59:24 +00:00
Anthony Stirling
8490613ada Merge pull request #450 from maxi322/main
Add german translation for View PDF
2023-10-29 15:59:12 +00:00
Anthony Stirling
80553ce95a Merge branch 'main' into patch-1 2023-10-28 15:29:22 +01:00
maxi322
d9206bfd2a Add german translation for View PDF 2023-10-28 15:31:44 +02:00
Anthony Stirling
7aae688db2 add searchbar translation option 2023-10-28 13:30:48 +01:00
Anthony Stirling
347b4cfa85 Update build.gradle 2023-10-28 12:14:11 +01:00
Anthony Stirling
f2eebcc396 extra lang 2023-10-28 12:12:54 +01:00
Anthony Stirling
19c26f0552 lang update 2023-10-28 12:06:23 +01:00
Anthony Stirling
d532db91f9 fixes for #438 and #423 2023-10-28 10:40:26 +01:00
Anthony Stirling
bd0bf404f5 Merge pull request #445 from DimK10/Feature-request-pdf-reader
Adds navbar logo to pdf viewer
2023-10-27 18:28:33 +01:00
Dimitris Kaitantzidis
e51a9c209a Merge branch 'main' into Feature-request-pdf-reader 2023-10-27 20:11:14 +03:00
Dimitrios Kaitantzidis
6bf172fb25 Adds navbar logo to pdf viewer 2023-10-27 20:08:13 +03:00
Anthony Stirling
a1e93e0f5d Update .gitattributes 2023-10-25 22:07:05 +01:00
Anthony Stirling
6392f6ec12 Merge pull request #442 from joleaf/main
Fix help text in addPageNumbers.customNumberDesc
2023-10-25 10:20:33 +01:00
joleaf
fbdff5c97f Update messages_it_IT.properties - fix helptext addPageNumbers.customNumberDesc 2023-10-25 10:55:13 +02:00
joleaf
2ecc4ed080 Update messages_es_ES.properties - Fix helptext addPageNumbers.customNumberDesc 2023-10-25 10:54:21 +02:00
joleaf
3318cb96b2 Update messages_de_DE.properties - fix helptext addPageNumbers.customNumberDesc 2023-10-25 10:53:10 +02:00
Quy Le Anh
6be0a1fb05 Update README.md to correct Endpoint-groups.md link 2023-10-24 17:11:48 +09:00
Anthony Stirling
ab1297aee0 Version bump and readme change 2023-10-22 23:14:18 +01:00
Anthony Stirling
25a0cb7681 Merge pull request #439 from DimK10/Feature-request-pdf-reader
Feature request pdf reader
2023-10-22 23:02:14 +01:00
Dimitrios Kaitantzidis
116b034878 Adds support for greek language. 2023-10-23 00:56:53 +03:00
Dimitrios Kaitantzidis
038de2e264 Adds ignore for .idea folder entirely 2023-10-23 00:43:43 +03:00
Dimitrios Kaitantzidis
7e51cf8c5a Removes .idea files and updates README.md. 2023-10-23 00:40:03 +03:00
Dimitrios Kaitantzidis
a1eadba769 Fixes .idea ignored files. 2023-10-23 00:27:36 +03:00
Dimitrios Kaitantzidis
3145f5fdd0 Feature ready. 2023-10-23 00:12:13 +03:00
Dimitrios Kaitantzidis
8393dd4731 Deletes unnecessary files 2023-10-22 20:54:23 +03:00
Dimitrios Kaitantzidis
768877d969 Reader works correctly 2023-10-22 20:32:19 +03:00
Dimitrios Kaitantzidis
14a90f5e50 WIP: No errors but nothing is working 2023-10-22 20:16:59 +03:00
Dimitrios Kaitantzidis
99b0150e7a WIP: Adds Drap and drop 2023-10-21 11:26:58 +03:00
Anthony Stirling
3be12c8988 Merge pull request #424 from DimK10/Bug-Multitool-Filename
Bug multitool filename
2023-10-15 17:37:46 +01:00
Dimitrios Kaitantzidis
89345c8d60 Removes commas in multiple dots with text. 2023-10-15 19:10:30 +03:00
Dimitrios Kaitantzidis
49f1f4e7c7 Fixes bug with unfinished filename extension (multiple dots problem) 2023-10-15 19:03:10 +03:00
Dimitrios Kaitantzidis
d0ce7db9ee Fixes bug with unfinished filename extension (file.p) 2023-10-15 18:35:39 +03:00
Dimitrios Kaitantzidis
53a0291cc2 Adds requested changes 2023-10-15 16:49:12 +03:00
Dimitrios Kaitantzidis
9a3bc839dd Merge remote-tracking branch 'origin/Bug-Multitool-Filename' into Bug-Multitool-Filename 2023-10-14 00:38:16 +03:00
Dimitrios Kaitantzidis
e519840bd6 Fixes issue with light theme support. 2023-10-14 00:37:52 +03:00
Dimitris Kaitantzidis
ed32a3ca33 Merge branch 'main' into Bug-Multitool-Filename 2023-10-14 00:06:36 +03:00
Dimitrios Kaitantzidis
369ac99a16 Fixes issue. 2023-10-14 00:03:08 +03:00
Anthony Stirling
39ac823b05 Merge pull request #308 from Frooodle/dependabot/gradle/org.springdoc-springdoc-openapi-starter-webmvc-ui-2.2.0
Bump org.springdoc:springdoc-openapi-starter-webmvc-ui from 2.1.0 to 2.2.0
2023-10-11 21:05:58 +01:00
Anthony Stirling
548ae4dba3 Merge branch 'main' into dependabot/gradle/org.springdoc-springdoc-openapi-starter-webmvc-ui-2.2.0 2023-10-11 21:04:36 +01:00
Anthony Stirling
f69d593649 Merge pull request #309 from Frooodle/dependabot/gradle/com.google.zxing-core-3.5.2
Bump com.google.zxing:core from 3.5.1 to 3.5.2
2023-10-11 21:04:27 +01:00
Anthony Stirling
423af5f077 Merge branch 'main' into dependabot/gradle/com.google.zxing-core-3.5.2 2023-10-11 15:40:21 +01:00
Anthony Stirling
76e5e1ad00 Merge pull request #311 from Frooodle/dependabot/gradle/io.spring.dependency-management-1.1.3
Bump io.spring.dependency-management from 1.1.2 to 1.1.3
2023-10-11 14:49:03 +01:00
Anthony Stirling
420caa4d8d Merge branch 'main' into dependabot/gradle/io.spring.dependency-management-1.1.3 2023-10-11 14:45:02 +01:00
Anthony Stirling
fdeeb68a6d Merge pull request #367 from Frooodle/dependabot/gradle/edu.sc.seis.launch4j-3.0.5
Bump edu.sc.seis.launch4j from 3.0.3 to 3.0.5
2023-10-11 14:44:48 +01:00
Anthony Stirling
9fe803a0b1 Merge branch 'main' into dependabot/gradle/edu.sc.seis.launch4j-3.0.5 2023-10-11 14:43:45 +01:00
Anthony Stirling
dd9ba90a03 Merge pull request #379 from Frooodle/dependabot/gradle/org.springframework.boot-spring-boot-starter-test-3.1.4
Bump org.springframework.boot:spring-boot-starter-test from 3.1.2 to 3.1.4
2023-10-11 14:43:41 +01:00
Anthony Stirling
2bc739316a Merge branch 'main' into dependabot/gradle/org.springframework.boot-spring-boot-starter-test-3.1.4 2023-10-11 14:42:04 +01:00
Dimitrios Kaitantzidis
74da8c340d Adds support for disabled filename input if not pdf is loaded. Need to disable the input if all pages are deleted. 2023-10-10 20:24:11 +03:00
Anthony Stirling
766cb4410b Update pull_request_template.md 2023-10-08 19:07:08 +01:00
Anthony Stirling
78fe6d6ea8 Create pull_request_template.md 2023-10-08 19:06:08 +01:00
Anthony Stirling
6b99decb56 Create pull_request_template.md 2023-10-08 19:04:32 +01:00
Dimitrios Kaitantzidis
323745e61f Change in name works. 2023-10-08 19:57:19 +03:00
Anthony Stirling
22c19670e9 Merge pull request #415 from DimK10/Feature_Request-Bigger_text_input
Feature request bigger text input
2023-10-08 17:06:32 +01:00
Dimitrios Kaitantzidis
a1b7aaddb8 Changes filename using js, but the old filename persists in download 2023-10-08 18:59:43 +03:00
Dimitris Kaitantzidis
cfba9681c4 Merge branch 'main' into Feature_Request-Bigger_text_input 2023-10-08 17:13:43 +03:00
Dimitrios Kaitantzidis
a019b8b5ca Deletes console.log statements and commented out code. 2023-10-08 17:02:03 +03:00
Dimitrios Kaitantzidis
bd9b267562 Fixes minor typos 2023-10-08 16:04:35 +03:00
Dimitrios Kaitantzidis
b0f8f56650 WIP: Letters are now inside canvas, and multiline support is functional. There is a small bug where when there are a lot of multiple lines, the font gets smaller. 2023-10-08 15:58:23 +03:00
Dimitrios Kaitantzidis
a71e813e82 WIP: Makes font smaller but test is shown as whole and in multiline 2023-10-08 15:51:40 +03:00
Anthony Stirling
75e7665d6e Merge pull request #353 from demonisius/ru_translation_update
Update messages_ru_RU.properties
2023-10-08 00:09:33 +01:00
Anthony Stirling
12293f5297 Merge branch 'main' into ru_translation_update 2023-10-08 00:08:27 +01:00
Anthony Stirling
4899ee0bee Merge pull request #409 from woodchen-ink/patch-1
Update messages_zh_CN.properties
2023-10-08 00:06:40 +01:00
Anthony Stirling
563c17c84e Merge branch 'main' into patch-1 2023-10-08 00:05:36 +01:00
Anthony Stirling
d94eca4ee7 blank == null 2023-10-07 23:35:28 +01:00
Anthony Stirling
f4a01884bd test empty = null for settings 2023-10-07 23:23:56 +01:00
Anthony Stirling
105d7f12ac Merge pull request #412 from Craftplorer/patch-1
Update messages_de_DE.properties
2023-10-07 21:39:35 +01:00
Jonas Meyer
30c115a7de Update messages_de_DE.properties 2023-10-07 22:10:35 +02:00
Dimitrios Kaitantzidis
88a90f22a3 WIP: Adds textarea and multi line support for pdf sign. 2023-10-07 22:54:11 +03:00
Anthony Stirling
c72c712c1b Merge pull request #411 from DimK10/greek_language
Adds Greek language support
2023-10-07 19:06:16 +01:00
Dimitrios Kaitantzidis
7205801e76 Fixes some typos 2023-10-07 20:46:58 +03:00
Dimitrios Kaitantzidis
64f4f54b9d Adds greek language support 2023-10-07 20:39:30 +03:00
Dimitrios Kaitantzidis
0287d88895 WIP: Adds greek language support 2023-10-07 20:25:39 +03:00
Dimitrios Kaitantzidis
cdc075b27c WIP: Adds greek language support 2023-10-07 18:56:43 +03:00
Dimitrios Kaitantzidis
604d9827c5 WIP: Adds greek language support 2023-10-07 18:39:37 +03:00
wood chen
bdeb6bf188 Update messages_zh_CN.properties 2023-10-07 22:58:34 +08:00
Dimitrios Kaitantzidis
19e122be99 WIP: Adds greek language support 2023-10-07 17:53:03 +03:00
Anthony Stirling
f3ddf18a23 Update README.md 2023-10-05 23:53:40 +01:00
pixeebot[bot]
db488b39bb Introduced protections against predictable RNG abuse 2023-10-05 20:29:56 +00:00
Anthony Stirling
51f863e1e4 swagger docs fix #401 2023-10-05 21:20:05 +01:00
Anthony Stirling
0a9381d538 Update pdf-to-img.html 2023-10-05 18:45:33 +01:00
dependabot[bot]
a9514b54eb Bump edu.sc.seis.launch4j from 3.0.3 to 3.0.5
Bumps edu.sc.seis.launch4j from 3.0.3 to 3.0.5.

---
updated-dependencies:
- dependency-name: edu.sc.seis.launch4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 21:58:50 +00:00
dependabot[bot]
d647cb196f Bump org.springframework.boot:spring-boot-starter-test
Bumps [org.springframework.boot:spring-boot-starter-test](https://github.com/spring-projects/spring-boot) from 3.1.2 to 3.1.4.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-test
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 21:58:50 +00:00
Anthony Stirling
b69973f614 Split doc size fix #400 2023-10-03 22:58:15 +01:00
Anthony Stirling
fb9c42f4a1 Merge pull request #398 from deraw/update-fr-translations
Update messages_fr_FR.properties
2023-10-03 00:53:08 +01:00
Dylan Broussard
b873e3cdf8 Update messages_fr_FR.properties 2023-10-02 23:54:01 +02:00
Anthony Stirling
e9fc024332 Merge pull request #392 from nimdassdev/main
BG lang support
2023-10-01 15:17:27 +01:00
IT Creativity + Art Team
d4956fad8c bg lang flag
- bg lang flag
2023-10-01 17:05:42 +03:00
IT Creativity + Art Team
9d1dfe742e Update languages.html
Added BG lang support
2023-10-01 15:59:57 +03:00
IT Creativity + Art Team
e32c092af8 BG lang support
Hello Team,

This is the Bulgarian Translation for Stirling-PDF.

Thank you.
2023-10-01 15:56:22 +03:00
Anthony Stirling
18a2664b54 Merge pull request #373 from jr-instantsystem/features/335_helm_chart
Add helm chart
2023-09-30 10:29:23 +01:00
Anthony Stirling
954e46c5ec Merge branch 'main' into features/335_helm_chart 2023-09-30 10:27:38 +01:00
Anthony Stirling
e0f306d3f7 updates 2023-09-29 23:58:37 +01:00
Anthony Stirling
09db6618d6 Merge pull request #390 from JerronAB/main
Removed numpy library from detect-blank-pages.py
2023-09-29 21:24:29 +01:00
JerronAB
c5ea254945 Removed numpy library from blank page py script 2023-09-29 16:00:22 -04:00
Anthony Stirling
1fc1ecbaa6 Update remove-password.html
allow removal of encryption without password #383
2023-09-28 12:35:44 -05:00
Anthony Stirling
bc4640c3f0 Merge branch 'main' into features/335_helm_chart 2023-09-27 10:51:33 -05:00
Julien Rouvier
1f99c26e78 Add helm chart 2023-09-20 10:07:11 +02:00
Дмитрий
42907ade21 Update messages_ru_RU.properties
Added translation
2023-09-08 11:34:03 +03:00
dependabot[bot]
b3bc0b4e5a Bump org.springdoc:springdoc-openapi-starter-webmvc-ui
Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-06 21:24:15 +00:00
dependabot[bot]
12e24f3ec1 Bump com.google.zxing:core from 3.5.1 to 3.5.2
Bumps [com.google.zxing:core](https://github.com/zxing/zxing) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/zxing/zxing/releases)
- [Changelog](https://github.com/zxing/zxing/blob/master/CHANGES)
- [Commits](https://github.com/zxing/zxing/compare/zxing-3.5.1...zxing-3.5.2)

---
updated-dependencies:
- dependency-name: com.google.zxing:core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-06 21:24:15 +00:00
Anthony Stirling
42610b2645 Merge branch 'main' into dependabot/gradle/io.spring.dependency-management-1.1.3 2023-09-06 18:38:53 +01:00
dependabot[bot]
4e06e8c0c0 Bump io.spring.dependency-management from 1.1.2 to 1.1.3
Bumps [io.spring.dependency-management](https://github.com/spring-gradle-plugins/dependency-management-plugin) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/spring-gradle-plugins/dependency-management-plugin/releases)
- [Commits](https://github.com/spring-gradle-plugins/dependency-management-plugin/compare/v1.1.2...v1.1.3)

---
updated-dependencies:
- dependency-name: io.spring.dependency-management
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-30 21:53:43 +00:00
477 changed files with 74379 additions and 25378 deletions

1
.gitattributes vendored
View File

@@ -1,5 +1,6 @@
# Ignore all JavaScript files in a directory # 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/pdfjs/** linguist-vendored
src/main/resources/static/css/bootstrap-icons.css 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/bootstrap.min.css linguist-vendored
src/main/resources/static/css/fonts/* linguist-vendored src/main/resources/static/css/fonts/* linguist-vendored

4
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,4 @@
# License Agreement for Contributions
By submitting this pull request, I acknowledge and agree that my contributions will be included in Stirling-PDF and that they can be relicensed in the future under MPL 2.0 (Mozilla Public License Version 2.0) license.
(This does not change the general open-source nature of Stirling-PDF, simply moving from one license to another license)

View File

@@ -0,0 +1,3 @@
# License Agreement for Contributions
By submitting this pull request, I acknowledge and agree that my contributions will be included in Stirling-PDF and that they can be relicensed in the future under MPL 2.0 (Mozilla Public License Version 2.0) license.
(This does not change the open-source nature of Stirling-PDF, simply moving from one license to another license)

View File

@@ -140,3 +140,7 @@ jobs:
tags: ${{ steps.meta3.outputs.tags }} tags: ${{ steps.meta3.outputs.tags }}
labels: ${{ steps.meta3.outputs.labels }} labels: ${{ steps.meta3.outputs.labels }}
platforms: linux/amd64,linux/arm64/v8 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
View File

@@ -119,4 +119,5 @@ watchedFolders/
*.db *.db
/build /build
/.vscode /.vscode
/.idea

View File

@@ -1,5 +1,5 @@
# Use the base image # Use the base image
FROM frooodle/stirling-pdf-base:beta4 FROM frooodle/stirling-pdf-base:version8
ARG VERSION_TAG ARG VERSION_TAG

View File

@@ -2,31 +2,32 @@
FROM bellsoft/liberica-openjdk-debian:17 FROM bellsoft/liberica-openjdk-debian:17
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
libreoffice-core-nogui \ libreoffice-core \
libreoffice-common \ libreoffice-common \
libreoffice-writer-nogui \ libreoffice-writer \
libreoffice-calc-nogui \ libreoffice-calc \
libreoffice-impress-nogui \ libreoffice-impress \
unoconv && \ unoconv && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# Set Environment Variables # Set Environment Variables
ENV PUID=1000 \ ENV DOCKER_ENABLE_SECURITY=false \
PGID=1000 \
UMASK=022 \
DOCKER_ENABLE_SECURITY=false \
HOME=/home/stirlingpdfuser \ HOME=/home/stirlingpdfuser \
VERSION_TAG=$VERSION_TAG VERSION_TAG=$VERSION_TAG
# PUID=1000 \
# PGID=1000 \
# UMASK=022 \
# Create user and group # Create user and group
RUN groupadd -g $PGID stirlingpdfgroup && \ #RUN groupadd -g $PGID stirlingpdfgroup && \
useradd -u $PUID -g stirlingpdfgroup -s /bin/sh stirlingpdfuser && \ # useradd -u $PUID -g stirlingpdfgroup -s /bin/sh stirlingpdfuser && \
mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME # mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
# Set up necessary directories and permissions # Set up necessary directories and permissions
RUN mkdir -p /scripts /usr/share/fonts/opentype/noto /configs /customFiles && \ RUN mkdir -p /scripts /usr/share/fonts/opentype/noto /configs /customFiles
chown -R stirlingpdfuser:stirlingpdfgroup /usr/share/fonts/opentype/noto /configs /customFiles
# chown -R stirlingpdfuser:stirlingpdfgroup /usr/share/fonts/opentype/noto /configs /customFiles
# Copy necessary files # Copy necessary files
COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/ COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
@@ -34,8 +35,8 @@ COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto/
COPY build/libs/*.jar app.jar COPY build/libs/*.jar app.jar
# Set font cache and permissions # Set font cache and permissions
RUN fc-cache -f -v && \ RUN fc-cache -f -v
chown stirlingpdfuser:stirlingpdfgroup /app.jar # chown stirlingpdfuser:stirlingpdfgroup /app.jar
@@ -48,5 +49,6 @@ ENV ENDPOINTS_GROUPS_TO_REMOVE=Python,OpenCV,OCRmyPDF
ENV DOCKER_ENABLE_SECURITY=false ENV DOCKER_ENABLE_SECURITY=false
# Run the application # Run the application
USER stirlingpdfuser #USER stirlingpdfuser
ENTRYPOINT ["/scripts/init.sh"]
CMD ["java", "-jar", "/app.jar"] CMD ["java", "-jar", "/app.jar"]

View File

@@ -2,33 +2,36 @@
FROM bellsoft/liberica-openjdk-alpine:17 FROM bellsoft/liberica-openjdk-alpine:17
# Set Environment Variables # Set Environment Variables
ENV PUID=1000 \ ENV DOCKER_ENABLE_SECURITY=false \
PGID=1000 \
UMASK=022 \
DOCKER_ENABLE_SECURITY=false \
HOME=/home/stirlingpdfuser \ 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 # Create user and group using Alpine's addgroup and adduser
RUN addgroup -g $PGID stirlingpdfgroup && \ #RUN addgroup -g $PGID stirlingpdfgroup && \
adduser -u $PUID -G stirlingpdfgroup -s /bin/sh -D stirlingpdfuser && \ # adduser -u $PUID -G stirlingpdfgroup -s /bin/sh -D stirlingpdfuser && \
mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME # mkdir -p $HOME && chown stirlingpdfuser:stirlingpdfgroup $HOME
# Set up necessary directories and permissions # Set up necessary directories and permissions
RUN mkdir -p /scripts /configs /customFiles && \ #RUN mkdir -p /scripts /configs /customFiles && \
chown -R stirlingpdfuser:stirlingpdfgroup /scripts /configs /customFiles # chown -R stirlingpdfuser:stirlingpdfgroup /scripts /configs /customFiles
RUN mkdir -p /scripts /usr/share/fonts/opentype/noto /configs /customFiles
COPY build/libs/*.jar app.jar COPY build/libs/*.jar app.jar
# Set font cache and permissions # Set font cache and permissions
RUN chown stirlingpdfuser:stirlingpdfgroup /app.jar #RUN chown stirlingpdfuser:stirlingpdfgroup /app.jar
# Expose the application port # Expose the application port
EXPOSE 8080 EXPOSE 8080
# Set environment variables # Set environment variables
ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI ENV ENDPOINTS_GROUPS_TO_REMOVE=CLI
ENV DOCKER_ENABLE_SECURITY=false
ENTRYPOINT ["/scripts/init.sh"]
# Run the application # Run the application
CMD ["java", "-jar", "/app.jar"] CMD ["java", "-jar", "/app.jar"]

View File

@@ -1,37 +1,50 @@
# Main stage # Main stage
FROM bellsoft/liberica-openjdk-debian:17 AS base FROM ubuntu:latest AS base
# JDK for app
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends \ 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-common \
libreoffice-writer-nogui \ libreoffice-writer \
libreoffice-calc-nogui \ libreoffice-calc \
libreoffice-impress-nogui \ libreoffice-impress \
python3-uno \ 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 \ python3-pip \
unoconv \ ocrmypdf \
pngquant \ unpaper && \
unpaper \ pip install --upgrade pip && \
ocrmypdf && \ pip install --no-cache-dir --upgrade ocrmypdf && \
rm -rf /var/lib/apt/lists/* && \ 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 && \ mkdir /usr/share/tesseract-ocr-original && \
cp -r /usr/share/tesseract-ocr/* /usr/share/tesseract-ocr-original && \ cp -r /usr/share/tesseract-ocr/* /usr/share/tesseract-ocr-original && \
rm -rf /usr/share/tesseract-ocr 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

View File

@@ -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. 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 ## How does the OCR Work
Stirling-PDF uses [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF) which in turn uses tesseract for its text recognition. 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! 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 ### Installing Language Packs
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need. 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 #### Docker
@@ -34,14 +37,14 @@ services:
your_service_name: your_service_name:
image: your_docker_image_name image: your_docker_image_name
volumes: volumes:
- /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata - /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata
``` ```
#### Docker run #### Docker run
Add the following to your existing docker run command Add the following to your existing docker run command
```bash ```bash
-v /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata -v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata
``` ```
#### Non-Docker #### Non-Docker

20
Jenkinsfile vendored
View File

@@ -22,12 +22,24 @@ pipeline {
def appVersion = sh(returnStdout: true, script: './gradlew printVersion -q').trim() def appVersion = sh(returnStdout: true, script: './gradlew printVersion -q').trim()
def image = "frooodle/s-pdf:$appVersion" def image = "frooodle/s-pdf:$appVersion"
withCredentials([string(credentialsId: 'docker_hub_access_token', variable: 'DOCKER_HUB_ACCESS_TOKEN')]) { 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" 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"
}
}
}
}
}
} }

View File

@@ -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. 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. 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. 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 ### Step 1: Prerequisites
Install the following software, if not already installed: 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: Manual:
1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need. 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. 3.
Please view [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html) for more info. 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. **IMPORTANT:** DO NOT REMOVE EXISTING `eng.traineddata`, IT'S REQUIRED.

View File

@@ -19,7 +19,6 @@ Any file which has been downloaded by the user will have already been deleted fr
Feel free to request any features or bug fixes either in github issues or our [Discord](https://discord.gg/Cn8pWhQRxZ) Feel free to request any features or bug fixes either in github issues or our [Discord](https://discord.gg/Cn8pWhQRxZ)
![stirling-home](images/stirling-home.png) ![stirling-home](images/stirling-home.png)
## Features ## Features
@@ -33,6 +32,7 @@ Feel free to request any features or bug fixes either in github issues or our [D
## **PDF Features** ## **PDF Features**
### **Page Operations** ### **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. - Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages.
- Merge multiple PDFs together into a single resultant file. - 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. - Split PDFs into multiple files at specified page numbers or extract all pages as individual files.
@@ -81,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. - 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 Hosted instance/demo of the app can be seen [here](https://pdf.adminforge.de/) hosted by the team at adminforge.de
## Technologies used ## Technologies used
@@ -99,7 +99,7 @@ Hosted instance/demo of the app can be seen [here](https://pdf.adminforge.de/) h
### Locally ### Locally
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/LocalRunGuide.md Please view https://github.com/Frooodle/Stirling-PDF/blob/main/LocalRunGuide.md
### Docker ### Docker / Podman
https://hub.docker.com/r/frooodle/s-pdf 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. 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.
@@ -113,8 +113,9 @@ Docker Run
``` ```
docker run -d \ docker run -d \
-p 8080:8080 \ -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/extraConfigs:/configs \
-v /location/of/logs:/logs \
-e DOCKER_ENABLE_SECURITY=false \ -e DOCKER_ENABLE_SECURITY=false \
--name stirling-pdf \ --name stirling-pdf \
frooodle/s-pdf:latest frooodle/s-pdf:latest
@@ -133,19 +134,21 @@ services:
ports: ports:
- '8080:8080' - '8080:8080'
volumes: 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/extraConfigs:/configs
# - /location/of/customFiles:/customFiles/ # - /location/of/customFiles:/customFiles/
# - /location/of/logs:/logs/
environment: environment:
- DOCKER_ENABLE_SECURITY=false - DOCKER_ENABLE_SECURITY=false
``` ```
Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman".
## Enable OCR/Compression feature ## Enable OCR/Compression feature
Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md Please view https://github.com/Frooodle/Stirling-PDF/blob/main/HowToUseOCR.md
## Want to add your own language? ## Want to add your own language?
Stirling PDF currently supports 18! Stirling PDF currently supports 20!
- English (English) (en_GB) - English (English) (en_GB)
- English (US) (en_US) - English (US) (en_US)
- Arabic (العربية) (ar_AR) - Arabic (العربية) (ar_AR)
@@ -164,6 +167,8 @@ Stirling PDF currently supports 18!
- Basque (Euskara) (eu_ES) - Basque (Euskara) (eu_ES)
- Japanese (日本語) (ja_JP) - Japanese (日本語) (ja_JP)
- Dutch (Nederlands) (nl_NL) - 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 If you want to add your own language to Stirling-PDF please refer
https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md https://github.com/Frooodle/Stirling-PDF/blob/main/HowToAddNewLanguage.md
@@ -218,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 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 ### 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 - 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 ### Environment only parameters
@@ -232,10 +237,12 @@ For those wanting to use Stirling-PDFs backend API to link with their own custom
## Login authentication ## Login authentication
![stirling-login](images/login-light.png)
### Prerequisites: ### Prerequisites:
- User must have the folder ./configs volumed within docker so that it is retained during updates. - User must have the folder ./configs volumed within docker so that it is retained during updates.
- Docker uses must download the security jar version by setting ``DOCKER_ENABLE_SECURITY`` to ``true`` in environment variables. - Docker uses must download the security jar version by setting ``DOCKER_ENABLE_SECURITY`` to ``true`` in environment variables.
- Now the initial user will be generated with username ``admin`` and password ``stirling``. On login you will be forced to change the password to a new one. - Then either enable login via the settings.yml file or via setting ``SECURITY_ENABLE_LOGIN`` to ``true``
- Now the initial user will be generated with username ``admin`` and password ``stirling``. On login you will be forced to change the password to a new one. You can also use the environment variables ``SECURITY_INITIALLOGIN_USERNAME`` and ``SECURITY_INITIALLOGIN_PASSWORD`` to set your own straight away (Recommended to remove them after user creation).
Once the above has been done, on restart, a new stirling-pdf-DB.mv.db will show if everything worked. Once the above has been done, on restart, a new stirling-pdf-DB.mv.db will show if everything worked.
@@ -256,9 +263,11 @@ 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 - Folder support with auto scanning to perform operations on
- Redact text (Via UI not just automated way) - Redact text (Via UI not just automated way)
- Add Forms - Add Forms
- Annotations
- Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing - Multi page layout (Stich PDF pages together) support x rows y columns and custom page sizing
- Fill forms mannual and automatic - Fill forms mannual and automatic
### Q2: Why is my application downloading .htm files? ### Q2: Why is my application downloading .htm files?
This is a issue caused commonly by your NGINX congifuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. client_max_body_size SIZE; Where "SIZE" is 50M for example for 50MB files. This is a issue caused commonly by your NGINX congifuration. The default file upload size for NGINX is 1MB, you need to add the following in your Nginx sites-available file. ``client_max_body_size SIZE;`` Where "SIZE" is 50M for example for 50MB files.
### Q3: Why is my download timing out
NGINX has timeout values by default so if you are running Stirling-PDF behind NGINX you may need to set a timeout value such as adding the config ``proxy_read_timeout 3600;``

View File

@@ -1,14 +1,14 @@
plugins { plugins {
id 'java' id 'java'
id 'org.springframework.boot' version '3.1.2' id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.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.6.0'
id "io.swagger.swaggerhub" version "1.2.0" id "io.swagger.swaggerhub" version "1.2.0"
id 'edu.sc.seis.launch4j' version '3.0.3' id 'edu.sc.seis.launch4j' version '3.0.5'
} }
group = 'stirling.software' group = 'stirling.software'
version = '0.14.3' version = '0.17.1'
sourceCompatibility = '17' sourceCompatibility = '17'
repositories { repositories {
@@ -46,15 +46,15 @@ launch4j {
outfile="Stirling-PDF.exe" outfile="Stirling-PDF.exe"
headerType="console" headerType="console"
jarTask = tasks.bootJar jarTask = tasks.bootJar
errTitle="Encountered error, Do you have Java 17?" 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"] variables=["BROWSER_OPEN=true"]
jreMinVersion="17" jreMinVersion="17"
mutexName="Stirling-PDF" mutexName="Stirling-PDF"
windowTitle="Stirling-PDF" windowTitle="Stirling-PDF"
messagesStartupError="An error occurred while starting Stirling-PDF" messagesStartupError="An error occurred while starting Stirling-PDF"
//messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17." //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." messagesJreVersionError="You are running the wrong version of Java, Please download Java 17."
@@ -63,46 +63,55 @@ launch4j {
} }
dependencies { dependencies {
implementation 'org.yaml:snakeyaml:2.1' //security updates
implementation 'org.springframework.boot:spring-boot-starter-web:3.1.2' implementation 'ch.qos.logback:logback-classic:1.4.14'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.1.2' 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.yaml:snakeyaml:2.1'
implementation 'org.springframework.boot:spring-boot-starter-security:3.1.2' 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.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE'
implementation "org.springframework.boot:spring-boot-starter-data-jpa" 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.2'
// https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio testImplementation 'org.springframework.boot:spring-boot-starter-test:3.1.6'
implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
implementation 'commons-io:commons-io:2.13.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0' // https://mvnrepository.com/artifact/org.apache.pdfbox/jbig2-imageio
implementation group: 'org.apache.pdfbox', name: 'jbig2-imageio', version: '3.0.4'
//general PDF 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.13.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
//general PDF
// https://mvnrepository.com/artifact/com.opencsv/opencsv
implementation group: 'com.opencsv', name: 'opencsv', version: '5.7.1'
implementation 'org.apache.pdfbox:pdfbox:2.0.29' implementation 'org.apache.pdfbox:pdfbox:2.0.29'
implementation 'org.apache.pdfbox:xmpbox:2.0.29' implementation 'org.apache.pdfbox:xmpbox:2.0.29'
implementation 'org.bouncycastle:bcprov-jdk15on:1.70' implementation 'org.bouncycastle:bcprov-jdk18on:1.77'
implementation 'org.bouncycastle:bcpkix-jdk15on:1.70' implementation 'org.bouncycastle:bcpkix-jdk18on:1.77'
implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-core' implementation 'io.micrometer:micrometer-core'
implementation group: 'com.google.zxing', name: 'core', version: '3.5.1' implementation group: 'com.google.zxing', name: 'core', version: '3.5.2'
// https://mvnrepository.com/artifact/org.commonmark/commonmark // 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 // https://mvnrepository.com/artifact/com.github.vladimir-bukhtoyarov/bucket4j-core
implementation 'com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0' 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'
developmentOnly("org.springframework.boot:spring-boot-devtools")
compileOnly 'org.projectlombok:lombok:1.18.28'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
} }
task writeVersion { task writeVersion {
def propsFile = file('src/main/resources/version.properties') def propsFile = file('src/main/resources/version.properties')
def props = new Properties() def props = new Properties()
@@ -128,7 +137,7 @@ jar {
attributes 'Implementation-Title': 'Stirling-PDF', attributes 'Implementation-Title': 'Stirling-PDF',
'Implementation-Version': project.version 'Implementation-Version': project.version
} }
} }
tasks.named('test') { tasks.named('test') {

View File

@@ -0,0 +1,15 @@
apiVersion: v2
appVersion: 0.14.2
description: locally hosted web application that allows you to perform various operations on PDF files
home: https://github.com/Frooodle/Stirling-PDF
keywords:
- stirling-pdf
- helm
- charts repo
maintainers:
- name: Frooodle
url: https://github.com/Frooodle/Stirling-PDF
name: stirling-pdf-chart
sources:
- https://github.com/Frooodle/Stirling-PDF
version: 1.0.0

View File

@@ -0,0 +1,30 @@
** Please be patient while the chart is being deployed **
Get the stirlingpdf URL by running:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "stirlingpdf.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/
{{- else if contains "LoadBalancer" .Values.service.type }}
** Please ensure an external IP is associated to the {{ template "stirlingpdf.fullname" . }} service before proceeding **
** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "stirlingpdf.fullname" . }} **
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "stirlingpdf.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.externalPort }}/
OR
export SERVICE_HOST=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "stirlingpdf.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
echo http://$SERVICE_HOST:{{ .Values.service.externalPort }}/
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "stirlingpdf.name" . }}" -l "release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo http://127.0.0.1:8080/
kubectl port-forward $POD_NAME 8080:8080 --namespace {{ .Release.Namespace }}
{{- end }}

View File

@@ -0,0 +1,129 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "stirlingpdf.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "stirlingpdf.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{- /*
Create chart name and version as used by the chart label.
It does minimal escaping for use in Kubernetes labels.
Example output:
stirlingpdf-0.4.5
*/ -}}
{{- define "stirlingpdf.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "stirlingpdf.labels" -}}
helm.sh/chart: {{ include "stirlingpdf.chart" . }}
{{ include "stirlingpdf.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
{{- if .Values.commonLabels}}
{{ toYaml .Values.commonLabels }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "stirlingpdf.selectorLabels" -}}
app.kubernetes.io/name: {{ include "stirlingpdf.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "stirlingpdf.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "stirlingpdf.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Return the proper image name to change the volume permissions
*/}}
{{- define "stirlingpdf.volumePermissions.image" -}}
{{- $registryName := .Values.volumePermissions.image.registry -}}
{{- $repositoryName := .Values.volumePermissions.image.repository -}}
{{- $tag := .Values.volumePermissions.image.tag | toString -}}
{{/*
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic.
Also, we can't use a single if because lazy evaluation is not an option
*/}}
{{- if .Values.global }}
{{- if .Values.global.imageRegistry }}
{{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- else -}}
{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}}
{{- end -}}
{{- end -}}
{{/*
Return the proper Docker Image Registry Secret Names
*/}}
{{- define "stirlingpdf.imagePullSecrets" -}}
{{/*
Helm 2.11 supports the assignment of a value to a variable defined in a different scope,
but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic.
Also, we can not use a single if because lazy evaluation is not an option
*/}}
{{- if .Values.global }}
{{- if .Values.global.imagePullSecrets }}
imagePullSecrets:
{{- range .Values.global.imagePullSecrets }}
- name: {{ . }}
{{- end }}
{{- else if or .Values.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- range .Values.volumePermissions.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end -}}
{{- else if or .Values.image.pullSecrets .Values.volumePermissions.image.pullSecrets }}
imagePullSecrets:
{{- range .Values.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- range .Values.volumePermissions.image.pullSecrets }}
- name: {{ . }}
{{- end }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,129 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "stirlingpdf.fullname" . }}
{{- with .Values.deployment.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- if .Values.deployment.labels }}
{{- toYaml .Values.deployment.labels | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
{{- include "stirlingpdf.selectorLabels" . | nindent 6 }}
replicas: {{ .Values.replicaCount }}
strategy:
{{ toYaml .Values.strategy | indent 4 }}
revisionHistoryLimit: 10
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "stirlingpdf.selectorLabels" . | nindent 8 }}
{{- if .Values.podLabels }}
{{- toYaml .Values.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if .Values.priorityClassName }}
priorityClassName: "{{ .Values.priorityClassName }}"
{{- end }}
{{- if .Values.securityContext.enabled }}
securityContext:
fsGroup: {{ .Values.securityContext.fsGroup }}
{{- if .Values.securityContext.runAsNonRoot }}
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
{{- end }}
{{- if .Values.securityContext.supplementalGroups }}
supplementalGroups: {{ .Values.securityContext.supplementalGroups }}
{{- end }}
{{- else if .Values.persistence.enabled }}
initContainers:
- name: volume-permissions
image: {{ template "stirlingpdf.volumePermissions.image" . }}
imagePullPolicy: "{{ .Values.volumePermissions.image.pullPolicy }}"
securityContext:
{{- toYaml .Values.containerSecurityContext | nindent 10 }}
command: ['sh', '-c', 'chown -R {{ .Values.securityContext.fsGroup }}:{{ .Values.securityContext.fsGroup }} {{ .Values.persistence.path }}']
volumeMounts:
- mountPath: {{ .Values.persistence.path }}
name: storage-volume
{{- end }}
{{- include "stirlingpdf.imagePullSecrets" . | indent 6 }}
containers:
- name: {{ .Chart.Name }}
image: {{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.containerSecurityContext | nindent 10 }}
{{- if .Values.envs }}
env:
{{ toYaml .Values.envs | indent 8 }}
{{- end }}
{{- if .Values.extraArgs }}
args:
{{ toYaml .Values.extraArgs | indent 8 }}
{{- end }}
ports:
- name: http
containerPort: 8080
livenessProbe:
httpGet:
path: /
port: http
{{ toYaml .Values.probes.livenessHttpGetConfig | indent 12 }}
{{ toYaml .Values.probes.liveness | indent 10 }}
readinessProbe:
httpGet:
path: /
port: http
{{ toYaml .Values.probes.readinessHttpGetConfig | indent 12 }}
{{ toYaml .Values.probes.readiness | indent 10 }}
volumeMounts:
{{- if .Values.deployment.extraVolumeMounts }}
{{- toYaml .Values.deployment.extraVolumeMounts | nindent 8 }}
{{- end }}
{{- if .Values.deployment.sidecarContainers }}
{{- range $name, $spec := .Values.deployment.sidecarContainers }}
- name: {{ $name }}
{{- toYaml $spec | nindent 8 }}
{{- end }}
{{- end }}
{{- with .Values.resources }}
resources:
{{ toYaml . | indent 10 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.schedulerName }}
schedulerName: {{ .Values.schedulerName }}
{{- end }}
serviceAccountName: {{ include "stirlingpdf.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
volumes:
{{- if .Values.deployment.extraVolumes }}
{{- toYaml .Values.deployment.extraVolumes | nindent 6 }}
{{- end }}
- name: storage-volume
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (include "stirlingpdf.fullname" .) }}
{{- else }}
emptyDir: {}
{{- end }}

View File

@@ -0,0 +1,85 @@
{{- if .Values.ingress.enabled }}
{{- $servicePort := .Values.service.externalPort -}}
{{- $serviceName := include "stirlingpdf.fullname" . -}}
{{- $ingressExtraPaths := .Values.ingress.extraPaths -}}
---
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion }}
apiVersion: extensions/v1beta1
{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion }}
apiVersion: networking.k8s.io/v1beta1
{{- else }}
apiVersion: networking.k8s.io/v1
{{- end }}
kind: Ingress
metadata:
name: {{ include "stirlingpdf.fullname" . }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- with .Values.ingress.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- with .Values.ingress.ingressClassName }}
ingressClassName: {{ . }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .name }}
http:
paths:
{{- range $ingressExtraPaths }}
- path: {{ default "/" .path | quote }}
backend:
{{- if semverCompare "<1.19-0" $.Capabilities.KubeVersion.GitVersion }}
{{- if $.Values.service.servicename }}
serviceName: {{ $.Values.service.servicename }}
{{- else }}
serviceName: {{ default $serviceName .service }}
{{- end }}
servicePort: {{ default $servicePort .port }}
{{- else }}
service:
{{- if $.Values.service.servicename }}
name: {{ $.Values.service.servicename }}
{{- else }}
name: {{ default $serviceName .service }}
{{- end }}
port:
number: {{ default $servicePort .port }}
pathType: {{ default $.Values.ingress.pathType .pathType }}
{{- end }}
{{- end }}
- path: {{ default "/" .path | quote }}
backend:
{{- if semverCompare "<1.19-0" $.Capabilities.KubeVersion.GitVersion }}
{{- if $.Values.service.servicename }}
serviceName: {{ $.Values.service.servicename }}
{{- else }}
serviceName: {{ default $serviceName .service }}
{{- end }}
servicePort: {{ default $servicePort .servicePort }}
{{- else }}
service:
{{- if $.Values.service.servicename }}
name: {{ $.Values.service.servicename }}
{{- else }}
name: {{ default $serviceName .service }}
{{- end }}
port:
number: {{ default $servicePort .port }}
pathType: {{ $.Values.ingress.pathType }}
{{- end }}
{{- end }}
tls:
{{- range .Values.ingress.hosts }}
{{- if .tls }}
- hosts:
- {{ .name }}
secretName: {{ .tlsSecret }}
{{- end }}
{{- end }}
{{- end -}}

View File

@@ -0,0 +1,16 @@
{{- if .Values.persistence.pv.enabled -}}
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ .Values.persistence.pv.pvname | default (include "stirlingpdf.fullname" .) }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
spec:
capacity:
storage: {{ .Values.persistence.pv.capacity.storage }}
accessModes:
- {{ .Values.persistence.pv.accessMode | quote }}
nfs:
server: {{ .Values.persistence.pv.nfs.server }}
path: {{ .Values.persistence.pv.nfs.path | quote }}
{{- end }}

View File

@@ -0,0 +1,27 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ include "stirlingpdf.fullname" . }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- with .Values.persistence.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- if .Values.persistence.volumeName }}
volumeName: "{{ .Values.persistence.volumeName }}"
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,48 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.service.servicename | default (include "stirlingpdf.fullname" .) }}
{{- with .Values.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- with .Values.service.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
type: {{ .Values.service.type }}
{{- if (or (eq .Values.service.type "LoadBalancer") (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort)))) }}
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
{{- end }}
{{- if (and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerIP) }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
{{- if (and (eq .Values.service.type "LoadBalancer") .Values.service.loadBalancerSourceRanges) }}
loadBalancerSourceRanges:
{{- with .Values.service.loadBalancerSourceRanges }}
{{ toYaml . | indent 2 }}
{{- end }}
{{- end }}
{{- if eq .Values.service.type "ClusterIP" }}
{{- if .Values.service.clusterIP }}
clusterIP: {{ .Values.service.clusterIP }}
{{- end }}
{{- end }}
ports:
- port: {{ .Values.service.externalPort }}
{{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
nodePort: {{.Values.service.nodePort}}
{{- end }}
{{- if .Values.service.targetPort }}
targetPort: {{ .Values.service.targetPort }}
name: {{ .Values.service.targetPort }}
{{- else }}
targetPort: http
name: http
{{- end }}
protocol: TCP
selector:
{{- include "stirlingpdf.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,13 @@
{{- if .Values.serviceAccount.create -}}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "stirlingpdf.serviceAccountName" . }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{ toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- end }}

View File

@@ -0,0 +1,31 @@
{{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) ( .Values.serviceMonitor.enabled ) }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "stirlingpdf.fullname" . }}
namespace: {{ .Values.serviceMonitor.namespace | default .Release.Namespace }}
labels:
{{- include "stirlingpdf.labels" . | nindent 4 }}
{{- with .Values.serviceMonitor.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
endpoints:
- targetPort: 8080
{{- if .Values.serviceMonitor.interval }}
interval: {{ .Values.serviceMonitor.interval }}
{{- end }}
{{- if .Values.serviceMonitor.metricsPath }}
path: {{ .Values.serviceMonitor.metricsPath }}
{{- end }}
{{- if .Values.serviceMonitor.timeout }}
scrapeTimeout: {{ .Values.serviceMonitor.timeout }}
{{- end }}
jobLabel: {{ include "stirlingpdf.fullname" . }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
{{- include "stirlingpdf.selectorLabels" . | nindent 6 }}
{{- end }}

View File

@@ -0,0 +1,239 @@
extraArgs: []
# - --storage-timestamp-tolerance 1s
replicaCount: 1
strategy:
type: RollingUpdate
image:
repository: frooodle/s-pdf
# took Chart appVersion by default
tag: ~
pullPolicy: IfNotPresent
secret:
labels: {}
## Labels to apply to all resources
##
commonLabels: {}
# team_name: dev
envs: []
# - name: PP_HOME_NAME
# value: "Stirling PDF"
# - name: APP_HOME_DESCRIPTION
# value: "Your locally hosted one-stop-shop for all your PDF needs."
# - name: APP_NAVBAR_NAME
# value: "Stirling PDF"
# - name: ALLOW_GOOGLE_VISIBILITY
# value: "true"
# - name: APP_ROOT_PATH
# value: "/"
# - name: APP_LOCALE
# value: "en_GB"
deployment:
## stirling-pdf Deployment annotations
annotations: {}
# name: value
labels: {}
# name: value
# additional volumes
extraVolumes: []
# - name: nginx-config
# secret:
# secretName: nginx-config
# additional volumes to mount
extraVolumeMounts: []
## sidecarContainers for the stirling-pdf
# Can be used to add a proxy to the pod that does
# scanning for secrets, signing, authentication, validation
# of the chart's content, send notifications...
sidecarContainers: {}
## Example sidecarContainer which uses an extraVolume from above and
## a named port that can be referenced in the service as targetPort.
# proxy:
# image: nginx:latest
# ports:
# - name: proxy
# containerPort: 8081
# volumeMounts:
# - name: nginx-config
# readOnly: true
# mountPath: /etc/nginx
## Pod annotations
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
## Read more about kube2iam to provide access to s3 https://github.com/jtblin/kube2iam
##
podAnnotations: {}
# iam.amazonaws.com/role: role-arn
## Pod labels
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
podLabels: {}
# name: value
service:
servicename:
type: ClusterIP
externalTrafficPolicy: Local
## Uses pre-assigned IP address from cloud provider
## Only valid if service.type: LoadBalancer
loadBalancerIP:
## Limits which cidr blocks can connect to service's load balancer
## Only valid if service.type: LoadBalancer
loadBalancerSourceRanges: []
# clusterIP: None
externalPort: 8080
## targetPort of the container to use. If a sidecar should handle the
## requests first, use the named port from the sidecar. See sidecar example
## from deployment above. Leave empty to use stirling-pdf directly.
targetPort:
nodePort:
annotations: {}
labels: {}
serviceMonitor:
enabled: false
# namespace: prometheus
labels: {}
metricsPath: "/metrics"
# timeout: 60
# interval: 60
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 80m
# memory: 64Mi
probes:
liveness:
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
livenessHttpGetConfig:
scheme: HTTP
readiness:
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
readinessHttpGetConfig:
scheme: HTTP
serviceAccount:
create: true
name: ""
automountServiceAccountToken: false
## Annotations for the Service Account
annotations: {}
# UID/GID 1000 is the default user "stirling-pdf" used in
# the container image starting in v0.8.0 and above. This
# is required for local persistent storage. If your cluster
# does not allow this, try setting securityContext: {}
securityContext:
enabled: true
fsGroup: 1000
## Optionally, specify supplementalGroups and/or
## runAsNonRoot for security purposes
# runAsNonRoot: true
# supplementalGroups: [1000]
containerSecurityContext: {}
priorityClassName: ""
nodeSelector: {}
tolerations: []
affinity: {}
persistence:
enabled: false
accessMode: ReadWriteOnce
size: 8Gi
labels: {}
# name: value
path: /tmp
## A manually managed Persistent Volume and Claim
## Requires persistence.enabled: true
## If defined, PVC must be created manually before volume will be bound
# existingClaim:
## stirling-pdf data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
# volumeName:
pv:
enabled: false
pvname:
capacity:
storage: 8Gi
accessMode: ReadWriteOnce
nfs:
server:
path:
## Init containers parameters:
## volumePermissions: Change the owner of the persistent volume mountpoint to RunAsUser:fsGroup
##
volumePermissions:
image:
registry: docker.io
repository: bitnami/minideb
tag: buster
pullPolicy: Always
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
# - myRegistryKeySecretName
## Ingress for load balancer
ingress:
enabled: false
pathType: "ImplementationSpecific"
## stirling-pdf Ingress labels
##
labels: {}
# dns: "route53"
## stirling-pdf Ingress annotations
##
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
## stirling-pdf Ingress hostnames
## Must be provided if Ingress is enabled
##
hosts: []
# - name: stirling-pdf.domain1.com
# path: /
# tls: false
# - name: stirling-pdf.domain2.com
# path: /
#
# ## Set this to true in order to enable TLS on the ingress record
# tls: true
#
# ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS
# ## Secrets must be added manually to the namespace
# tlsSecret: stirling-pdf.domain2-tls
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
ingressClassName:

View File

@@ -1,5 +1,4 @@
import cv2 import cv2
import numpy as np
import sys import sys
import argparse import argparse

View File

@@ -5,6 +5,10 @@ echo "Copying original files without overwriting existing files"
mkdir -p /usr/share/tesseract-ocr 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 # Check if TESSERACT_LANGS environment variable is set and is not empty
if [[ -n "$TESSERACT_LANGS" ]]; then if [[ -n "$TESSERACT_LANGS" ]]; then
# Convert comma-separated values to a space-separated list # Convert comma-separated values to a space-separated list
@@ -16,6 +20,7 @@ if [[ -n "$TESSERACT_LANGS" ]]; then
done done
fi fi
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 # Check for DOCKER_ENABLE_SECURITY and download the appropriate JAR if required
if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then if [ "$DOCKER_ENABLE_SECURITY" = "true" ] && [ "$VERSION_TAG" != "alpha" ]; then
if [ ! -f app-security.jar ]; then if [ ! -f app-security.jar ]; then

View File

@@ -8,6 +8,7 @@ import stirling.software.SPDF.model.ApplicationProperties;
@Configuration @Configuration
public class AppConfig { public class AppConfig {
@Autowired @Autowired
ApplicationProperties applicationProperties; ApplicationProperties applicationProperties;

View File

@@ -16,6 +16,8 @@ public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationF
@Override @Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
throws IOException, ServletException { throws IOException, ServletException {
String ip = request.getRemoteAddr();
logger.error("Failed login attempt from IP: " + ip);
if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) { if (exception.getClass().isAssignableFrom(BadCredentialsException.class)) {
setDefaultFailureUrl("/login?error=badcredentials"); setDefaultFailureUrl("/login?error=badcredentials");
} else if (exception.getClass().isAssignableFrom(LockedException.class)) { } else if (exception.getClass().isAssignableFrom(LockedException.class)) {

View File

@@ -26,11 +26,18 @@ public class InitialSecuritySetup {
@PostConstruct @PostConstruct
public void init() { public void init() {
if (!userService.hasUsers()) { if (!userService.hasUsers()) {
String initialUsername = "admin";
String initialPassword = "stirling";
userService.saveUser(initialUsername, initialPassword, Role.ADMIN.getRoleId(), true);
String initialUsername = applicationProperties.getSecurity().getInitialLogin().getUsername();
String initialPassword = applicationProperties.getSecurity().getInitialLogin().getPassword();
if (initialUsername != null && initialPassword != null) {
userService.saveUser(initialUsername, initialPassword, Role.ADMIN.getRoleId());
} else {
initialUsername = "admin";
initialPassword = "stirling";
userService.saveUser(initialUsername, initialPassword, Role.ADMIN.getRoleId(), true);
}
} }
} }

View File

@@ -1,6 +1,7 @@
package stirling.software.SPDF.controller.api; package stirling.software.SPDF.controller.api;
import java.awt.Color;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@@ -42,7 +43,8 @@ public class MultiPageLayoutController {
int pagesPerSheet = request.getPagesPerSheet(); int pagesPerSheet = request.getPagesPerSheet();
MultipartFile file = request.getFileInput(); MultipartFile file = request.getFileInput();
boolean addBorder = request.isAddBorder();
if (pagesPerSheet != 2 && pagesPerSheet != 3 && pagesPerSheet != (int) Math.sqrt(pagesPerSheet) * Math.sqrt(pagesPerSheet)) { if (pagesPerSheet != 2 && pagesPerSheet != 3 && pagesPerSheet != (int) Math.sqrt(pagesPerSheet) * Math.sqrt(pagesPerSheet)) {
throw new IllegalArgumentException("pagesPerSheet must be 2, 3 or a perfect square"); throw new IllegalArgumentException("pagesPerSheet must be 2, 3 or a perfect square");
} }
@@ -62,6 +64,10 @@ public class MultiPageLayoutController {
PDPageContentStream contentStream = new PDPageContentStream(newDocument, newPage, PDPageContentStream.AppendMode.APPEND, true, true); PDPageContentStream contentStream = new PDPageContentStream(newDocument, newPage, PDPageContentStream.AppendMode.APPEND, true, true);
LayerUtility layerUtility = new LayerUtility(newDocument); LayerUtility layerUtility = new LayerUtility(newDocument);
float borderThickness = 1.5f; // Specify border thickness as required
contentStream.setLineWidth(borderThickness);
contentStream.setStrokingColor(Color.BLACK);
for (int i = 0; i < totalPages; i++) { for (int i = 0; i < totalPages; i++) {
if (i != 0 && i % pagesPerSheet == 0) { if (i != 0 && i % pagesPerSheet == 0) {
// Close the current content stream and create a new page and content stream // Close the current content stream and create a new page and content stream
@@ -92,6 +98,14 @@ public class MultiPageLayoutController {
contentStream.drawForm(formXObject); contentStream.drawForm(formXObject);
contentStream.restoreGraphicsState(); contentStream.restoreGraphicsState();
if(addBorder) {
// Draw border around each page
float borderX = colIndex * cellWidth;
float borderY = newPage.getMediaBox().getHeight() - (rowIndex + 1) * cellHeight;
contentStream.addRect(borderX, borderY, cellWidth, cellHeight);
contentStream.stroke();
}
} }

View File

@@ -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.

View File

@@ -12,15 +12,13 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; 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.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import stirling.software.SPDF.model.SortTypes; import stirling.software.SPDF.model.SortTypes;
import stirling.software.SPDF.model.api.PDFWithPageNums;
import stirling.software.SPDF.model.api.general.RearrangePagesRequest; import stirling.software.SPDF.model.api.general.RearrangePagesRequest;
import stirling.software.SPDF.utils.GeneralUtils; import stirling.software.SPDF.utils.GeneralUtils;
import stirling.software.SPDF.utils.WebResponseUtils; import stirling.software.SPDF.utils.WebResponseUtils;
@@ -33,11 +31,12 @@ public class RearrangePagesPDFController {
@PostMapping(consumes = "multipart/form-data", value = "/remove-pages") @PostMapping(consumes = "multipart/form-data", value = "/remove-pages")
@Operation(summary = "Remove pages from a PDF file", description = "This endpoint removes specified pages from a given PDF file. Users can provide a comma-separated list of page numbers or ranges to delete. Input:PDF Output:PDF Type:SISO") @Operation(summary = "Remove pages from a PDF file", description = "This endpoint removes specified pages from a given PDF file. Users can provide a comma-separated list of page numbers or ranges to delete. Input:PDF Output:PDF Type:SISO")
public ResponseEntity<byte[]> deletePages( public ResponseEntity<byte[]> deletePages(@ModelAttribute PDFWithPageNums request )
@RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file from which pages will be removed") MultipartFile pdfFile,
@RequestParam("pagesToDelete") @Parameter(description = "Comma-separated list of pages or page ranges to delete, e.g., '1,3,5-8'") String pagesToDelete)
throws IOException { throws IOException {
MultipartFile pdfFile = request.getFileInput();
String pagesToDelete = request.getPageNumbers();
PDDocument document = PDDocument.load(pdfFile.getBytes()); PDDocument document = PDDocument.load(pdfFile.getBytes());
// Split the page order string into an array of page numbers or range of numbers // Split the page order string into an array of page numbers or range of numbers

View File

@@ -108,4 +108,4 @@ public class SplitPDFController {
} }
} }

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -1,11 +1,12 @@
package stirling.software.SPDF.controller.api.misc; package stirling.software.SPDF.controller.api.misc;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Image; import java.awt.Image;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage; import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.Deflater; import java.util.zip.Deflater;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@@ -58,7 +59,8 @@ public class ExtractImagesController {
int imageIndex = 1; int imageIndex = 1;
String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", ""); String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", "");
int pageNum = 1; int pageNum = 0;
Set<Integer> processedImages = new HashSet<>();
// Iterate over each page // Iterate over each page
for (PDPage page : document.getPages()) { for (PDPage page : document.getPages()) {
++pageNum; ++pageNum;
@@ -66,7 +68,12 @@ public class ExtractImagesController {
for (COSName name : page.getResources().getXObjectNames()) { for (COSName name : page.getResources().getXObjectNames()) {
if (page.getResources().isImageXObject(name)) { if (page.getResources().isImageXObject(name)) {
PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name); PDImageXObject image = (PDImageXObject) page.getResources().getXObject(name);
int imageHash = image.hashCode();
if(processedImages.contains(imageHash)) {
continue; // Skip already processed images
}
processedImages.add(imageHash);
// Convert image to desired format // Convert image to desired format
RenderedImage renderedImage = image.getImage(); RenderedImage renderedImage = image.getImage();
BufferedImage bufferedImage = null; BufferedImage bufferedImage = null;

View File

@@ -13,6 +13,7 @@ import java.io.ByteArrayOutputStream;
//Required for file input/output //Required for file input/output
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.security.SecureRandom;
//Other required classes //Other required classes
import java.util.Random; import java.util.Random;
@@ -85,7 +86,7 @@ public class FakeScanControllerWIP {
op.filter(sourceImage, destinationImage); op.filter(sourceImage, destinationImage);
// Apply a rotation effect // 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 locationX = destinationImage.getWidth() / 2;
double locationY = destinationImage.getHeight() / 2; double locationY = destinationImage.getHeight() / 2;
AffineTransform tx = AffineTransform.getRotateInstance(rotationRequired, locationX, locationY); AffineTransform tx = AffineTransform.getRotateInstance(rotationRequired, locationX, locationY);
@@ -103,7 +104,7 @@ public class FakeScanControllerWIP {
destinationImage = blurOp.filter(destinationImage, null); destinationImage = blurOp.filter(destinationImage, null);
// Add noise to the image based on the "dirtiness" // 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 y = 0; y < destinationImage.getHeight(); y++) {
for (int x = 0; x < destinationImage.getWidth(); x++) { for (int x = 0; x < destinationImage.getWidth(); x++) {
if (random.nextInt(100) < dirtiness) { if (random.nextInt(100) < dirtiness) {

View File

@@ -39,7 +39,7 @@ public class OCRController {
private static final Logger logger = LoggerFactory.getLogger(OCRController.class); private static final Logger logger = LoggerFactory.getLogger(OCRController.class);
public List<String> getAvailableTesseractLanguages() { 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(); File[] files = new File(tessdataDir).listFiles();
if (files == null) { if (files == null) {
return Collections.emptyList(); return Collections.emptyList();

View File

@@ -386,12 +386,16 @@ public class GetInfoOnPDF {
float width = mediaBox.getWidth(); float width = mediaBox.getWidth();
float height = mediaBox.getHeight(); float height = mediaBox.getHeight();
pageInfo.put("Width", width); ObjectNode sizeInfo = objectMapper.createObjectNode();
pageInfo.put("Height", height);
getDimensionInfo(sizeInfo, width, height);
sizeInfo.put("Standard Page", getPageSize(width, height));
pageInfo.set("Size", sizeInfo);
pageInfo.put("Rotation", page.getRotation()); pageInfo.put("Rotation", page.getRotation());
pageInfo.put("Page Orientation", getPageOrientation(width, height)); pageInfo.put("Page Orientation", getPageOrientation(width, height));
pageInfo.put("Standard Size", getPageSize(width, height));
// Boxes // Boxes
pageInfo.put("MediaBox", mediaBox.toString()); pageInfo.put("MediaBox", mediaBox.toString());
@@ -620,7 +624,7 @@ public class GetInfoOnPDF {
pageInfoParent.set("Page " + pageNum, pageInfo); pageInfoParent.set("Page " + (pageNum+1), pageInfo);
} }
@@ -670,28 +674,52 @@ public class GetInfoOnPDF {
return "Square"; return "Square";
} }
} }
public String getPageSize(double width, double height) { public String getPageSize(float width, float height) {
// Common aspect ratios used for standard paper sizes // Define standard page sizes
double[] aspectRatios = {4.0 / 3.0, 3.0 / 2.0, Math.sqrt(2.0), 16.0 / 9.0}; Map<String, PDRectangle> standardSizes = new HashMap<>();
standardSizes.put("Letter", PDRectangle.LETTER);
standardSizes.put("LEGAL", PDRectangle.LEGAL);
standardSizes.put("A0", PDRectangle.A0);
standardSizes.put("A1", PDRectangle.A1);
standardSizes.put("A2", PDRectangle.A2);
standardSizes.put("A3", PDRectangle.A3);
standardSizes.put("A4", PDRectangle.A4);
standardSizes.put("A5", PDRectangle.A5);
standardSizes.put("A6", PDRectangle.A6);
// Check if the page matches any common aspect ratio for (Map.Entry<String, PDRectangle> entry : standardSizes.entrySet()) {
for (double aspectRatio : aspectRatios) { PDRectangle size = entry.getValue();
if (isCloseToAspectRatio(width, height, aspectRatio)) { if (isCloseToSize(width, height, size.getWidth(), size.getHeight())) {
return "Standard"; return entry.getKey();
} }
} }
// If not a standard aspect ratio, consider it as a custom size
return "Custom"; return "Custom";
} }
private boolean isCloseToAspectRatio(double width, double height, double aspectRatio) {
// Calculate the aspect ratio of the page
double pageAspectRatio = width / height;
// Compare the page aspect ratio with the common aspect ratio within a threshold private boolean isCloseToSize(float width, float height, float standardWidth, float standardHeight) {
return Math.abs(pageAspectRatio - aspectRatio) <= 0.05; float tolerance = 1.0f; // You can adjust the tolerance as needed
return Math.abs(width - standardWidth) <= tolerance && Math.abs(height - standardHeight) <= tolerance;
} }
public ObjectNode getDimensionInfo(ObjectNode dimensionInfo, float width, float height) {
float ppi = 72; // Points Per Inch
float widthInInches = width / ppi;
float heightInInches = height / ppi;
float widthInCm = widthInInches * 2.54f;
float heightInCm = heightInInches * 2.54f;
dimensionInfo.put("Width (px)", String.format("%.2f", width));
dimensionInfo.put("Height (px)", String.format("%.2f", height));
dimensionInfo.put("Width (in)", String.format("%.2f", widthInInches));
dimensionInfo.put("Height (in)", String.format("%.2f", heightInInches));
dimensionInfo.put("Width (cm)", String.format("%.2f", widthInCm));
dimensionInfo.put("Height (cm)", String.format("%.2f", heightInCm));
return dimensionInfo;
}
public static boolean checkForStandard(PDDocument document, String standardKeyword) { public static boolean checkForStandard(PDDocument document, String standardKeyword) {

View File

@@ -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 );
}
}
}

View File

@@ -99,6 +99,14 @@ public class ConverterWebController {
return modelAndView; 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") @GetMapping("/pdf-to-pdfa")
@Hidden @Hidden

View File

@@ -1,4 +1,5 @@
package stirling.software.SPDF.controller.web; package stirling.software.SPDF.controller.web;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
@@ -81,6 +82,19 @@ public class GeneralWebController {
return "merge-pdfs"; 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") @GetMapping("/multi-tool")
@Hidden @Hidden
@@ -155,6 +169,20 @@ public class GeneralWebController {
return "scale-pages"; 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 @Autowired

View File

@@ -78,7 +78,7 @@ public class OtherWebController {
} }
public List<String> getAvailableTesseractLanguages() { 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(); File[] files = new File(tessdataDir).listFiles();
if (files == null) { if (files == null) {
return Collections.emptyList(); return Collections.emptyList();
@@ -98,7 +98,7 @@ public class OtherWebController {
return modelAndView; return modelAndView;
} }
@GetMapping("/add-image") @GetMapping("/add-image")
@Hidden @Hidden
public String overlayImage(Model model) { public String overlayImage(Model model) {

View File

@@ -105,7 +105,16 @@ public class ApplicationProperties {
public static class Security { public static class Security {
private Boolean enableLogin; private Boolean enableLogin;
private Boolean csrfDisabled; private Boolean csrfDisabled;
private InitialLogin initialLogin;
public InitialLogin getInitialLogin() {
return initialLogin != null ? initialLogin : new InitialLogin();
}
public void setInitialLogin(InitialLogin initialLogin) {
this.initialLogin = initialLogin;
}
public Boolean getEnableLogin() { public Boolean getEnableLogin() {
return enableLogin; return enableLogin;
} }
@@ -125,9 +134,39 @@ public class ApplicationProperties {
@Override @Override
public String toString() { public String toString() {
return "Security [enableLogin=" + enableLogin + ", csrfDisabled=" return "Security [enableLogin=" + enableLogin + ", initialLogin=" + initialLogin + ", csrfDisabled="
+ csrfDisabled + "]"; + csrfDisabled + "]";
} }
public static class InitialLogin {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "InitialLogin [username=" + username + ", password=" + (password != null && !password.isEmpty() ? "MASKED" : "NULL") + "]";
}
}
} }
public static class System { public static class System {
@@ -193,6 +232,8 @@ public class ApplicationProperties {
private String appNameNavbar; private String appNameNavbar;
public String getAppName() { public String getAppName() {
if(appName != null && appName.trim().length() == 0)
return null;
return appName; return appName;
} }
@@ -201,6 +242,8 @@ public class ApplicationProperties {
} }
public String getHomeDescription() { public String getHomeDescription() {
if(homeDescription != null && homeDescription.trim().length() == 0)
return null;
return homeDescription; return homeDescription;
} }
@@ -209,6 +252,8 @@ public class ApplicationProperties {
} }
public String getAppNameNavbar() { public String getAppNameNavbar() {
if(appNameNavbar != null && appNameNavbar.trim().length() == 0)
return null;
return appNameNavbar; return appNameNavbar;
} }

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -12,4 +12,7 @@ public class MergeMultiplePagesRequest extends PDFFile {
@Schema(description = "The number of pages to fit onto a single sheet in the output PDF.", @Schema(description = "The number of pages to fit onto a single sheet in the output PDF.",
type = "integer", allowableValues = {"2", "3", "4", "9", "16"}) type = "integer", allowableValues = {"2", "3", "4", "9", "16"})
private int pagesPerSheet; private int pagesPerSheet;
@Schema(description = "Boolean for if you wish to add border around the pages")
private boolean addBorder;
} }

View File

@@ -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;
}

View File

@@ -3,7 +3,6 @@ package stirling.software.SPDF.model.api.general;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import stirling.software.SPDF.model.api.PDFFile;
import stirling.software.SPDF.model.api.PDFWithPageSize; import stirling.software.SPDF.model.api.PDFWithPageSize;
@Data @Data

View File

@@ -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;
}

View File

@@ -1,6 +1,9 @@
package stirling.software.SPDF.utils; package stirling.software.SPDF.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.nio.file.FileVisitResult; import java.nio.file.FileVisitResult;
@@ -12,6 +15,7 @@ import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.springframework.web.multipart.MultipartFile;
public class GeneralUtils { public class GeneralUtils {
public static void deleteDirectory(Path path) throws IOException { 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) { public static Long convertSizeToBytes(String sizeStr) {
if (sizeStr == null) { if (sizeStr == null) {

View File

@@ -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.driver-class-name=org.h2.Driver
spring.datasource.username=sa spring.datasource.username=sa
spring.datasource.password= spring.datasource.password=
spring.h2.console.enabled=true spring.h2.console.enabled=false
spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update
# Change the default URL path for OpenAPI JSON # Change the default URL path for OpenAPI JSON

View File

@@ -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

View 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>auth-%d{MM-dd-yyyy}.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>info-%d{MM-dd-yyyy}.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>

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك. 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.title=أداة متعددة PDF
home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +655,9 @@ pdfOrganiser.submit=إعادة ترتيب الصفحات
multiTool.title=أداة متعددة PDF multiTool.title=أداة متعددة PDF
multiTool.header=أداة متعددة PDF multiTool.header=أداة متعددة PDF
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=مزيل الصفحة pageRemover.title=مزيل الصفحة
@@ -665,9 +692,6 @@ split.submit=Split
imageToPDF.title=صورة إلى PDF imageToPDF.title=صورة إلى PDF
imageToPDF.header=صورة إلى PDF imageToPDF.header=صورة إلى PDF
imageToPDF.submit=تحول imageToPDF.submit=تحول
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=تحويل PDF إلى XML
PDFToXML.header=تحويل PDF إلى XML PDFToXML.header=تحويل PDF إلى XML
PDFToXML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات. 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

View 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(и)
multiPdfPrompt=Изберете PDF (2+)
multiPdfDropPrompt=Изберете (или плъзнете и пуснете) всички PDF файлове, от които се нуждаете
imgPrompt=Изберете изображение(я)
genericSubmit=Подайте
processTimeWarning=Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла
pageOrderPrompt=Персонализиран ред на страниците (Въведете разделен със запетаи списък с номера на страници или функции като 2n+1):
goToPage=Давай
true=Вярно
false=Невярно
unknown=Непознат
save=Съхранете
close=Затворете
filesSelected=избрани файлове
noFavourites=Няма добавени любими
bored=Отекчени сте да чакате?
alphabet=Азбука
downloadPdf=Изтеглете PDF
text=Текст
font=Шрифт
selectFillter=-- Изберете --
pageNum=Брой страница
sizes.small=Малък
sizes.medium=Среден
sizes.large=Голям
sizes.x-large=X-Голям
error.pdfPassword=PDF документът е с парола и или паролата не е предоставена, или е неправилна
delete=Изтрий
username=Потребителско име
password=Парола
welcome=Добре дошли
property=Свойство
black=Черно
white=Бяло
red=Червено
green=Зелено
blue=Синьо
custom=Персонализиране...
changedCredsMessage=Идентификационните данни са променени!
notAuthenticatedMessage=Потребителят не е автентикиран.
userNotFoundMessage=Потребителят не е намерен
incorrectPasswordMessage=Текущата парола е неправилна.
usernameExistsMessage=Новият потребител вече съществува.
#############
# NAVBAR #
#############
navbar.convert=Преобразуване
navbar.security=Сигурност
navbar.other=Разни
navbar.darkmode=Тъмна тема
navbar.pageOps=Операции със страници
navbar.settings=Настройки
#############
# SETTINGS #
#############
settings.title=Настройки
settings.update=Налична актуализация
settings.appVersion=Версия на приложението:
settings.downloadOption.title=Изберете опция за изтегляне (за изтегляния на един файл без да е архивиран):
settings.downloadOption.1=Отваряне в същия прозорец
settings.downloadOption.2=Отваряне в нов прозорец
settings.downloadOption.3=Изтегли файл
settings.zipThreshold=Архивирайте файловете, когато броят на изтеглените файлове надвишава
settings.signOut=Изход
settings.accountSettings=Настройки на акаунта
changeCreds.title=Промяна на идентификационните данни
changeCreds.header=Актуализирайте данните за акаунта си
changeCreds.changeUserAndPassword=Използвате идентификационни данни за вход по подразбиране. Моля, въведете нова парола (и потребителско име, ако искате)
changeCreds.newUsername=Ново потребителско име
changeCreds.oldPassword=Текуща парола
changeCreds.newPassword=Нова парола
changeCreds.confirmNewPassword=Подтвърдете новата парола
changeCreds.submit=Изпращане на промените
account.title=Настройки на акаунта
account.accountSettings=Настройки на акаунта
account.adminSettings=Настройки на администратора - Преглед и добавяне на потребители
account.userControlSettings=Настройки за потребителски контрол
account.changeUsername=Промени потребител
account.changeUsername=Промени потребител
account.password=Парола за потвърждение
account.oldPassword=Стара парола
account.newPassword=Нова парола
account.changePassword=Промени паролата
account.confirmNewPassword=Потвърдете новата парола
account.signOut=Изход
account.yourApiKey=Вашият API ключ
account.syncTitle=Синхронизиране на настройките на браузъра с акаунта
account.settingsCompare=Сравняване на настройките:
account.property=Свойство
account.webBrowserSettings=Уеб-браузър настройки
account.syncToBrowser=Синхронизиране на акаунт -> Бразър
account.syncToAccount=Синхронизиране на акаунт <- Бразър
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.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,плъзгане с щракване,потребителска част,страна на клиента,интерактивен,неразрешим,преместване
home.merge.title=Обединяване
home.merge.desc=Лесно обединете множество PDF файлове в един.
merge.tags=сливане,операции на страници,администраторска зона,от страна на сървъра
home.split.title=Разделяне
home.split.desc=Разделяне на PDF файлове на множество документи
split.tags=Операции на страницата,разделяне,Множество страници,изрязване,сървърна страна
home.rotate.title=Завъртане
home.rotate.desc=Лесно завъртете вашите PDF файлове.
rotate.tags=от страната на сървъра
home.imageToPdf.title=Изображение към PDF
home.imageToPdf.desc=Преобразуване на изображение (PNG, JPEG, GIF) към PDF.
imageToPdf.tags=преобразуване,img,jpg,изображение,снимка
home.pdfToImage.title=PDF към изображение
home.pdfToImage.desc=Преобразуване на PDF към изображение. (PNG, JPEG, GIF)
pdfToImage.tags=преобразуване,img,jpg,изображение,снимка
home.pdfOrganiser.title=Организиране
home.pdfOrganiser.desc=Премахване/пренареждане на страници към произволен ред
pdfOrganiser.tags=дуплекс,четно,нечетно,сортиране,преместване
home.addImage.title=Добавяне на изображение
home.addImage.desc=Добавя изображение към зададено място към PDF файла
addImage.tags=img,jpg,изображение,снимка
home.watermark.title=Добавяне на воден знак
home.watermark.desc=Добавете персонализиран воден знак към вашия PDF документ.
watermark.tags=Текст,повтарящ се,етикет,собствено,авторско право,търговска марка,img,jpg,изображение,снимка
home.permissions.title=Промяна на правата
home.permissions.desc=Променете правата на вашия PDF документ
permissions.tags=четене,писане,редактиране,печат
home.removePages.title=Премахване
home.removePages.desc=Изтрийте нежеланите страници от вашия PDF документ.
removePages.tags=Премахване на страници,изтриване на страници
home.addPassword.title=Добавете парола
home.addPassword.desc=Шифровайте вашия PDF документ с парола.
addPassword.tags=сигурен,сигурност
home.removePassword.title=Премахване на парола
home.removePassword.desc=Премахнете защитата с парола от вашия PDF документ.
removePassword.tags=сигурно,декриптиране,сигурност,отмяна на парола,изтриване на парола
home.compressPdfs.title=Компресиране
home.compressPdfs.desc=Компресирайте PDF файлове, за да намалите размера на файла.
compressPdfs.tags=мачкам,малък,мъничък
home.changeMetadata.title=Промяна на метаданни
home.changeMetadata.desc=Промяна/Премахване/Добавяне на метаданни от PDF документ
changeMetadata.tags=Заглавие,автор,дата,създаване,час,издател,продуцент,статистика
home.fileToPDF.title=Преобразуване на файл към PDF
home.fileToPDF.desc=Преобразуване почти всеки файл към PDF (DOCX, PNG, XLS, PPT, TXT и други)
fileToPDF.tags=трансформация,формат,документ,изображение,слайд,текст,преобразуване,офис,документи,word,excel,powerpoint
home.ocr.title=OCR / Почистващи сканирания
home.ocr.desc=Cleanup сканира и открива текст от изображения към PDF и го добавя отново като текст.
ocr.tags=разпознаване,текст,изображение,сканиране,четене,идентифициране,откриване,редактиране
home.extractImages.title=Извличане на изображения
home.extractImages.desc=Извлича всички изображения от PDF и ги записва към архив
extractImages.tags=изображение,снимка,запазване,архивиране,архив,заснемане,грабване
home.pdfToPDFA.title=PDF към PDF/A
home.pdfToPDFA.desc=Конвертирайте PDF към PDF/A за дългосрочно съхранение
pdfToPDFA.tags=архив,дълготраен,стандартен,преобразуване,съхранение,консервиране
home.PDFToWord.title=PDF към Word
home.PDFToWord.desc=Преобразуване на PDF към Word формати (DOC, DOCX и ODT)
PDFToWord.tags=doc,docx,odt,word,трансформация,формат,преобразуване,офис,microsoft,docfile
home.PDFToPresentation.title=PDF към презентация
home.PDFToPresentation.desc=Преобразуване на PDF във формати за презентация (PPT, PPTX и ODP)
PDFToPresentation.tags=слайдове,покажи,офис,microsoft
home.PDFToText.title=PDF към RTF (Текст)
home.PDFToText.desc=Преобразуване PDF към Text или RTF формат
PDFToText.tags=richformat,richtextformat,богат текстов формат
home.PDFToHTML.title=PDF към HTML
home.PDFToHTML.desc=Преобразуване PDF към HTML формат
PDFToHTML.tags=уеб-съдържание,удобен за браузър
home.PDFToXML.title=PDF към XML
home.PDFToXML.desc=Преобразуване на PDF към XML формат
PDFToXML.tags=извличане на данни,структурирано съдържание,взаимодействие,трансформация,преобразуване
home.ScannerImageSplit.title=Откриване/Разделяне на сканирани снимки
home.ScannerImageSplit.desc=Разделя множество снимки от една снимка/PDF
ScannerImageSplit.tags=разделяне,автоматично откриване,сканиране,много снимки,организиране
home.sign.title=Подпишете
home.sign.desc=Добавя подпис към PDF чрез рисунка, текст или изображение
sign.tags=упълномощаване,инициали,нарисуван-подпис,текстов-знак,изображение-подпис
home.flatten.title=Изравняване
home.flatten.desc=Премахнете всички интерактивни елементи и формуляри от PDF
flatten.tags=статичен,деактивиран,неинтерактивен,рационализиран
home.repair.title=Поправи
home.repair.desc=Опитва се да поправи повреден/счупен PDF
repair.tags=поправка,възстановяване,корекция,възстановяване
home.removeBlanks.title=Премахване на празни страници
home.removeBlanks.desc=Открива и премахва празни страници от документ
removeBlanks.tags=почистване,рационализиране,без съдържание,организиране
home.compare.title=Сравнете
home.compare.desc=Сравнява и показва разликите между 2 PDF документа
compare.tags=разграничаване,контраст,промени,анализ
home.certSign.title=Подпишете със сертификат
home.certSign.desc=Подписва PDF със сертификат/ключ (PEM/P12)
certSign.tags=удостоверяване,PEM,P12,официален,шифроване
home.pageLayout.title=Оформление с няколко страници
home.pageLayout.desc=Слейте няколко страници от PDF документ в една страница
pageLayout.tags=сливане,комбиниран,единичен изглед,организиране
home.scalePages.title=Коригирайте размера/мащаба на страницата
home.scalePages.desc=Промяна на размера/мащаба на страница и/или нейното съдържание.
scalePages.tags=преоразмеряване,промяна,размер,адаптиране
home.pipeline.title=Pipeline (Разширено)
home.pipeline.desc=Изпълнявайте множество действия върху PDF файлове чрез дефиниране на конвейерни скриптове
pipeline.tags=автоматизиране,последователност,чрез скриптове,пакетен процес
home.add-page-numbers.title=Добавяне на номера на страници
home.add-page-numbers.desc=Добавете номера на страници в документ на определено място
add-page-numbers.tags=страничен, етикетиране, организиране, индексиране
home.auto-rename.title=Автоматично преименуване на PDF файл
home.auto-rename.desc=Автоматично преименува PDF файл въз основа на откритата му заглавка
auto-rename.tags=автоматично откриване,базирано на заглавка,организиране,преетикетиране
home.adjust-contrast.title=Коригиране на цветове/контраст
home.adjust-contrast.desc=Коригиране на контраста, наситеността и яркостта на PDF
adjust-contrast.tags=корекция на цвета,настройте,модифицирайте,подобрете
home.crop.title=Изрязване на PDF
home.crop.desc=Изрежете PDF, за да намалите размера му (поддържа текст!)
crop.tags=изрязване,свиване,редактиране,оформяне
home.autoSplitPDF.title=Автоматично разделяне на страници
home.autoSplitPDF.desc=Автоматично разделяне на сканиран PDF файл с QR код за разделяне на физически сканирани страници
autoSplitPDF.tags=QR-базиран,отделен,сканиране-сегмент,организиране
home.sanitizePdf.title=Дезинфекцирай
home.sanitizePdf.desc=Премахване на скриптове и други елементи от PDF файлове
sanitizePdf.tags=чисти,сигурни,безопасни,премахване-заплахи
home.URLToPDF.title=URL/уеб-сайт към PDF
home.URLToPDF.desc=Преобразува всеки http(s) URL към PDF
URLToPDF.tags=уеб-заснемане,запазване на страница,уеб към документ,архив
home.HTMLToPDF.title=HTML към PDF
home.HTMLToPDF.desc=Преобразува всеки HTML файл или архив към 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=Търси и показва всеки JS, инжектиран в PDF
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 #
# #
###########################
#login
login.title=Вход
login.signin=Впишете се
login.rememberme=Запомни ме
login.invalid=Невалидно потребителско име или парола.
login.locked=Вашият акаунт е заключен.
login.signinTitle=Моля впишете се
#auto-redact
autoRedact.title=Автоматично редактиране
autoRedact.header=Автоматично редактиране
autoRedact.colorLabel=Цвят
autoRedact.textsToRedactLabel=Текст за редактиране (разделен с редове)
autoRedact.textsToRedactPlaceholder=например: \nПоверително \nСтрого секретно
autoRedact.useRegexLabel=Използване на Regex
autoRedact.wholeWordSearchLabel=Търсене на цялата дума
autoRedact.customPaddingLabel=Персонализирана допълнителна подложка
autoRedact.convertPDFToImageLabel=Преобразуване на PDF към PDF-изображение (използва се за премахване на текст зад полето)
autoRedact.submitButton=Изпращане
#showJS
showJS.title=Покажи Javascript
showJS.header=Покажи Javascript
showJS.downloadJS=Изтегли Javascript
showJS.submit=Покажи
#pdfToSinglePage
pdfToSinglePage.title=PDF към единична страница
pdfToSinglePage.header=PDF към единична страница
pdfToSinglePage.submit=Преобразуване към единична страница
#pageExtracter
pageExtracter.title=Extract Pages
pageExtracter.header=Extract Pages
pageExtracter.submit=Extract
#getPdfInfo
getPdfInfo.title=Вземете информация за PDF
getPdfInfo.header=Вземете информация за PDF
getPdfInfo.submit=Вземете информация
getPdfInfo.downloadJson=Изтеглете JSON
#markdown-to-pdf
MarkdownToPDF.title=Markdown към PDF
MarkdownToPDF.header=Markdown към PDF
MarkdownToPDF.submit=Преобразуване
MarkdownToPDF.help=Работата е в ход
MarkdownToPDF.credit=Използва WeasyPrint
#url-to-pdf
URLToPDF.title=URL към PDF
URLToPDF.header=URL към PDF
URLToPDF.submit=Преобразуване
URLToPDF.credit=Използва WeasyPrint
#html-to-pdf
HTMLToPDF.title=HTML към PDF
HTMLToPDF.header=HTML към PDF
HTMLToPDF.help=Приема HTML файлове и ZIP файлове, съдържащи html/css/изображения и т.н
HTMLToPDF.submit=Преобразуване
HTMLToPDF.credit=Използва WeasyPrint
#sanitizePDF
sanitizePDF.title=Дезинфектирай PDF
sanitizePDF.header=Дезинфектира PDF файл
sanitizePDF.selectText.1=Премахва JavaScript действия
sanitizePDF.selectText.2=Премахва вградени файлове
sanitizePDF.selectText.3=Премахва метаданни
sanitizePDF.selectText.4=Премахва линкове
sanitizePDF.selectText.5=Премахва шрифтове
sanitizePDF.submit=Дезинфектирай PDF
#addPageNumbers
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=Кои страници да номерирате, по подразбиране 'всички', също приема 1-5 или 2,5,9 и т.н.
addPageNumbers.customNumberDesc=По подразбиране е {n}, също приема 'Страница {n} от {total}', 'Текст-{n}', '{filename}-{n}
addPageNumbers.submit=Добавяне на номера на страници
#auto-rename
auto-rename.title=Автоматично преименуване
auto-rename.header=Автоматично преименуване на PDF
auto-rename.submit=Автоматично преименуване
#adjustContrast
adjustContrast.title=Настройка на контраста
adjustContrast.header=Коригиране на контраста
adjustContrast.contrast=Контраст:
adjustContrast.brightness=Яркост:
adjustContrast.saturation=Наситеност:
adjustContrast.download=Изтегли
#crop
crop.title=Изрязване
crop.header=Изрязване на изображение
crop.submit=Подайте
#autoSplitPDF
autoSplitPDF.title=Автоматично разделяне на PDF
autoSplitPDF.header=Автоматично разделяне на PDF
autoSplitPDF.description=Печатайте, вмъквайте, сканирайте, качвайте и ни позволете да разделим автоматично вашите документи. Не е необходимо ръчно сортиране.
autoSplitPDF.selectText.1=Отпечатайте някои разделителни листове отдолу (Черно-бялото е добре).
autoSplitPDF.selectText.2=Сканирайте всичките си документи наведнъж, като поставите разделителния лист между тях.
autoSplitPDF.selectText.3=Качете единствения голям сканиран PDF файл и оставете Stirling PDF да се справи с останалото.
autoSplitPDF.selectText.4=Разделителните страници се откриват и премахват автоматично, което гарантира чист краен документ.
autoSplitPDF.formPrompt=Изпратете PDF, съдържащ разделители на страници на Stirling-PDF:
autoSplitPDF.duplexMode=Дуплексен режим (сканиране отпред и отзад)
autoSplitPDF.dividerDownload1=Изтеглете 'Автоматичен сплитер разделител (минимален).pdf'
autoSplitPDF.dividerDownload2=Изтеглете 'Автоматичен сплитер разделител (с инструкции).pdf'
autoSplitPDF.submit=Подайте
#pipeline
pipeline.title=Pipeline
#pageLayout
pageLayout.title=Многостранично оформление
pageLayout.header=Оформление на няколко страници
pageLayout.pagesPerSheet=Страници на лист:
pageLayout.addBorder=Добавяне на граници
pageLayout.submit=Подайте
#scalePages
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 Keystore файл (.p12 или .pfx) (По избор, ако е предоставен, трябва да съдържа вашия личен ключ и сертификат):
certSign.certType=Тип сертификат
certSign.password=Въведете вашата парола за Keystore за ключове или частен ключ (ако има):
certSign.showSig=Показване на подпис
certSign.reason=Причина
certSign.location=Местоположение
certSign.name=Име
certSign.submit=Подпишете PDF
#removeBlanks
removeBlanks.title=Премахване на празни места
removeBlanks.header=Премахване на празни страници
removeBlanks.threshold=Праг на белота на пикселите:
removeBlanks.thresholdDesc=Праг за определяне колко бял трябва да бъде един бял пиксел, за да бъде класифициран като 'бял'. 0 = черно, 255 чисто бяло.
removeBlanks.whitePercent=Процент бяло (%):
removeBlanks.whitePercentDesc=Процент от страницата, която трябва да бъде в 'бели' пиксели, които да бъдат премахнати
removeBlanks.submit=Премахване на празни места
#compare
compare.title=Сравнявай
compare.header=Сравнявай PDF-и
compare.document.1=Документ 1
compare.document.2=Документ 2
compare.submit=Сравнявай
#sign
sign.title=Подпишете
sign.header=Подпишете PDF-и
sign.upload=Качи изображение
sign.draw=Начертайте подпис
sign.text=Въвеждане на текст
sign.clear=Изчисти
sign.add=Добави
#repair
repair.title=Поправи
repair.header=Поправи PDF-и
repair.submit=Поправи
#flatten
flatten.title=Изравнете
flatten.header=Изравнете PDF-и
flatten.submit=Изравнете
#ScannerImageSplit
ScannerImageSplit.selectText.1=Праг на ъгъла:
ScannerImageSplit.selectText.2=Задава минималния абсолютен ъгъл, необходим за завъртане на изображението (по подразбиране: 10).
ScannerImageSplit.selectText.3=Толеранс:
ScannerImageSplit.selectText.4=Определя обхвата на цветовата вариация около предполагаемия фонов цвят (по подразбиране: 30).
ScannerImageSplit.selectText.5=Минимална площ:
ScannerImageSplit.selectText.6=Задава минималния праг на площ за изображение (по подразбиране: 10000).
ScannerImageSplit.selectText.7=Минимална контурна площ:
ScannerImageSplit.selectText.8=Задава минималния праг на контурната площ за изображение
ScannerImageSplit.selectText.9=Размер на рамката:
ScannerImageSplit.selectText.10=Задава размера на добавената и премахната граница, за да предотврати бели граници към изхода (по подразбиране: 1).
#OCR
ocr.title=OCR / Почистване на сканиране
ocr.header=Почистващи сканирания / OCR (оптично разпознаване на знаци)
ocr.selectText.1=Изберете езици, които да бъдат открити в рамките на PDF (изброените са откритите към момента):
ocr.selectText.2=Създаване на текстов файл, съдържащ OCR текст заедно с OCR PDF
ocr.selectText.3=Правилните страници бяха сканирани под изкривен ъгъл чрез завъртането им обратно на мястото им
ocr.selectText.4=Чиста страница, така че е по-малко вероятно OCR да намери текст във фонов шум. (Без промяна на изхода)
ocr.selectText.5=Чиста страница, така че е по-малко вероятно OCR да намери текст във фонов шум, поддържа почистване към изхода.
ocr.selectText.6=Игнорира страници, които имат интерактивен текст, само OCR страници, които са изображения
ocr.selectText.7=Принудително OCR, ще премахва чрез OCR на всяка страница всички оригинални текстови елементи
ocr.selectText.8=Нормално (Ще има грешка, ако PDF съдържа текст)
ocr.selectText.9=Допълнителни настройки
ocr.selectText.10=OCR режим
ocr.selectText.11=Премахване на изображения след OCR (Премахва ВСИЧКИ изображения, полезно само ако е част от стъпката на преобразуване)
ocr.selectText.12=Тип изобразяване (Разширен)
ocr.help=Моля, прочетете тази документация за това как да използвате това за други езици и/или да не използвате в docker
ocr.credit=Тази услуга използва OCRmyPDF и Tesseract за OCR.
ocr.submit=Обработка на PDF чрез OCR
#extractImages
extractImages.title=Извличане на изображения
extractImages.header=Извличане на изображения
extractImages.selectText=Изберете формат на изображението, в който да преобразувате извлечените изображения
extractImages.submit=Извличане
#File to PDF
fileToPDF.title=Файл към PDF
fileToPDF.header=Конвертирайте всеки файл към PDF
fileToPDF.credit=Тази услуга използва LibreOffice и Unoconv за преобразуване на файлове.
fileToPDF.supportedFileTypes=Поддържаните типове файлове трябва да включват по-долу, но за пълен актуализиран списък на поддържаните формати, моля, вижте документацията на LibreOffice
fileToPDF.submit=Преобразуване към PDF
#compress
compress.title=Компресиране
compress.header=Компресиране на PDF
compress.credit=Тази услуга използва Ghostscript за PDF компресиране/оптимизиране.
compress.selectText.1=Ръчен режим - От 1 до 4
compress.selectText.2=Ниво на оптимизация:
compress.selectText.3=4 (Ужасно за текстови изображения)
compress.selectText.4=Автоматичен режим - Автоматично настройва качеството, за да получи PDF точен размер
compress.selectText.5=Очакван PDF размер (напр. 25MB, 10.8MB, 25KB)
compress.submit=Компресиране
#Add image
addImage.title=Добавяне на изображение
addImage.header=Добавяне на изображение към PDF
addImage.everyPage=Всяка страница?
addImage.upload=Добавяне на изображение
addImage.submit=Добавяне на изображение
#merge
merge.title=Обединяване
merge.header=Обединяване на множество PDF файлове (2+)
merge.sortByName=Сортиране по име
merge.sortByDate=Сортиране по дата
merge.submit=Обединяване
#pdfOrganiser
pdfOrganiser.title=Организатор на страници
pdfOrganiser.header=Организатор на PDF страници
pdfOrganiser.submit=Пренареждане на страниците
#multiTool
multiTool.title=PDF Мулти инструмент
multiTool.header=PDF Мулти инструмент
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover
pageRemover.title=Премахване на страници
pageRemover.header=Премахване на PDF страници
pageRemover.pagesToDelete=Страници за изтриване (Въведете списък с номера на страници, разделени със запетая) :
pageRemover.submit=Изтриване на страници
#rotate
rotate.title=Завъртане на PDF
rotate.header=Завъртане на PDF
rotate.selectAngle=Изберете ъгъл на въртене (кратно на 90 градуса):
rotate.submit=Завъртане
#merge
split.title=Разделяне на PDF
split.header=Разделяне на 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
split.desc.6=Документ #4: Страница 7
split.desc.7=Документ #5: Страница 8
split.desc.8=Документ #6: Страница 9 и 10
split.splitPages=Въведете страници за разделяне:
split.submit=Разделяне
#merge
imageToPDF.title=Изображение към PDF
imageToPDF.header=Изображение към PDF
imageToPDF.submit=Преобразуване
imageToPDF.selectLabel=Опции за прилягане на изображението
imageToPDF.fillPage=Попълване на страница
imageToPDF.fitDocumentToImage=Побиране на страницата в изображението
imageToPDF.maintainAspectRatio=Поддържане на пропорции
imageToPDF.selectText.2=Автоматично завъртане на PDF
imageToPDF.selectText.3=Файлова логика с много (Активирано само ако работите с множество изображения)
imageToPDF.selectText.4=Сливане към един PDF
imageToPDF.selectText.5=Преобразуване към отделни PDF файлове
#pdfToImage
pdfToImage.title=PDF към Изображение
pdfToImage.header=PDF към Изображение
pdfToImage.selectText=Формат на изображението
pdfToImage.singleOrMultiple=Тип резултат от страница към изображение
pdfToImage.single=Единично голямо изображение комбиниране на всички страници
pdfToImage.multi=Множество изображения, по едно изображение на страница
pdfToImage.colorType=Тип цвят
pdfToImage.color=Цвят
pdfToImage.grey=Скала на сивото
pdfToImage.blackwhite=Черно и бяло (може да загубите данни!)
pdfToImage.submit=Преобразуване
#addPassword
addPassword.title=Добавяне на парола
addPassword.header=Добавяне на парола (Шифроване)
addPassword.selectText.1=Изберете PDF, който да шифровате
addPassword.selectText.2=Потребителска парола
addPassword.selectText.3=Предотвратяване на сглобяването на документ
addPassword.selectText.4=По-високите стойности са по-силни, но по-ниските стойности имат по-добра съвместимост.
addPassword.selectText.5=Разрешения за задаване (препоръчва се да се използва заедно с паролата на собственика)
addPassword.selectText.6=Предотвратяване на сглобяването на документ
addPassword.selectText.7=Предотвратете извличането на съдържание
addPassword.selectText.8=Предотвратете извличането за достъпност
addPassword.selectText.9=Предотвратяване на попълване на формуляр
addPassword.selectText.10=Предотвратяване на промени
addPassword.selectText.11=Предотвратяване на промени на анотация
addPassword.selectText.12=Предотвратяване на печат
addPassword.selectText.13=Предотвратете отпечатването в различни формати
addPassword.selectText.14=Парола на собственика
addPassword.selectText.15=Ограничава какво може да се прави с документа, след като бъде отворен (не се поддържа от всички четци)
addPassword.selectText.16=Ограничава отварянето на самия документ
addPassword.submit=Шифроване
#watermark
watermark.title=Добавяне на воден знак
watermark.header=Добавяне на воден знак
watermark.selectText.1=Изберете PDF, към който да добавите воден знак:
watermark.selectText.2=Текст на воден знак:
watermark.selectText.3=Размер на шрифта:
watermark.selectText.4=Завъртане (0-360):
watermark.selectText.5=ширинаSpacer (Разстояние между всеки воден знак хоризонтално):
watermark.selectText.6=дължинаSpacer (Разстояние между всеки воден знак вертикално):
watermark.selectText.7=Непрозрачност (0% - 100%):
watermark.selectText.8=Тип воден знак:
watermark.selectText.9=Изображение за воден знак:
watermark.submit=Добавяне на воден знак
#Change permissions
permissions.title=Промяна на правата
permissions.header=Промени правата
permissions.warning=Предупреждение, че тези разрешения са непроменими, препоръчва се да ги зададете с парола чрез страницата за добавяне на парола
permissions.selectText.1=Изберете PDF, за да промените правата
permissions.selectText.2=Разрешения за задаване
permissions.selectText.3=Предотвратяване на сглобяването на документ
permissions.selectText.4=Предотвратете извличането на съдържание
permissions.selectText.5=Предотвратете извличането за достъпност
permissions.selectText.6=Предотвратяване на попълване на формуляр
permissions.selectText.7=Предотвратяване на модификация
permissions.selectText.8=Предотвратяване на модификация на анотация
permissions.selectText.9=Предотвратявам на отпечатването
permissions.selectText.10=Предотвратете отпечатването на различни формати
permissions.submit=Промени
#remove password
removePassword.title=Премахване на паролата
removePassword.header=Премахване на паролата (Декриптиране)
removePassword.selectText.1=Изберете PDF за Декриптиране
removePassword.selectText.2=Парола
removePassword.submit=Премахване
#changeMetadata
changeMetadata.title=Заглавие:
changeMetadata.header=Промени метаданните
changeMetadata.selectText.1=Моля, редактирайте променливите, които искате да промените
changeMetadata.selectText.2=Изтрий всички метаданни
changeMetadata.selectText.3=Покажи персонализирани метаданни:
changeMetadata.author=Автор:
changeMetadata.creationDate=Дата на създаване (гггг/ММ/дд ЧЧ:мм:сс):
changeMetadata.creator=Създател:
changeMetadata.keywords=Ключови думи:
changeMetadata.modDate=Дата на промяна (гггг/ММ/дд ЧЧ:мм:сс):
changeMetadata.producer=Продуцент:
changeMetadata.subject=Тема:
changeMetadata.title=Заглавие:
changeMetadata.trapped=В капан:
changeMetadata.selectText.4=Други метаданни:
changeMetadata.selectText.5=Добавяне на персонализиране метаданни
changeMetadata.submit=Промени
#pdfToPDFA
pdfToPDFA.title=PDF към PDF/A
pdfToPDFA.header=PDF към PDF/A
pdfToPDFA.credit=Тази услуга използва OCRmyPDF за PDF/A преобразуване.
pdfToPDFA.submit=Преобразуване
#PDFToWord
PDFToWord.title=PDF към Word
PDFToWord.header=PDF към Word
PDFToWord.selectText.1=Изходен файлов формат
PDFToWord.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
PDFToWord.submit=Преобразуване
#PDFToPresentation
PDFToPresentation.title=PDF към Презентация
PDFToPresentation.header=PDF към Презентация
PDFToPresentation.selectText.1=Изходен файлов формат
PDFToPresentation.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
PDFToPresentation.submit=Преобразуване
#PDFToText
PDFToText.title=PDF към RTF (Текст)
PDFToText.header=PDF към RTF (Текст)
PDFToText.selectText.1=Изходен файлов формат
PDFToText.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
PDFToText.submit=Преобразуване
#PDFToHTML
PDFToHTML.title=PDF към HTML
PDFToHTML.header=PDF към HTML
PDFToHTML.credit=Тази услуга използва LibreOffice за преобразуване на файлове.
PDFToHTML.submit=Преобразуване
#PDFToXML
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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Desar Usuari
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=L'eina allotjada localment per a necessitats PDF. 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.title=PDF Multi Tool
home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Reorganitza Pàgines
multiTool.title=PDF Multi Tool multiTool.title=PDF Multi Tool
multiTool.header=PDF Multi Tool multiTool.header=PDF Multi Tool
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Eliminació Pàgines pageRemover.title=Eliminació Pàgines
@@ -665,9 +692,6 @@ split.submit=Divideix
imageToPDF.title=Imatge a PDF imageToPDF.title=Imatge a PDF
imageToPDF.header=Imatge a PDF imageToPDF.header=Imatge a PDF
imageToPDF.submit=Converteix imageToPDF.submit=Converteix
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF a XML
PDFToXML.header=PDF a XML PDFToXML.header=PDF a XML
PDFToXML.credit=Utilitza LibreOffice per a la conversió d'Arxius. PDFToXML.credit=Utilitza LibreOffice per a la conversió d'Arxius.
PDFToXML.submit=Converteix 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

View File

@@ -19,7 +19,7 @@ save=Speichern
close=Schließen close=Schließen
filesSelected=Dateien ausgewählt filesSelected=Dateien ausgewählt
noFavourites=Keine Favoriten hinzugefügt noFavourites=Keine Favoriten hinzugefügt
bored=Gelangweiltes Warten? bored=Langeweile beim Warten?
alphabet=Alphabet alphabet=Alphabet
downloadPdf=PDF herunterladen downloadPdf=PDF herunterladen
text=Text text=Text
@@ -43,11 +43,11 @@ green=Grün
blue=Blau blue=Blau
custom=benutzerdefiniert... custom=benutzerdefiniert...
changedCredsMessage=Credentials changed! changedCredsMessage=Anmeldedaten geändert!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=Benutzer nicht authentifiziert.
userNotFoundMessage=User not found. userNotFoundMessage=Benutzer nicht gefunden.
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=Das Passwort ist falsch.
usernameExistsMessage=New Username already exists. usernameExistsMessage=Neuer Benutzername existiert bereits.
@@ -77,14 +77,14 @@ settings.accountSettings=Kontoeinstellungen
changeCreds.title=Change Credentials changeCreds.title=Anmeldeinformationen ändern
changeCreds.header=Update Your Account Details changeCreds.header=Aktualisieren Sie Ihre Kontodaten
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=Sie verwenden Standard-Anmeldeinformationen. Bitte geben Sie ein neues Passwort (und ggf. einen Benutzernamen) ein.
changeCreds.newUsername=New Username changeCreds.newUsername=Neuer Benutzername
changeCreds.oldPassword=Current Password changeCreds.oldPassword=Aktuelles Passwort
changeCreds.newPassword=New Password changeCreds.newPassword=Neues Passwort
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=Neues Passwort bestätigen
changeCreds.submit=Submit Changes changeCreds.submit=Änderung speichern
@@ -92,8 +92,8 @@ account.title=Kontoeinstellungen
account.accountSettings=Kontoeinstellungen account.accountSettings=Kontoeinstellungen
account.adminSettings=Admin Einstellungen - Benutzer anzeigen und hinzufügen account.adminSettings=Admin Einstellungen - Benutzer anzeigen und hinzufügen
account.userControlSettings=Benutzerkontrolle account.userControlSettings=Benutzerkontrolle
account.changeUsername=Passwort ändern account.changeUsername=Benutzername ändern
account.changeUsername=Passwort ändern account.changeUsername=Benutzername ändern
account.password=Bestätigungspasswort account.password=Bestätigungspasswort
account.oldPassword=Altes Passwort account.oldPassword=Altes Passwort
account.newPassword=Neues Passwort account.newPassword=Neues Passwort
@@ -119,15 +119,20 @@ adminUserSettings.role=Rolle
adminUserSettings.actions=Aktion adminUserSettings.actions=Aktion
adminUserSettings.apiUser=Eingeschränkter API-Benutzer adminUserSettings.apiUser=Eingeschränkter API-Benutzer
adminUserSettings.webOnlyUser=Nur Web-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 adminUserSettings.submit=Benutzer speichern
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Ihr lokal gehosteter One-Stop-Shop für alle Ihre PDF-Anforderungen. 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.title=PDF-Multitool
home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
@@ -196,7 +201,7 @@ home.fileToPDF.title=Datei in PDF konvertieren
home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr) home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr)
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
home.ocr.title=Führe OCR auf PDF- und/oder Cleanup-Scans aus home.ocr.title=Führe OCR/Cleanup-Scans aus
home.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu. home.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu.
ocr.tags=recognition,text,image,scan,read,identify,detection,editable ocr.tags=recognition,text,image,scan,read,identify,detection,editable
@@ -328,9 +333,27 @@ home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
showJS.tags=JS showJS.tags=JS
home.autoRedact.title=Automatisch zensieren/schwärzen 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 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 # # WEB PAGES #
@@ -430,7 +453,7 @@ addPageNumbers.selectText.5=Seiten zu nummerieren
addPageNumbers.selectText.6=Benutzerdefinierter Text addPageNumbers.selectText.6=Benutzerdefinierter Text
addPageNumbers.customTextDesc=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.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 addPageNumbers.submit=Seitenzahlen hinzufügen
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Mehrseitiges Layout pageLayout.title=Mehrseitiges Layout
pageLayout.header=Mehrseitiges Layout pageLayout.header=Mehrseitiges Layout
pageLayout.pagesPerSheet=Seiten pro Blatt: pageLayout.pagesPerSheet=Seiten pro Blatt:
pageLayout.addBorder=Add Borders
pageLayout.submit=Abschicken pageLayout.submit=Abschicken
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Seiten anordnen
multiTool.title=PDF-Multitool multiTool.title=PDF-Multitool
multiTool.header=PDF-Multitool multiTool.header=PDF-Multitool
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Seiten entfernen pageRemover.title=Seiten entfernen
@@ -665,9 +692,6 @@ split.submit=Aufteilen
imageToPDF.title=Bild zu PDF imageToPDF.title=Bild zu PDF
imageToPDF.header=Bild zu PDF imageToPDF.header=Bild zu PDF
imageToPDF.submit=Umwandeln imageToPDF.submit=Umwandeln
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF in XML
PDFToXML.header=PDF in XML PDFToXML.header=PDF in XML
PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung.
PDFToXML.submit=Konvertieren 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

View 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=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE PDF(s)
multiPdfPrompt=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE PDFs (2+)
multiPdfDropPrompt=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE (\u03AE \u03C4\u03C1\u03AC\u03B2\u03B7\u03B3\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03BA\u03B1\u03B9 \u03B1\u03C0\u03CC\u03B8\u03B5\u03C3\u03B7) \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD PDF \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B5\u03B9\u03AC\u03B6\u03B5\u03C3\u03C4\u03B5
imgPrompt=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2(\u0395\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD)
genericSubmit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
processTimeWarning=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE: \u0391\u03C5\u03C4\u03AE \u03B7 \u03B4\u03B9\u03B1\u03B4\u03B9\u03BA\u03B1\u03C3\u03AF\u03B1 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C1\u03BA\u03AD\u03C3\u03B5\u03B9 \u03AD\u03C9\u03C2 \u03BA\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C0\u03C4\u03CC \u03B1\u03BD\u03AC\u03BB\u03BF\u03B3\u03B1 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
pageOrderPrompt=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03B7 \u03A3\u03B5\u03B9\u03C1\u03AC \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 (\u03A0\u03C1\u03BF\u03C3\u03B8\u03AD\u03C3\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03BB\u03AF\u03C3\u03C4\u03B5 \u03B1\u03C0\u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD\u03C2 \u03C3\u03B5\u03BB\u03B9\u03B4\u03CE\u03BD, \u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BC\u03B5 \u03BA\u03CC\u03BC\u03BC\u03B1 \u03AE \u03C3\u03C5\u03BD\u03B1\u03C1\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2 \u03CC\u03C0\u03C9\u03C2 2n+1) :
goToPage=Go
true=\u0391\u03BB\u03B7\u03B8\u03AD\u03C2
false=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF
unknown=\u0386\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF
save=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7
close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF
filesSelected=\u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03B8\u03B7\u03BA\u03B1\u03BD
noFavourites=\u039A\u03B1\u03BD\u03AD\u03BD\u03B1 \u03B1\u03B3\u03B1\u03C0\u03AE\u03BC\u03B5\u03BD\u03BF \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B5\u03B8\u03B5\u03AF
bored=\u0392\u03B1\u03C1\u03B9\u03AD\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BC\u03AD\u03BD\u03B5\u03C4\u03B5;
alphabet=\u0391\u03BB\u03C6\u03AC\u03B2\u03B7\u03C4\u03BF
downloadPdf=\u039A\u03B1\u03C4\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03C4\u03BF\u03C5 PDF
text=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
font=\u0393\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC
selectFillter=-- \u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE --
pageNum=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
sizes.small=\u039C\u03B9\u03BA\u03C1\u03CC
sizes.medium=\u039C\u03B5\u03C3\u03B1\u03AF\u03BF
sizes.large=\u039C\u03B5\u03B3\u03AC\u03BB\u03BF
sizes.x-large=\u03A0\u03BF\u03BB\u03CD \u039C\u03B5\u03B3\u03AC\u03BB\u03BF
error.pdfPassword=\u03A4\u03BF PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BA\u03BB\u03B5\u03B9\u03B4\u03C9\u03BC\u03AD\u03BD\u03BF \u03BC\u03B5 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03BA\u03B1\u03B9 \u03B5\u03AF\u03C4\u03B5 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03B9 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC, \u03B5\u03AF\u03C4\u03B5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BB\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2
delete=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE
username=\u038C\u03BD\u03BF\u03BC\u03B1 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
password=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2
welcome=\u039A\u03B1\u03BB\u03C9\u03C2 \u0389\u03BB\u03B8\u03B1\u03C4\u03B5
property=Property
black=\u039C\u03B1\u03CD\u03C1\u03BF
white=\u0386\u03C3\u03C0\u03C1\u03BF
red=\u039A\u03CC\u03BA\u03BA\u03B9\u03BD\u03BF
green=\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF
blue=\u039C\u03C0\u03BB\u03AD
custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE...
changedCredsMessage=\u03A4\u03B1 \u03B4\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03AE\u03C1\u03B9\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9!
notAuthenticatedMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C5\u03B8\u03B5\u03BD\u03C4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF.
userNotFoundMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5.
incorrectPasswordMessage=\u039F \u03C4\u03C1\u03AD\u03C7\u03C9\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BB\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2.
usernameExistsMessage=\u03A4\u03BF \u03BD\u03AD\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7.
#############
# NAVBAR #
#############
navbar.convert=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
navbar.security=\u0391\u03C3\u03C6\u03AC\u03BB\u03B5\u03B9\u03B1
navbar.other=\u0394\u03B9\u03AC\u03C6\u03BF\u03C1\u03B1
navbar.darkmode=\u039C\u03B1\u03CD\u03C1\u03BF \u0398\u03AD\u03BC\u03B1
navbar.pageOps=\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B5\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
navbar.settings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2
#############
# SETTINGS #
#############
settings.title=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2
settings.update=\u03A5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03B4\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03B7 \u03B5\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7
settings.appVersion=\u0388\u03BA\u03B4\u03BF\u03C3\u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2: App Version:
settings.downloadOption.title=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BB\u03AE\u03C8\u03B7\u03C2 (\u0393\u03B9\u03B1 \u03BB\u03AE\u03C8\u03B5\u03B9\u03C2 \u03BC\u03B5\u03BC\u03BF\u03BD\u03C9\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03C7\u03C9\u03C1\u03AF\u03C2 zip):
settings.downloadOption.1=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03C3\u03C4\u03BF \u03AF\u03B4\u03B9\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF
settings.downloadOption.2=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03C3\u03B5 \u03BD\u03AD\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF
settings.downloadOption.3=\u039B\u03AE\u03C8\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
settings.zipThreshold=Zip \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03CC\u03C4\u03B1\u03BD \u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C4\u03C9\u03BD \u03BB\u03B7\u03C6\u03B8\u03AD\u03BD\u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF\u03C2
settings.signOut=\u0391\u03C0\u03BF\u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7
settings.accountSettings=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD
changeCreds.title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0394\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03B7\u03C1\u03AF\u03C9\u03BD
changeCreds.header=\u0395\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7 \u03C4\u03C9\u03BD \u03BB\u03B5\u03C0\u03C4\u03BF\u03BC\u03B5\u03C1\u03B5\u03B9\u03CE\u03BD \u03C4\u03BF\u03C5 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD \u03C3\u03B1\u03C2
changeCreds.changeUserAndPassword=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B5 \u03C4\u03B1 \u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1 \u03B4\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03AE\u03C1\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03BD\u03AD\u03BF \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 (\u03BA\u03B1\u03B9 \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03B1\u03BD \u03C4\u03BF \u03B5\u03C0\u03B9\u03B8\u03C5\u03BC\u03B5\u03AF\u03C4\u03B5)
changeCreds.newUsername=\u039D\u03AD\u03BF \u038C\u03BD\u03BF\u03BC\u03B1 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
changeCreds.oldPassword=\u03A4\u03C1\u03AD\u03C7\u03C9\u03BD \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
changeCreds.newPassword=\u039D\u03AD\u03BF\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
changeCreds.confirmNewPassword=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u039D\u03AD\u03BF\u03C5 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
changeCreds.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE \u0391\u03BB\u03BB\u03B1\u03B3\u03CE\u03BD
account.title=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u039B\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03BF\u03CD
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=\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
account.newPassword=\u039D\u03AD\u03BF\u03C2 \u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
account.changePassword=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
account.confirmNewPassword=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u039D\u03AD\u03BF\u03C5 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD
account.signOut=\u0391\u03C0\u03BF\u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7
account.yourApiKey=\u03A4\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \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 key)
account.syncTitle=\u03A3\u03C5\u03B3\u03C7\u03C1\u03BF\u03BD\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C4\u03C9\u03BD \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C4\u03BF\u03C5 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (Web Browser) \u03BC\u03B5 \u03C4\u03BF\u03BD \u03BB\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03CC
account.settingsCompare=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD:
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)
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
adminUserSettings.addUser=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BD\u03AD\u03BF\u03C5 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
adminUserSettings.roles=\u03A1\u03CC\u03BB\u03BF\u03B9
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.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.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
home.merge.title=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7
home.merge.desc=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD PDF \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03BC\u03B5 \u03B5\u03CD\u03BA\u03BF\u03BB\u03BF \u03C4\u03C1\u03CC\u03C0\u03BF.
merge.tags=merge,Page operations,Back end,server side
home.split.title=\u0394\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2
home.split.desc=\u0394\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C4\u03C9\u03BD PDF \u03C3\u03B5 \u03C0\u03BF\u03BB\u03BB\u03AC \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03B1.
split.tags=Page operations,divide,Multi Page,cut,server side
home.rotate.title=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE
home.rotate.desc=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE \u03C4\u03C9\u03BD PDF \u03C3\u03B1\u03C2 \u03BC\u03B5 \u03B5\u03CD\u03BA\u03BF\u03BB\u03BF \u03C4\u03C1\u03CC\u03C0\u03BF.
rotate.tags=server side
home.imageToPdf.title=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C3\u03B5 PDF
home.imageToPdf.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 (PNG, JPEG, GIF) \u03C3\u03B5 PDF.
imageToPdf.tags=conversion,img,jpg,picture,photo
home.pdfToImage.title=PDF \u03C3\u03B5 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1
home.pdfToImage.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BD\u03CC\u03C2 PDF \u03C3\u03B5 \u03BC\u03AF\u03B1 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1. (PNG, JPEG, GIF)
pdfToImage.tags=conversion,img,jpg,picture,photo
home.pdfOrganiser.title=\u039F\u03C1\u03B3\u03AC\u03BD\u03C9\u03C3\u03B7
home.pdfOrganiser.desc=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7/\u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03BC\u03B5 \u03BF\u03C0\u03BF\u03B9\u03B1\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03C3\u03B5\u03B9\u03C1\u03AC
pdfOrganiser.tags=duplex,even,odd,sort,move
home.addImage.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
home.addImage.desc=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BC\u03B9\u03B1\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03C3\u03B5 \u03BC\u03B9\u03B1 \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B7 \u03B8\u03AD\u03C3\u03B7 \u03C3\u03C4\u03BF PDF
addImage.tags=img,jpg,picture,photo
home.watermark.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
home.watermark.desc=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B5\u03BD\u03CC\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C3\u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03CC PDF.
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
home.permissions.title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0394\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD
home.permissions.desc=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03C4\u03C9\u03BD \u0394\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD \u03C3\u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF PDF
permissions.tags=read,write,edit,print
home.removePages.title=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7
home.removePages.desc=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BC\u03AE \u03B5\u03C0\u03B9\u03B8\u03C5\u03BC\u03B7\u03C4\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03B1\u03C0\u03BF \u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF PDF.
removePages.tags=Remove pages,delete pages
home.addPassword.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD
home.addPassword.desc=\u039A\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7 - \u03BA\u03BB\u03B5\u03AF\u03B4\u03C9\u03BC\u03B1 \u03C4\u03BF\u03C5 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03BC\u03B5 \u03AD\u03BD\u03B1\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC.
addPassword.tags=secure,security
home.removePassword.title=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD
home.removePassword.desc=\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03AE\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B1\u03C3\u03AF\u03B1\u03C2 \u03BC\u03B5 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B1\u03C0\u03CC \u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF PDF.
removePassword.tags=secure,Decrypt,security,unpassword,delete password
home.compressPdfs.title=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7
home.compressPdfs.desc=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7 \u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD PDF \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03BC\u03B5\u03AF\u03C9\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03BC\u03B5\u03B3\u03AD\u03B8\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2.
compressPdfs.tags=squish,small,tiny
home.changeMetadata.title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u039C\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
home.changeMetadata.desc=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE/\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7/\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF PDF.
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
home.fileToPDF.title=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BD\u03CC\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03B5 PDF
home.fileToPDF.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03C7\u03B5\u03B4\u03CC\u03BD \u03BF\u03C0\u03BF\u03B9\u03BF\u03C5\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03B5 PDF (DOCX, PNG, XLS, PPT, TXT and more)
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
home.ocr.title=\u03BF\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
home.ocr.desc=\u03A4\u03BF Cleanup \u03C3\u03B1\u03C1\u03CE\u03BD\u03B5\u03B9 \u03BA\u03B1\u03B9 \u03B1\u03BD\u03B9\u03C7\u03BD\u03B5\u03CD\u03B5\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B1\u03C0\u03CC \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2 \u03BC\u03AD\u03C3\u03B1 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF \u03BA\u03B1\u03B9 \u03C4\u03BF \u03C0\u03C1\u03BF\u03C3\u03B8\u03AD\u03C4\u03B5\u03B9 \u03BE\u03B1\u03BD\u03AC \u03C9\u03C2 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
home.extractImages.title=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD
home.extractImages.desc=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD \u03B1\u03C0\u03BF \u03AD\u03BD\u03B1 PDF \u03BA\u03B1\u03B9 \u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03B1\u03C5\u03C4\u03CE\u03BD \u03C3\u03B5 zip
extractImages.tags=picture,photo,save,archive,zip,capture,grab
home.pdfToPDFA.title=PDF \u03C3\u03B5 PDF/A
home.pdfToPDFA.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE PDF \u03C3\u03B5 PDF/A \u03B3\u03B9\u03B1 \u03BC\u03B1\u03BA\u03C1\u03BF\u03C7\u03C1\u03CC\u03BD\u03B9\u03B1 \u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
home.PDFToWord.title=PDF \u03C3\u03B5 Word
home.PDFToWord.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03BF\u03C5 PDF \u03C3\u03B5 Word \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF (DOC, DOCX and ODT)
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
home.PDFToPresentation.title=PDF \u03C3\u03B5 Powerpoint
home.PDFToPresentation.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03BF\u03C5 PDF \u03C3\u03B5 Powerpoint \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF (PPT, PPTX and ODP)
PDFToPresentation.tags=slides,show,office,microsoft
home.PDFToText.title=PDF \u03C3\u03B5 RTF (\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF)
home.PDFToText.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03BF\u03C5 PDF \u03C3\u03B5 \u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03AE \u03C3\u03B5 \u03BC\u03BF\u03C1\u03C6\u03AE RTF
PDFToText.tags=richformat,richtextformat,rich text format
home.PDFToHTML.title=PDF \u03C3\u03B5 HTML
home.PDFToHTML.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03BF\u03C5 PDF \u03C3\u03B5 \u03BC\u03BF\u03C1\u03C6\u03AE HTML
PDFToHTML.tags=web content,browser friendly
home.PDFToXML.title=PDF \u03C3\u03B5 XML
home.PDFToXML.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03BF\u03C5 PDF \u03C3\u03B5 \u03BC\u03BF\u03C1\u03C6\u03AE XML
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
home.ScannerImageSplit.title=\u0391\u03BD\u03AF\u03C7\u03BD\u03B5\u03C5\u03C3\u03B7/\u0394\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C3\u03B1\u03C1\u03C9\u03BC\u03AD\u03BD\u03C9\u03BD \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03B9\u03CE\u03BD
home.ScannerImageSplit.desc=\u0394\u03B9\u03B1\u03C7\u03C9\u03C1\u03AF\u03C3\u03BC\u03CC\u03C2 \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AF\u03CE\u03BD \u03BC\u03AD\u03C3\u03B1 \u03B1\u03C0\u03CC \u03BC\u03B9\u03B1 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AF\u03B1/PDF
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
home.sign.title=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE
home.sign.desc=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03C3\u03C4\u03BF PDF \u03BC\u03B5 \u03C3\u03C7\u03AD\u03B4\u03B9\u03BF, \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1.
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
home.flatten.title=Flatten
home.flatten.desc=\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03B4\u03B9\u03B1\u03B4\u03C1\u03B1\u03C3\u03C4\u03B9\u03BA\u03CE\u03BD \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD \u03BA\u03B1\u03B9 \u03C6\u03BF\u03C1\u03BC\u03CE\u03BD \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1 PDF
flatten.tags=static,deactivate,non-interactive,streamline
home.repair.title=\u0395\u03C0\u03B9\u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7
home.repair.desc=\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1 \u03B5\u03C0\u03B9\u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7\u03C2 \u03B5\u03BD\u03CC\u03C2 \u03BA\u03B1\u03C4\u03B5\u03C3\u03C4\u03C1\u03B1\u03BC\u03BC\u03AD\u03BD\u03BF\u03C5 PDF
repair.tags=fix,restore,correction,recover
home.removeBlanks.title=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BA\u03B5\u03BD\u03CE\u03BD \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
home.removeBlanks.desc=\u0391\u03BD\u03AF\u03C7\u03B5\u03C5\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BA\u03B5\u03BD\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF
removeBlanks.tags=cleanup,streamline,non-content,organize
home.compare.title=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7
home.compare.desc=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C4\u03C9\u03BD \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03B4\u03CD\u03BF PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
compare.tags=differentiate,contrast,changes,analysis
home.certSign.title=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE \u03BC\u03B5 \u03A0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03CC
home.certSign.desc=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03BC\u03B5 \u03AD\u03BD\u03B1 \u03A0\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03C4\u03B9\u03BA\u03CC/\u039A\u03BB\u03B5\u03B9\u03B4\u03AF (PEM/P12)
certSign.tags=authenticate,PEM,P12,official,encrypt
home.pageLayout.title=\u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
home.pageLayout.desc=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03B5\u03BD\u03CC\u03C2 \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5 PDF \u03C3\u03B5 \u03BC\u03AF\u03B1 \u03BC\u03CC\u03BD\u03BF \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1
pageLayout.tags=merge,composite,single-view,organize
home.scalePages.title=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C4\u03BF\u03C5 \u03BC\u03B5\u03B3\u03AD\u03B8\u03BF\u03C5\u03C2/\u03BA\u03BB\u03AF\u03BC\u03B1\u03BA\u03B1\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
home.scalePages.desc=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03C4\u03BF\u03C5 \u03BC\u03B5\u03B3\u03AD\u03B8\u03BF\u03C5\u03C2/\u03BA\u03BB\u03AF\u03BC\u03B1\u03BA\u03B1\u03C2 \u03BC\u03AF\u03B1\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03BA\u03B1\u03B9/\u03B7 \u03C4\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C4\u03B7\u03C2.
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
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
home.add-page-numbers.desc=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF \u03C3\u03B5 \u03BC\u03B9\u03B1 \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B7 \u03B8\u03AD\u03C3\u03B7
add-page-numbers.tags=paginate,label,organize,index
home.auto-rename.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 PDF
home.auto-rename.desc=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 \u03B5\u03BD\u03CC\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 PDF \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03B7\u03BD \u03BA\u03B5\u03C6\u03B1\u03BB\u03AF\u03B4\u03B1 \u03C0\u03BF\u03C5 \u03AD\u03C7\u03B5\u03B9 \u03B5\u03BD\u03C4\u03BF\u03C0\u03B9\u03C3\u03C4\u03B5\u03AF
auto-rename.tags=auto-detect,header-based,organize,relabel
home.adjust-contrast.title=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C7\u03C1\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD/\u0391\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7
home.adjust-contrast.desc=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C4\u03B7\u03C2 \u03B1\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7\u03C2, \u03C4\u03BF\u03C5 \u03BA\u03BF\u03C1\u03B5\u03C3\u03BC\u03BF\u03CD \u03BA\u03B1\u03B9 \u03C4\u03B7\u03C2 \u03C6\u03C9\u03C4\u03B5\u03B9\u03BD\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03B5\u03BD\u03CC\u03C2 PDF
adjust-contrast.tags=color-correction,tune,modify,enhance
home.crop.title=\u03A0\u03B5\u03C1\u03B9\u03BA\u03BF\u03C0\u03AE PDF
home.crop.desc=\u03A0\u03B5\u03C1\u03B9\u03BA\u03BF\u03C0\u03AE \u03B5\u03BD\u03CC\u03C2 PDF \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03BC\u03B5\u03B9\u03C9\u03B8\u03B5\u03AF \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03CC\u03C2 \u03C4\u03BF\u03C5 (\u03B4\u03B9\u03B1\u03C4\u03B7\u03C1\u03B5\u03AF \u03C4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF!)
crop.tags=trim,shrink,edit,shape
home.autoSplitPDF.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
home.autoSplitPDF.desc=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C3\u03B1\u03C1\u03C9\u03BC\u03AD\u03BD\u03BF\u03C5 PDF \u03BC\u03B5 \u03C6\u03C5\u03C3\u03B9\u03BA\u03CC \u03C3\u03B1\u03C1\u03C9\u03BC\u03AD\u03BD\u03BF \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03AE \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD QR Code
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
home.sanitizePdf.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7
home.sanitizePdf.desc=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C3\u03B5\u03BD\u03B1\u03C1\u03AF\u03C9\u03BD \u03BA\u03B1\u03B9 \u03AC\u03BB\u03BB\u03C9\u03BD \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD \u03B1\u03C0\u03CC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF
sanitizePdf.tags=clean,secure,safe,remove-threats
home.URLToPDF.title=URL/\u0399\u03C3\u03C4\u03CC\u03C4\u03BF\u03C0\u03BF\u03C2 \u03C3\u03B5 PDF
home.URLToPDF.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03BF\u03C0\u03BF\u03B9\u03B1\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7\u03C2 URL http(s) \u03C3\u03B5 PDF
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
home.HTMLToPDF.title=HTML \u03C3\u03B5 PDF
home.HTMLToPDF.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03BF\u03C0\u03BF\u03B9\u03BF\u03C5\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 HTML \u03AE zip \u03C3\u03B5 PDF
HTMLToPDF.tags=markup,web-content,transformation,convert
home.MarkdownToPDF.title=Markdown \u03C3\u03B5 PDF
home.MarkdownToPDF.desc=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03BF\u03C0\u03BF\u03B9\u03BF\u03C5\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 Markdown \u03C3\u03B5 PDF
MarkdownToPDF.tags=markup,web-content,transformation,convert
home.getPdfInfo.title=\u039B\u03AE\u03C8\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF PDF
home.getPdfInfo.desc=\u039B\u03AE\u03C8\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C0\u03B9\u03B8\u03B1\u03BD\u03CE\u03BD \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03B1\u03C0\u03CC \u03C4\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF
getPdfInfo.tags=infomation,data,stats,statistics
home.extractPage.title=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
home.extractPage.desc=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03C4\u03C9\u03BD \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1 PDF
extractPage.tags=extract
home.PdfToSinglePage.title=PDF \u03C3\u03B5 \u03BC\u03AF\u03B1 \u03BC\u03B5\u03B3\u03AC\u03BB\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1
home.PdfToSinglePage.desc=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD PDF \u03C3\u03B5 \u03BC\u03B9\u03B1 \u03BC\u03B5\u03B3\u03AC\u03BB\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1
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=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 #
# #
###########################
#login
login.title=\u0395\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2
login.signin=\u0395\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2
login.rememberme=\u039D\u03B1 \u039C\u03B5 \u0398\u03C5\u03BC\u03AC\u03C3\u03B1\u03B9
login.invalid=\u039B\u03AC\u03B8\u03BF\u03C2 \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03AE \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2.
login.locked=\u039F \u03BB\u03BF\u03B3\u03B1\u03C1\u03B9\u03B1\u03C3\u03BC\u03CC\u03C2 \u03C3\u03B1\u03C2 \u03AD\u03C7\u03B5\u03B9 \u03BA\u03BB\u03B5\u03B9\u03B4\u03C9\u03B8\u03B5\u03AF.
login.signinTitle=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE, \u03C3\u03C5\u03BD\u03B4\u03B5\u03B8\u03B5\u03AF\u03C4\u03B5
#auto-redact
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
autoRedact.header=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF \u039C\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
autoRedact.colorLabel=\u03A7\u03C1\u03CE\u03BC\u03B1
autoRedact.textsToRedactLabel=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B3\u03B9\u03B1 \u03BC\u03B1\u03CD\u03C1\u03B9\u03C3\u03BC\u03B1 (\u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03C3\u03B5 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AD\u03C2)
autoRedact.textsToRedactPlaceholder=\u03C0.\u03C7. \n\u0395\u03BC\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03B9\u03BA\u03CC \n\u0391\u03BA\u03C1\u03CE\u03C2 \u03B1\u03C0\u03CC\u03C1\u03C1\u03B7\u03C4\u03BF
autoRedact.useRegexLabel=\u03A7\u03C1\u03AE\u03C3\u03B7 Regex
autoRedact.wholeWordSearchLabel=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BF\u03BB\u03CC\u03BA\u03BB\u03B7\u03C1\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03BB\u03AD\u03BE\u03B7\u03C2
autoRedact.customPaddingLabel=Custom Extra Padding
autoRedact.convertPDFToImageLabel=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE PDF \u03C3\u03B5 PDF-\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 (\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B1\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03AF\u03C3\u03C9 \u03B1\u03C0\u03CC \u03C4\u03BF \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF)
autoRedact.submitButton=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
#showJS
showJS.title=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 Javascript
showJS.header=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 Javascript
showJS.downloadJS=\u039B\u03AE\u03C8\u03B7 Javascript
showJS.submit=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7
#pdfToSinglePage
pdfToSinglePage.title=PDF \u03C3\u03B5 \u039C\u03BF\u03BD\u03AE \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1
pdfToSinglePage.header=PDF \u03C3\u03B5 \u039C\u03BF\u03BD\u03AE \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1
pdfToSinglePage.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u039C\u03BF\u03BD\u03AE \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1
#pageExtracter
pageExtracter.title=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
pageExtracter.header=E\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
pageExtracter.submit=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE
#getPdfInfo
getPdfInfo.title=\u0391\u03BD\u03AC\u03BA\u03C4\u03B7\u03C3\u03B7 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF PDF
getPdfInfo.header=\u0391\u03BD\u03AC\u03BA\u03C4\u03B7\u03C3\u03B7 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF PDF
getPdfInfo.submit=\u0391\u03BD\u03AC\u03BA\u03C4\u03B7\u03C3\u03B7 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD
getPdfInfo.downloadJson=\u039B\u03AE\u03C8\u03B7 JSON
#markdown-to-pdf
MarkdownToPDF.title=Markdown \u03C3\u03B5 PDF
MarkdownToPDF.header=Markdown \u03C3\u03B5 PDF
MarkdownToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
MarkdownToPDF.help=\u0395\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C3\u03B5 \u03B5\u03BE\u03AD\u03BB\u03B9\u03BE\u03B7
MarkdownToPDF.credit=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF WeasyPrint
#url-to-pdf
URLToPDF.title=URL \u03C3\u03B5 PDF
URLToPDF.header=URL \u03C3\u03B5 PDF
URLToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
URLToPDF.credit=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF WeasyPrint
#html-to-pdf
HTMLToPDF.title=HTML \u03C3\u03B5 PDF
HTMLToPDF.header=HTML \u03C3\u03B5 PDF
HTMLToPDF.help=\u0394\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C4\u03CD\u03C0\u03BF\u03C5 HTML \u03BA\u03B1\u03B9 \u03C4\u03CD\u03C0\u03BF\u03C5 ZIP \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03BF\u03C5\u03BD html/css/\u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2 \u03BA.\u03BB\u03C0. \u03C0\u03BF\u03C5 \u03B1\u03C0\u03B1\u03B9\u03C4\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9
HTMLToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
HTMLToPDF.credit=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF WeasyPrint
#sanitizePDF
sanitizePDF.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF
sanitizePDF.header=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
sanitizePDF.selectText.1=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 JavaScript
sanitizePDF.selectText.2=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03B5\u03BC\u03C3\u03C9\u03BC\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
sanitizePDF.selectText.3=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
sanitizePDF.selectText.4=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03BC\u03C9\u03BD (links)
sanitizePDF.selectText.5=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03CE\u03BD
sanitizePDF.submit=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF
#addPageNumbers
addPageNumbers.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CE\u03BD \u03C3\u03B5 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2
addPageNumbers.header=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CE\u03BD \u03C3\u03B5 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2
addPageNumbers.selectText.1=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5:
addPageNumbers.selectText.2=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B8\u03C9\u03C1\u03AF\u03BF\u03C5
addPageNumbers.selectText.3=\u0398\u03AD\u03C3\u03B7
addPageNumbers.selectText.4=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C0\u03BF\u03C5 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03B7 \u03B1\u03C1\u03AF\u03B8\u03BC\u03B7\u03C3\u03B7
addPageNumbers.selectText.5=\u03A3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03C3\u03B5 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC
addPageNumbers.selectText.6=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03BF \u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
addPageNumbers.customTextDesc=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03BF \u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF
addPageNumbers.numberPagesDesc=\u03A0\u03BF\u03B9\u03AD\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03BD\u03B1 \u03B1\u03C1\u03B9\u03B8\u03BC\u03B7\u03B8\u03BF\u03CD\u03BD, \u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE 'all' (\u03CC\u03BB\u03B5\u03C2), \u03B5\u03C0\u03AF\u03C3\u03B7\u03C2 \u03B4\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 1-5 \u03AE 2,5,9 \u03BA.\u03BB.\u03C0
addPageNumbers.customNumberDesc=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C3\u03B5 {n}, \u03B4\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03B5\u03C0\u03AF\u03C3\u03B7\u03C2 "\u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 {n} \u03B1\u03C0\u03CC {total}", "Text-{n}", "{filename}-{n}
addPageNumbers.submit=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CE\u03BD \u03C3\u03B5 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2
#auto-rename
auto-rename.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1
auto-rename.header=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 PDF
auto-rename.submit=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1
#adjustContrast
adjustContrast.title=\u03A0\u03C1\u03BF\u03C3\u03C0\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C4\u03B7\u03C2 \u0391\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7\u03C2
adjustContrast.header=\u03A0\u03C1\u03BF\u03C3\u03C0\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C4\u03B7\u03C2 \u0391\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7\u03C2
adjustContrast.contrast=\u0391\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7:
adjustContrast.brightness=\u03A6\u03C9\u03C4\u03B5\u03B9\u03BD\u03CC\u03C4\u03B7\u03C4\u03B1:
adjustContrast.saturation=\u039A\u03BF\u03C1\u03B5\u03C3\u03BC\u03CC\u03C2:
adjustContrast.download=\u039B\u03AE\u03C8\u03B7
#crop
crop.title=\u039A\u03BF\u03C0\u03AE
crop.header=\u039A\u03BF\u03C0\u03AE \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
crop.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
#autoSplitPDF
autoSplitPDF.title=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B4\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 PDF
autoSplitPDF.header=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B4\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 PDF
autoSplitPDF.description=\u0395\u03BA\u03C4\u03C5\u03C0\u03CE\u03C3\u03C4\u03B5, \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B5, \u03C3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5, \u03B1\u03BD\u03B5\u03B2\u03AC\u03C3\u03C4\u03B5 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03AE\u03C3\u03C4\u03B5 \u03BC\u03B1\u03C2 \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03AF\u03C3\u03BF\u03C5\u03BC\u03B5 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B1 \u03C4\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03AC \u03C3\u03B1\u03C2. \u0394\u03B5\u03BD \u03B1\u03C0\u03B1\u03B9\u03C4\u03B5\u03AF\u03C4\u03B1\u03B9 \u03C7\u03B5\u03B9\u03C1\u03BF\u03BA\u03AF\u03BD\u03B7\u03C4\u03B7 \u03C4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7.
autoSplitPDF.selectText.1=\u0395\u03BA\u03C4\u03C5\u03C0\u03CE\u03C3\u03C4\u03B5 \u03BC\u03B5\u03C1\u03B9\u03BA\u03AC \u03C6\u03CD\u03BB\u03BB\u03B1 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03B1\u03C0\u03CC \u03BA\u03AC\u03C4\u03C9 (\u03C4\u03BF \u03B1\u03C3\u03C0\u03C1\u03CC\u03BC\u03B1\u03C5\u03C1\u03BF \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B9\u03B1 \u03C7\u03B1\u03C1\u03AC).
autoSplitPDF.selectText.2=\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03CC\u03BB\u03B1 \u03C4\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03AC \u03C3\u03B1\u03C2 \u03C4\u03B1\u03C5\u03C4\u03CC\u03C7\u03C1\u03BF\u03BD\u03B1, \u03BC\u03B5 \u03C4\u03BF \u03BD\u03B1 \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC \u03C6\u03CD\u03BB\u03BB\u03BF \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C4\u03BF\u03C5\u03C2.
autoSplitPDF.selectText.3=\u0391\u03BD\u03B5\u03B2\u03AC\u03C3\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF \u03C3\u03B1\u03C1\u03C9\u03BC\u03AD\u03BD\u03BF PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03BA\u03B1\u03B9 \u03B1\u03C6\u03AE\u03C3\u03C4\u03B5 \u03C4\u03BF Stirling PDF \u03BD\u03B1 \u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03C4\u03B1 \u03C5\u03C0\u03CC\u03BB\u03BF\u03B9\u03C0\u03B1
autoSplitPDF.selectText.4=\u039F\u03B9 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03B5\u03BD\u03C4\u03BF\u03C0\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BA\u03B1\u03B9 \u03B1\u03C6\u03B1\u03B9\u03C1\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B1, \u03B4\u03B9\u03B1\u03C3\u03C6\u03B1\u03BB\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03C2 \u03AD\u03BD\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF \u03C4\u03B5\u03BB\u03B9\u03BA\u03CC \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF.
autoSplitPDF.formPrompt=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE PDF \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03B4\u03B9\u03B1\u03B9\u03C1\u03AD\u03C4\u03B5\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD Stirling-PDF:
autoSplitPDF.duplexMode=\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B4\u03B9\u03C0\u03BB\u03AE\u03C2 \u03CC\u03C8\u03B7\u03C2 (\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03BC\u03C0\u03C1\u03BF\u03C3\u03C4\u03AC \u03BA\u03B1\u03B9 \u03C0\u03AF\u03C3\u03C9)
autoSplitPDF.dividerDownload1=\u039B\u03AE\u03C8\u03B7 'Auto Splitter Divider (minimal).pdf'
autoSplitPDF.dividerDownload2=\u039B\u03AE\u03C8\u03B7 'Auto Splitter Divider (with instructions).pdf'
autoSplitPDF.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
#pipeline
pipeline.title=Pipeline
#pageLayout
pageLayout.title=\u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
pageLayout.header=\u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
pageLayout.pagesPerSheet=\u03A3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03B1\u03BD\u03AC \u03C6\u03CD\u03BB\u03BB\u03BF:
pageLayout.addBorder=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03BC\u03BC\u03AC\u03C4\u03C9\u03BD
pageLayout.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
#scalePages
scalePages.title=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BA\u03BB\u03AF\u03BC\u03B1\u03BA\u03B1\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
scalePages.header=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BA\u03BB\u03AF\u03BC\u03B1\u03BA\u03B1\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
scalePages.pageSize=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03BC\u03B9\u03B1\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03C4\u03BF\u03C5 \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5.
scalePages.scaleFactor=\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03B6\u03BF\u03C5\u03BC (\u03C0\u03B5\u03C1\u03B9\u03BA\u03BF\u03C0\u03AE) \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2.
scalePages.submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE
#certSign
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.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.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.submit=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE PDF
#removeBlanks
removeBlanks.title=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03B5\u03BD\u03CE\u03BD
removeBlanks.header=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03B5\u03BD\u03CE\u03BD \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
removeBlanks.threshold=\u038C\u03C1\u03B9\u03BF \u03BB\u03B5\u03C5\u03BA\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 pixel:
removeBlanks.thresholdDesc=\u038C\u03C1\u03B9\u03BF \u03B3\u03B9\u03B1 \u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03C3\u03B4\u03B9\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC \u03C4\u03BF\u03C5 \u03C0\u03CC\u03C3\u03BF \u03BB\u03B5\u03C5\u03BA\u03CC \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C5\u03BA\u03CC \u03B5\u03B9\u03BA\u03BF\u03BD\u03BF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF (pixel) \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03C4\u03B1\u03BE\u03B9\u03BD\u03BF\u03BC\u03B7\u03B8\u03B5\u03AF \u03C9\u03C2 "\u039B\u03B5\u03C5\u03BA\u03CC". 0 = \u039C\u03B1\u03CD\u03C1\u03BF, 255 \u03BA\u03B1\u03B8\u03B1\u03C1\u03CC \u03BB\u03B5\u03C5\u03BA\u03CC.
removeBlanks.whitePercent=\u03A0\u03BF\u03C3\u03BF\u03C3\u03C4\u03CC \u039B\u03B5\u03C5\u03BA\u03BF\u03CD (%):
removeBlanks.whitePercentDesc=\u03A4\u03BF \u03C0\u03BF\u03C3\u03BF\u03C3\u03C4\u03CC \u03C4\u03B7\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 "\u03BB\u03B5\u03C5\u03BA\u03AC" pixel \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C6\u03B1\u03B9\u03C1\u03B5\u03B8\u03B5\u03AF
removeBlanks.submit=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03B5\u03BD\u03CE\u03BD
#compare
compare.title=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7
compare.header=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 PDFs
compare.document.1=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF 1
compare.document.2=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF 2
compare.submit=\u03A3\u03CD\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7
#sign
sign.title=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE
sign.header=\u03A5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE PDFs
sign.upload=\u0391\u03BD\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
sign.draw=\u03A3\u03C7\u03B5\u03B4\u03AF\u03B1\u03C3\u03B7 \u03C5\u03C0\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2
sign.text=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5
sign.clear=\u039A\u03B1\u03B8\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1
sign.add=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7
#repair
repair.title=\u0395\u03C0\u03B9\u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7
repair.header=\u0395\u03C0\u03B9\u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7 PDFs
repair.submit=\u0395\u03C0\u03B9\u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7
#flatten
flatten.title=Flatten
flatten.header=Flatten PDFs
flatten.submit=Flatten
#ScannerImageSplit
ScannerImageSplit.selectText.1=\u038C\u03C1\u03B9\u03BF \u03B3\u03C9\u03BD\u03AF\u03B1\u03C2:
ScannerImageSplit.selectText.2=\u039F\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03B7\u03BD \u03B5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03B7 \u03B1\u03C0\u03CC\u03BB\u03C5\u03C4\u03B7 \u03B3\u03C9\u03BD\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B1\u03C0\u03B1\u03B9\u03C4\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03C0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE \u03C4\u03B7\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 10).
ScannerImageSplit.selectText.3=\u0391\u03BD\u03B5\u03BA\u03C4\u03B9\u03BA\u03CC\u03C4\u03B7\u03C4\u03B1 (Tolerance):
ScannerImageSplit.selectText.4=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03B5\u03CD\u03C1\u03BF\u03C2 \u03C4\u03B7\u03C2 \u03C7\u03C1\u03C9\u03BC\u03B1\u03C4\u03B9\u03BA\u03AE\u03C2 \u03B4\u03B9\u03B1\u03BA\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7\u03C2 \u03B3\u03CD\u03C1\u03C9 \u03B1\u03C0\u03CC \u03C4\u03BF \u03B5\u03BA\u03C4\u03B9\u03BC\u03CE\u03BC\u03B5\u03BD\u03BF \u03C7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5 (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 30).
ScannerImageSplit.selectText.5=\u0395\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03B7 \u03A0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE:
ScannerImageSplit.selectText.6=\u039F\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03B5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF \u03CC\u03C1\u03B9\u03BF \u03B5\u03C0\u03B9\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03BC\u03B9\u03B1 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AF\u03B1 (\u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: 10000).
ScannerImageSplit.selectText.7=\u0395\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03B7 \u03B5\u03C0\u03B9\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2:
ScannerImageSplit.selectText.8=\u03A1\u03C5\u03B8\u03BC\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03B5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF \u03CC\u03C1\u03B9\u03BF \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B3\u03B9\u03B1 \u03BC\u03B9\u03B1 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AF\u03B1
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)
ocr.selectText.1=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03B3\u03BB\u03CE\u03C3\u03C3\u03B5\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03CC\u03BA\u03B5\u03B9\u03C4\u03B1\u03B9 \u03BD\u03B1 \u03B5\u03BD\u03C4\u03BF\u03C0\u03B9\u03C3\u03C4\u03BF\u03CD\u03BD \u03C3\u03C4\u03BF PDF (\u039F\u03B9 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03C5\u03C4\u03AD\u03C2 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B9\u03C7\u03BD\u03B5\u03CD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C5\u03C4\u03AE\u03BD \u03C4\u03B7 \u03C3\u03C4\u03B9\u03B3\u03BC\u03AE):
ocr.selectText.2=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF OCR \u03BC\u03B1\u03B6\u03AF \u03BC\u03B5 \u03C4\u03BF PDF \u03C0\u03BF\u03C5 \u03AD\u03C7\u03B5\u03B9 \u03C5\u03C0\u03BF\u03B2\u03BB\u03B7\u03B8\u03B5\u03AF \u03C3\u03B5 OCR
ocr.selectText.3=\u039F\u03B9 \u03C3\u03C9\u03C3\u03C4\u03AD\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03C3\u03B1\u03C1\u03CE\u03B8\u03B7\u03BA\u03B1\u03BD \u03BC\u03B5 \u03BB\u03BF\u03BE\u03AE \u03B3\u03C9\u03BD\u03AF\u03B1 \u03C0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03AD\u03C6\u03BF\u03BD\u03C4\u03AC\u03C2 \u03C4\u03B5\u03C2 \u03C3\u03C4\u03B7 \u03B8\u03AD\u03C3\u03B7 \u03C4\u03BF\u03C5\u03C2
ocr.selectText.4=C\u039A\u03B1\u03B8\u03B1\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1, \u03CE\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BB\u03B9\u03B3\u03CC\u03C4\u03B5\u03C1\u03BF \u03C0\u03B9\u03B8\u03B1\u03BD\u03CC \u03C4\u03BF OCR \u03BD\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C3\u03C4\u03BF \u03B8\u03CC\u03C1\u03C5\u03B2\u03BF \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5 (background noise). (\u039A\u03B1\u03BC\u03AF\u03B1 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE \u03C3\u03C4\u03BF \u03B5\u03BE\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03BF)
ocr.selectText.5=\u039A\u03B1\u03B8\u03B1\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1, \u03CE\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BB\u03B9\u03B3\u03CC\u03C4\u03B5\u03C1\u03BF \u03C0\u03B9\u03B8\u03B1\u03BD\u03CC \u03C4\u03BF OCR \u03BD\u03B1 \u03B2\u03C1\u03B5\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C3\u03C4\u03BF \u03B8\u03CC\u03C1\u03C5\u03B2\u03BF \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5, \u03B4\u03B9\u03B1\u03C4\u03B7\u03C1\u03B5\u03AF \u03C4\u03B7\u03BD \u03B5\u03BA\u03BA\u03B1\u03B8\u03AC\u03C1\u03B9\u03C3\u03B7 \u03C3\u03C4\u03BF \u03C0\u03B1\u03C1\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03BF.
ocr.selectText.6=\u0391\u03B3\u03BD\u03BF\u03B5\u03AF \u03C4\u03B9\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03C0\u03BF\u03C5 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B4\u03B9\u03B1\u03B4\u03C1\u03B1\u03C3\u03C4\u03B9\u03BA\u03CC \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF, \u03BC\u03CC\u03BD\u03BF \u03C4\u03B9\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 OCR \u03C0\u03BF\u03C5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2
ocr.selectText.7=\u0395\u03C0\u03B9\u03B2\u03BF\u03BB\u03AE OCR, \u03B8\u03B1 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9 \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 \u03C3\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 \u03B1\u03C6\u03B1\u03B9\u03C1\u03CE\u03BD\u03C4\u03B1\u03C2 \u03CC\u03BB\u03BF \u03C4\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B9\u03BA\u03BF\u03CD \u03BA\u03B5\u03AF\u03BC\u03AD\u03BD\u03BF\u03C5
ocr.selectText.8=\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC (\u0398\u03B1 \u03C0\u03B1\u03C1\u03AC\u03BE\u03B5\u03B9 \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03B1\u03BD \u03C4\u03BF PDF \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF)
ocr.selectText.9=\u0395\u03C0\u03B9\u03C0\u03C1\u03CC\u03C3\u03B8\u03B5\u03C4\u03B5\u03C2 \u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2
ocr.selectText.10=\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 OCR
ocr.selectText.11=\u039A\u03B1\u03C4\u03AC\u03C1\u03B3\u03B7\u03C3\u03B7 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD \u03BC\u03B5\u03C4\u03AC \u03C4\u03BF OCR (\u039A\u03B1\u03C4\u03B1\u03C1\u03B3\u03B5\u03AF \u039F\u039B\u0395\u03A3 \u03C4\u03B9\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2, \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C7\u03C1\u03AE\u03C3\u03B9\u03BC\u03BF \u03BC\u03CC\u03BD\u03BF \u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03B5\u03AF \u03BC\u03AD\u03C1\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B2\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03BC\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE\u03C2)
ocr.selectText.12=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03B1\u03C0\u03CC\u03B4\u03BF\u03C3\u03B7\u03C2 (\u0393\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2)
ocr.help=\u0394\u03B9\u03B1\u03B2\u03AC\u03C3\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE\u03BD \u03C4\u03B7\u03BD \u03C4\u03B5\u03BA\u03BC\u03B7\u03C1\u03AF\u03C9\u03C3\u03B7 \u03C3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AC \u03BC\u03B5 \u03C4\u03BF\u03BD \u03C4\u03C1\u03CC\u03C0\u03BF \u03C7\u03C1\u03AE\u03C3\u03B7\u03C2 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03B3\u03B9\u03B1 \u03AC\u03BB\u03BB\u03B5\u03C2 \u03B3\u03BB\u03CE\u03C3\u03C3\u03B5\u03C2 \u03AE/\u03BA\u03B1\u03B9 \u03BC\u03B7 \u03C7\u03C1\u03AE\u03C3\u03B7\u03C2 \u03C3\u03B5 docker
ocr.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 OCRmyPDF \u03BA\u03B1\u03B9 Tesseract \u03B3\u03B9\u03B1 OCR.
ocr.submit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 PDF \u03BC\u03B5 OCR
#extractImages
extractImages.title=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u0395\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD
extractImages.header=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u0395\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD
extractImages.selectText=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03BC\u03BF\u03C1\u03C6\u03AE \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03BC\u03B5\u03C4\u03B1\u03C4\u03C1\u03AD\u03C8\u03B5\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03B5\u03BE\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03B5\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2
extractImages.submit=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE
#File to PDF
fileToPDF.title=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF \u03C3\u03B5 PDF
fileToPDF.header=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03BF\u03C0\u03BF\u03B9\u03BF\u03C5\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03B5 PDF
fileToPDF.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 \u03BA\u03B1\u03B9 Unoconv \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03BC\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD.
fileToPDF.supportedFileTypes=\u039F\u03B9 \u03C5\u03C0\u03BF\u03C3\u03C4\u03B7\u03C1\u03B9\u03B6\u03CC\u03BC\u03B5\u03BD\u03BF\u03B9 \u03C4\u03CD\u03C0\u03BF\u03B9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03B8\u03B1 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03BF\u03C5\u03BD \u03C4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9, \u03C9\u03C3\u03C4\u03CC\u03C3\u03BF, \u03B3\u03B9\u03B1 \u03BC\u03B9\u03B1 \u03C0\u03BB\u03AE\u03C1\u03B7 \u03B5\u03BD\u03B7\u03BC\u03B5\u03C1\u03C9\u03BC\u03AD\u03BD\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03C4\u03B9\u03C2 \u03C5\u03C0\u03BF\u03C3\u03C4\u03B7\u03C1\u03B9\u03B6\u03CC\u03BC\u03B5\u03BD\u03B5\u03C2 \u03BC\u03BF\u03C1\u03C6\u03AD\u03C2, \u03B1\u03BD\u03B1\u03C4\u03C1\u03AD\u03BE\u03C4\u03B5 \u03C3\u03C4\u03B7\u03BD \u03C4\u03B5\u03BA\u03BC\u03B7\u03C1\u03AF\u03C9\u03C3\u03B7 \u03C4\u03BF\u03C5 LibreOffice
fileToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 PDF
#compress
compress.title=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7
compress.header=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7 PDF
compress.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 Ghostscript \u03B3\u03B9\u03B1 PDF \u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7/\u0392\u03B5\u03BB\u03C4\u03B9\u03C3\u03C4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7.
compress.selectText.1=\u03A7\u03B5\u03B9\u03C1\u03BF\u03BA\u03AF\u03BD\u03B7\u03C4\u03B7 \u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 - \u0391\u03C0\u03CC 1 \u03AD\u03C9\u03C2 4
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.submit=\u03A3\u03C5\u03BC\u03C0\u03AF\u03B5\u03C3\u03B7
#Add image
addImage.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
addImage.header=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03C3\u03B5 PDF
addImage.everyPage=\u039A\u03AC\u03B8\u03B5 \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1?
addImage.upload=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
addImage.submit=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
#merge
merge.title=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7
merge.header=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03CE\u03BD PDFs (2+)
merge.sortByName=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03BF \u038C\u03BD\u03BF\u03BC\u03B1
merge.sortByDate=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03BC\u03B5 \u03B2\u03AC\u03C3\u03B7 \u03C4\u03B7\u03BD \u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1
merge.submit=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7
#pdfOrganiser
pdfOrganiser.title=\u0394\u03B9\u03BF\u03C1\u03B3\u03B1\u03BD\u03C9\u03C4\u03AE\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
pdfOrganiser.header=\u0394\u03B9\u03BF\u03C1\u03B3\u03B1\u03BD\u03C9\u03C4\u03AE\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 PDF
pdfOrganiser.submit=\u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
#multiTool
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
pageRemover.header=\u0391\u03C6\u03B1\u03B9\u03C1\u03B5\u03C4\u03AE\u03C2 \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD PDF
pageRemover.pagesToDelete=\u03A3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03C0\u03C1\u03BF\u03C2 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE (\u0395\u03B9\u03C3\u03B1\u03B3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5 \u03BA\u03CC\u03BC\u03BC\u03B1\u03C4\u03B1):
pageRemover.submit=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03A3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD
#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.selectAngle=Select rotation angle (in multiples of 90 degrees):
rotate.submit=Rotate
#merge
split.title=\u0394\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 PDF
split.header=\u0394\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 PDF
split.desc.1=\u039F\u03B9 \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03AF \u03C0\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03B3\u03B5\u03C4\u03B5 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03C3\u03C4\u03BF\u03BD \u03BF\u03C0\u03BF\u03AF\u03BF \u03B8\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03BA\u03AC\u03BD\u03B5\u03C4\u03B5 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC
split.desc.2=\u03A9\u03C2 \u03B5\u03BA \u03C4\u03BF\u03CD\u03C4\u03BF\u03C5, \u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE 1,3,7-8 \u03B8\u03B1 \u03C7\u03C9\u03C1\u03AF\u03C3\u03B5\u03B9 \u03AD\u03BD\u03B1 \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF 10 \u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD \u03C3\u03B5 6 \u03BE\u03B5\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03AC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF \u03BC\u03B5:
split.desc.3=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #1: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 1
split.desc.4=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #2: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 2 \u03BA\u03B1\u03B9 3
split.desc.5=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #3: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 4, 5 \u03BA\u03C3\u03B9 6
split.desc.6=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #4: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 7
split.desc.7=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #5: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 8
split.desc.8=\u0388\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF #6: \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1 9 \u03BA\u03B1\u03B9 10
split.splitPages=\u0395\u03B9\u03C3\u03B1\u03B3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 \u03B3\u03B9\u03B1 \u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03CC:
split.submit=\u0394\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7
#merge
imageToPDF.title=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C3\u03B5 PDF
imageToPDF.header=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C3\u03B5 PDF
imageToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
imageToPDF.selectLabel=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
imageToPDF.fillPage=\u0393\u03AD\u03BC\u03B9\u03C3\u03BC\u03B1 \u03A3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2
imageToPDF.fitDocumentToImage=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03C3\u03B5 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1
imageToPDF.maintainAspectRatio=\u0394\u03B9\u03B1\u03C4\u03AE\u03C1\u03B7\u03C3\u03B7 \u03B1\u03BD\u03B1\u03BB\u03BF\u03B3\u03B9\u03CE\u03BD \u03B4\u03B9\u03B1\u03C3\u03C4\u03AC\u03C3\u03B5\u03C9\u03BD
imageToPDF.selectText.2=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03C0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE PDF
imageToPDF.selectText.3=\u039B\u03BF\u03B3\u03B9\u03BA\u03AE \u03C0\u03BF\u03BB\u03BB\u03CE\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD (\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03B5\u03AC\u03BD \u03B5\u03C1\u03B3\u03AC\u03B6\u03B5\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C0\u03BF\u03BB\u03BB\u03AD\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2)
imageToPDF.selectText.4=\u03A3\u03C5\u03B3\u03C7\u03CE\u03BD\u03B5\u03C5\u03C3\u03B7 \u03C3\u03B5 \u03AD\u03BD\u03B1 PDF
imageToPDF.selectText.5=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03BE\u03B5\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03AC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 PDF
#pdfToImage
pdfToImage.title=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
pdfToImage.header=PDF \u03C3\u03B5 \u0395\u03B9\u03BA\u03CC\u03BD\u03B1
pdfToImage.selectText=\u039C\u03BF\u03C1\u03C6\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2
pdfToImage.singleOrMultiple=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B1\u03C0\u03CC \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 \u03C3\u03B5 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1
pdfToImage.single=\u0395\u03BD\u03B9\u03B1\u03AF\u03B1 \u03BC\u03B5\u03B3\u03AC\u03BB\u03B7 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C0\u03BF\u03C5 \u03C3\u03C5\u03BD\u03B4\u03C5\u03AC\u03B6\u03B5\u03B9 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2
pdfToImage.multi=\u03A0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AD\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2, \u03BC\u03AF\u03B1 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1 \u03B1\u03BD\u03AC \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1
pdfToImage.colorType=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03A7\u03C1\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
pdfToImage.color=\u03A7\u03C1\u03CE\u03BC\u03B1
pdfToImage.grey=\u039A\u03BB\u03AF\u03BC\u03B1\u03BA\u03B1 \u03C4\u03BF\u03C5 \u03B3\u03BA\u03C1\u03B9
pdfToImage.blackwhite=\u0391\u03C3\u03C0\u03C1\u03CC\u03BC\u03B1\u03C5\u03C1\u03BF (\u039C\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03C7\u03B1\u03B8\u03BF\u03CD\u03BD \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1!)
pdfToImage.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#addPassword
addPassword.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD
addPassword.header=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD (\u039A\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7)
addPassword.selectText.1=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 PDF \u03B3\u03B9\u03B1 \u03BA\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7
addPassword.selectText.2=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03A7\u03C1\u03AE\u03C3\u03C4\u03B7
addPassword.selectText.3=\u039C\u03AE\u03BA\u03BF\u03C2 \u039A\u03BB\u03B5\u03B9\u03B4\u03B9\u03BF\u03CD \u039A\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7\u03C2
addPassword.selectText.4=\u039F\u03B9 \u03C5\u03C8\u03B7\u03BB\u03CC\u03C4\u03B5\u03C1\u03B5\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B9\u03C3\u03C7\u03C5\u03C1\u03CC\u03C4\u03B5\u03C1\u03B5\u03C2, \u03B1\u03BB\u03BB\u03AC \u03BF\u03B9 \u03C7\u03B1\u03BC\u03B7\u03BB\u03CC\u03C4\u03B5\u03C1\u03B5\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2 \u03AD\u03C7\u03BF\u03C5\u03BD \u03BA\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1.
addPassword.selectText.5=\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 \u03C1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7 (\u03A3\u03C5\u03BD\u03B9\u03C3\u03C4\u03AC\u03C4\u03B1\u03B9 \u03BD\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03B1\u03B6\u03AF \u03BC\u03B5 \u03C4\u03BF\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5 (Owner password)
addPassword.selectText.6=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03C5\u03BD\u03B1\u03C1\u03BC\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7\u03C2 \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5
addPassword.selectText.7=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5
addPassword.selectText.8=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1
addPassword.selectText.9=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03C5\u03BC\u03C0\u03BB\u03AE\u03C1\u03C9\u03C3\u03B7\u03C2 \u03C6\u03CC\u03C1\u03BC\u03B1\u03C2
addPassword.selectText.10=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2
addPassword.selectText.11=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 annotation
addPassword.selectText.12=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7\u03C2
addPassword.selectText.13=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7\u03C2 \u03C3\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03BF\u03CD\u03C2 \u03C4\u03CD\u03C0\u03BF\u03C5\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
addPassword.selectText.14=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03BA\u03B1\u03C4\u03CC\u03C7\u03BF\u03C5
addPassword.selectText.15=\u03A0\u03B5\u03C1\u03B9\u03BF\u03C1\u03AF\u03B6\u03B5\u03B9 \u03CC,\u03C4\u03B9 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF \u03BC\u03B5\u03C4\u03AC \u03C4\u03BF \u03AC\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 (\u0394\u03B5\u03BD \u03C5\u03C0\u03BF\u03C3\u03C4\u03B7\u03C1\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C3\u03C4\u03B5\u03C2 PDF)
addPassword.selectText.16=\u03A0\u03B5\u03C1\u03B9\u03BF\u03C1\u03AF\u03B6\u03B5\u03B9 \u03C4\u03BF \u03AC\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03AF\u03B4\u03B9\u03BF\u03C5 \u03C4\u03BF\u03C5 \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5
addPassword.submit=\u039A\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7
#watermark
watermark.title=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
watermark.header=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
watermark.selectText.1=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 PDF \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C4\u03BF\u03C5 \u03C5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2:
watermark.selectText.2=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2:
watermark.selectText.3=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u039A\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5:
watermark.selectText.4=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE (0-360):
watermark.selectText.5=widthSpacer (\u039A\u03B5\u03BD\u03CC \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03BA\u03AC\u03B8\u03B5 \u03C5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03BF\u03C1\u03B9\u03B6\u03CC\u03BD\u03C4\u03B9\u03B1):
watermark.selectText.6=heightSpacer (\u039A\u03B5\u03BD\u03CC \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03BA\u03AC\u03B8\u03B5 \u03C5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03BA\u03AC\u03B8\u03B5\u03C4\u03B1):
watermark.selectText.7=\u0391\u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1 (Opacity) (0% - 100%):
watermark.selectText.8=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2:
watermark.selectText.9=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2:
watermark.submit=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03A5\u03B4\u03B1\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
#Change permissions
permissions.title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0394\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD
permissions.header=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u0394\u03B9\u03BA\u03B1\u03B9\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD
permissions.warning=\u03A0\u03C1\u03BF\u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03CC\u03C4\u03B9 \u03B1\u03C5\u03C4\u03AC \u03C4\u03B1 \u03B4\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1 \u03B4\u03B5\u03BD \u03B1\u03BB\u03BB\u03AC\u03B6\u03BF\u03C5\u03BD, \u03C3\u03C5\u03BD\u03B9\u03C3\u03C4\u03AC\u03C4\u03B1\u03B9 \u03BD\u03B1 \u03C4\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5 \u03BC\u03B5 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03BC\u03AD\u03C3\u03C9 \u03C4\u03B7\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2
permissions.selectText.1=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 PDF \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03C4\u03B5 \u03C4\u03B1 \u03B4\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1
permissions.selectText.2=\u0394\u03B9\u03BA\u03B1\u03B9\u03CE\u03BC\u03B1\u03C4\u03B1 \u03B3\u03B9\u03B1 \u03C1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7
permissions.selectText.3=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03C5\u03BD\u03B1\u03C1\u03BC\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7\u03C2 \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5
permissions.selectText.4=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5
permissions.selectText.5=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1
permissions.selectText.6=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03C5\u03BC\u03C0\u03BB\u03AE\u03C1\u03C9\u03C3\u03B7\u03C2 \u03C6\u03CC\u03C1\u03BC\u03B1\u03C2
permissions.selectText.7=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2
permissions.selectText.8=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 annotation
permissions.selectText.9=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7\u03C2
permissions.selectText.10=\u0391\u03C0\u03BF\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03BA\u03C4\u03CD\u03C0\u03C9\u03C3\u03B7\u03C2 \u03C3\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03BF\u03CD\u03C2 \u03C4\u03CD\u03C0\u03BF\u03C5\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
permissions.submit=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE
#remove password
removePassword.title=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD
removePassword.header=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD (\u0391\u03C0\u03BF\u03BA\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7)
removePassword.selectText.1=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 PDF \u03B3\u03B9\u03B1 \u03B1\u03C0\u03BF\u03BA\u03C1\u03C5\u03C0\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7
removePassword.selectText.2=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2
removePassword.submit=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7
#changeMetadata
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
changeMetadata.selectText.3=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD:
changeMetadata.author=\u03A3\u03C5\u03BD\u03C4\u03AC\u03BA\u03C4\u03B7\u03C2:
changeMetadata.creationDate=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1\u03C2 (yyyy/MM/dd HH:mm:ss):
changeMetadata.creator=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03CC\u03C2:
changeMetadata.keywords=\u039B\u03AD\u03BE\u03B5\u03B9\u03C2-\u03BA\u03BB\u03B5\u03B9\u03B4\u03B9\u03AC:
changeMetadata.modDate=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03A4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 (yyyy/MM/dd HH:mm:ss):
changeMetadata.producer=\u03A0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03CC\u03C2:
changeMetadata.subject=\u0398\u03AD\u03BC\u03B1:
changeMetadata.title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2:
changeMetadata.trapped=Trapped:
changeMetadata.selectText.4=\u0386\u03BB\u03BB\u03B1 \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1:
changeMetadata.selectText.5=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5\u03C4\u03B1\u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
changeMetadata.submit=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE
#pdfToPDFA
pdfToPDFA.title=PDF \u03C3\u03B5 PDF/A
pdfToPDFA.header=PDF \u03C3\u03B5 PDF/A
pdfToPDFA.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 OCRmyPDF \u03B3\u03B9\u03B1 PDF/A \u03BC\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
pdfToPDFA.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#PDFToWord
PDFToWord.title=PDF \u03C3\u03B5 Word
PDFToWord.header=PDF \u03C3\u03B5 Word
PDFToWord.selectText.1=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u0395\u03BE\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03BF\u03C5
PDFToWord.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.
PDFToWord.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#PDFToPresentation
PDFToPresentation.title=PDF \u03C3\u03B5 Powerpoint
PDFToPresentation.header=PDF \u03C3\u03B5 Powerpoint
PDFToPresentation.selectText.1=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u0395\u03BE\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03BF\u03C5
PDFToPresentation.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.
PDFToPresentation.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#PDFToText
PDFToText.title=PDF \u03C3\u03B5 RTF (\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF)
PDFToText.header=PDF \u03C3\u03B5 RTF (\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF)
PDFToText.selectText.1=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0391\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u0395\u03BE\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03BF\u03C5
PDFToText.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.
PDFToText.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#PDFToHTML
PDFToHTML.title=PDF \u03C3\u03B5 HTML
PDFToHTML.header=PDF \u03C3\u03B5 HTML
PDFToHTML.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.
PDFToHTML.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
#PDFToXML
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
#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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Your locally hosted one-stop-shop for all your PDF needs. 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.title=PDF Multi Tool
home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages 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 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=Redact,Hide,black out,black,marker,hidden 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Rearrange Pages
multiTool.title=PDF Multi Tool multiTool.title=PDF Multi Tool
multiTool.header=PDF Multi Tool multiTool.header=PDF Multi Tool
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Page Remover pageRemover.title=Page Remover
@@ -813,4 +840,46 @@ PDFToHTML.submit=Convert
PDFToXML.title=PDF to XML PDFToXML.title=PDF to XML
PDFToXML.header=PDF to XML PDFToXML.header=PDF to XML
PDFToXML.credit=This service uses LibreOffice for file conversion. 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Your locally hosted one-stop-shop for all your PDF needs. 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.title=PDF Multi Tool
home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages 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 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Rearrange Pages
multiTool.title=PDF Multi Tool multiTool.title=PDF Multi Tool
multiTool.header=PDF Multi Tool multiTool.header=PDF Multi Tool
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Page Remover pageRemover.title=Page Remover
@@ -665,9 +692,6 @@ split.submit=Split
imageToPDF.title=Image to PDF imageToPDF.title=Image to PDF
imageToPDF.header=Image to PDF imageToPDF.header=Image to PDF
imageToPDF.submit=Convert imageToPDF.submit=Convert
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF to XML
PDFToXML.header=PDF to XML PDFToXML.header=PDF to XML
PDFToXML.credit=This service uses LibreOffice for file conversion. 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

View File

@@ -26,7 +26,7 @@ text=Texto
font=Fuente font=Fuente
selectFillter=-- Seleccionar -- selectFillter=-- Seleccionar --
pageNum=Número de página pageNum=Número de página
sizes.small=Paqueño sizes.small=Pequeño
sizes.medium=Mediano sizes.medium=Mediano
sizes.large=Grande sizes.large=Grande
sizes.x-large=Extra grande sizes.x-large=Extra grande
@@ -44,7 +44,7 @@ blue=Azul
custom=Personalizado... custom=Personalizado...
changedCredsMessage=Se cambiaron las credenciales! changedCredsMessage=Se cambiaron las credenciales!
notAuthenticatedMessage=Usuario njo autentificado. notAuthenticatedMessage=Usuario no autentificado.
userNotFoundMessage=Usuario no encontrado. userNotFoundMessage=Usuario no encontrado.
incorrectPasswordMessage=La contraseña actual no es correcta. incorrectPasswordMessage=La contraseña actual no es correcta.
usernameExistsMessage=El nuevo nombre de usuario está en uso. 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.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.1=Abrir en la misma ventana
settings.downloadOption.2=Abrir en una nueva ventana settings.downloadOption.2=Abrir en una nueva ventana
settings.downloadOption.3=Descargar el fichero settings.downloadOption.3=Descargar el archivo
settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descargados settings.zipThreshold=Archivos ZIP cuando excede el número de archivos descargados
settings.signOut=Desconectar settings.signOut=Desconectar
settings.accountSettings=Configuración de la cuenta settings.accountSettings=Configuración de la cuenta
@@ -125,9 +125,14 @@ adminUserSettings.submit=Guardar Usuario
############# #############
# HOME-PAGE # # 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.title=Multi-herramienta PDF
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas 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 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.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 addImage.tags=img,jpg,imagen,fotografía
home.watermark.title=Añadir marca de agua home.watermark.title=Añadir marca de agua
home.watermark.desc=Añadir una marca de agua predefinida al documento PDF 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.title=Cambiar permisos
home.permissions.desc=Cambiar los permisos del documento PDF 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 removePassword.tags=seguro,Desencriptar,seguridad,quitar contraseña,eliminar contraseña
home.compressPdfs.title=Comprimir 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 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 home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF
changeMetadata.tags==Título,autor,fecha,creación,hora,editorial,productor,estadísticas 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) 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 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 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 add-page-numbers.tags=paginar,etiquetar,organizar,indexar
home.auto-rename.title=Auto renombrar archivo PDF home.auto-rename.title=Renombrar archivo PDF automáticamente
home.auto-rename.desc=Auto renombrar un archivo PDF según el encabezamiento detectado 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 auto-rename.tags=auto-detectar,basado en el encabezamiento,organizar,re-etiquetar
home.adjust-contrast.title=Ajustar Color/Contraste 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.title=URL/Página web a PDF
home.URLToPDF.desc=Convierte cualquier dirección http(s) 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.title=HTML a PDF
home.HTMLToPDF.desc=Convierte cualquier archivo HTML o ZIP 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.title=Obtener toda la información en PDF
home.getPdfInfo.desc=Obtiene toda la información posible de archivos PDF home.getPdfInfo.desc=Obtiene toda la información posible de archivos PDF
getPdfInfo.tags=información,datos,stats,estadísticas getPdfInfo.tags=información,datos,estadísticas,estadísticas
home.extractPage.title=Extraer página(s) 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 home.autoRedact.desc=Redactar automáticamente (ocultar) texto en un PDF según el texto introducido
showJS.tags=JS 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 # # WEB PAGES #
@@ -354,7 +377,7 @@ autoRedact.textsToRedactPlaceholder=por ej. \nConfidencial \nAlto-Secreto
autoRedact.useRegexLabel=Usar Regex autoRedact.useRegexLabel=Usar Regex
autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa autoRedact.wholeWordSearchLabel=Búsqueda por palabra completa
autoRedact.customPaddingLabel=Extra Padding personalizado autoRedact.customPaddingLabel=Extra Padding personalizado
autoRedact.convertPDFToImageLabel=Convertir PDF a imagen-PDF (Utilizado para quitar el texto detrás del cajetín) autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para quitar el texto detrás del cajetín)
autoRedact.submitButton=Enviar autoRedact.submitButton=Enviar
@@ -403,7 +426,7 @@ URLToPDF.credit=Utiliza WeasyPrint
#html-to-pdf #html-to-pdf
HTMLToPDF.title=HTML a PDF HTMLToPDF.title=HTML a PDF
HTMLToPDF.header=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.submit=Convertir
HTMLToPDF.credit=Utiliza WeasyPrint HTMLToPDF.credit=Utiliza WeasyPrint
@@ -430,14 +453,14 @@ addPageNumbers.selectText.5=Páginas a numerar
addPageNumbers.selectText.6=Texto personalizado addPageNumbers.selectText.6=Texto personalizado
addPageNumbers.customTextDesc=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.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 addPageNumbers.submit=Añadir Números de Página
#auto-rename #auto-rename
auto-rename.title=Auto Renombrar auto-rename.title=Renombrar automáticamente
auto-rename.header=Auto Renombrar PDF auto-rename.header=Renombrar PDF automáticamente
auto-rename.submit=Auto Renombrar auto-rename.submit=Renombrar automáticamente
#adjustContrast #adjustContrast
@@ -456,8 +479,8 @@ crop.submit=Entregar
#autoSplitPDF #autoSplitPDF
autoSplitPDF.title=Auto Dividir PDF autoSplitPDF.title=Dividir PDF automáticamente
autoSplitPDF.header=Auto Dividir PDF 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.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.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. 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.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.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras) autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
autoSplitPDF.dividerDownload1=Descargar 'Auto Splitter Divider (mínima).pdf' autoSplitPDF.dividerDownload1=Descargar 'Divisor automático (mínima).pdf'
autoSplitPDF.dividerDownload2=Descargar 'Auto Splitter Divider (con instrucciones).pdf' autoSplitPDF.dividerDownload2=Descargar 'Divisor automático (con instrucciones).pdf'
autoSplitPDF.submit=Entregar autoSplitPDF.submit=Entregar
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Diseño de varias páginas pageLayout.title=Diseño de varias páginas
pageLayout.header=Diseño de varias páginas pageLayout.header=Diseño de varias páginas
pageLayout.pagesPerSheet=Páginas por hoja: pageLayout.pagesPerSheet=Páginas por hoja:
pageLayout.addBorder=Añadir bordes
pageLayout.submit=Entregar pageLayout.submit=Entregar
@@ -490,7 +514,7 @@ scalePages.submit=Entregar
#certSign #certSign
certSign.title=Firma de certificado certSign.title=Firma con certificado
certSign.header=Firmar un PDF con su certificado (en desarrollo) certSign.header=Firmar un PDF con su certificado (en desarrollo)
certSign.selectPDF=Seleccione un archivo PDF para firmar: 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): certSign.selectKey=Seleccione su archivo de clave privada (formato PKCS#8, podría ser .pem o .der):
@@ -552,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.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.5=Área mínima:
ScannerImageSplit.selectText.6=Establecer el umbral mínimo de área para una foto (predeterminado: 10000). 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.8=Establecer el umbral mínimo del área de contorno para una foto
ScannerImageSplit.selectText.9=Tamaño del borde: 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). ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1).
@@ -588,8 +612,8 @@ extractImages.submit=Extraer
#File to PDF #File to PDF
fileToPDF.title=Archivo a PDF fileToPDF.title=Archivo a PDF
fileToPDF.header=Convertir cualquier 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.credit=Este servicio usa LibreOffice y Unoconv para la conversión de archivos
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.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 fileToPDF.submit=Convertir a PDF
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Organizar páginas
multiTool.title=Multi-herramienta PDF multiTool.title=Multi-herramienta PDF
multiTool.header=Multi-herramienta PDF multiTool.header=Multi-herramienta PDF
#view pdf
viewPdf.title=Ver PDF
viewPdf.header=Ver PDF
#pageRemover #pageRemover
pageRemover.title=Eliminador de páginas pageRemover.title=Eliminador de páginas
@@ -665,13 +692,10 @@ split.submit=Dividir
imageToPDF.title=Imagen a PDF imageToPDF.title=Imagen a PDF
imageToPDF.header=Imagen a PDF imageToPDF.header=Imagen a PDF
imageToPDF.submit=Convertir imageToPDF.submit=Convertir
########################## imageToPDF.selectLabel=Opciones de ajuste de imagen
### TODO: Translate ### imageToPDF.fillPage=Ocupar toda la página
########################## imageToPDF.fitDocumentToImage=Ajustar página a imagen
imageToPDF.selectLabel=Image Fit Options imageToPDF.maintainAspectRatio=Mantener relación de aspecto
imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
imageToPDF.selectText.2=Rotación automática del PDF 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.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes)
imageToPDF.selectText.4=Unir en un único archivo PDF imageToPDF.selectText.4=Unir en un único archivo PDF
@@ -709,8 +733,8 @@ addPassword.selectText.11=Impedir modificación de anotaciones
addPassword.selectText.12=Impedir imprimir addPassword.selectText.12=Impedir imprimir
addPassword.selectText.13=Impedir imprimir diferentes formatos addPassword.selectText.13=Impedir imprimir diferentes formatos
addPassword.selectText.14=Contraseña 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.15=Restringir 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.16=Restringir la apertura del propio documento
addPassword.submit=Encriptar addPassword.submit=Encriptar
@@ -817,3 +841,45 @@ PDFToXML.title=PDF a XML
PDFToXML.header=PDF a XML PDFToXML.header=PDF a XML
PDFToXML.credit=Este servicio utiliza LibreOffice para la conversión de archivos PDFToXML.credit=Este servicio utiliza LibreOffice para la conversión de archivos
PDFToXML.submit=Convertir 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Gorde Erabiltzailea
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Zure leihatila bakarra autoostatatua zure PDF behar guztietarako 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.title=Erabilera anitzeko tresna PDF
home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side 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 home.autoRedact.desc=Auto Idatzi testua pdf fitxategian sarrerako testuan oinarritua
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Hodia
pageLayout.title=Hainbat orrialderen diseinua pageLayout.title=Hainbat orrialderen diseinua
pageLayout.header=Hainbat orrialderen diseinua pageLayout.header=Hainbat orrialderen diseinua
pageLayout.pagesPerSheet=Orrialdeak orriko: pageLayout.pagesPerSheet=Orrialdeak orriko:
pageLayout.addBorder=Add Borders
pageLayout.submit=Entregatu pageLayout.submit=Entregatu
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Antolatu orrialdeak
multiTool.title=PDF erabilera anitzeko tresna multiTool.title=PDF erabilera anitzeko tresna
multiTool.header=PDF erabilera anitzeko tresna multiTool.header=PDF erabilera anitzeko tresna
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Orrialdeen ezabatzailea pageRemover.title=Orrialdeen ezabatzailea
@@ -665,9 +692,6 @@ split.submit=Zatitu
imageToPDF.title=Irudia PDF bihurtu imageToPDF.title=Irudia PDF bihurtu
imageToPDF.header=Irudia PDF bihurtu imageToPDF.header=Irudia PDF bihurtu
imageToPDF.submit=Bihurtu imageToPDF.submit=Bihurtu
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDFa XML bihurtu
PDFToXML.header=PDFa XML bihurtu PDFToXML.header=PDFa XML bihurtu
PDFToXML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko PDFToXML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko
PDFToXML.submit=Bihurtu 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

View File

@@ -43,11 +43,11 @@ green=Vert
blue=Bleu blue=Bleu
custom=Personnalisé\u2026 custom=Personnalisé\u2026
changedCredsMessage=Credentials changed! changedCredsMessage=Les identifiants ont été mis à jour\u00a0!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=Utilisateur non authentifié.
userNotFoundMessage=User not found. userNotFoundMessage=Utilisateur non trouvé.
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=Le mot de passe actuel est incorrect.
usernameExistsMessage=New Username already exists. usernameExistsMessage=Le nouveau nom d\u2019utilisateur existe déjà.
@@ -77,14 +77,14 @@ settings.accountSettings=Paramètres du compte
changeCreds.title=Change Credentials changeCreds.title=Modifiez vos identifiants
changeCreds.header=Update Your Account Details changeCreds.header=Mettez à jour vos identifiants de connexion
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=Vous utilisez les identifiants de connexion par défaut. Veuillez entrer un nouveau mot de passe (et nom d\u2019utilisateur si vous le souhaitez)
changeCreds.newUsername=New Username changeCreds.newUsername=Nouveau nom d\u2019utilisateur
changeCreds.oldPassword=Current Password changeCreds.oldPassword=Mot de passe actuel
changeCreds.newPassword=New Password changeCreds.newPassword=Nouveau mot de passe
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=Confirmer le nouveau mot de passe
changeCreds.submit=Submit Changes changeCreds.submit=Soumettre les modifications
@@ -119,15 +119,20 @@ adminUserSettings.role=Rôle
adminUserSettings.actions=Actions adminUserSettings.actions=Actions
adminUserSettings.apiUser=Utilisateur API limité adminUserSettings.apiUser=Utilisateur API limité
adminUserSettings.webOnlyUser=Utilisateur Web uniquement adminUserSettings.webOnlyUser=Utilisateur Web uniquement
adminUserSettings.forceChange=Force user to change username/password on login adminUserSettings.forceChange=Forcer l\u2019utilisateur à changer son nom d\u2019utilisateur/mot de passe lors de la connexion
adminUserSettings.submit=Ajouter adminUserSettings.submit=Ajouter
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Votre application Web hébergée localement pour répondre à tous vos besoins PDF. 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.title=Outil multifonction PDF
home.multiTool.desc=Fusionnez, faites pivoter, réorganisez et supprimez des pages. 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 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. home.autoRedact.desc=Caviardez automatiquement les informations sensibles d\u2019un PDF.
showJS.tags=caviarder,redact,auto 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 # # WEB PAGES #
@@ -430,7 +453,7 @@ addPageNumbers.selectText.5=Pages à numéroter
addPageNumbers.selectText.6=Texte personnalisé addPageNumbers.selectText.6=Texte personnalisé
addPageNumbers.customTextDesc=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.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 addPageNumbers.submit=Ajouter les numéros de page
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Fusionner des pages pageLayout.title=Fusionner des pages
pageLayout.header=Fusionner des pages pageLayout.header=Fusionner des pages
pageLayout.pagesPerSheet=Pages par feuille pageLayout.pagesPerSheet=Pages par feuille
pageLayout.addBorder=Ajouter des bordures
pageLayout.submit=Fusionner pageLayout.submit=Fusionner
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Organiser
multiTool.title=Outil multifonction PDF multiTool.title=Outil multifonction PDF
multiTool.header=Outil multifonction PDF multiTool.header=Outil multifonction PDF
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Supprimer des pages pageRemover.title=Supprimer des pages
@@ -665,13 +692,10 @@ split.submit=Diviser
imageToPDF.title=Image en PDF imageToPDF.title=Image en PDF
imageToPDF.header=Image en PDF imageToPDF.header=Image en PDF
imageToPDF.submit=Convertir imageToPDF.submit=Convertir
########################## imageToPDF.selectLabel=Options d\u2019ajustement de l\u2019image
### TODO: Translate ### imageToPDF.fillPage=Remplir la page
########################## imageToPDF.fitDocumentToImage=Ajuster la page à l\u2019image
imageToPDF.selectLabel=Image Fit Options imageToPDF.maintainAspectRatio=Maintenir les proportions
imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
imageToPDF.selectText.2=Rotation automatique du PDF imageToPDF.selectText.2=Rotation automatique du PDF
imageToPDF.selectText.3=Logique multi-fichiers (uniquement activée si vous travaillez avec plusieurs images) 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.4=Fusionner en un seul PDF
@@ -817,3 +841,45 @@ PDFToXML.title=PDF en XML
PDFToXML.header=PDF en XML PDFToXML.header=PDF en XML
PDFToXML.credit=Ce service utilise LibreOffice pour la conversion de fichiers. PDFToXML.credit=Ce service utilise LibreOffice pour la conversion de fichiers.
PDFToXML.submit=Convertir 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

View File

@@ -43,11 +43,11 @@ green=Verde
blue=Blu blue=Blu
custom=Personalizzato custom=Personalizzato
changedCredsMessage=Credentials changed! changedCredsMessage=Credenziali cambiate!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=Utente non autenticato.
userNotFoundMessage=User not found. userNotFoundMessage=Utente non trovato.
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=La password attuale non è corretta.
usernameExistsMessage=New Username already exists. usernameExistsMessage=Il nuovo nome utente esiste già.
@@ -77,14 +77,14 @@ settings.accountSettings=Impostazioni Account
changeCreds.title=Change Credentials changeCreds.title=Cambia credenziali
changeCreds.header=Update Your Account Details changeCreds.header=Aggiorna i dettagli del tuo account
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=Stai utilizzando le credenziali di accesso predefinite. Inserisci una nuova password (e un nome utente se lo desideri)
changeCreds.newUsername=New Username changeCreds.newUsername=Nuovo nome utente
changeCreds.oldPassword=Current Password changeCreds.oldPassword=Password attuale
changeCreds.newPassword=New Password changeCreds.newPassword=Nuova Password
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=Conferma Nuova Password
changeCreds.submit=Submit Changes changeCreds.submit=Invia modifiche
@@ -119,18 +119,23 @@ adminUserSettings.role=Ruolo
adminUserSettings.actions=Azioni adminUserSettings.actions=Azioni
adminUserSettings.apiUser=Utente API limitato adminUserSettings.apiUser=Utente API limitato
adminUserSettings.webOnlyUser=Utente solo Web 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 adminUserSettings.submit=Salva utente
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=La tua pagina self-hostata per gestire qualsiasi PDF. 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.title=Multifunzione PDF
home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine 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.title=Unisci
home.merge.desc=Unisci facilmente più PDF in uno. 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.title=Dividi
home.split.desc=Dividi un singolo PDF in più documenti. 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.title=Ruota
home.rotate.desc=Ruota un PDF. home.rotate.desc=Ruota un PDF.
@@ -155,7 +160,7 @@ pdfToImage.tags=conversione,img,jpg,immagine,foto
home.pdfOrganiser.title=Organizza home.pdfOrganiser.title=Organizza
home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine. 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 home.addImage.title=Aggiungi Immagine
@@ -164,41 +169,41 @@ addImage.tags=img,jpg,picture,photo
home.watermark.title=Aggiungi Filigrana home.watermark.title=Aggiungi Filigrana
home.watermark.desc=Aggiungi una filigrana al tuo PDF. 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.title=Cambia Permessi
home.permissions.desc=Cambia i permessi del tuo PDF. 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.title=Rimuovi
home.removePages.desc=Elimina alcune pagine dal PDF. 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.title=Aggiungi Password
home.addPassword.desc=Crittografa il tuo PDF con una 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.title=Rimuovi Password
home.removePassword.desc=Rimuovi la password dal tuo PDF. 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.title=Comprimi
home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni. 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.title=Modifica Proprietà
home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento PDF. 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.title=Converti file in PDF
home.fileToPDF.desc=Converti quasi ogni file in PDF (DOCX, PNG, XLS, PPT, TXT e altro) 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.title=OCR / Pulisci scansioni
home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro. 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 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.title=Converti in PDF/A
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine. 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.title=Da PDF a Word
home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT) 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.title=Da PDF a presentazioni
home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP) 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.title=Da PDF a testo/RTF
home.PDFToText.desc=Converti un PDF in testo o 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.title=Da PDF ad HTML
home.PDFToHTML.desc=Converti un PDF in 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.title=Da PDF a XML
home.PDFToXML.desc=Converti un PDF in 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.title=Trova/Dividi foto scansionate
home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF. 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.title=Firma
home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine. 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.title=Appiattisci
home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF. 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.title=Ripara
home.repair.desc=Prova a riparare un PDF corrotto. 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.title=Rimuovi pagine vuote
home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF. 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.title=Compara
home.compare.desc=Vedi e compara le differenze tra due PDF. 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.title=Firma con certificato
home.certSign.desc=Firma un PDF con un certificato/chiave (PEM/P12) 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.title=Layout multipagina
home.pageLayout.desc=Unisci più pagine di un documento PDF in un'unica pagina 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.title=Regola le dimensioni/scala della pagina
home.scalePages.desc=Modificare le dimensioni/scala della pagina e/o dei suoi contenuti. 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.title=Pipeline (avanzato)
home.pipeline.desc=Esegui più azioni sui PDF definendo script di pipeline 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.title=Aggiungi numeri di pagina
home.add-page-numbers.desc=Aggiungi numeri di pagina in tutto un documento in una posizione prestabilita 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.title=Rinomina automaticamente il file PDF
home.auto-rename.desc=Rinomina automaticamente un file PDF in base all'intestazione rilevata 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.title=Regola colori/contrasto
home.adjust-contrast.desc=Regola contrasto, saturazione e luminosità di un PDF 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.title=Ritaglia PDF
home.crop.desc=Ritaglia un PDF per ridurne le dimensioni (mantiene il testo!) 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.title=Pagine divise automaticamente
home.autoSplitPDF.desc=Dividi automaticamente il PDF scansionato con il codice QR dello divisore di pagina fisico scansionato 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.title=Igienizzare
home.sanitizePdf.desc=Rimuovi script e altri elementi dai file PDF 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.title=URL/sito Web in PDF
home.URLToPDF.desc=Converte qualsiasi URL http(s) 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.title=Da HTML a PDF
home.HTMLToPDF.desc=Converte qualsiasi file HTML o zip in 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.title=Markdown in PDF
home.MarkdownToPDF.desc=Converte qualsiasi file Markdown in PDF home.MarkdownToPDF.desc=Converte qualsiasi file Markdown in PDF
MarkdownToPDF.tags=markup,web-content,transformation,convert MarkdownToPDF.tags=markup,contenuto web,trasformazione,conversione
home.getPdfInfo.title=Ottieni TUTTE le informazioni in PDF home.getPdfInfo.title=Ottieni TUTTE le informazioni in PDF
home.getPdfInfo.desc=Raccogli tutte le informazioni possibili sui PDF home.getPdfInfo.desc=Raccogli tutte le informazioni possibili sui PDF
getPdfInfo.tags=infomation,data,stats,statistics getPdfInfo.tags=informazioni,dati,stati,statistiche
home.extractPage.title=Estrai pagina/e home.extractPage.title=Estrai pagina/e
home.extractPage.desc=Estrae le pagine selezionate dal PDF 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.title=PDF in un'unica pagina di grandi dimensioni
home.PdfToSinglePage.desc=Unisce tutte le pagine PDF in un'unica grande pagina 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 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 home.autoRedact.desc=Redige automaticamente (oscura) il testo in un PDF in base al testo immesso
showJS.tags=JS 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 # # WEB PAGES #
@@ -429,8 +452,8 @@ addPageNumbers.selectText.4=Numero di partenza
addPageNumbers.selectText.5=Pagine da numerare addPageNumbers.selectText.5=Pagine da numerare
addPageNumbers.selectText.6=Testo personalizzato addPageNumbers.selectText.6=Testo personalizzato
addPageNumbers.customTextDesc=Testo personalizzato addPageNumbers.customTextDesc=Testo personalizzato
addPageNumbers.numberPagesDesc=Quali pagine numerare, impostazione predefinita "tutte", accetta anche 1-5 o 2,5,9 ecc 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 {totale}', 'Testo-{n}', '{nomefile}-{n} addPageNumbers.customNumberDesc=Il valore predefinito è {n}, accetta anche 'Pagina {n} di {total}', 'Testo-{n}', '{filename}-{n}
addPageNumbers.submit=Aggiungi numeri di pagina addPageNumbers.submit=Aggiungi numeri di pagina
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Layout multipagina pageLayout.title=Layout multipagina
pageLayout.header=Layout multipagina pageLayout.header=Layout multipagina
pageLayout.pagesPerSheet=Pagine per foglio: pageLayout.pagesPerSheet=Pagine per foglio:
pageLayout.addBorder=Aggiungi bordi
pageLayout.submit=Invia pageLayout.submit=Invia
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Riordina pagine
multiTool.title=Multifunzione PDF multiTool.title=Multifunzione PDF
multiTool.header=Multifunzione PDF multiTool.header=Multifunzione PDF
#view pdf
viewPdf.title=Visualizza PDF
viewPdf.header=Visualizza PDF
#pageRemover #pageRemover
pageRemover.title=Rimuovi pagine pageRemover.title=Rimuovi pagine
@@ -665,9 +692,6 @@ split.submit=Dividi
imageToPDF.title=Immagine a PDF imageToPDF.title=Immagine a PDF
imageToPDF.header=Immagine a PDF imageToPDF.header=Immagine a PDF
imageToPDF.submit=Converti imageToPDF.submit=Converti
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=Da PDF a XML
PDFToXML.header=Da PDF a XML PDFToXML.header=Da PDF a XML
PDFToXML.credit=Questo servizio utilizza LibreOffice per la conversione. PDFToXML.credit=Questo servizio utilizza LibreOffice per la conversione.
PDFToXML.submit=Converti 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

View File

@@ -43,11 +43,11 @@ green=緑
blue= blue=
custom=カスタム... custom=カスタム...
changedCredsMessage=Credentials changed! changedCredsMessage=資格情報が変更されました!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=ユーザーが認証されていません。
userNotFoundMessage=User not found. userNotFoundMessage=ユーザーが見つかりません。
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=現在のパスワードが正しくありません。
usernameExistsMessage=New Username already exists. usernameExistsMessage=新しいユーザー名はすでに存在します。
@@ -77,14 +77,14 @@ settings.accountSettings=アカウント設定
changeCreds.title=Change Credentials changeCreds.title=資格情報の変更
changeCreds.header=Update Your Account Details changeCreds.header=アカウントの詳細を更新する
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=デフォルトのログイン認証情報を使用しています。新しいパスワード (必要に応じてユーザー名も) を入力してください
changeCreds.newUsername=New Username changeCreds.newUsername=新しいユーザー名
changeCreds.oldPassword=Current Password changeCreds.oldPassword=現在のパスワード
changeCreds.newPassword=New Password changeCreds.newPassword=新しいパスワード
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=新しいパスワードの確認
changeCreds.submit=Submit Changes changeCreds.submit=変更を送信
@@ -119,15 +119,20 @@ adminUserSettings.role=役割
adminUserSettings.actions=アクション adminUserSettings.actions=アクション
adminUserSettings.apiUser=限定されたAPIユーザー adminUserSettings.apiUser=限定されたAPIユーザー
adminUserSettings.webOnlyUser=ウェブ専用ユーザー adminUserSettings.webOnlyUser=ウェブ専用ユーザー
adminUserSettings.forceChange=Force user to change username/password on login adminUserSettings.forceChange=ログイン時にユーザー名/パスワードを強制的に変更する
adminUserSettings.submit=ユーザーの保存 adminUserSettings.submit=ユーザーの保存
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=PDFのあらゆるニーズに対応するローカルホスティングされた総合窓口です。 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.title=PDFマルチツール
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。 home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move 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内のテキストを自動で塗りつぶし(黒塗り)します。 home.autoRedact.desc=入力したテキストに基づいてPDF内のテキストを自動で塗りつぶし(黒塗り)します。
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=パイプライン
pageLayout.title=マルチページレイアウト pageLayout.title=マルチページレイアウト
pageLayout.header=マルチページレイアウト pageLayout.header=マルチページレイアウト
pageLayout.pagesPerSheet=1枚あたりのページ数: pageLayout.pagesPerSheet=1枚あたりのページ数:
pageLayout.addBorder=Add Borders
pageLayout.submit=送信 pageLayout.submit=送信
@@ -491,7 +515,7 @@ scalePages.submit=送信
#certSign #certSign
certSign.title=証明書による署名 certSign.title=証明書による署名
certSign.header=証明書を使用してPDFに署名します。 (進行中) certSign.header=証明書を使用してPDFに署名します。 (制作中)
certSign.selectPDF=署名するPDFファイルを選択: certSign.selectPDF=署名するPDFファイルを選択:
certSign.selectKey=秘密キーファイルを選択 (PKCS#8形式、.pemまたは.der) : certSign.selectKey=秘密キーファイルを選択 (PKCS#8形式、.pemまたは.der) :
certSign.selectCert=証明書ファイルを選択 (X.509形式、.pemまたは.der) : certSign.selectCert=証明書ファイルを選択 (X.509形式、.pemまたは.der) :
@@ -616,8 +640,8 @@ addImage.submit=画像の追加
#merge #merge
merge.title=結合 merge.title=結合
merge.header=複数のPDFを結合 (2ファイル以上) merge.header=複数のPDFを結合 (2ファイル以上)
merge.sortByName=Sort by name merge.sortByName=名前で並べ替え
merge.sortByDate=Sort by date merge.sortByDate=日付で並べ替え
merge.submit=結合 merge.submit=結合
@@ -631,6 +655,9 @@ pdfOrganiser.submit=ページの整理
multiTool.title=PDFマルチツール multiTool.title=PDFマルチツール
multiTool.header=PDFマルチツール multiTool.header=PDFマルチツール
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=ページ削除 pageRemover.title=ページ削除
@@ -665,13 +692,10 @@ split.submit=分割
imageToPDF.title=画像をPDFに変換 imageToPDF.title=画像をPDFに変換
imageToPDF.header=画像をPDFに変換 imageToPDF.header=画像をPDFに変換
imageToPDF.submit=変換 imageToPDF.submit=変換
########################## imageToPDF.selectLabel=画像フィットオプション
### TODO: Translate ### imageToPDF.fillPage=フルページ
########################## imageToPDF.fitDocumentToImage=ページを画像に合わせる
imageToPDF.selectLabel=Image Fit Options imageToPDF.maintainAspectRatio=アスペクト比を維持する
imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
imageToPDF.selectText.2=PDFの自動回転 imageToPDF.selectText.2=PDFの自動回転
imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります) imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります)
imageToPDF.selectText.4=1つのPDFに結合 imageToPDF.selectText.4=1つのPDFに結合
@@ -817,3 +841,45 @@ PDFToXML.title=PDFをXMLに変換
PDFToXML.header=PDFをXMLに変換 PDFToXML.header=PDFをXMLに変換
PDFToXML.credit=本サービスはファイル変換にLibreOfficeを使用しています。 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

View File

@@ -4,11 +4,11 @@
# 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 language.direction=ltr
pdfPrompt=PDF 선택 pdfPrompt=PDF 파일 선택
multiPdfPrompt=PDF 선택(2개 이상) multiPdfPrompt=여러 PDF 파일 선택
multiPdfDropPrompt=사용할 모든 PDF를 선택(또는 드래그 앤 드롭)하세요 multiPdfDropPrompt=사용할 모든 PDF 문서를 선택(또는 드래그 앤 드롭)합니다
imgPrompt=이미지 선택 imgPrompt=이미지 선택
genericSubmit=제출 genericSubmit=확인
processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다 processTimeWarning=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다
pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력): pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력):
goToPage=이동 goToPage=이동
@@ -30,11 +30,11 @@ sizes.small=Small
sizes.medium=Medium sizes.medium=Medium
sizes.large=Large sizes.large=Large
sizes.x-large=X-Large sizes.x-large=X-Large
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect error.pdfPassword= PDF는 비밀번호로 보호되어 있으며, 비밀번호를 입력하지 않았거나, 입력된 비밀번호가 올바르지 않습니다.
delete=Delete delete=삭제
username=Username username=사용자명
password=Password password=비밀번호
welcome=Welcome welcome=환영합니다.
property=Property property=Property
black=Black black=Black
white=White white=White
@@ -43,11 +43,11 @@ green=Green
blue=Blue blue=Blue
custom=Custom... custom=Custom...
changedCredsMessage=Credentials changed! changedCredsMessage=계정 정보 변경 성공!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=사용자를 찾을 수 없습니다.
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=현재 비밀번호가 틀립니다.
usernameExistsMessage=New Username already exists. usernameExistsMessage=새 사용자명이 이미 존재합니다.
@@ -58,7 +58,7 @@ navbar.convert=변환
navbar.security=보안 navbar.security=보안
navbar.other=기타 navbar.other=기타
navbar.darkmode=다크 모드 navbar.darkmode=다크 모드
navbar.pageOps=Page Operations navbar.pageOps=페이지 편집
navbar.settings=설정 navbar.settings=설정
############# #############
@@ -72,132 +72,137 @@ settings.downloadOption.1=현재 창에서 열기
settings.downloadOption.2=새 창에서 열기 settings.downloadOption.2=새 창에서 열기
settings.downloadOption.3=다운로드 settings.downloadOption.3=다운로드
settings.zipThreshold=다운로드한 파일 수가 초과된 경우 파일 압축하기 settings.zipThreshold=다운로드한 파일 수가 초과된 경우 파일 압축하기
settings.signOut=Sign Out settings.signOut=로그아웃
settings.accountSettings=Account Settings settings.accountSettings=계정 설정
changeCreds.title=Change Credentials changeCreds.title=계정 정보 변경
changeCreds.header=Update Your Account Details changeCreds.header=계정 정보 업데이트
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=기본 제공된 로그인 정보를 사용하고 있습니다. 새 비밀번호를 입력합니다. (필요하다면 사용자명을 변경할 수 있습니다.)
changeCreds.newUsername=New Username changeCreds.newUsername=새 사용자명
changeCreds.oldPassword=Current Password changeCreds.oldPassword=현재 비밀번호
changeCreds.newPassword=New Password changeCreds.newPassword=새 비밀번호
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=새 비밀번호 확인
changeCreds.submit=Submit Changes changeCreds.submit=변경
account.title=Account Settings account.title=계정 설정
account.accountSettings=Account Settings account.accountSettings=계정 설정
account.adminSettings=Admin Settings - View and Add Users account.adminSettings=관리자 설정 - 사용자 추가 및 확인
account.userControlSettings=User Control Settings account.userControlSettings=User Control Settings
account.changeUsername=Change Username account.changeUsername=사용자명 변경
account.changeUsername=Change Username account.changeUsername=사용자명 변경
account.password=Confirmation Password account.password=Confirmation Password
account.oldPassword=Old password account.oldPassword=이전 비밀번호
account.newPassword=New Password account.newPassword=새 비밀번호
account.changePassword=Change Password account.changePassword=비밀번호 변경
account.confirmNewPassword=Confirm New Password account.confirmNewPassword=새 비밀번호 확인
account.signOut=Sign Out account.signOut=로그아웃
account.yourApiKey=Your API Key account.yourApiKey=API
account.syncTitle=Sync browser settings with Account account.syncTitle=Sync browser settings with Account
account.settingsCompare=Settings Comparison: account.settingsCompare=Settings Comparison:
account.property=Property account.property=Property
account.webBrowserSettings=Web Browser Setting account.webBrowserSettings=Web Browser Setting
account.syncToBrowser=Sync Account -> Browser account.syncToBrowser=계정 -> 브라우저로 동기화
account.syncToAccount=Sync Account <- Browser account.syncToAccount=브라우저 -> 계정으로 동기화
adminUserSettings.title=User Control Settings adminUserSettings.title=사용자 설정
adminUserSettings.header=Admin User Control Settings adminUserSettings.header=사용자 관리
adminUserSettings.admin=Admin adminUserSettings.admin=관리자
adminUserSettings.user=User adminUserSettings.user=사용자
adminUserSettings.addUser=Add New User adminUserSettings.addUser=새 사용자 추가
adminUserSettings.roles=Roles adminUserSettings.roles=역할
adminUserSettings.role=Role adminUserSettings.role=역할
adminUserSettings.actions=Actions adminUserSettings.actions=동작
adminUserSettings.apiUser=Limited API User adminUserSettings.apiUser=제한된 API 사용
adminUserSettings.webOnlyUser=Web Only User adminUserSettings.webOnlyUser=웹 사용만 허용
adminUserSettings.forceChange=Force user to change username/password on login adminUserSettings.forceChange=다음 로그인 때 사용자명과 비밀번호를 변경하도록 강제
adminUserSettings.submit=Save User adminUserSettings.submit=사용자 저장
############# #############
# HOME-PAGE # # 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.title=PDF 멀티 툴
home.multiTool.desc=페이지를 병합, 회전, 재배열, 제거하세요. home.multiTool.desc=PDF 문서의 페이지를 병합, 회전, 재배열, 제거합니다.
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
home.merge.title=병합 home.merge.title=병합
home.merge.desc=여러 개의 PDF 쉽게 하나로 합치세요. home.merge.desc=여러 개의 PDF 문서을 쉽게 하나로 합칩니다.
merge.tags=merge,Page operations,Back end,server side merge.tags=merge,Page operations,Back end,server side
home.split.title=분할 home.split.title=분할
home.split.desc=PDF를 여러 개의 문서로 분할하세요. home.split.desc=하나의 PDF 문서을 여러 개의 PDF 문서로 분할합니다.
split.tags=Page operations,divide,Multi Page,cut,server side split.tags=Page operations,divide,Multi Page,cut,server side
home.rotate.title=회전 home.rotate.title=회전
home.rotate.desc=PDF를 쉽게 회전하세요. home.rotate.desc=PDF 페이지를 회전합니다.
rotate.tags=server side rotate.tags=server side
home.imageToPdf.title=Image to PDF 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 imageToPdf.tags=conversion,img,jpg,picture,photo
home.pdfToImage.title=PDF to Image 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 pdfToImage.tags=conversion,img,jpg,picture,photo
home.pdfOrganiser.title=정렬 home.pdfOrganiser.title=정렬
home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요. home.pdfOrganiser.desc=PDF 문서의 각 페이지를 원하는 순서대로 재배열하거나 제거합니다.
pdfOrganiser.tags=duplex,even,odd,sort,move pdfOrganiser.tags=duplex,even,odd,sort,move
home.addImage.title=사진 추가 home.addImage.title=사진 추가
home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중) home.addImage.desc=PDF 문서의 설정된 위치에 이미지를 추가합니다. (개발 중)
addImage.tags=img,jpg,picture,photo addImage.tags=img,jpg,picture,photo
home.watermark.title=워터마크 추가 home.watermark.title=워터마크 추가
home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요. home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가합니다.
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
home.permissions.title=권한 변경 home.permissions.title=권한 변경
home.permissions.desc=PDF 문서의 권한을 변경하세요. home.permissions.desc=PDF 문서의 권한을 변경합니다.
permissions.tags=read,write,edit,print permissions.tags=read,write,edit,print
home.removePages.title=제거 home.removePages.title=제거
home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요. home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거합니다.
removePages.tags=Remove pages,delete pages removePages.tags=Remove pages,delete pages
home.addPassword.title=비밀번호 추가 home.addPassword.title=호 추가
home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요. home.addPassword.desc=PDF 문서를 비밀번호로 암호화합니다.
addPassword.tags=secure,security addPassword.tags=secure,security
home.removePassword.title=비밀번호 제거 home.removePassword.title=비밀번호 제거
home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요. home.removePassword.desc=PDF 문서에서 비밀번호를 제거합니다.
removePassword.tags=secure,Decrypt,security,unpassword,delete password removePassword.tags=secure,Decrypt,security,unpassword,delete password
home.compressPdfs.title=압축 home.compressPdfs.title=압축
home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요. home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축합니다.
compressPdfs.tags=squish,small,tiny compressPdfs.tags=squish,small,tiny
home.changeMetadata.title=메타데이터 변경 home.changeMetadata.title=메타데이터 변경
home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요. home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가합니다.
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
home.fileToPDF.title=파일을 PDF로 변환 home.fileToPDF.title=파일을 PDF로 변환
home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등) home.fileToPDF.desc=거의 모든 파일을 PDF로 변환합니다(DOCX, PNG, XLS, PPT, TXT 등)
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
home.ocr.title=OCR / 깔끔하게 스캔 home.ocr.title=OCR / 깔끔하게 스캔
home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다. home.ocr.desc=깔끔하게 스캔한 뒤, PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다.
ocr.tags=recognition,text,image,scan,read,identify,detection,editable 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 extractImages.tags=picture,photo,save,archive,zip,capture,grab
home.pdfToPDFA.title=PDF to PDF/A 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 pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
home.PDFToWord.title=PDF to Word 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 PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
home.PDFToPresentation.title=PDF to 프리젠테이션 home.PDFToPresentation.title=PDF to Presentation
home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP) home.PDFToPresentation.desc=PDF 문서를 프리젠테이션 형식으로 변환합니다. (PPT, PPTX, ODP)
PDFToPresentation.tags=slides,show,office,microsoft PDFToPresentation.tags=slides,show,office,microsoft
home.PDFToText.title=PDF to 텍스트/RTF home.PDFToText.title=PDF to 텍스트/RTF
home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요. home.PDFToText.desc=PDF 문서를 텍스트 또는 RTF 형식으로 변환합니다.
PDFToText.tags=richformat,richtextformat,rich text format PDFToText.tags=richformat,richtextformat,rich text format
home.PDFToHTML.title=PDF to HTML home.PDFToHTML.title=PDF to HTML
home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요. home.PDFToHTML.desc=PDF 문서를 HTML 형식으로 변환합니다.
PDFToHTML.tags=web content,browser friendly PDFToHTML.tags=web content,browser friendly
home.PDFToXML.title=PDF to XML 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 PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
home.ScannerImageSplit.title=스캔한 사진 감지/분할 home.ScannerImageSplit.title=스캔한 사진 감지/분할
home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다. home.ScannerImageSplit.desc=스캔된 PDF 문서 내에서 여러 장의 사진을 분할합니다.
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
home.sign.title=서명 home.sign.title=서명
home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다. home.sign.desc=PDF 문서에 그림, 텍스트, 이미지로 서명을 추가합니다.
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
home.flatten.title=합치기 home.flatten.title=평탄화
home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요. home.flatten.desc=PDF 문서에서 모든 상호작용 요소와 양식을 제거합니다.
flatten.tags=static,deactivate,non-interactive,streamline flatten.tags=static,deactivate,non-interactive,streamline
home.repair.title=복구 home.repair.title=복구
home.repair.desc=손상된 PDF의 복구를 시도합니다. home.repair.desc=손상된 PDF 문서의 복구를 시도합니다.
repair.tags=fix,restore,correction,recover repair.tags=fix,restore,correction,recover
home.removeBlanks.title=빈 페이지 제거 home.removeBlanks.title=빈 페이지 제거
home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다. home.removeBlanks.desc=PDF 문서에서 빈 페이지를 감지하고 제거합니다.
removeBlanks.tags=cleanup,streamline,non-content,organize removeBlanks.tags=cleanup,streamline,non-content,organize
home.compare.title=비교 home.compare.title=비교
@@ -255,249 +260,268 @@ home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다.
compare.tags=differentiate,contrast,changes,analysis compare.tags=differentiate,contrast,changes,analysis
home.certSign.title=인증서로 서명 home.certSign.title=인증서로 서명
home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12) home.certSign.desc=PDF 문서에 인증서 또는 키로 서명합니다. (PEM/P12)
certSign.tags=authenticate,PEM,P12,official,encrypt certSign.tags=authenticate,PEM,P12,official,encrypt
home.pageLayout.title=Multi-Page Layout home.pageLayout.title=다중 페이지 레이아웃
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page home.pageLayout.desc=PDF 문서의 여러 페이지를 한 페이지로 합칩니다.
pageLayout.tags=merge,composite,single-view,organize pageLayout.tags=merge,composite,single-view,organize
home.scalePages.title=Adjust page size/scale home.scalePages.title=페이지 크기 및 배율 조정
home.scalePages.desc=Change the size/scale of page and/or its contents. home.scalePages.desc=페이지 및 그 페이지 내용의 크기와 배율을 조정합니다.
scalePages.tags=resize,modify,dimension,adapt scalePages.tags=resize,modify,dimension,adapt
home.pipeline.title=Pipeline (Advanced) home.pipeline.title=파이프라인 (고급 기능)
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts home.pipeline.desc=파이프라인 스크립트를 사용해서 PDF 문서에 여러 동작을 수행합니다.
pipeline.tags=automate,sequence,scripted,batch-process pipeline.tags=automate,sequence,scripted,batch-process
home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.title=페이지 번호 추가
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location home.add-page-numbers.desc=PDF 문서의 페이지마다, 설정한 위치에 페이지 번호를 삽입합니다.
add-page-numbers.tags=paginate,label,organize,index add-page-numbers.tags=paginate,label,organize,index
home.auto-rename.title=Auto Rename PDF File home.auto-rename.title=자동 이름 변경
home.auto-rename.desc=Auto renames a PDF file based on its detected header home.auto-rename.desc=제목을 감지하여 자동으로 PDF 문서의 파일 이름을 변경합니다.
auto-rename.tags=auto-detect,header-based,organize,relabel auto-rename.tags=auto-detect,header-based,organize,relabel
home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.title=색상/대비 조정
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF home.adjust-contrast.desc=PDF 문서의 대비, 채도, 밝기를 조정합니다.
adjust-contrast.tags=color-correction,tune,modify,enhance adjust-contrast.tags=color-correction,tune,modify,enhance
home.crop.title=Crop PDF home.crop.title=PDF 잘라내기
home.crop.desc=Crop a PDF to reduce its size (maintains text!) home.crop.desc=PDF 문서를 잘라내서 크기를 줄입니다. (텍스트가 그대로 유지됩니다!)
crop.tags=trim,shrink,edit,shape crop.tags=trim,shrink,edit,shape
home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.title=자동 문서 나누기
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code home.autoSplitPDF.desc=구분용 QR코드가 들어있는 페이지를 경계로 하여, 스캔된 PDF 문서를 자동으로 나눕니다.
autoSplitPDF.tags=QR-based,separate,scan-segment,organize autoSplitPDF.tags=QR-based,separate,scan-segment,organize
home.sanitizePdf.title=Sanitize home.sanitizePdf.title=정제
home.sanitizePdf.desc=Remove scripts and other elements from PDF files home.sanitizePdf.desc=PDF 문서에서 스크립트와 같은 요소들을 제거합니다.
sanitizePdf.tags=clean,secure,safe,remove-threats sanitizePdf.tags=clean,secure,safe,remove-threats
home.URLToPDF.title=URL/Website To PDF 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 URLToPDF.tags=web-capture,save-page,web-to-doc,archive
home.HTMLToPDF.title=HTML to PDF 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 HTMLToPDF.tags=markup,web-content,transformation,convert
home.MarkdownToPDF.title=Markdown to PDF home.MarkdownToPDF.title=Markdown to PDF
home.MarkdownToPDF.desc=Converts any Markdown file to PDF home.MarkdownToPDF.desc=마크다운 파일을 PDF 문서로 변환합니다.
MarkdownToPDF.tags=markup,web-content,transformation,convert MarkdownToPDF.tags=markup,web-content,transformation,convert
home.getPdfInfo.title=Get ALL Info on PDF home.getPdfInfo.title=PDF 정보 읽기
home.getPdfInfo.desc=Grabs any and all information possible on PDFs home.getPdfInfo.desc=PDF 문서의 가능한 모든 정보를 읽습니다.
getPdfInfo.tags=infomation,data,stats,statistics getPdfInfo.tags=infomation,data,stats,statistics
home.extractPage.title=Extract page(s) home.extractPage.title=페이지 추출
home.extractPage.desc=Extracts select pages from PDF home.extractPage.desc=PDF 문서에서 선택한 페이지를 추출합니다.
extractPage.tags=extract extractPage.tags=extract
home.PdfToSinglePage.title=PDF to Single Large Page home.PdfToSinglePage.title=단일 페이지로 통합
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page home.PdfToSinglePage.desc=PDF 문서의 모든 페이지를 하나의 큰 단일 페이지로 합칩니다.
PdfToSinglePage.tags=single page PdfToSinglePage.tags=single page
home.showJS.title=Show Javascript home.showJS.title=JavaScript 보기
home.showJS.desc=Searches and displays any JS injected into a PDF home.showJS.desc=PDF 문서에 포함되어 있는 JavaScript를 찾아 보여줍니다.
showJS.tags=JS showJS.tags=JS
home.autoRedact.title=Auto Redact home.autoRedact.title=자동 검열
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text home.autoRedact.desc=PDF 문서에서 입력된 텍스트들을 자동으로 검열(모자이크)합니다.
showJS.tags=JS 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 # # WEB PAGES #
# # # #
########################### ###########################
#login #login
login.title=Sign in login.title=로그인
login.signin=Sign in login.signin=로그인
login.rememberme=Remember me login.rememberme=로그인 유지
login.invalid=Invalid username or password. login.invalid=사용자 이름이나 비밀번호가 틀립니다.
login.locked=Your account has been locked. login.locked=계정이 잠겼습니다.
login.signinTitle=Please sign in login.signinTitle=로그인해 주세요.
#auto-redact #auto-redact
autoRedact.title=Auto Redact autoRedact.title=자동 검열
autoRedact.header=Auto Redact autoRedact.header=자동 검열
autoRedact.colorLabel=Colour autoRedact.colorLabel=색상
autoRedact.textsToRedactLabel=Text to Redact (line-separated) autoRedact.textsToRedactLabel=검열할 텍스트 (줄바꿈으로 구분)
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret autoRedact.textsToRedactPlaceholder=예: \n비밀 \n일급 기밀
autoRedact.useRegexLabel=Use Regex autoRedact.useRegexLabel=정규표현식 사용
autoRedact.wholeWordSearchLabel=Whole Word Search autoRedact.wholeWordSearchLabel=전체 단어 일치
autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.customPaddingLabel=추가 윤곽(패딩)
autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) autoRedact.convertPDFToImageLabel=PDF 문서의 내용을 이미지로 변환 (검열 박스 뒤의 텍스트를 제거하는 데 사용됩니다.)
autoRedact.submitButton=Submit autoRedact.submitButton=적용
#showJS #showJS
showJS.title=Show Javascript showJS.title=JavaScript 보기
showJS.header=Show Javascript showJS.header=JavaScript 보기
showJS.downloadJS=Download Javascript showJS.downloadJS=Javascript 다운로드
showJS.submit=Show showJS.submit=제출
#pdfToSinglePage #pdfToSinglePage
pdfToSinglePage.title=PDF To Single Page pdfToSinglePage.title=단일 페이지로 통합
pdfToSinglePage.header=PDF To Single Page pdfToSinglePage.header=단일 페이지로 합치기
pdfToSinglePage.submit=Convert To Single Page pdfToSinglePage.submit=단일 페이지로 통합
#pageExtracter #pageExtracter
pageExtracter.title=Extract Pages pageExtracter.title=페이지 추출
pageExtracter.header=Extract Pages pageExtracter.header=페이지 추출
pageExtracter.submit=Extract pageExtracter.submit=추출
#getPdfInfo #getPdfInfo
getPdfInfo.title=Get Info on PDF getPdfInfo.title=PDF 정보 읽기
getPdfInfo.header=Get Info on PDF getPdfInfo.header=PDF 정보 읽기
getPdfInfo.submit=Get Info getPdfInfo.submit=정보 읽기
getPdfInfo.downloadJson=Download JSON getPdfInfo.downloadJson=JSON으로 다운로드
#markdown-to-pdf #markdown-to-pdf
MarkdownToPDF.title=Markdown To PDF MarkdownToPDF.title=Markdown To PDF
MarkdownToPDF.header=Markdown To PDF MarkdownToPDF.header=Markdown 문서를 PDF 문서로 변환
MarkdownToPDF.submit=Convert MarkdownToPDF.submit=변환
MarkdownToPDF.help=Work in progress MarkdownToPDF.help=변환중
MarkdownToPDF.credit=Uses WeasyPrint MarkdownToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
#url-to-pdf #url-to-pdf
URLToPDF.title=URL To PDF URLToPDF.title=URL To PDF
URLToPDF.header=URL To PDF URLToPDF.header=URL PDF 문서로 변환
URLToPDF.submit=Convert URLToPDF.submit=변환
URLToPDF.credit=Uses WeasyPrint URLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
#html-to-pdf #html-to-pdf
HTMLToPDF.title=HTML To PDF HTMLToPDF.title=HTML To PDF
HTMLToPDF.header=HTML To PDF HTMLToPDF.header=HTML 파일을 PDF 문서로 변환
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다.
HTMLToPDF.submit=Convert HTMLToPDF.submit=변환
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=PDF 정제
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=PDF 문서 정제
sanitizePDF.selectText.1=Remove JavaScript actions sanitizePDF.selectText.1=JavaScript 동작 제거
sanitizePDF.selectText.2=Remove embedded files sanitizePDF.selectText.2=임베딩된 파일 제거
sanitizePDF.selectText.3=Remove metadata sanitizePDF.selectText.3=메타데이터 제거
sanitizePDF.selectText.4=Remove links sanitizePDF.selectText.4=링크 제거
sanitizePDF.selectText.5=Remove fonts sanitizePDF.selectText.5=폰트 제거
sanitizePDF.submit=Sanitize PDF sanitizePDF.submit=정제
#addPageNumbers #addPageNumbers
addPageNumbers.title=Add Page Numbers addPageNumbers.title=페이지 번호 추가
addPageNumbers.header=Add Page Numbers addPageNumbers.header=페이지 번호 추가
addPageNumbers.selectText.1=Select PDF file: addPageNumbers.selectText.1=PDF 파일 선택
addPageNumbers.selectText.2=Margin Size addPageNumbers.selectText.2=여백 크기
addPageNumbers.selectText.3=Position addPageNumbers.selectText.3=위치
addPageNumbers.selectText.4=Starting Number addPageNumbers.selectText.4=시작 번호
addPageNumbers.selectText.5=Pages to Number addPageNumbers.selectText.5=번호를 넣을 페이지
addPageNumbers.selectText.6=Custom Text addPageNumbers.selectText.6=사용자 지정 형식
addPageNumbers.customTextDesc=Custom Text addPageNumbers.customTextDesc=사용자 지정 형식
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc addPageNumbers.numberPagesDesc=번호를 넣을 페이지. 기본값 'all'. 1-5, 2,5,9등도 유효합니다.
addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} addPageNumbers.customNumberDesc=기본값 {n}, 다음도 유효합니다: 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}'
addPageNumbers.submit=Add Page Numbers addPageNumbers.submit=페이지 번호 추가
#auto-rename #auto-rename
auto-rename.title=Auto Rename auto-rename.title=자동 이름 변경
auto-rename.header=Auto Rename PDF auto-rename.header=PDF 문서 자동 이름 변경
auto-rename.submit=Auto Rename auto-rename.submit=이름 변경
#adjustContrast #adjustContrast
adjustContrast.title=Adjust Contrast adjustContrast.title=대비 조절
adjustContrast.header=Adjust Contrast adjustContrast.header=대비 조절
adjustContrast.contrast=Contrast: adjustContrast.contrast=대비:
adjustContrast.brightness=Brightness: adjustContrast.brightness=밝기:
adjustContrast.saturation=Saturation: adjustContrast.saturation=채도:
adjustContrast.download=Download adjustContrast.download=다운로드
#crop #crop
crop.title=Crop crop.title=잘라내기
crop.header=Crop Image crop.header=잘라내기
crop.submit=Submit crop.submit=확인
#autoSplitPDF #autoSplitPDF
autoSplitPDF.title=Auto Split PDF autoSplitPDF.title=자동 문서 나누기
autoSplitPDF.header=Auto Split PDF autoSplitPDF.header=자동 문서 나누기
autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. autoSplitPDF.description=인쇄된 문서에 구분 페이지를 넣고 스캔하여 업로드하세요. 자동으로 문서를 나누어 드립니다. 수동으로 일일이 작업할 필요가 없습니다.
autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). autoSplitPDF.selectText.1=아래에서 구분 페이지를 인쇄하세요. (흑백이어도 상관 없습니다.)
autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. autoSplitPDF.selectText.2=문서를 나눌 곳에 구분 페이지를 넣고, 모든 문서를 한꺼번에 스캔하세요.
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.3=스캔된 문서를 Stirling PDF에 업로드하면, Stirling PDF가 알아서 문서를 나눕니다.
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.selectText.4=구분 페이지는 자동으로 감지 및 제거되므로, 깔끔한 결과물을 얻을 수 있습니다.
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: autoSplitPDF.formPrompt=Stirling-PDF 구분 페이지가 있는 PDF 파일 업로드:
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.duplexMode=양면 모드 (앞뒷면 스캐닝)
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload1=PDF 구분 페이지 다운로드
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.dividerDownload2=설명을 포함한 PDF 구분 페이지 다운로드
autoSplitPDF.submit=Submit autoSplitPDF.submit=나누기
#pipeline #pipeline
pipeline.title=Pipeline pipeline.title=파이프라인
#pageLayout #pageLayout
pageLayout.title=Multi Page Layout pageLayout.title=다중 페이지 레이아웃
pageLayout.header=Multi Page Layout pageLayout.header=다중 페이지 레이아웃
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=1장에 들어갈 페이지 수:
pageLayout.submit=Submit pageLayout.addBorder=외곽선 추가
pageLayout.submit=확인
#scalePages #scalePages
scalePages.title=Adjust page-scale scalePages.title=페이지 배율 조절
scalePages.header=Adjust page-scale scalePages.header=페이지 배율 조절
scalePages.pageSize=Size of a page of the document. scalePages.pageSize=페이지의 크기를 조절합니다.
scalePages.scaleFactor=Zoom level (crop) of a page. scalePages.scaleFactor=페이지 배율 조절 (잘라내기)
scalePages.submit=Submit scalePages.submit=제출
#certSign #certSign
certSign.title=인증서로 서명 certSign.title=인증서로 서명
certSign.header=PDF에 당신의 인증서로 서명하세요 (개발 중) certSign.header=인증서로 PDF 문서에 서명 (개발 중)
certSign.selectPDF=서명할 PDF를 선택하세요: certSign.selectPDF=서명할 PDF 문서를 선택합니다:
certSign.selectKey=개인 키 파일을 선택하세요 (PKCS#8 형식, .pem 또는 .der): certSign.selectKey=개인 키 파일을 선택합니다 (PKCS#8 형식, .pem 또는 .der):
certSign.selectCert=인증서 파일을 선택하세요 (X.509 형식, .pem 또는 .der): certSign.selectCert=인증서 파일을 선택합니다 (X.509 형식, .pem 또는 .der):
certSign.selectP12=PKCS#12 키 저장소 파일을 선택하세요 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다): certSign.selectP12=PKCS#12 키 저장소 파일을 선택합니다 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다):
certSign.certType=인증서 유형 certSign.certType=인증서 유형
certSign.password=키 저장소 또는 개인 키 비밀번호를 입력하세요 (있는 경우): certSign.password=키 저장소 또는 개인 키 비밀번호를 입력합니다 (있는 경우):
certSign.showSig=서명 보기 certSign.showSig=서명 보기
certSign.reason=이유 certSign.reason=이유
certSign.location=위치 certSign.location=위치
@@ -517,7 +541,7 @@ removeBlanks.submit=빈 페이지 제거
#compare #compare
compare.title=비교 compare.title=비교
compare.header=PDF 비교 compare.header=PDF 문서 비교
compare.document.1=문서 1 compare.document.1=문서 1
compare.document.2=문서 2 compare.document.2=문서 2
compare.submit=비교 compare.submit=비교
@@ -540,9 +564,9 @@ repair.submit=복구
#flatten #flatten
flatten.title=합치기 flatten.title=평탄화
flatten.header=PDF 합치기 flatten.header=PDF 문서의 레이어 평탄화
flatten.submit=합치기 flatten.submit=평탄화
#ScannerImageSplit #ScannerImageSplit
@@ -560,7 +584,7 @@ ScannerImageSplit.selectText.10=출력에서 흰색 테두리를 방지하기
#OCR #OCR
ocr.title=OCR / 깔끔하게 스캔 ocr.title=OCR / 깔끔하게 스캔
ocr.header=깔끔하게 스캔 / OCR (광학 문자 인식) ocr.header=OCR (광학 문자 인식) / 깔끔하게 스캔
ocr.selectText.1=PDF에서 감지할 언어를 선택하십시오 (현재 감지된 언어 목록): ocr.selectText.1=PDF에서 감지할 언어를 선택하십시오 (현재 감지된 언어 목록):
ocr.selectText.2=OCR 텍스트가 포함된 텍스트 파일을 OCR 처리된 PDF와 함께 생성 ocr.selectText.2=OCR 텍스트가 포함된 텍스트 파일을 OCR 처리된 PDF와 함께 생성
ocr.selectText.3=비뚤어진 각도로 스캔한 페이지를 다시 제자리로 돌려 올바른 페이지로 스캔 ocr.selectText.3=비뚤어진 각도로 스캔한 페이지를 다시 제자리로 돌려 올바른 페이지로 스캔
@@ -573,34 +597,34 @@ ocr.selectText.9=추가 설정
ocr.selectText.10=OCR 모드 ocr.selectText.10=OCR 모드
ocr.selectText.11=OCR 후 이미지 제거(모든 이미지 제거, 변환 단계의 일부인 경우에만 유용) ocr.selectText.11=OCR 후 이미지 제거(모든 이미지 제거, 변환 단계의 일부인 경우에만 유용)
ocr.selectText.12=렌더 유형(고급) ocr.selectText.12=렌더 유형(고급)
ocr.help=다른 언어 또는 Docker에 포함되지 않은 언어에 대해 사용하는 방법에 대해서는 이 문서를 참조하세요. ocr.help=다른 언어 또는 Docker에 포함되지 않은 언어에 대해 사용하는 방법에 대해서는 이 문서를 참조합니다.
ocr.credit=이 서비스는 OCR에 OCRmyPDF와 Tesseract를 사용합니다. ocr.credit=이 서비스는 OCR에 OCRmyPDF와 Tesseract를 사용합니다.
ocr.submit=OCR로 PDF 처리 ocr.submit=인식
#extractImages #extractImages
extractImages.title=이미지 추출 extractImages.title=이미지 추출
extractImages.header=이미지 추출 extractImages.header=이미지 추출
extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택하세요. extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택합니다.
extractImages.submit=추출 extractImages.submit=추출
#File to PDF #File to PDF
fileToPDF.title=File to PDF fileToPDF.title=File to PDF
fileToPDF.header=모든 파일을 PDF로 변환 fileToPDF.header=다양한 파일을 PDF로 변환
fileToPDF.credit=이 서비스는 파일 변환에 LibreOffice와 Unoconv를 사용합니다. fileToPDF.credit=이 서비스는 파일 변환에 LibreOffice와 Unoconv를 사용합니다.
fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같지만, 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조하세요. fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같습니다. 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조합니다.
fileToPDF.submit=PDF로 변환 fileToPDF.submit=PDF로 변환
#compress #compress
compress.title=압축 compress.title=압축
compress.header=PDF 압축 compress.header=PDF 압축
compress.credit=이 서비스는 PDF 압축/최적화를 위해 Ghostscript를 사용합니다. compress.credit=이 서비스는 PDF 압축최적화를 위해 Ghostscript를 사용합니다.
compress.selectText.1=수동 모드 - 1에서 4 compress.selectText.1=수동 모드 - 1에서 4
compress.selectText.2=최적화 수준: compress.selectText.2=최적화 수준:
compress.selectText.3=4 (텍스트 이미지에 적합하지 않음) compress.selectText.3=4 (텍스트 이미지에 적합하지 않음)
compress.selectText.4=자동 - 정확한 크기의 PDF를 얻기 위해 품질 자동 조정 compress.selectText.4=자동 - 정확한 크기의 PDF 문서를 얻기 위해 품질 자동 조정
compress.selectText.5=예상 PDF 크기 (예: 25MB, 10.8MB, 25KB) compress.selectText.5=예상 PDF 크기 (예: 25MB, 10.8MB, 25KB)
compress.submit=압축 compress.submit=압축
@@ -622,19 +646,22 @@ merge.submit=병합
#pdfOrganiser #pdfOrganiser
pdfOrganiser.title=페이지 정렬 도구 pdfOrganiser.title=페이지 정렬
pdfOrganiser.header=PDF 페이지 정렬 pdfOrganiser.header=PDF 페이지 정렬
pdfOrganiser.submit=페이지 재정렬 pdfOrganiser.submit=페이지 재정렬
#multiTool #multiTool
multiTool.title=PDF 멀티 multiTool.title=PDF 멀티툴
multiTool.header=PDF 멀티 multiTool.header=PDF 멀티툴
#view pdf
viewPdf.title=PDF 뷰어
viewPdf.header=PDF 뷰어
#pageRemover #pageRemover
pageRemover.title=페이지 제거 도구 pageRemover.title=페이지 제거
pageRemover.header=PDF 페이지 제거 도구 pageRemover.header=PDF 페이지 제거
pageRemover.pagesToDelete=제거할 페이지 (쉼표로 구분된 페이지 번호 입력): pageRemover.pagesToDelete=제거할 페이지 (쉼표로 구분된 페이지 번호 입력):
pageRemover.submit=페이지 제거 pageRemover.submit=페이지 제거
@@ -649,8 +676,8 @@ rotate.submit=회전
#merge #merge
split.title=PDF 분할 split.title=PDF 분할
split.header=PDF 분할 split.header=PDF 분할
split.desc.1=선택한 번호는 분할할 페이지 번호입니다. split.desc.1=입력한 번호는 분할할 페이지 번호입니다.
split.desc.2=예를 들어, 1,3,7-8을 선택하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF로 분할하게 됩니다. split.desc.2=예를 들어, 1,3,7-8을 입력하면 10페이지 문서를 아래와 같이 6개의 별도의 PDF 문서로 분할하게 됩니다.
split.desc.3=문서 #1: 페이지 1 split.desc.3=문서 #1: 페이지 1
split.desc.4=문서 #2: 페이지 2, 3 split.desc.4=문서 #2: 페이지 2, 3
split.desc.5=문서 #3: 페이지 4, 5, 6 split.desc.5=문서 #3: 페이지 4, 5, 6
@@ -662,25 +689,22 @@ split.submit=분할
#merge #merge
imageToPDF.title=이미지를 PDF로 변환 imageToPDF.title=Image to PDF
imageToPDF.header=이미지를 PDF로 변환 imageToPDF.header=이미지를 PDF로 변환
imageToPDF.submit=변환하기 imageToPDF.submit=변환
########################## imageToPDF.selectLabel=이미지 맞춤 방법
### TODO: Translate ### imageToPDF.fillPage=페이지 채우기
########################## imageToPDF.fitDocumentToImage=페이지를 이미지 크기에 맞게
imageToPDF.selectLabel=Image Fit Options imageToPDF.maintainAspectRatio=가로/세로 비율 유지
imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
imageToPDF.selectText.2=PDF 자동 회전 imageToPDF.selectText.2=PDF 자동 회전
imageToPDF.selectText.3=다중 파일 로직 (여러 이미지로 작업하는 경우에만 활성화됨) imageToPDF.selectText.3=다중 파일 처리 방법 (여러 이미지로 작업하는 경우에만 활성화됨)
imageToPDF.selectText.4=단일 PDF로 병합 imageToPDF.selectText.4=단일 PDF로 병합
imageToPDF.selectText.5=별도의 PDF로 변환 imageToPDF.selectText.5=별도의 PDF로 변환
#pdfToImage #pdfToImage
pdfToImage.title=PDF를 이미지로 변환 pdfToImage.title=PDF to Image
pdfToImage.header=PDF를 이미지로 변환 pdfToImage.header=PDF 문서를 이미지로 변환
pdfToImage.selectText=이미지 형식 pdfToImage.selectText=이미지 형식
pdfToImage.singleOrMultiple=이미지 결과 유형 pdfToImage.singleOrMultiple=이미지 결과 유형
pdfToImage.single=단일 큰 이미지 pdfToImage.single=단일 큰 이미지
@@ -689,28 +713,28 @@ pdfToImage.colorType=색상 유형
pdfToImage.color=컬러 pdfToImage.color=컬러
pdfToImage.grey=그레이스케일 pdfToImage.grey=그레이스케일
pdfToImage.blackwhite=흑백 (데이터 손실 가능성 있음!) pdfToImage.blackwhite=흑백 (데이터 손실 가능성 있음!)
pdfToImage.submit=변환하기 pdfToImage.submit=변환
#addPassword #addPassword
addPassword.title=암호 추가 addPassword.title=암호 추가
addPassword.header=암호 추가 (암호화) addPassword.header=암호 추가 (암호화)
addPassword.selectText.1=암호화할 PDF 선택 addPassword.selectText.1=암호화할 PDF 문서 선택
addPassword.selectText.2=암호 addPassword.selectText.2=암호
addPassword.selectText.3=암호화 키 길이 addPassword.selectText.3=암호화 키 길이
addPassword.selectText.4=값이 높을수록 강력하지만, 값이 낮을수록 호환성이 더 좋습니다. addPassword.selectText.4=값이 높을수록 강력하지만, 값이 낮을수록 호환성이 더 좋습니다.
addPassword.selectText.5=설정할 권한 addPassword.selectText.5=설정할 권한
addPassword.selectText.6=문서 조 방지 addPassword.selectText.6=문서 조 방지 (다른 PDF 문서에 삽입 불가)
addPassword.selectText.7=콘텐츠 추출 방지 addPassword.selectText.7=내용 추출 방지
addPassword.selectText.8=접근성을 위한 추출 방지 addPassword.selectText.8=접근성을 위한 추출 방지
addPassword.selectText.9=양식 작성 방지 addPassword.selectText.9=양식 작성 방지
addPassword.selectText.10=수정 방지 addPassword.selectText.10=수정 방지
addPassword.selectText.11=주석 수정 방지 addPassword.selectText.11=주석 수정 방지
addPassword.selectText.12=인쇄 방지 addPassword.selectText.12=인쇄 방지
addPassword.selectText.13=다른 형식으로 인쇄 방<EFBFBD> addPassword.selectText.13=다른 형식으로 인쇄 방
addPassword.selectText.14=Owner Password addPassword.selectText.14=소유자 암호
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) addPassword.selectText.15=문서를 연 다음 수행할 수 있는 동작을 방지합니다. (모든 뷰어에서 지원되지는 않습니다.)
addPassword.selectText.16=Restricts the opening of the document itself<6C> addPassword.selectText.16=문서를 열 수 없도록 방지합니다.
addPassword.submit=암호화 addPassword.submit=암호화
@@ -724,8 +748,8 @@ watermark.selectText.4=회전 각도 (0-360):
watermark.selectText.5=가로 간격 (각 워터마크 사이의 가로 공간): watermark.selectText.5=가로 간격 (각 워터마크 사이의 가로 공간):
watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간): watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간):
watermark.selectText.7=투명도 (0% - 100%): watermark.selectText.7=투명도 (0% - 100%):
watermark.selectText.8=Watermark Type: watermark.selectText.8=워터마크 유형:
watermark.selectText.9=Watermark Image: watermark.selectText.9=워터마크 이미지:
watermark.submit=워터마크 추가 watermark.submit=워터마크 추가
@@ -776,14 +800,14 @@ changeMetadata.submit=변경
#pdfToPDFA #pdfToPDFA
pdfToPDFA.title=PDF To PDF/A pdfToPDFA.title=PDF To PDF/A
pdfToPDFA.header=PDF를 PDF/A로 변환 pdfToPDFA.header=PDF 문서를 PDF/A로 변환
pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF를 사용합니다. pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF 문서를 사용합니다.
pdfToPDFA.submit=변환 pdfToPDFA.submit=변환
#PDFToWord #PDFToWord
PDFToWord.title=PDF to Word PDFToWord.title=PDF to Word
PDFToWord.header=PDF를 Word로 변환 PDFToWord.header=PDF 문서를 Word 문서로 변환
PDFToWord.selectText.1=출력 파일 형식 PDFToWord.selectText.1=출력 파일 형식
PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
PDFToWord.submit=변환 PDFToWord.submit=변환
@@ -791,15 +815,15 @@ PDFToWord.submit=변환
#PDFToPresentation #PDFToPresentation
PDFToPresentation.title=PDF to Presentation PDFToPresentation.title=PDF to Presentation
PDFToPresentation.header=PDF를 프레젠테이션으로 변환 PDFToPresentation.header=PDF 문서를 프레젠테이션으로 변환
PDFToPresentation.selectText.1=출력 파일 형식 PDFToPresentation.selectText.1=출력 파일 형식
PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
PDFToPresentation.submit=변환 PDFToPresentation.submit=변환
#PDFToText #PDFToText
PDFToText.title=PDF to RTF (Text) PDFToText.title=PDF to RTF
PDFToText.header=PDF를 텍스트/RTF로 변환 PDFToText.header=PDF 문서를 RTF(서식 있는 텍스트 문서)로 변환
PDFToText.selectText.1=출력 파일 형식 PDFToText.selectText.1=출력 파일 형식
PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
PDFToText.submit=변환 PDFToText.submit=변환
@@ -807,13 +831,55 @@ PDFToText.submit=변환
#PDFToHTML #PDFToHTML
PDFToHTML.title=PDF to HTML PDFToHTML.title=PDF to HTML
PDFToHTML.header=PDF를 HTML로 변환 PDFToHTML.header=PDF 문서를 HTML로 변환
PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다.
PDFToHTML.submit=변환 PDFToHTML.submit=변환
#PDFToXML #PDFToXML
PDFToXML.title=PDF to XML PDFToXML.title=PDF to XML
PDFToXML.header=PDF를 XML로 변환 PDFToXML.header=PDF 문서를 XML로 변환
PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Sla gebruiker op
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Jouw lokaal gehoste one-stop-shop voor al je PDF-behoeften. 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.title=PDF Multitool
home.multiTool.desc=Samenvoegen, draaien, herschikken en pagina''s verwijderen home.multiTool.desc=Samenvoegen, draaien, herschikken en pagina''s verwijderen
multiTool.tags=Multitool,Multi bewerking,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pijplijn
pageLayout.title=Meerdere pagina indeling pageLayout.title=Meerdere pagina indeling
pageLayout.header=Meerdere pagina indeling pageLayout.header=Meerdere pagina indeling
pageLayout.pagesPerSheet=Pagina''s per vel: pageLayout.pagesPerSheet=Pagina''s per vel:
pageLayout.addBorder=Add Borders
pageLayout.submit=Indienen pageLayout.submit=Indienen
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Pagina''s herschikken
multiTool.title=PDF Multitool multiTool.title=PDF Multitool
multiTool.header=PDF Multitool multiTool.header=PDF Multitool
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Pagina verwijderaar pageRemover.title=Pagina verwijderaar
@@ -665,9 +692,6 @@ split.submit=Splitsen
imageToPDF.title=Afbeelding naar PDF imageToPDF.title=Afbeelding naar PDF
imageToPDF.header=Afbeelding naar PDF imageToPDF.header=Afbeelding naar PDF
imageToPDF.submit=Omzetten imageToPDF.submit=Omzetten
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF naar XML
PDFToXML.header=PDF naar XML PDFToXML.header=PDF naar XML
PDFToXML.credit=Deze service gebruikt LibreOffice voor bestandsconversie. PDFToXML.credit=Deze service gebruikt LibreOffice voor bestandsconversie.
PDFToXML.submit=Converteren 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF. 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.title=Multi narzędzie PDF
home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Układ wielu stron pageLayout.title=Układ wielu stron
pageLayout.header=Układ wielu stron pageLayout.header=Układ wielu stron
pageLayout.pagesPerSheet=Stron na jednym arkuszu: pageLayout.pagesPerSheet=Stron na jednym arkuszu:
pageLayout.addBorder=Add Borders
pageLayout.submit=Wykonaj pageLayout.submit=Wykonaj
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Zmień kolejność stron
multiTool.title=Multi narzędzie PDF multiTool.title=Multi narzędzie PDF
multiTool.header=Multi narzędzie PDF multiTool.header=Multi narzędzie PDF
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Narzędzie do usuwania stron pageRemover.title=Narzędzie do usuwania stron
@@ -665,9 +692,6 @@ split.submit=Podziel
imageToPDF.title=Obraz na PDF imageToPDF.title=Obraz na PDF
imageToPDF.header=Obraz na PDF imageToPDF.header=Obraz na PDF
imageToPDF.submit=Konwertuj imageToPDF.submit=Konwertuj
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF na XML
PDFToXML.header=PDF na XML PDFToXML.header=PDF na XML
PDFToXML.credit=Ta usługa używa LibreOffice do konwersji plików. PDFToXML.credit=Ta usługa używa LibreOffice do konwersji plików.
PDFToXML.submit=Konwertuj 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Seu melhor utilitário para suas necessidades de PDF. 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.title=Multiferramenta de PDF
home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas 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 multiTool.tags=Multi Ferramenta, Operação Múltipla, Interface do Usuário, Clique e Arraste, Front-end, Lado do Cliente
@@ -478,6 +483,7 @@ pipeline.title=Pipeline
pageLayout.title=Layout de Múltiplas Páginas pageLayout.title=Layout de Múltiplas Páginas
pageLayout.header=Layout de Múltiplas Páginas pageLayout.header=Layout de Múltiplas Páginas
pageLayout.pagesPerSheet=Páginas por folha: pageLayout.pagesPerSheet=Páginas por folha:
pageLayout.addBorder=Add Borders
pageLayout.submit=Enviar pageLayout.submit=Enviar
@@ -631,6 +637,9 @@ pdfOrganiser.submit=Reorganizar Páginas
multiTool.title=Multiferramenta de PDF multiTool.title=Multiferramenta de PDF
multiTool.header=Multiferramenta de PDF multiTool.header=Multiferramenta de PDF
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Remover Página pageRemover.title=Remover Página
@@ -665,9 +674,6 @@ split.submit=Dividir
imageToPDF.title=Imagem para PDF imageToPDF.title=Imagem para PDF
imageToPDF.header=Converter Imagem para PDF imageToPDF.header=Converter Imagem para PDF
imageToPDF.submit=Converter imageToPDF.submit=Converter
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +823,8 @@ PDFToXML.title=PDF para XML
PDFToXML.header=PDF para XML PDFToXML.header=PDF para XML
PDFToXML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos. PDFToXML.credit=Este serviço usa o LibreOffice para Conversão de Arquivos.
PDFToXML.submit=Converter PDFToXML.submit=Converter
#PDFToCSV
PDFToCSV.title=PDF para CSV
PDFToCSV.header=PDF para CSV
PDFToCSV.submit=Eztenna<EFBFBD>

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF. 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.title=Instrument multiplu PDF
home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
@@ -478,6 +483,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +637,9 @@ pdfOrganiser.submit=Rearanjați paginile
multiTool.title=Instrument PDF multiplu multiTool.title=Instrument PDF multiplu
multiTool.header=Instrument PDF multiplu multiTool.header=Instrument PDF multiplu
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Înlăturare pagini pageRemover.title=Înlăturare pagini
@@ -665,9 +674,6 @@ split.submit=Împarte
imageToPDF.title=Imagine în PDF imageToPDF.title=Imagine în PDF
imageToPDF.header=Imagine în PDF imageToPDF.header=Imagine în PDF
imageToPDF.submit=Convertă imageToPDF.submit=Convertă
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +823,8 @@ PDFToXML.title=PDF către XML
PDFToXML.header=PDF către XML PDFToXML.header=PDF către XML
PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului.
PDFToXML.submit=Convert PDFToXML.submit=Convert
#PDFToCSV
PDFToCSV.title=PDF în CSV
PDFToCSV.header=PDF în CSV
PDFToCSV.submit=Extrage

View File

@@ -20,7 +20,7 @@ close=Закрыть
filesSelected=файлов выбрано filesSelected=файлов выбрано
noFavourites=Нет избранного noFavourites=Нет избранного
bored=Скучно ждать? bored=Скучно ждать?
alphabet=\u0430\u043B\u0444\u0430\u0432\u0438\u0442 alphabet=Алфавит
downloadPdf=Скачать PDF downloadPdf=Скачать PDF
text=Текст text=Текст
font=Шрифт font=Шрифт
@@ -58,7 +58,7 @@ navbar.convert=Конвертировать
navbar.security=Безопасность navbar.security=Безопасность
navbar.other=Другое navbar.other=Другое
navbar.darkmode=Темный режим navbar.darkmode=Темный режим
navbar.pageOps=Операции со страницей navbar.pageOps=Операции с страницей
navbar.settings=Настройки navbar.settings=Настройки
############# #############
@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF. 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.title=Мультиинструмент PDF
home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
@@ -254,83 +259,101 @@ home.compare.title=Сравнение
home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами
compare.tags=differentiate,contrast,changes,analysis compare.tags=differentiate,contrast,changes,analysis
home.certSign.title=Sign with Certificate home.certSign.title=Подписать сертификатом
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) home.certSign.desc=Подписать PDF сертификатом/ключом (PEM/P12)
certSign.tags=authenticate,PEM,P12,official,encrypt certSign.tags=authenticate,PEM,P12,official,encrypt
home.pageLayout.title=Multi-Page Layout home.pageLayout.title=Объединить страницы
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page home.pageLayout.desc=Объединение нескольких страниц документа PDF в одну страницу
pageLayout.tags=merge,composite,single-view,organize pageLayout.tags=merge,composite,single-view,organize
home.scalePages.title=Adjust page size/scale home.scalePages.title=Изменить размер/масштаб страницы
home.scalePages.desc=Change the size/scale of page and/or its contents. home.scalePages.desc=Изменить размер/масштаб страницы и/или ее содержимого.
scalePages.tags=resize,modify,dimension,adapt scalePages.tags=resize,modify,dimension,adapt
home.pipeline.title=Pipeline (Advanced) home.pipeline.title=Конвейер (расширенный)
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts home.pipeline.desc=Выполняйте несколько действий с PDF-файлами, определяя конвейерные сценарии.
pipeline.tags=automate,sequence,scripted,batch-process pipeline.tags=automate,sequence,scripted,batch-process
home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.title=Добавить номера страниц
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location home.add-page-numbers.desc=Добавляйте номера страниц по всему документу в заданном месте
add-page-numbers.tags=paginate,label,organize,index add-page-numbers.tags=paginate,label,organize,index
home.auto-rename.title=Auto Rename PDF File home.auto-rename.title=Автоматическое переименование PDF-файла
home.auto-rename.desc=Auto renames a PDF file based on its detected header home.auto-rename.desc=Автоматическое переименование файла PDF на основе его обнаруженного заголовка
auto-rename.tags=auto-detect,header-based,organize,relabel auto-rename.tags=auto-detect,header-based,organize,relabel
home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.title=Настройка цветов/контрастности
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF home.adjust-contrast.desc=Настройка контрастность, насыщенность и яркость PDF-файла
adjust-contrast.tags=color-correction,tune,modify,enhance adjust-contrast.tags=color-correction,tune,modify,enhance
home.crop.title=Crop PDF home.crop.title=Обрезать PDF-файл
home.crop.desc=Crop a PDF to reduce its size (maintains text!) home.crop.desc=Обрезать PDF-файл, чтобы уменьшить его размер (текст сохраняется!)
crop.tags=trim,shrink,edit,shape crop.tags=trim,shrink,edit,shape
home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.title=Автоматическое разделение страниц
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code home.autoSplitPDF.desc=Автоматическое разделение отсканированного PDF-файла с помощью физического разделителя отсканированных страниц QR-кода
autoSplitPDF.tags=QR-based,separate,scan-segment,organize autoSplitPDF.tags=QR-based,separate,scan-segment,organize
home.sanitizePdf.title=Sanitize home.sanitizePdf.title=Дезинфицировать
home.sanitizePdf.desc=Remove scripts and other elements from PDF files home.sanitizePdf.desc=Удаление скриптов и других элементов из PDF-файлов
sanitizePdf.tags=clean,secure,safe,remove-threats sanitizePdf.tags=clean,secure,safe,remove-threats
home.URLToPDF.title=URL/Website To PDF home.URLToPDF.title=URL/сайт в PDF
home.URLToPDF.desc=Converts any http(s)URL to PDF home.URLToPDF.desc=Конвертирует любой http(s)URL в PDF
URLToPDF.tags=web-capture,save-page,web-to-doc,archive URLToPDF.tags=web-capture,save-page,web-to-doc,archive
home.HTMLToPDF.title=HTML to PDF home.HTMLToPDF.title=HTML в 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 HTMLToPDF.tags=markup,web-content,transformation,convert
home.MarkdownToPDF.title=Markdown to PDF home.MarkdownToPDF.title=Markdown в PDF
home.MarkdownToPDF.desc=Converts any Markdown file to PDF home.MarkdownToPDF.desc=Конвертирует любой файл Markdown в PDF
MarkdownToPDF.tags=markup,web-content,transformation,convert MarkdownToPDF.tags=markup,web-content,transformation,convert
home.getPdfInfo.title=Get ALL Info on PDF home.getPdfInfo.title=Получите ВСЮ информацию в формате PDF
home.getPdfInfo.desc=Grabs any and all information possible on PDFs home.getPdfInfo.desc=Собирает любую возможную информацию в PDF-файлах.
getPdfInfo.tags=infomation,data,stats,statistics getPdfInfo.tags=infomation,data,stats,statistics
home.extractPage.title=Extract page(s) home.extractPage.title=Извлечь страницу(ы)
home.extractPage.desc=Extracts select pages from PDF home.extractPage.desc=Извлекает выбранные страницы из PDF
extractPage.tags=extract extractPage.tags=extract
home.PdfToSinglePage.title=PDF to Single Large Page home.PdfToSinglePage.title=PDF в одну большую страницу
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page home.PdfToSinglePage.desc=Объединяет все страницы PDF в одну большую страницу.
PdfToSinglePage.tags=single page PdfToSinglePage.tags=single page
home.showJS.title=Show Javascript home.showJS.title=Показать Javascript
home.showJS.desc=Searches and displays any JS injected into a PDF home.showJS.desc=Ищет и отображает любой JS, внедренный в PDF-файл.
showJS.tags=JS showJS.tags=JS
home.autoRedact.title=Auto Redact home.autoRedact.title=Auto Redact
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -359,115 +382,115 @@ autoRedact.submitButton=Submit
#showJS #showJS
showJS.title=Show Javascript showJS.title=Показать Javascript
showJS.header=Show Javascript showJS.header=Показать Javascript
showJS.downloadJS=Download Javascript showJS.downloadJS=Скачать Javascript
showJS.submit=Show showJS.submit=Показать
#pdfToSinglePage #pdfToSinglePage
pdfToSinglePage.title=PDF To Single Page pdfToSinglePage.title=PDF на одну страницу
pdfToSinglePage.header=PDF To Single Page pdfToSinglePage.header=PDF на одну страницу
pdfToSinglePage.submit=Convert To Single Page pdfToSinglePage.submit=Преобразовать в одну страницу
#pageExtracter #pageExtracter
pageExtracter.title=Extract Pages pageExtracter.title=Извлечь страницы
pageExtracter.header=Extract Pages pageExtracter.header=Извлечь страницы
pageExtracter.submit=Extract pageExtracter.submit=Извлечь
#getPdfInfo #getPdfInfo
getPdfInfo.title=Get Info on PDF getPdfInfo.title=Получить информацию в PDF
getPdfInfo.header=Get Info on PDF getPdfInfo.header=Получить информацию в PDF
getPdfInfo.submit=Get Info getPdfInfo.submit=Получить информацию
getPdfInfo.downloadJson=Download JSON getPdfInfo.downloadJson=Скачать JSON
#markdown-to-pdf #markdown-to-pdf
MarkdownToPDF.title=Markdown To PDF MarkdownToPDF.title=Markdown в PDF
MarkdownToPDF.header=Markdown To PDF MarkdownToPDF.header=Markdown в PDF
MarkdownToPDF.submit=Convert MarkdownToPDF.submit=Конвертировать
MarkdownToPDF.help=Work in progress MarkdownToPDF.help=Работа в процессе
MarkdownToPDF.credit=Uses WeasyPrint MarkdownToPDF.credit=Использует WeasyPrint
#url-to-pdf #url-to-pdf
URLToPDF.title=URL To PDF URLToPDF.title=URL в PDF
URLToPDF.header=URL To PDF URLToPDF.header=URL в PDF
URLToPDF.submit=Convert URLToPDF.submit=Конвертировать
URLToPDF.credit=Uses WeasyPrint URLToPDF.credit=Использует WeasyPrint
#html-to-pdf #html-to-pdf
HTMLToPDF.title=HTML To PDF HTMLToPDF.title=HTML в PDF
HTMLToPDF.header=HTML To PDF HTMLToPDF.header=HTML в PDF
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required HTMLToPDF.help=Принимает файлы HTML и ZIP-файлы, содержащие html/css/изображения и т. д.
HTMLToPDF.submit=Convert HTMLToPDF.submit=Конвертировать
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Использует WeasyPrint
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Дезинфицировать PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Дезинфицировать PDF файл
sanitizePDF.selectText.1=Remove JavaScript actions sanitizePDF.selectText.1=Удалить JavaScript
sanitizePDF.selectText.2=Remove embedded files sanitizePDF.selectText.2=Удалить встроенные файлы
sanitizePDF.selectText.3=Remove metadata sanitizePDF.selectText.3=Удалить метаданные
sanitizePDF.selectText.4=Remove links sanitizePDF.selectText.4=Удалить ссылки
sanitizePDF.selectText.5=Remove fonts sanitizePDF.selectText.5=Удалить шрифты
sanitizePDF.submit=Sanitize PDF sanitizePDF.submit=Дезинфицировать
#addPageNumbers #addPageNumbers
addPageNumbers.title=Add Page Numbers addPageNumbers.title=Добавить номера страниц
addPageNumbers.header=Add Page Numbers addPageNumbers.header=Добавить номера страниц
addPageNumbers.selectText.1=Select PDF file: addPageNumbers.selectText.1=Выберите PDF-файл:
addPageNumbers.selectText.2=Margin Size addPageNumbers.selectText.2=Размер поля
addPageNumbers.selectText.3=Position addPageNumbers.selectText.3=Позиция
addPageNumbers.selectText.4=Starting Number addPageNumbers.selectText.4=Стартовый номер
addPageNumbers.selectText.5=Pages to Number addPageNumbers.selectText.5=Страницы для нумерации
addPageNumbers.selectText.6=Custom Text addPageNumbers.selectText.6=Свой текст
addPageNumbers.customTextDesc=Custom Text addPageNumbers.customTextDesc=Custom Text
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc 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.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}
addPageNumbers.submit=Add Page Numbers addPageNumbers.submit=Добавить номера страниц
#auto-rename #auto-rename
auto-rename.title=Auto Rename auto-rename.title=Автоматическое переименование
auto-rename.header=Auto Rename PDF auto-rename.header=Автоматическое переименование PDF
auto-rename.submit=Auto Rename auto-rename.submit=Автоматическое переименование
#adjustContrast #adjustContrast
adjustContrast.title=Adjust Contrast adjustContrast.title=Настройка контрастности
adjustContrast.header=Adjust Contrast adjustContrast.header=Настройка контрастности
adjustContrast.contrast=Contrast: adjustContrast.contrast=Контраст:
adjustContrast.brightness=Brightness: adjustContrast.brightness=Яркость:
adjustContrast.saturation=Saturation: adjustContrast.saturation=Насыщенность:
adjustContrast.download=Download adjustContrast.download=Скачать
#crop #crop
crop.title=Crop crop.title=Обрезать
crop.header=Crop Image crop.header=Обрезать изображение
crop.submit=Submit crop.submit=Отправить
#autoSplitPDF #autoSplitPDF
autoSplitPDF.title=Auto Split PDF autoSplitPDF.title=Автоматическое разделение PDF
autoSplitPDF.header=Auto Split PDF autoSplitPDF.header=Автоматическое разделение PDF
autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. autoSplitPDF.description=Распечатывайте, вставляйте, сканируйте, загружайте и позволяйте нам автоматически разделять ваши документы. Никакой ручной сортировки работы не требуется.
autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). autoSplitPDF.selectText.1=Печатайте несколько раздельных листов (подойдет черно-белый вариант).
autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. autoSplitPDF.selectText.2=Сканируйте все документы одновременно, вставив между ними разделительный лист.
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.3=Загрузите один большой отсканированный PDF-файл, и пусть Stirling PDF сделает все остальное.
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.selectText.4=Разделительные страницы автоматически обнаруживаются и удаляются, гарантируя аккуратный окончательный документ.
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: autoSplitPDF.formPrompt=Отравить PDF-файл, содержащий разделители страниц Stirling-PDF:
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.duplexMode=Дуплексный режим (сканирование спереди и сзади)
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload1=Скачать 'Auto Splitter Divider (minimal).pdf'
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.dividerDownload2=Скачать 'Auto Splitter Divider (with instructions).pdf'
autoSplitPDF.submit=Submit autoSplitPDF.submit=Отравить
#pipeline #pipeline
@@ -475,18 +498,19 @@ pipeline.title=Pipeline
#pageLayout #pageLayout
pageLayout.title=Multi Page Layout pageLayout.title=Многостраничный макет
pageLayout.header=Multi Page Layout pageLayout.header=Многостраничный макет
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Страниц на одном листе:
pageLayout.submit=Submit pageLayout.addBorder=Add Borders
pageLayout.submit=Отправить
#scalePages #scalePages
scalePages.title=Adjust page-scale scalePages.title=Отрегулировать масштаб страницы
scalePages.header=Adjust page-scale scalePages.header=Отрегулировать масштаб страницы
scalePages.pageSize=Size of a page of the document. scalePages.pageSize=Размер страницы документа.
scalePages.scaleFactor=Zoom level (crop) of a page. scalePages.scaleFactor=Уровень масштабирования (обрезки) страницы.
scalePages.submit=Submit scalePages.submit=Отправить
#certSign #certSign
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Переупорядочить страницы
multiTool.title=Мультиинструмент PDF multiTool.title=Мультиинструмент PDF
multiTool.header=Мультиинструмент PDF multiTool.header=Мультиинструмент PDF
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Удаление страниц pageRemover.title=Удаление страниц
@@ -665,9 +692,6 @@ split.submit=Разделить
imageToPDF.title=Изображение в PDF imageToPDF.title=Изображение в PDF
imageToPDF.header=Изображение в PDF imageToPDF.header=Изображение в PDF
imageToPDF.submit=Конвертировать imageToPDF.submit=Конвертировать
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF в XML
PDFToXML.header=PDF в XML PDFToXML.header=PDF в XML
PDFToXML.credit=Этот сервис использует LibreOffice для преобразования файлов. 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

View File

@@ -126,8 +126,13 @@ adminUserSettings.submit=Save User
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Din lokala one-stop-shop för alla dina PDF-behov. 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.title=PDF Multi-verktyg
home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side 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 home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text
showJS.tags=JS 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 # # WEB PAGES #
@@ -478,6 +501,7 @@ pipeline.title=Pipeline
pageLayout.title=Multi Page Layout pageLayout.title=Multi Page Layout
pageLayout.header=Multi Page Layout pageLayout.header=Multi Page Layout
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=Pages per sheet:
pageLayout.addBorder=Add Borders
pageLayout.submit=Submit pageLayout.submit=Submit
@@ -631,6 +655,9 @@ pdfOrganiser.submit=Ordna om sidor
multiTool.title=PDF-multiverktyg multiTool.title=PDF-multiverktyg
multiTool.header=PDF Multi-verktyg multiTool.header=PDF Multi-verktyg
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=Sidborttagare pageRemover.title=Sidborttagare
@@ -665,9 +692,6 @@ split.submit=Dela
imageToPDF.title=Bild till PDF imageToPDF.title=Bild till PDF
imageToPDF.header=Bild till PDF imageToPDF.header=Bild till PDF
imageToPDF.submit=Konvertera imageToPDF.submit=Konvertera
##########################
### TODO: Translate ###
##########################
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Image Fit Options
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Fit Page to Image
@@ -817,3 +841,45 @@ PDFToXML.title=PDF till XML
PDFToXML.header=PDF till XML PDFToXML.header=PDF till XML
PDFToXML.credit=Denna tjänst använder LibreOffice för filkonvertering. PDFToXML.credit=Denna tjänst använder LibreOffice för filkonvertering.
PDFToXML.submit=Konvertera 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

View 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=ı 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=ı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=ı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=ı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

View File

@@ -12,30 +12,30 @@ genericSubmit=提交
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小 processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表): pageOrderPrompt=页面顺序(输入逗号分隔的页码列表):
goToPage= goToPage=
true=True true=
false=False false=
unknown=未知 unknown=未知
save=保存 save=保存
close=关闭 close=关闭
filesSelected=\u9009\u62E9\u7684\u6587\u4EF6 filesSelected=选中的文件
noFavourites=\u6CA1\u6709\u6DFB\u52A0\u6536\u85CF\u5939 noFavourites=没有添加收藏夹
bored=\u65E0\u804A\u7B49\u5F85\uFF1F bored=无聊等待吗?
alphabet=\u5B57\u6BCD\u8868 alphabet=字母表
downloadPdf=\u4E0B\u8F7DPDF downloadPdf=下载PDF
text=\u6587\u672C text=文本
font=\u5B57\u4F53 font=字体
selectFillter=-- 选择-- selectFillter=-- 选择--
pageNum=页码 pageNum=页码
sizes.small=Small sizes.small=小型尺寸
sizes.medium=Medium sizes.medium=中型尺寸
sizes.large=Large sizes.large=大型尺寸
sizes.x-large=X-Large sizes.x-large=稍大型尺寸
error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect error.pdfPassword=PDF 文档有密码,未提供密码或密码不正确
delete=Delete delete=删除
username=Username username=用户名
password=Password password=密码
welcome=Welcome welcome=欢迎
property=Property property=资产
black=Black black=Black
white=White white=White
red=Red red=Red
@@ -43,11 +43,11 @@ green=Green
blue=Blue blue=Blue
custom=Custom... custom=Custom...
changedCredsMessage=Credentials changed! changedCredsMessage=凭证已更改!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=用户未经过身份验证。
userNotFoundMessage=User not found. userNotFoundMessage=未找到用户。
incorrectPasswordMessage=Current password is incorrect. incorrectPasswordMessage=当前密码不正确。
usernameExistsMessage=New Username already exists. usernameExistsMessage=新用户名已存在。
@@ -72,264 +72,287 @@ settings.downloadOption.1=在同一窗口打开
settings.downloadOption.2=在新窗口中打开 settings.downloadOption.2=在新窗口中打开
settings.downloadOption.3=下载文件 settings.downloadOption.3=下载文件
settings.zipThreshold=当下载的文件数量超过限制时,将文件压缩。 settings.zipThreshold=当下载的文件数量超过限制时,将文件压缩。
settings.signOut=Sign Out settings.signOut=登出
settings.accountSettings=Account Settings settings.accountSettings=帐号设定
changeCreds.title=Change Credentials changeCreds.title=更改凭证
changeCreds.header=Update Your Account Details changeCreds.header=更新您的账户详情
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=您正在使用默认登录凭据。请输入新密码(如果需要,还可以输入新用户名)
changeCreds.newUsername=New Username changeCreds.newUsername=新用户名
changeCreds.oldPassword=Current Password changeCreds.oldPassword=当前密码
changeCreds.newPassword=New Password changeCreds.newPassword=新密码
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=确认新密码
changeCreds.submit=Submit Changes changeCreds.submit=提交更改
account.title=Account Settings account.title=帐号设定
account.accountSettings=Account Settings account.accountSettings=帐号设定
account.adminSettings=Admin Settings - View and Add Users account.adminSettings=管理员设置 - 查看和添加用户
account.userControlSettings=User Control Settings account.userControlSettings=用户控制设置
account.changeUsername=Change Username account.changeUsername=更改用户名
account.changeUsername=Change Username account.changeUsername=更改用户名
account.password=Confirmation Password account.password=确认密码
account.oldPassword=Old password account.oldPassword=旧密码
account.newPassword=New Password account.newPassword=新密码
account.changePassword=Change Password account.changePassword=更改密码
account.confirmNewPassword=Confirm New Password account.confirmNewPassword=确认新密码
account.signOut=Sign Out account.signOut=退出登录
account.yourApiKey=Your API Key account.yourApiKey=您的 API 密钥
account.syncTitle=Sync browser settings with Account account.syncTitle=将浏览器设置与账户同步
account.settingsCompare=Settings Comparison: account.settingsCompare=设置比较:
account.property=Property account.property=属性
account.webBrowserSettings=Web Browser Setting account.webBrowserSettings=Web 浏览器设置
account.syncToBrowser=Sync Account -> Browser account.syncToBrowser=同步账户 -> 浏览器
account.syncToAccount=Sync Account <- Browser account.syncToAccount=同步账户 <- 浏览器
adminUserSettings.title=User Control Settings adminUserSettings.title=用户控制设置
adminUserSettings.header=Admin User Control Settings adminUserSettings.header=管理员用户控制设置
adminUserSettings.admin=Admin adminUserSettings.admin=管理员
adminUserSettings.user=User adminUserSettings.user=用户
adminUserSettings.addUser=Add New User adminUserSettings.addUser=添加新用户
adminUserSettings.roles=Roles adminUserSettings.roles=角色
adminUserSettings.role=Role adminUserSettings.role=角色
adminUserSettings.actions=Actions adminUserSettings.actions=操作
adminUserSettings.apiUser=Limited API User adminUserSettings.apiUser=有限 API 用户
adminUserSettings.webOnlyUser=Web Only User adminUserSettings.webOnlyUser=仅限 Web 用户
adminUserSettings.forceChange=Force user to change username/password on login adminUserSettings.forceChange=强制用户在登录时更改用户名/密码
adminUserSettings.submit=Save User adminUserSettings.submit=保存用户
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=您的本地托管一站式服务满足您的所有PDF需求。 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.title=PDF多功能工具
home.multiTool.desc=合并、旋转、重新排列和删除PDF页面 home.multiTool.desc=合并、旋转、重新排列和删除PDF页面
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side multiTool.tags=多工具,多操作,用户界面,点击拖动,前端,客户端
home.merge.title=合并 home.merge.title=合并
home.merge.desc=轻松合并多个PDF为一个。 home.merge.desc=轻松合并多个PDF为一个。
merge.tags=merge,Page operations,Back end,server side merge.tags=合并,页面操作,后端,服务器端
home.split.title=拆分 home.split.title=拆分
home.split.desc=将 PDF 拆分为多个文档。 home.split.desc=将 PDF 拆分为多个文档。
split.tags=Page operations,divide,Multi Page,cut,server side split.tags=页面操作,划分,多页面,剪切,服务器端
home.rotate.title=旋转 home.rotate.title=旋转
home.rotate.desc=旋转PDF。 home.rotate.desc=旋转PDF。
rotate.tags=server side rotate.tags=服务器端
home.imageToPdf.title=转换图像到PDF home.imageToPdf.title=转换图像到PDF
home.imageToPdf.desc=转换图像PNG, JPEG, GIFPDF。 home.imageToPdf.desc=图像PNGJPEGGIF转换为PDF。
imageToPdf.tags=conversion,img,jpg,picture,photo imageToPdf.tags=转换、图像、JPG、图片、照片
home.pdfToImage.title=转换PDF到图像 home.pdfToImage.title=转换PDF到图像
home.pdfToImage.desc=转换PDF图像PNG, JPEG, GIF home.pdfToImage.desc=PDF转换为图像PNGJPEGGIF
pdfToImage.tags=conversion,img,jpg,picture,photo pdfToImage.tags=转换、图像、JPG、图片、照片
home.pdfOrganiser.title=整理 home.pdfOrganiser.title=整理
home.pdfOrganiser.desc=按任顺序删除/重新排列页面。 home.pdfOrganiser.desc=按任顺序删除/重新排列页面。
pdfOrganiser.tags=duplex,even,odd,sort,move pdfOrganiser.tags=双面、偶数、奇数、排序、移动
home.addImage.title=在PDF中添加图片 home.addImage.title=在PDF中添加图片
home.addImage.desc=将图像添加到PDF的定位置 home.addImage.desc=将图像添加到PDF的定位置
addImage.tags=img,jpg,picture,photo addImage.tags=图像、JPG、图片、照片
home.watermark.title=添加水印 home.watermark.title=添加水印
home.watermark.desc=在PDF中添加一个自定义水印。 home.watermark.desc=在PDF中添加自定义水印。
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo watermark.tags=文本、重复、标签、自定义、版权、商标、图像、JPG、图片、照片
home.permissions.title=更改权限 home.permissions.title=更改权限
home.permissions.desc=变你的PDF文档的权限。 home.permissions.desc=改PDF文档的权限。
permissions.tags=read,write,edit,print permissions.tags=阅读、写入、编辑、打印
home.removePages.title=删除 home.removePages.title=删除
home.removePages.desc=你的PDF文档中删除不需要的页面。 home.removePages.desc=从PDF文档中删除不需要的页面。
removePages.tags=Remove pages,delete pages removePages.tags=删除页面、删除
home.addPassword.title=添加密码 home.addPassword.title=添加密码
home.addPassword.desc=用密码来加密你的PDF文档。 home.addPassword.desc=使用密码PDF文档进行加密
addPassword.tags=secure,security addPassword.tags=安全、密码、加密
home.removePassword.title=删除密码 home.removePassword.title=删除密码
home.removePassword.desc=你的PDF文档中移除密码保护。 home.removePassword.desc=从PDF文档中移除密码保护。
removePassword.tags=secure,Decrypt,security,unpassword,delete password removePassword.tags=安全、解密、密码、安全性、删除密码
home.compressPdfs.title=压缩 home.compressPdfs.title=压缩
home.compressPdfs.desc=压缩PDF文件以减少其文件大小。 home.compressPdfs.desc=压缩PDF文件以减文件大小。
compressPdfs.tags=squish,small,tiny compressPdfs.tags=压缩、小、微小
home.changeMetadata.title=更改元数据 home.changeMetadata.title=更改元数据
home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。 home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats changeMetadata.tags=标题、作者、日期、创建、时间、发布者、制作人、统计数据
home.fileToPDF.title=将文件转换为PDF文件 home.fileToPDF.title=将文件转换为PDF文件
home.fileToPDF.desc=将几乎所有文件转换为PDFDOCX、PNG、XLS、PPT、TXT等 home.fileToPDF.desc=将几乎所有文件转换为PDFDOCX、PNG、XLS、PPT、TXT等
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint fileToPDF.tags=转换、格式、文档、图片、幻灯片、文本、转换、办公室、文档、Word、Excel、PowerPoint
home.ocr.title=运行OCR/清理扫描 home.ocr.title=运行OCR/清理扫描
home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。 home.ocr.desc=清理和识别PDF中的图像文本,并将其转换为可编辑文本。
ocr.tags=recognition,text,image,scan,read,identify,detection,editable ocr.tags=识别、文本、图像、扫描、阅读、识别、检测、可编辑
home.extractImages.title=提取图像 home.extractImages.title=提取图像
home.extractImages.desc=从PDF中提取所有图像并将其保存到压缩包中。 home.extractImages.desc=从PDF中提取所有图像并保存到压缩包中。
extractImages.tags=picture,photo,save,archive,zip,capture,grab extractImages.tags=图片、照片、保存、归档、压缩包、截取、抓取
home.pdfToPDFA.title=PDF To PDF/A 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 pdfToPDFA.tags=归档、长期、标准、转换、存储、保存
home.PDFToWord.title=PDF to Word home.PDFToWord.title=PDFWord
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 PDFToWord.tags=docdocxodtword、转换、格式、办公、Microsoft、文档
home.PDFToPresentation.title=PDF To Presentation home.PDFToPresentation.title=PDF转演示文稿
home.PDFToPresentation.desc=将PDF转换演示文稿格式PPT、PPTX和ODP home.PDFToPresentation.desc=将PDF转换演示文稿格式PPT、PPTX和ODP
PDFToPresentation.tags=slides,show,office,microsoft PDFToPresentation.tags=幻灯片、展示、办公、Microsoft
home.PDFToText.title=PDF to RTF (Text) home.PDFToText.title=PDF转RTF文本
home.PDFToText.desc=将PDF转换为文本或RTF格式 home.PDFToText.desc=将PDF转换为文本或RTF格式
PDFToText.tags=richformat,richtextformat,rich text format PDFToText.tags=富文本格式、RTF、富文本格式
home.PDFToHTML.title=PDF To HTML home.PDFToHTML.title=PDFHTML
home.PDFToHTML.desc=将PDF转换为HTML格式 home.PDFToHTML.desc=将PDF转换为HTML格式
PDFToHTML.tags=web content,browser friendly PDFToHTML.tags=网页内容、浏览器友好
home.PDFToXML.title=PDF To XML home.PDFToXML.title=PDFXML
home.PDFToXML.desc=将PDF转换为XML格式 home.PDFToXML.desc=将PDF转换为XML格式
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert PDFToXML.tags=数据提取、结构化内容、互操作、转换
home.ScannerImageSplit.title=检测/分割扫描的照片 home.ScannerImageSplit.title=检测/分割扫描图像
home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片 home.ScannerImageSplit.desc=从一张照片PDF中分割出多张照片
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize ScannerImageSplit.tags=分离、自动检测、扫描、多张照片、整理
home.sign.title=\u6807\u5FD7 home.sign.title=标志
home.sign.desc=\u901A\u8FC7\u7ED8\u56FE\u3001\u6587\u672C\u6216\u56FE\u50CF\u5411 PDF \u6DFB\u52A0\u7B7E\u540D home.sign.desc=通过绘图、文字或图像向PDF添加签名
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature sign.tags=授权、缩写、手绘签名、文本签名、图像签名
home.flatten.title=\u5C55\u5E73 home.flatten.title=展平
home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355 home.flatten.desc=从PDF中删除所有互动元素和表单
flatten.tags=static,deactivate,non-interactive,streamline flatten.tags=静态、停用、非交互、简化
home.repair.title=\u4FEE\u590D home.repair.title=修复
home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF home.repair.desc=尝试修复损坏/损坏的PDF
repair.tags=fix,restore,correction,recover repair.tags=修复、恢复、纠正、恢复
home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875 home.removeBlanks.title=删除空白页
home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875 home.removeBlanks.desc=检测并删除文档中的空白页
removeBlanks.tags=cleanup,streamline,non-content,organize removeBlanks.tags=清理、简化、非内容、整理
home.compare.title=\u6BD4\u8F83 home.compare.title=比较
home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02 home.compare.desc=比较并显示两个PDF文档之间的差异
compare.tags=differentiate,contrast,changes,analysis compare.tags=区分、对比、更改、分析
home.certSign.title=Sign with Certificate home.certSign.title=使用证书签署
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) home.certSign.desc=使用证书/密钥PEM/P12对PDF进行签署
certSign.tags=authenticate,PEM,P12,official,encrypt certSign.tags=身份验证、PEMP12、官方、加密
home.pageLayout.title=Multi-Page Layout home.pageLayout.title=多页布局
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page home.pageLayout.desc=将PDF文档的多个页面合并成一页
pageLayout.tags=merge,composite,single-view,organize pageLayout.tags=合并、组合、单视图、整理
home.scalePages.title=Adjust page size/scale home.scalePages.title=调整页面尺寸/缩放
home.scalePages.desc=Change the size/scale of page and/or its contents. home.scalePages.desc=调整页面及/或其内容的尺寸/缩放
scalePages.tags=resize,modify,dimension,adapt scalePages.tags=调整大小、修改、尺寸、适应
home.pipeline.title=Pipeline (Advanced) home.pipeline.title=管道(高级版)
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts home.pipeline.desc=通过定义管道脚本在PDF上运行多个操作
pipeline.tags=automate,sequence,scripted,batch-process pipeline.tags=自动化、顺序、脚本化、批处理
home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.title=添加页码
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location home.add-page-numbers.desc=在文档的指定位置添加页码
add-page-numbers.tags=paginate,label,organize,index add-page-numbers.tags=分页、标签、整理、索引
home.auto-rename.title=Auto Rename PDF File home.auto-rename.title=自动重命名PDF文件
home.auto-rename.desc=Auto renames a PDF file based on its detected header home.auto-rename.desc=根据检测到的标题自动对PDF文件进行重命名
auto-rename.tags=auto-detect,header-based,organize,relabel auto-rename.tags=自动检测、基于标题、整理、重新标记
home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.title=调整颜色/对比度
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF home.adjust-contrast.desc=调整PDF的对比度、饱和度和亮度
adjust-contrast.tags=color-correction,tune,modify,enhance adjust-contrast.tags=颜色校正、调节、修改、增强
home.crop.title=Crop PDF home.crop.title=裁剪PDF
home.crop.desc=Crop a PDF to reduce its size (maintains text!) home.crop.desc=裁剪PDF以减小其文件大小保留文本
crop.tags=trim,shrink,edit,shape crop.tags=修剪、缩小、编辑、形状
home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.title=自动拆分页面
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code home.autoSplitPDF.desc=使用物理扫描页面分割器QR代码自动拆分扫描的PDF
autoSplitPDF.tags=QR-based,separate,scan-segment,organize autoSplitPDF.tags=基于QR码、分离、扫描分割、整理
home.sanitizePdf.title=Sanitize home.sanitizePdf.title=清理
home.sanitizePdf.desc=Remove scripts and other elements from PDF files home.sanitizePdf.desc=从PDF文件中删除脚本和其他元素
sanitizePdf.tags=clean,secure,safe,remove-threats sanitizePdf.tags=清理、安全、安全、删除威胁
home.URLToPDF.title=URL/Website To PDF home.URLToPDF.title=URL/网站转PDF
home.URLToPDF.desc=Converts any http(s)URL to PDF home.URLToPDF.desc=将任何http(s)URL转换为PDF
URLToPDF.tags=web-capture,save-page,web-to-doc,archive URLToPDF.tags=网页捕获、保存网页、网页转文档、归档
home.HTMLToPDF.title=HTML to PDF home.HTMLToPDF.title=HTMLPDF
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF home.HTMLToPDF.desc=将任何HTML文件或zip文件转换为PDF
HTMLToPDF.tags=markup,web-content,transformation,convert HTMLToPDF.tags=标记、网页内容、转换、转换
home.MarkdownToPDF.title=Markdown to PDF home.MarkdownToPDF.title=MarkdownPDF
home.MarkdownToPDF.desc=Converts any Markdown file to PDF home.MarkdownToPDF.desc=将任何Markdown文件转换为PDF
MarkdownToPDF.tags=markup,web-content,transformation,convert MarkdownToPDF.tags=标记、网页内容、转换、转换
home.getPdfInfo.title=Get ALL Info on PDF home.getPdfInfo.title=获取PDF的所有信息
home.getPdfInfo.desc=Grabs any and all information possible on PDFs home.getPdfInfo.desc=获取PDF的所有可能的信息
getPdfInfo.tags=infomation,data,stats,statistics getPdfInfo.tags=信息、数据、统计、统计数据
home.extractPage.title=Extract page(s) home.extractPage.title=提取页面
home.extractPage.desc=Extracts select pages from PDF home.extractPage.desc=从PDF中提取选定的页面
extractPage.tags=extract extractPage.tags=提取
home.PdfToSinglePage.title=PDF to Single Large Page home.PdfToSinglePage.title=PDF转单一大页
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page home.PdfToSinglePage.desc=将所有PDF页面合并为一个大的单页
PdfToSinglePage.tags=single page PdfToSinglePage.tags=单页
home.showJS.title=Show Javascript home.showJS.title=显示JavaScript
home.showJS.desc=Searches and displays any JS injected into a PDF home.showJS.desc=搜索并显示嵌入到PDF中的任何JavaScript代码
showJS.tags=JS showJS.tags=JavaScript
home.autoRedact.title=Auto Redact home.autoRedact.title=自动删除
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text home.autoRedact.desc=根据输入文本自动删除覆盖PDF中的文本
showJS.tags=JS 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
########################### ###########################
# # # #
@@ -337,156 +360,157 @@ showJS.tags=JS
# # # #
########################### ###########################
#login #login
login.title=Sign in login.title=登录
login.signin=Sign in login.signin=登录
login.rememberme=Remember me login.rememberme=记住我
login.invalid=Invalid username or password. login.invalid=用户名或密码无效。
login.locked=Your account has been locked. login.locked=您的账户已被锁定。
login.signinTitle=Please sign in login.signinTitle=请登录
#auto-redact #auto-redact
autoRedact.title=Auto Redact autoRedact.title=自动删除
autoRedact.header=Auto Redact autoRedact.header=自动删除
autoRedact.colorLabel=Colour autoRedact.colorLabel=颜色
autoRedact.textsToRedactLabel=Text to Redact (line-separated) autoRedact.textsToRedactLabel=要删除的文本(每行一个)
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret autoRedact.textsToRedactPlaceholder=例如:\n保密\n绝密
autoRedact.useRegexLabel=Use Regex autoRedact.useRegexLabel=使用正则表达式
autoRedact.wholeWordSearchLabel=Whole Word Search autoRedact.wholeWordSearchLabel=全字匹配
autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.customPaddingLabel=自定义额外间距
autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) autoRedact.convertPDFToImageLabel=将PDF转换为PDF-Image用于删除方框后面的文本
autoRedact.submitButton=Submit autoRedact.submitButton=提交
#showJS #showJS
showJS.title=Show Javascript showJS.title=显示 JavaScript
showJS.header=Show Javascript showJS.header=显示 JavaScript
showJS.downloadJS=Download Javascript showJS.downloadJS=下载 JavaScript
showJS.submit=Show showJS.submit=显示
#pdfToSinglePage #pdfToSinglePage
pdfToSinglePage.title=PDF To Single Page pdfToSinglePage.title=PDF转为单页
pdfToSinglePage.header=PDF To Single Page pdfToSinglePage.header=PDF转为单页
pdfToSinglePage.submit=Convert To Single Page pdfToSinglePage.submit=转为单页
#pageExtracter #pageExtracter
pageExtracter.title=Extract Pages pageExtracter.title=提取页面
pageExtracter.header=Extract Pages pageExtracter.header=提取页面
pageExtracter.submit=Extract pageExtracter.submit=提取
#getPdfInfo #getPdfInfo
getPdfInfo.title=Get Info on PDF getPdfInfo.title=获取PDF信息
getPdfInfo.header=Get Info on PDF getPdfInfo.header=获取PDF信息
getPdfInfo.submit=Get Info getPdfInfo.submit=获取信息
getPdfInfo.downloadJson=Download JSON getPdfInfo.downloadJson=下载JSON
#markdown-to-pdf #markdown-to-pdf
MarkdownToPDF.title=Markdown To PDF MarkdownToPDF.title=MarkdownPDF
MarkdownToPDF.header=Markdown To PDF MarkdownToPDF.header=MarkdownPDF
MarkdownToPDF.submit=Convert MarkdownToPDF.submit=转换
MarkdownToPDF.help=Work in progress MarkdownToPDF.help=正在努力中
MarkdownToPDF.credit=Uses WeasyPrint MarkdownToPDF.credit=使用WeasyPrint
#url-to-pdf #url-to-pdf
URLToPDF.title=URL To PDF URLToPDF.title=URLPDF
URLToPDF.header=URL To PDF URLToPDF.header=URLPDF
URLToPDF.submit=Convert URLToPDF.submit=转换
URLToPDF.credit=Uses WeasyPrint URLToPDF.credit=使用WeasyPrint
#html-to-pdf #html-to-pdf
HTMLToPDF.title=HTML To PDF HTMLToPDF.title=HTMLPDF
HTMLToPDF.header=HTML To PDF HTMLToPDF.header=HTMLPDF
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required HTMLToPDF.help=接受HTML文件和包含所需的html/css/images等的ZIP文件
HTMLToPDF.submit=Convert HTMLToPDF.submit=转换
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=使用WeasyPrint
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=清理PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=清理PDF文件
sanitizePDF.selectText.1=Remove JavaScript actions sanitizePDF.selectText.1=移除JavaScript操作
sanitizePDF.selectText.2=Remove embedded files sanitizePDF.selectText.2=移除嵌入的文件
sanitizePDF.selectText.3=Remove metadata sanitizePDF.selectText.3=移除元数据
sanitizePDF.selectText.4=Remove links sanitizePDF.selectText.4=移除链接
sanitizePDF.selectText.5=Remove fonts sanitizePDF.selectText.5=移除字体
sanitizePDF.submit=Sanitize PDF sanitizePDF.submit=清理PDF
#addPageNumbers #addPageNumbers
addPageNumbers.title=Add Page Numbers addPageNumbers.title=添加页码
addPageNumbers.header=Add Page Numbers addPageNumbers.header=添加页码
addPageNumbers.selectText.1=Select PDF file: addPageNumbers.selectText.1=选择PDF文件
addPageNumbers.selectText.2=Margin Size addPageNumbers.selectText.2=边距大小
addPageNumbers.selectText.3=Position addPageNumbers.selectText.3=位置
addPageNumbers.selectText.4=Starting Number addPageNumbers.selectText.4=起始页码
addPageNumbers.selectText.5=Pages to Number addPageNumbers.selectText.5=添加页码的页数
addPageNumbers.selectText.6=Custom Text addPageNumbers.selectText.6=自定义文本
addPageNumbers.customTextDesc=Custom Text addPageNumbers.customTextDesc=自定义文本
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc addPageNumbers.numberPagesDesc=要添加页码的页数默认为“所有”也可以接受1-5或2,5,9
addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} addPageNumbers.customNumberDesc=默认为{n},也可以接受“第{n}页/共{total}页”,“文本-{n}”,“{filename}-{n}
addPageNumbers.submit=Add Page Numbers addPageNumbers.submit=添加页码
#auto-rename #auto-rename
auto-rename.title=Auto Rename auto-rename.title=自动重命名
auto-rename.header=Auto Rename PDF auto-rename.header=自动重命名PDF
auto-rename.submit=Auto Rename auto-rename.submit=自动重命名
#adjustContrast #adjustContrast
adjustContrast.title=Adjust Contrast adjustContrast.title=调整对比度
adjustContrast.header=Adjust Contrast adjustContrast.header=调整对比度
adjustContrast.contrast=Contrast: adjustContrast.contrast=对比度:
adjustContrast.brightness=Brightness: adjustContrast.brightness=亮度:
adjustContrast.saturation=Saturation: adjustContrast.saturation=饱和度:
adjustContrast.download=Download adjustContrast.download=下载
#crop #crop
crop.title=Crop crop.title=裁剪
crop.header=Crop Image crop.header=裁剪图像
crop.submit=Submit crop.submit=提交
#autoSplitPDF #autoSplitPDF
autoSplitPDF.title=Auto Split PDF autoSplitPDF.title=自动拆分PDF
autoSplitPDF.header=Auto Split PDF autoSplitPDF.header=自动拆分PDF
autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. autoSplitPDF.description=打印、插入、扫描、上传,让我们自动分离您的文档。无需手动排序。
autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). autoSplitPDF.selectText.1=从下面打印一些分隔页(黑白打印即可)。
autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. autoSplitPDF.selectText.2=在文档之间插入分隔页,一次性扫描所有文档。
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.3=上传单个大型扫描的PDF文件让Stirling PDF处理剩下的事情。
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.selectText.4=分隔页会自动检测和删除,确保最终文档整洁。
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: autoSplitPDF.formPrompt=提交包含Stirling-PDF分隔页的PDF
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.duplexMode=双面模式(正反面扫描)
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload1=下载“自动拆分分隔页(最小化).pdf
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.dividerDownload2=下载“自动拆分分隔页(带指导说明).pdf
autoSplitPDF.submit=Submit autoSplitPDF.submit=提交
#pipeline #pipeline
pipeline.title=Pipeline pipeline.title=流水线
#pageLayout #pageLayout
pageLayout.title=Multi Page Layout pageLayout.title=多页布局
pageLayout.header=Multi Page Layout pageLayout.header=多页布局
pageLayout.pagesPerSheet=Pages per sheet: pageLayout.pagesPerSheet=每页的页面数:
pageLayout.submit=Submit pageLayout.addBorder=添加边框
pageLayout.submit=提交
#scalePages #scalePages
scalePages.title=Adjust page-scale scalePages.title=调整页面缩放比例
scalePages.header=Adjust page-scale scalePages.header=调整页面缩放比例
scalePages.pageSize=Size of a page of the document. scalePages.pageSize=文档页面的尺寸。
scalePages.scaleFactor=Zoom level (crop) of a page. scalePages.scaleFactor=页面的缩放级别(裁剪)。
scalePages.submit=Submit scalePages.submit=提交
#certSign #certSign
@@ -506,43 +530,43 @@ certSign.submit=签署 PDF
#removeBlanks #removeBlanks
removeBlanks.title=\u5220\u9664\u7A7A\u767D removeBlanks.title=删除空白
removeBlanks.header=\u5220\u9664\u7A7A\u767D\u9875 removeBlanks.header=删除空白页
removeBlanks.threshold=\u9608\u503C\uFF1A removeBlanks.threshold=阈值:
removeBlanks.thresholdDesc=\u786E\u5B9A\u767D\u8272\u50CF\u7D20\u5FC5\u987B\u6709\u591A\u767D\u7684\u9608\u503C removeBlanks.thresholdDesc=确定白色像素必须有多白的阈值
removeBlanks.whitePercent=\u767D\u8272\u767E\u5206\u6BD4\uFF08%\uFF09\uFF1A removeBlanks.whitePercent=白色百分比(%
removeBlanks.whitePercentDesc=\u5FC5\u987B\u4E3A\u767D\u8272\u624D\u80FD\u5220\u9664\u7684\u9875\u9762\u767E\u5206\u6BD4 removeBlanks.whitePercentDesc=必须为白色才能删除的页面百分比
removeBlanks.submit=\u5220\u9664\u7A7A\u767D removeBlanks.submit=删除空白
#compare #compare
compare.title=\u6BD4\u8F83 compare.title=比较
compare.header=\u6BD4\u8F83 PDF compare.header=比较 PDF
compare.document.1=\u6587\u6863 1 compare.document.1=文档 1
compare.document.2=\u6587\u6863 2 compare.document.2=文档 2
compare.submit=\u6BD4\u8F83 compare.submit=比较
#sign #sign
sign.title=\u7B7E\u540D sign.title=签名
sign.header=\u7B7E\u7F72 PDF sign.header=签署 PDF
sign.upload=\u4E0A\u4F20\u56FE\u7247 sign.upload=上传图片
sign.draw=\u7ED8\u5236\u7B7E\u540D sign.draw=绘制签名
sign.text=\u6587\u672C\u8F93\u5165 sign.text=文本输入
sign.clear=\u6E05\u9664 sign.clear=清除
sign.add=\u6DFB\u52A0 sign.add=添加
#repair #repair
repair.title=\u4FEE\u590D repair.title=修复
repair.header=\u4FEE\u590D PDF repair.header=修复 PDF
repair.submit=\u4FEE\u590D repair.submit=修复
#flatten #flatten
flatten.title=\u5C55\u5E73 flatten.title=展平
flatten.header=\u5C55\u5E73 PDF flatten.header=展平 PDF
flatten.submit=\u5C55\u5E73 flatten.submit=展平
#ScannerImageSplit #ScannerImageSplit
@@ -607,7 +631,7 @@ compress.submit=压缩
#Add image #Add image
addImage.title=添加图像 addImage.title=添加图像
addImage.header=添加图片到PDF (Work in progress) addImage.header=添加图片到PDF(正在进行中)
addImage.everyPage=每一页? addImage.everyPage=每一页?
addImage.upload=添加图片 addImage.upload=添加图片
addImage.submit=添加图片 addImage.submit=添加图片
@@ -616,8 +640,8 @@ addImage.submit=添加图片
#merge #merge
merge.title=合并 merge.title=合并
merge.header=合并多个PDF2个以上 merge.header=合并多个PDF2个以上
merge.sortByName=Sort by name merge.sortByName=按名称排序
merge.sortByDate=Sort by date merge.sortByDate=按日期排序
merge.submit=合并 merge.submit=合并
@@ -631,6 +655,9 @@ pdfOrganiser.submit=重新排列页面
multiTool.title=PDF多功能工具 multiTool.title=PDF多功能工具
multiTool.header=PDF多功能工具 multiTool.header=PDF多功能工具
#view pdf
viewPdf.title=View PDF
viewPdf.header=View PDF
#pageRemover #pageRemover
pageRemover.title=删除页面 pageRemover.title=删除页面
@@ -651,12 +678,12 @@ split.title=拆分PDF
split.header=拆分PDF split.header=拆分PDF
split.desc.1=选择希望进行分割的页数 split.desc.1=选择希望进行分割的页数
split.desc.2=如选择1,3,7-8将把一个10页的文件分割成6个独立的PDF split.desc.2=如选择1,3,7-8将把一个10页的文件分割成6个独立的PDF
split.desc.3=Document #1: Page 1 split.desc.3=文档 #1第1页
split.desc.4=Document #2: Page 2 and 3 split.desc.4=文档 #2第2页和第3页
split.desc.5=Document #3: Page 4, 5 and 6 split.desc.5=文档 #3第4页、第5页和第6页
split.desc.6=Document #4: Page 7 split.desc.6=文档 #4第7页
split.desc.7=Document #5: Page 8 split.desc.7=文档 #5第8页
split.desc.8=Document #6: Page 9 and 10 split.desc.8=文档 #6第9页和第10
split.splitPages=输入要分割的页面: split.splitPages=输入要分割的页面:
split.submit=拆分 split.submit=拆分
@@ -665,13 +692,10 @@ split.submit=拆分
imageToPDF.title=图片转PDF imageToPDF.title=图片转PDF
imageToPDF.header=图像转为PDF imageToPDF.header=图像转为PDF
imageToPDF.submit=转换 imageToPDF.submit=转换
########################## imageToPDF.selectLabel=图片适应选项
### TODO: Translate ### imageToPDF.fillPage=填充页面
########################## imageToPDF.fitDocumentToImage=适应图片大小
imageToPDF.selectLabel=Image Fit Options imageToPDF.maintainAspectRatio=保持纵横比例
imageToPDF.fillPage=Fill Page
imageToPDF.fitDocumentToImage=Fit Page to Image
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios
imageToPDF.selectText.2=自动旋转PDF imageToPDF.selectText.2=自动旋转PDF
imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用) imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用)
imageToPDF.selectText.4=合并成一个PDF文件 imageToPDF.selectText.4=合并成一个PDF文件
@@ -707,10 +731,10 @@ addPassword.selectText.9=防止填写表格
addPassword.selectText.10=防止修改 addPassword.selectText.10=防止修改
addPassword.selectText.11=防止修改注释 addPassword.selectText.11=防止修改注释
addPassword.selectText.12=防止打印 addPassword.selectText.12=防止打印
addPassword.selectText.13=防止打印不同的格<EFBFBD> addPassword.selectText.13=防止打印不同的格
addPassword.selectText.14=Owner Password addPassword.selectText.14=所有者密码
addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) addPassword.selectText.15=限制打开后对文档的操作(不被所有阅读器支持)
addPassword.selectText.16=Restricts the opening of the document itself<6C> addPassword.selectText.16=限制打开文档本身
addPassword.submit=加密 addPassword.submit=加密
@@ -721,11 +745,11 @@ watermark.selectText.1=选择要添加水印的PDF
watermark.selectText.2=水印文本: watermark.selectText.2=水印文本:
watermark.selectText.3=字体大小: watermark.selectText.3=字体大小:
watermark.selectText.4=旋转0-360 watermark.selectText.4=旋转0-360
watermark.selectText.5=widthSpacer水平方向上每个水印之间的空间 watermark.selectText.5=水平间距(每个水印之间的水平距离
watermark.selectText.6=heightSpacer(每个水印之间的垂直空间 watermark.selectText.6=垂直间距(每个水印之间的垂直距离
watermark.selectText.7=透明度0% - 100% watermark.selectText.7=透明度0% - 100%
watermark.selectText.8=Watermark Type: watermark.selectText.8=水印类型:
watermark.selectText.9=Watermark Image: watermark.selectText.9=水印图片:
watermark.submit=添加水印 watermark.submit=添加水印
@@ -775,8 +799,8 @@ changeMetadata.submit=更改
#pdfToPDFA #pdfToPDFA
pdfToPDFA.title=PDF To PDF/A pdfToPDFA.title=PDF转换为PDF/A
pdfToPDFA.header=PDF to PDF/A pdfToPDFA.header=PDF转换为PDF/A
pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换 pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换
pdfToPDFA.submit=转换 pdfToPDFA.submit=转换
@@ -790,7 +814,7 @@ PDFToWord.submit=转换
#PDFToPresentation #PDFToPresentation
PDFToPresentation.title=PDF To Presentation PDFToPresentation.title=PDF转换为演示文稿
PDFToPresentation.header=将PDF转为演示文稿 PDFToPresentation.header=将PDF转为演示文稿
PDFToPresentation.selectText.1=输出文件格式 PDFToPresentation.selectText.1=输出文件格式
PDFToPresentation.credit=该服务使用LibreOffice进行文件转换。 PDFToPresentation.credit=该服务使用LibreOffice进行文件转换。
@@ -817,3 +841,45 @@ PDFToXML.title=PDF To XML
PDFToXML.header=将PDF转换为XML PDFToXML.header=将PDF转换为XML
PDFToXML.credit=此服务使用LibreOffice进行文件转换。 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

View File

@@ -91,3 +91,26 @@ hr {
border-color: rgba(255, 255, 255, 0.6); /* semi-transparent white */ border-color: rgba(255, 255, 255, 0.6); /* semi-transparent white */
background-color: rgba(255, 255, 255, 0.6); /* for some browsers that might use background instead of border for <hr> */ background-color: rgba(255, 255, 255, 0.6); /* for some browsers that might use background instead of border for <hr> */
} }
#global-buttons-container input {
background-color: #323948;
caret-color: #ffffff;
color: #ffffff;
}
#global-buttons-container input::placeholder {
color: #ffffff;
}
#global-buttons-container input:disabled::-webkit-input-placeholder { /* WebKit browsers */
color: #6E6865;
}
#global-buttons-container input:disabled:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #6E6865;
}
#global-buttons-container input:disabled::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #6E6865;
}
#global-buttons-container input:disabled:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #6E6865;
}

View File

@@ -1,15 +1,22 @@
#searchBar { #searchBar {
background-image: url('/images/search.svg'); background-image: url('/images/search.svg');
background-position: 16px 16px; background-position: 16px 16px;
background-repeat: no-repeat; background-repeat: no-repeat;
width: 100%; width: 100%;
font-size: 16px; font-size: 16px;
margin-bottom: 12px; margin-bottom: 12px;
padding: 12px 20px 12px 40px; padding: 12px 20px 12px 40px;
border: 1px solid #ddd; 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 { .features-container {
@@ -25,10 +32,10 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; 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; transition: transform 0.3s, border 0.3s;
transform-origin: center center; transform-origin: center center;
outline: 2px solid transparent; outline: 2px solid transparent;
} }
.feature-card a { .feature-card a {

View File

@@ -2,4 +2,23 @@
body { body {
--body-background-color: 255, 255, 255; --body-background-color: 255, 255, 255;
--base-font-color: 33, 37, 41; --base-font-color: 33, 37, 41;
} }
#global-buttons-container input {
background-color: #ffffff;
/*caret-color: #ffffff;*/
/*color: #ffffff;*/
}
/*#global-buttons-container input:disabled::-webkit-input-placeholder { !* WebKit browsers *!*/
/* color: #98A0AB;*/
/*}*/
/*#global-buttons-container input:disabled:-moz-placeholder { !* Mozilla Firefox 4 to 18 *!*/
/* color: #98A0AB;*/
/*}*/
/*#global-buttons-container input:disabled::-moz-placeholder { !* Mozilla Firefox 19+ *!*/
/* color: #98A0AB;*/
/*}*/
/*#global-buttons-container input:disabled:-ms-input-placeholder { !* Internet Explorer 10+ *!*/
/* color: #98A0AB;*/
/*}*/

Binary file not shown.

Binary file not shown.

View 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

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-bg" viewBox="0 0 640 480">
<g fill-rule="evenodd" stroke-width="1pt">
<path fill="#d62612" d="M0 320h640v160H0z"/>
<path fill="#fff" d="M0 0h640v160H0z"/>
<path fill="#00966e" d="M0 160h640v160H0z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 283 B

View File

@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gr" viewBox="0 0 640 480">
<path fill="#0d5eaf" fill-rule="evenodd" d="M0 0h640v53.3H0z"/>
<path fill="#fff" fill-rule="evenodd" d="M0 53.3h640v53.4H0z"/>
<path fill="#0d5eaf" fill-rule="evenodd" d="M0 106.7h640V160H0z"/>
<path fill="#fff" fill-rule="evenodd" d="M0 160h640v53.3H0z"/>
<path fill="#0d5eaf" d="M0 0h266.7v266.7H0z"/>
<path fill="#0d5eaf" fill-rule="evenodd" d="M0 213.3h640v53.4H0z"/>
<path fill="#fff" fill-rule="evenodd" d="M0 266.7h640V320H0z"/>
<path fill="#0d5eaf" fill-rule="evenodd" d="M0 320h640v53.3H0z"/>
<path fill="#fff" fill-rule="evenodd" d="M0 373.3h640v53.4H0z"/>
<g fill="#fff" fill-rule="evenodd" stroke-width="1.3">
<path d="M106.7 0H160v266.7h-53.3z"/>
<path d="M0 106.7h266.7V160H0z"/>
</g>
<path fill="#0d5eaf" d="M0 426.7h640V480H0z"/>
</svg>

After

Width:  |  Height:  |  Size: 868 B

View 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

View 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

View 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

View File

@@ -1,90 +1,150 @@
var toggleCount = 0; var toggleCount = 0
var lastToggleTime = Date.now(); var lastToggleTime = Date.now()
var elements = { var elements = {
lightModeStyles: null, lightModeStyles: null,
darkModeStyles: null, darkModeStyles: null,
rainbowModeStyles: null, rainbowModeStyles: null,
darkModeIcon: null darkModeIcon: null,
}; searchBar: null,
formControls: null,
function getElements() { navbar: null,
elements.lightModeStyles = document.getElementById("light-mode-styles"); navIcons: null,
elements.darkModeStyles = document.getElementById("dark-mode-styles"); navDropdownMenus: null,
elements.rainbowModeStyles = document.getElementById("rainbow-mode-styles");
elements.darkModeIcon = document.getElementById("dark-mode-icon");
} }
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) { function setMode(mode) {
var event = new CustomEvent('modeChanged', { detail: mode }); var event = new CustomEvent("modeChanged", { detail: mode });
document.dispatchEvent(event); document.dispatchEvent(event);
elements.lightModeStyles.disabled = mode !== "off";
elements.darkModeStyles.disabled = mode !== "on"; if (elements && elements.lightModeStyles) {
elements.rainbowModeStyles.disabled = mode !== "rainbow"; elements.lightModeStyles.disabled = mode !== "off";
var jumbotron = document.getElementById('jumbotron'); }
if (mode === "on") { if (elements && elements.darkModeStyles) {
elements.darkModeIcon.src = "moon.svg"; elements.darkModeStyles.disabled = mode !== "on";
// Add the table-dark class to tables for dark mode }
var tables = document.querySelectorAll('.table'); if (elements && elements.rainbowModeStyles) {
tables.forEach(table => { elements.rainbowModeStyles.disabled = mode !== "rainbow";
table.classList.add('table-dark'); }
});
if(jumbotron) { var jumbotron = document.getElementById("jumbotron");
jumbotron.classList.add('bg-dark');
jumbotron.classList.remove('bg-light'); if (mode === "on") {
} if (elements && elements.darkModeIcon) {
} else if (mode === "off") { elements.darkModeIcon.src = "moon.svg";
elements.darkModeIcon.src = "sun.svg"; }
// Remove the table-dark class for light mode if (elements && elements.searchBar) {
var tables = document.querySelectorAll('.table-dark'); elements.searchBar.classList.add("dark-mode-search");
tables.forEach(table => { }
table.classList.remove('table-dark'); if (elements && elements.formControls) {
}); elements.formControls.forEach(input => input.classList.add("bg-dark", "text-white"));
if(jumbotron){ }
console.log(mode) if (elements && elements.navbar) {
jumbotron.classList.remove('bg-dark'); elements.navbar.forEach(navElement => {
jumbotron.classList.add('bg-light'); navElement.classList.remove("navbar-light", "bg-light");
} navElement.classList.add("navbar-dark", "bg-dark");
} else if (mode === "rainbow") { });
elements.darkModeIcon.src = "rainbow.svg"; }
} 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() { function toggleDarkMode() {
var currentTime = Date.now(); var currentTime = Date.now()
if (currentTime - lastToggleTime < 1000) { if (currentTime - lastToggleTime < 1000) {
toggleCount++; toggleCount++
} else { } else {
toggleCount = 1; toggleCount = 1
} }
lastToggleTime = currentTime; lastToggleTime = currentTime
if (toggleCount >= 18) { if (toggleCount >= 18) {
localStorage.setItem("dark-mode", "rainbow"); localStorage.setItem("dark-mode", "rainbow")
setMode("rainbow"); setMode("rainbow")
} else if (localStorage.getItem("dark-mode") == "on") { } else if (localStorage.getItem("dark-mode") == "on") {
localStorage.setItem("dark-mode", "off"); localStorage.setItem("dark-mode", "off")
setMode("off"); setMode("off")
} else { } else {
localStorage.setItem("dark-mode", "on"); localStorage.setItem("dark-mode", "on")
setMode("on"); setMode("on")
} }
} }
document.addEventListener("DOMContentLoaded", function() { document.addEventListener("DOMContentLoaded", function () {
getElements(); getElements()
var currentMode = localStorage.getItem("dark-mode"); var currentMode = localStorage.getItem("dark-mode")
if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") { if (currentMode === "on" || currentMode === "off" || currentMode === "rainbow") {
setMode(currentMode); setMode(currentMode)
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) { } else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
setMode("on"); setMode("on")
} else { } else {
setMode("off"); 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();
});
});

View File

@@ -16,26 +16,40 @@ function compareVersions(version1, version2) {
return 0; 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() { async function checkForUpdate() {
const latestVersion = await getLatestReleaseVersion(); // Initialize the update button as hidden
console.log("latestVersion=" + latestVersion) var updateBtn = document.getElementById("update-btn");
console.log("currentVersion=" + currentVersion) if (updateBtn !== null) {
console.log("compareVersions(latestVersion, currentVersion) > 0)=" + compareVersions(latestVersion, currentVersion)) updateBtn.style.display = "none";
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")
} }
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();
});

View File

@@ -55,6 +55,17 @@ class PdfActionsManager {
deletePageButtonCallback(e) { deletePageButtonCallback(e) {
var imgContainer = this.getPageContainer(e.target); var imgContainer = this.getPageContainer(e.target);
this.pagesContainer.removeChild(imgContainer); this.pagesContainer.removeChild(imgContainer);
if (this.pagesContainer.childElementCount === 0) {
const filenameInput = document.getElementById('filename-input');
const filenameParagraph = document.getElementById('filename');
const downloadBtn = document.getElementById('export-button');
filenameInput.disabled = true;
filenameInput.value = "";
filenameParagraph.innerText = "";
downloadBtn.disabled = true;
}
}; };
insertFileButtonCallback(e) { insertFileButtonCallback(e) {

View File

@@ -3,17 +3,21 @@ class PdfContainer {
pagesContainer; pagesContainer;
pagesContainerWrapper; pagesContainerWrapper;
pdfAdapters; pdfAdapters;
downloadLink;
constructor(id, wrapperId, pdfAdapters) { constructor(id, wrapperId, pdfAdapters) {
this.fileName = null;
this.pagesContainer = document.getElementById(id) this.pagesContainer = document.getElementById(id)
this.pagesContainerWrapper = document.getElementById(wrapperId); this.pagesContainerWrapper = document.getElementById(wrapperId);
this.downloadLink = null;
this.movePageTo = this.movePageTo.bind(this); this.movePageTo = this.movePageTo.bind(this);
this.addPdfs = this.addPdfs.bind(this); this.addPdfs = this.addPdfs.bind(this);
this.addPdfsFromFiles = this.addPdfsFromFiles.bind(this); this.addPdfsFromFiles = this.addPdfsFromFiles.bind(this);
this.rotateElement = this.rotateElement.bind(this); this.rotateElement = this.rotateElement.bind(this);
this.rotateAll = this.rotateAll.bind(this); this.rotateAll = this.rotateAll.bind(this);
this.exportPdf = this.exportPdf.bind(this); this.exportPdf = this.exportPdf.bind(this);
this.updateFilename = this.updateFilename.bind(this);
this.setDownloadAttribute = this.setDownloadAttribute.bind(this);
this.preventIllegalChars = this.preventIllegalChars.bind(this);
this.pdfAdapters = pdfAdapters; this.pdfAdapters = pdfAdapters;
@@ -28,6 +32,15 @@ class PdfContainer {
window.addPdfs = this.addPdfs; window.addPdfs = this.addPdfs;
window.exportPdf = this.exportPdf; window.exportPdf = this.exportPdf;
window.rotateAll = this.rotateAll; window.rotateAll = this.rotateAll;
const filenameInput = document.getElementById('filename-input');
const downloadBtn = document.getElementById('export-button');
filenameInput.onkeyup = this.updateFilename;
filenameInput.onkeydown = this.preventIllegalChars;
filenameInput.disabled = true;
filenameInput.innerText = "";
downloadBtn.disabled = true;
} }
movePageTo(startElement, endElement, scrollTo = false) { movePageTo(startElement, endElement, scrollTo = false) {
@@ -60,6 +73,29 @@ class PdfContainer {
input.setAttribute("accept", "application/pdf"); input.setAttribute("accept", "application/pdf");
input.onchange = async(e) => { input.onchange = async(e) => {
const files = e.target.files; const files = e.target.files;
if (files.length > 0) {
const filenameInput = document.getElementById('filename-input');
const pagesContainer = document.getElementById('pages-container');
const downloadBtn = document.getElementById('export-button');
filenameInput.disabled = false;
if (pagesContainer.childElementCount === 0) {
filenameInput.value = "";
this.filename = null;
downloadBtn.disabled = true;
} else {
this.filename = filenameInput.value;
}
if (this.filename === null || this.filename === undefined) {
filenameInput.value = files[0].name;
} else {
filenameInput.value = this.filename;
}
}
this.addPdfsFromFiles(files, nextSiblingElement); this.addPdfsFromFiles(files, nextSiblingElement);
} }
@@ -192,6 +228,27 @@ class PdfContainer {
const url = URL.createObjectURL(pdfBlob); const url = URL.createObjectURL(pdfBlob);
const downloadOption = localStorage.getItem('downloadOption'); const downloadOption = localStorage.getItem('downloadOption');
const filenameInput = document.getElementById('filename-input');
let inputArr = filenameInput.value.split('.');
if (inputArr !== null && inputArr !== undefined && inputArr.length > 0) {
inputArr = inputArr.filter(n => n); // remove all empty strings, nulls or undefined
if (inputArr.length > 1) {
inputArr.pop(); // remove right part after last dot
}
filenameInput.value = inputArr.join('');
this.filename = filenameInput.value;
}
if (!filenameInput.value.includes('.pdf')) {
filenameInput.value = filenameInput.value + '.pdf';
this.filename = filenameInput.value;
}
if (downloadOption === 'sameWindow') { if (downloadOption === 'sameWindow') {
// Open the file in the same window // Open the file in the same window
window.location.href = url; window.location.href = url;
@@ -200,12 +257,45 @@ class PdfContainer {
window.open(url, '_blank'); window.open(url, '_blank');
} else { } else {
// Download the file // Download the file
const downloadLink = document.createElement('a'); this.downloadLink = document.createElement('a');
downloadLink.href = url; this.downloadLink.id = 'download-link';
downloadLink.download = this.fileName ? this.fileName : 'managed.pdf'; this.downloadLink.href = url;
downloadLink.click(); // downloadLink.download = this.fileName ? this.fileName : 'managed.pdf';
// downloadLink.download = this.fileName;
this.downloadLink.setAttribute('download', this.filename ? this.fileName : 'managed.pdf');
this.downloadLink.setAttribute('target', '_blank');
this.downloadLink.onclick = this.setDownloadAttribute;
this.downloadLink.click();
} }
} }
setDownloadAttribute() {
this.downloadLink.setAttribute("download", this.filename ? this.filename : 'managed.pdf');
}
updateFilename() {
const filenameInput = document.getElementById('filename-input');
const downloadBtn = document.getElementById('export-button');
if (filenameInput.value === "") {
downloadBtn.disabled = true;
return;
}
downloadBtn.disabled = false;
this.filename = filenameInput.value;
}
preventIllegalChars(e) {
// const filenameInput = document.getElementById('filename-input');
//
// filenameInput.value = filenameInput.value.replace('.pdf', '');
//
// // prevent .
// if (filenameInput.value.includes('.')) {
// filenameInput.value.replace('.','');
// }
}
} }
export default PdfContainer; export default PdfContainer;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More