diff --git a/.gitignore b/.gitignore index 0a5cd198..661ca292 100644 --- a/.gitignore +++ b/.gitignore @@ -1,115 +1,122 @@ - - -### Eclipse ### -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders -.classpath -.project -version.properties - -# Gradle -.gradle -.lock - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# CDT- autotools -.autotools - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Annotation Processing -.apt_generated/ -.apt_generated_test/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -# Uncomment this line if you wish to ignore the project description file. -# Typically, this file would be tracked if it contains build/dependency configurations: -#.project - -### Eclipse Patch ### -# Spring Boot Tooling -.sts4-cache/ - -### Git ### -# Created by git for backups. To disable backups in Git: -# $ git config --global mergetool.keepBackup false -*.orig - -# Created by git when using merge tools for conflicts -*.BACKUP.* -*.BASE.* -*.LOCAL.* -*.REMOTE.* -*_BACKUP_*.txt -*_BASE_*.txt -*_LOCAL_*.txt -*_REMOTE_*.txt - -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -/build - + + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders +.classpath +.project +version.properties +pipeline/ + +#### Stirling-PDF Files ### +customFiles/ +config/ +watchedFolders/ + + +# Gradle +.gradle +.lock + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Git ### +# Created by git for backups. To disable backups in Git: +# $ git config --global mergetool.keepBackup false +*.orig + +# Created by git when using merge tools for conflicts +*.BACKUP.* +*.BASE.* +*.LOCAL.* +*.REMOTE.* +*_BACKUP_*.txt +*_BASE_*.txt +*_LOCAL_*.txt +*_REMOTE_*.txt + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +/build + /.vscode \ No newline at end of file diff --git a/Dockerfile-lite b/Dockerfile-lite index d3968a2a..eb92e487 100644 --- a/Dockerfile-lite +++ b/Dockerfile-lite @@ -10,6 +10,12 @@ RUN apt-get update && \ unoconv && \ rm -rf /var/lib/apt/lists/* +#Install fonts +RUN mkdir /usr/share/fonts/opentype/noto/ +COPY src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/ +COPY src/main/resources/static/fonts/*.otf /usr/share/fonts/opentype/noto/ +RUN fc-cache -f -v + # Copy the application JAR file COPY build/libs/*.jar app.jar diff --git a/Endpoint-groups.md b/Endpoint-groups.md index 6692a9a2..e6401396 100644 --- a/Endpoint-groups.md +++ b/Endpoint-groups.md @@ -1,35 +1,41 @@ -| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript | -|---------------------|---------|---------|----------|-------|------|--------|--------|-------------|----------|----------|------------| -| merge-pdfs | ✔️ | | | | | | | | | ✔️ | | -| multi-page-layout | ✔️ | | | | | | | | | ✔️ | | -| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ | -| remove-pages | ✔️ | | | | | | | | | ✔️ | | -| rotate-pdf | ✔️ | | | | | | | | | ✔️ | | -| scale-pages | ✔️ | | | | | | | | | ✔️ | | -| split-pdfs | ✔️ | | | | | | | | | ✔️ | | -| file-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | -| img-to-pdf | | ✔️ | | | | | | | | ✔️ | | -| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-img | | ✔️ | | | | | | | | ✔️ | | -| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | | -| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | | -| pdf-to-xml | | ✔️ | | | ✔️ | | | ✔️ | | | | -| xlsx-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | -| add-password | | | ✔️ | | | | | | | ✔️ | | -| add-watermark | | | ✔️ | | | | | | | ✔️ | | -| cert-sign | | | ✔️ | | | | | | | ✔️ | | -| change-permissions | | | ✔️ | | | | | | | ✔️ | | -| remove-password | | | ✔️ | | | | | | | ✔️ | | -| add-image | | | | ✔️ | | | | | | ✔️ | | -| change-metadata | | | | ✔️ | | | | | | ✔️ | | -| compare | | | | ✔️ | | | | | | | ✔️ | -| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | -| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | -| extract-images | | | | ✔️ | | | | | | ✔️ | | -| flatten | | | | ✔️ | | | | | | | | -| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | -| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | -| repair | | | | ✔️ | ✔️ | | | ✔️ | | | | -| sign | | | | ✔️ | | | | | | | ✔️ | +| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript | +|---------------------|---------|---------|----------|-------|------|--------|--------|-------------|----------|----------|------------| +| adjust-contrast | ✔️ | | | | | | | | | | ✔️ | +| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | | +| crop | ✔️ | | | | | | | | | ✔️ | | +| merge-pdfs | ✔️ | | | | | | | | | ✔️ | | +| multi-page-layout | ✔️ | | | | | | | | | ✔️ | | +| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ | +| remove-pages | ✔️ | | | | | | | | | ✔️ | | +| rotate-pdf | ✔️ | | | | | | | | | ✔️ | | +| scale-pages | ✔️ | | | | | | | | | ✔️ | | +| split-pdfs | ✔️ | | | | | | | | | ✔️ | | +| file-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | +| img-to-pdf | | ✔️ | | | | | | | | ✔️ | | +| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-img | | ✔️ | | | | | | | | ✔️ | | +| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | | +| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | | +| pdf-to-xml | | ✔️ | | | ✔️ | | | ✔️ | | | | +| xlsx-to-pdf | | ✔️ | | | ✔️ | | | ✔️ | | | | +| add-password | | | ✔️ | | | | | | | ✔️ | | +| add-watermark | | | ✔️ | | | | | | | ✔️ | | +| cert-sign | | | ✔️ | | | | | | | ✔️ | | +| change-permissions | | | ✔️ | | | | | | | ✔️ | | +| remove-password | | | ✔️ | | | | | | | ✔️ | | +| sanitize-pdf | | | ✔️ | | | | | | | ✔️ | | +| add-image | | | | ✔️ | | | | | | ✔️ | | +| add-page-numbers | | | | ✔️ | | | | | | ✔️ | | +| auto-rename | | | | ✔️ | | | | | | ✔️ | | +| change-metadata | | | | ✔️ | | | | | | ✔️ | | +| compare | | | | ✔️ | | | | | | | ✔️ | +| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | +| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | +| extract-images | | | | ✔️ | | | | | | ✔️ | | +| flatten | | | | ✔️ | | | | | | | | +| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | | +| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | | +| repair | | | | ✔️ | ✔️ | | | ✔️ | | | | +| sign | | | | ✔️ | | | | | | | ✔️ | \ No newline at end of file diff --git a/README.md b/README.md index 0398bf23..b2606c7d 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ docker run -d \ Can also add these for customisation but are not required + -v /location/of/extraConfigs:/configs \ + -v /location/of/customFiles:/customFiles \ -e APP_HOME_NAME="Stirling PDF" \ -e APP_HOME_DESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs." \ -e APP_NAVBAR_NAME="Stirling PDF" \ @@ -104,6 +106,7 @@ services: volumes: - /location/of/trainingData:/usr/share/tesseract-ocr/4.00/tessdata #Required for extra OCR languages # - /location/of/extraConfigs:/configs +# - /location/of/customFiles:/customFiles/ # environment: # APP_LOCALE: en_GB # APP_HOME_NAME: Stirling PDF @@ -161,10 +164,11 @@ Using the same method you can also change - Change root URI for Stirling-PDF ie change server.com/ to server.com/pdf-app by running APP_ROOT_PATH as pdf-app - Disable and remove endpoints and functionality from Stirling-PDF. Currently the endpoints ENDPOINTS_TO_REMOVE and GROUPS_TO_REMOVE can include comma seperated 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) - Change the max file size allowed through the server with the environment variable MAX_FILE_SIZE. default 2000MB +- Customise static files such as app logo by placing files in the /customFiles/static/ directory. Example to customise 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 ## API For those wanting to use Stirling-PDFs backend API to link with their own custom scripting to edit PDFs you can view all existing API documentation -[here](https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation +[here](https://app.swaggerhub.com/apis-docs/Frooodle/Stirling-PDF/) or navigate to /swagger-ui/index.html of your stirling-pdf instance for your versions documentation (Or by following the API button in your settings of Stirling-PDF) ## FAQ diff --git a/Version-groups.md b/Version-groups.md index 244284c7..557cadb2 100644 --- a/Version-groups.md +++ b/Version-groups.md @@ -1,48 +1,54 @@ -|Technology | Ultra-Lite | Lite | Full | -|----------------|:----------:|:----:|:----:| -| Java | ✔️ | ✔️ | ✔️ | -| JavaScript | ✔️ | ✔️ | ✔️ | -| Libre | | ✔️ | ✔️ | -| Python | | | ✔️ | -| OpenCV | | | ✔️ | -| OCRmyPDF | | | ✔️ | - - - - - -Operation | Ultra-Lite | Lite | Full ---------------------|------------|------|----- -add-password | ✔️ | ✔️ | ✔️ -add-watermark | ✔️ | ✔️ | ✔️ -cert-sign | ✔️ | ✔️ | ✔️ -change-metadata | ✔️ | ✔️ | ✔️ -change-permissions | ✔️ | ✔️ | ✔️ -compare | ✔️ | ✔️ | ✔️ -extract-images | ✔️ | ✔️ | ✔️ -flatten | ✔️ | ✔️ | ✔️ -img-to-pdf | ✔️ | ✔️ | ✔️ -merge-pdfs | ✔️ | ✔️ | ✔️ -multi-page-layout | ✔️ | ✔️ | ✔️ -pdf-organizer | ✔️ | ✔️ | ✔️ -pdf-to-img | ✔️ | ✔️ | ✔️ -remove-pages | ✔️ | ✔️ | ✔️ -remove-password | ✔️ | ✔️ | ✔️ -rotate-pdf | ✔️ | ✔️ | ✔️ -scale-pages | ✔️ | ✔️ | ✔️ -sign | ✔️ | ✔️ | ✔️ -split-pdfs | ✔️ | ✔️ | ✔️ -add-image | ✔️ | ✔️ | ✔️ -file-to-pdf | | ✔️ | ✔️ -pdf-to-html | | ✔️ | ✔️ -pdf-to-presentation | | ✔️ | ✔️ -pdf-to-text | | ✔️ | ✔️ -pdf-to-word | | ✔️ | ✔️ -pdf-to-xml | | ✔️ | ✔️ -repair | | ✔️ | ✔️ -xlsx-to-pdf | | ✔️ | ✔️ -compress-pdf | | | ✔️ -extract-image-scans | | | ✔️ -ocr-pdf | | | ✔️ -pdf-to-pdfa | | | ✔️ -remove-blanks | | | ✔️ +|Technology | Ultra-Lite | Lite | Full | +|----------------|:----------:|:----:|:----:| +| Java | ✔️ | ✔️ | ✔️ | +| JavaScript | ✔️ | ✔️ | ✔️ | +| Libre | | ✔️ | ✔️ | +| Python | | | ✔️ | +| OpenCV | | | ✔️ | +| OCRmyPDF | | | ✔️ | + + + + + +Operation | Ultra-Lite | Lite | Full +--------------------|------------|------|----- +add-page-numbers | ✔️ | ✔️ | ✔️ +add-password | ✔️ | ✔️ | ✔️ +add-watermark | ✔️ | ✔️ | ✔️ +adjust-contrast | ✔️ | ✔️ | ✔️ +auto-split-pdf | ✔️ | ✔️ | ✔️ +auto-rename | ✔️ | ✔️ | ✔️ +cert-sign | ✔️ | ✔️ | ✔️ +crop | ✔️ | ✔️ | ✔️ +change-metadata | ✔️ | ✔️ | ✔️ +change-permissions | ✔️ | ✔️ | ✔️ +compare | ✔️ | ✔️ | ✔️ +extract-images | ✔️ | ✔️ | ✔️ +flatten | ✔️ | ✔️ | ✔️ +img-to-pdf | ✔️ | ✔️ | ✔️ +merge-pdfs | ✔️ | ✔️ | ✔️ +multi-page-layout | ✔️ | ✔️ | ✔️ +pdf-organizer | ✔️ | ✔️ | ✔️ +pdf-to-img | ✔️ | ✔️ | ✔️ +remove-pages | ✔️ | ✔️ | ✔️ +remove-password | ✔️ | ✔️ | ✔️ +rotate-pdf | ✔️ | ✔️ | ✔️ +sanitize-pdf | ✔️ | ✔️ | ✔️ +scale-pages | ✔️ | ✔️ | ✔️ +sign | ✔️ | ✔️ | ✔️ +split-pdfs | ✔️ | ✔️ | ✔️ +add-image | ✔️ | ✔️ | ✔️ +file-to-pdf | | ✔️ | ✔️ +pdf-to-html | | ✔️ | ✔️ +pdf-to-presentation | | ✔️ | ✔️ +pdf-to-text | | ✔️ | ✔️ +pdf-to-word | | ✔️ | ✔️ +pdf-to-xml | | ✔️ | ✔️ +repair | | ✔️ | ✔️ +xlsx-to-pdf | | ✔️ | ✔️ +compress-pdf | | | ✔️ +extract-image-scans | | | ✔️ +ocr-pdf | | | ✔️ +pdf-to-pdfa | | | ✔️ +remove-blanks | | | ✔️ diff --git a/build.gradle b/build.gradle index 9d69535c..0afc366b 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'stirling.software' -version = '0.10.3' +version = '0.11.0' sourceCompatibility = '17' repositories { @@ -62,6 +62,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-core' + implementation group: 'com.google.zxing', name: 'core', version: '3.5.1' + developmentOnly("org.springframework.boot:spring-boot-devtools") } diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index 02f66c22..f9512295 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -1,63 +1,76 @@ -package stirling.software.SPDF; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.core.env.Environment; -import org.springframework.scheduling.annotation.EnableScheduling; - -import jakarta.annotation.PostConstruct; - -@SpringBootApplication -//@EnableScheduling -public class SPdfApplication { - - @Autowired - private Environment env; - - @PostConstruct - public void init() { - // Check if the BROWSER_OPEN environment variable is set to true - String browserOpenEnv = env.getProperty("BROWSER_OPEN"); - boolean browserOpen = browserOpenEnv != null && browserOpenEnv.equalsIgnoreCase("true"); - - if (browserOpen) { - try { - String port = env.getProperty("local.server.port"); - if(port == null || port.length() == 0) { - port="8080"; - } - String url = "http://localhost:" + port; - - String os = System.getProperty("os.name").toLowerCase(); - Runtime rt = Runtime.getRuntime(); - if (os.contains("win")) { - // For Windows - rt.exec("rundll32 url.dll,FileProtocolHandler " + url); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - public static void main(String[] args) { - SpringApplication.run(SPdfApplication.class, args); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.out.println("Stirling-PDF Started."); - - String port = System.getProperty("local.server.port"); - if(port == null || port.length() == 0) { - port="8080"; - } - String url = "http://localhost:" + port; - System.out.println("Navigate to " + url); - } - - +package stirling.software.SPDF; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.EnableScheduling; + +import jakarta.annotation.PostConstruct; +import stirling.software.SPDF.utils.GeneralUtils; + +@SpringBootApplication +//@EnableScheduling +public class SPdfApplication { + + @Autowired + private Environment env; + + @PostConstruct + public void init() { + // Check if the BROWSER_OPEN environment variable is set to true + String browserOpenEnv = env.getProperty("BROWSER_OPEN"); + boolean browserOpen = browserOpenEnv != null && browserOpenEnv.equalsIgnoreCase("true"); + + if (browserOpen) { + try { + String port = env.getProperty("local.server.port"); + if(port == null || port.length() == 0) { + port="8080"; + } + String url = "http://localhost:" + port; + + String os = System.getProperty("os.name").toLowerCase(); + Runtime rt = Runtime.getRuntime(); + if (os.contains("win")) { + // For Windows + rt.exec("rundll32 url.dll,FileProtocolHandler " + url); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + SpringApplication.run(SPdfApplication.class, args); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + GeneralUtils.createDir("customFiles/static/"); + GeneralUtils.createDir("customFiles/templates/"); + GeneralUtils.createDir("config"); + + + + System.out.println("Stirling-PDF Started."); + + String port = System.getProperty("local.server.port"); + if(port == null || port.length() == 0) { + port="8080"; + } + String url = "http://localhost:" + port; + System.out.println("Navigate to " + url); + } + + } \ No newline at end of file diff --git a/src/main/java/stirling/software/SPDF/config/Beans.java b/src/main/java/stirling/software/SPDF/config/Beans.java index 7a963ba4..f8ff302e 100644 --- a/src/main/java/stirling/software/SPDF/config/Beans.java +++ b/src/main/java/stirling/software/SPDF/config/Beans.java @@ -1,60 +1,60 @@ -package stirling.software.SPDF.config; - -import java.util.Locale; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.LocaleResolver; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; -import org.springframework.web.servlet.i18n.SessionLocaleResolver; - -@Configuration -public class Beans implements WebMvcConfigurer { - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(localeChangeInterceptor()); - registry.addInterceptor(new CleanUrlInterceptor()); - } - - @Bean - public LocaleChangeInterceptor localeChangeInterceptor() { - LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); - lci.setParamName("lang"); - return lci; - } - - @Bean - public LocaleResolver localeResolver() { - SessionLocaleResolver slr = new SessionLocaleResolver(); - - String appLocaleEnv = System.getProperty("APP_LOCALE"); - if (appLocaleEnv == null) - appLocaleEnv = System.getenv("APP_LOCALE"); - Locale defaultLocale = Locale.UK; // Fallback to UK locale if environment variable is not set - - if (appLocaleEnv != null && !appLocaleEnv.isEmpty()) { - Locale tempLocale = Locale.forLanguageTag(appLocaleEnv); - String tempLanguageTag = tempLocale.toLanguageTag(); - - if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { - defaultLocale = tempLocale; - } else { - tempLocale = Locale.forLanguageTag(appLocaleEnv.replace("_","-")); - tempLanguageTag = tempLocale.toLanguageTag(); - - if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { - defaultLocale = tempLocale; - } else { - System.err.println("Invalid APP_LOCALE environment variable value. Falling back to default Locale.UK."); - } - } - } - - slr.setDefaultLocale(defaultLocale); - return slr; - } - -} +package stirling.software.SPDF.config; + +import java.util.Locale; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; + +@Configuration +public class Beans implements WebMvcConfigurer { + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(localeChangeInterceptor()); + registry.addInterceptor(new CleanUrlInterceptor()); + } + + @Bean + public LocaleChangeInterceptor localeChangeInterceptor() { + LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); + lci.setParamName("lang"); + return lci; + } + + @Bean + public LocaleResolver localeResolver() { + SessionLocaleResolver slr = new SessionLocaleResolver(); + + String appLocaleEnv = System.getProperty("APP_LOCALE"); + if (appLocaleEnv == null) + appLocaleEnv = System.getenv("APP_LOCALE"); + Locale defaultLocale = Locale.UK; // Fallback to UK locale if environment variable is not set + + if (appLocaleEnv != null && !appLocaleEnv.isEmpty()) { + Locale tempLocale = Locale.forLanguageTag(appLocaleEnv); + String tempLanguageTag = tempLocale.toLanguageTag(); + + if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { + defaultLocale = tempLocale; + } else { + tempLocale = Locale.forLanguageTag(appLocaleEnv.replace("_","-")); + tempLanguageTag = tempLocale.toLanguageTag(); + + if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { + defaultLocale = tempLocale; + } else { + System.err.println("Invalid APP_LOCALE environment variable value. Falling back to default Locale.UK."); + } + } + } + + slr.setDefaultLocale(defaultLocale); + return slr; + } + +} diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index 92580b43..24f2822d 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -1,200 +1,208 @@ -package stirling.software.SPDF.config; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -@Service -public class EndpointConfiguration { - private static final Logger logger = LoggerFactory.getLogger(EndpointConfiguration.class); - private Map endpointStatuses = new ConcurrentHashMap<>(); - private Map> endpointGroups = new ConcurrentHashMap<>(); - - public EndpointConfiguration() { - init(); - processEnvironmentConfigs(); - } - - public void enableEndpoint(String endpoint) { - endpointStatuses.put(endpoint, true); - } - - public void disableEndpoint(String endpoint) { - if(!endpointStatuses.containsKey(endpoint) || endpointStatuses.get(endpoint) != false) { - logger.info("Disabling {}", endpoint); - endpointStatuses.put(endpoint, false); - } - } - - public boolean isEndpointEnabled(String endpoint) { - if (endpoint.startsWith("/")) { - endpoint = endpoint.substring(1); - } - return endpointStatuses.getOrDefault(endpoint, true); - } - - public void addEndpointToGroup(String group, String endpoint) { - endpointGroups.computeIfAbsent(group, k -> new HashSet<>()).add(endpoint); - } - - public void enableGroup(String group) { - Set endpoints = endpointGroups.get(group); - if (endpoints != null) { - for (String endpoint : endpoints) { - enableEndpoint(endpoint); - } - } - } - - public void disableGroup(String group) { - Set endpoints = endpointGroups.get(group); - if (endpoints != null) { - for (String endpoint : endpoints) { - disableEndpoint(endpoint); - } - } - } - - public void init() { - // Adding endpoints to "PageOps" group - addEndpointToGroup("PageOps", "remove-pages"); - addEndpointToGroup("PageOps", "merge-pdfs"); - addEndpointToGroup("PageOps", "split-pdfs"); - addEndpointToGroup("PageOps", "pdf-organizer"); - addEndpointToGroup("PageOps", "rotate-pdf"); - addEndpointToGroup("PageOps", "multi-page-layout"); - addEndpointToGroup("PageOps", "scale-pages"); - - // Adding endpoints to "Convert" group - addEndpointToGroup("Convert", "pdf-to-img"); - addEndpointToGroup("Convert", "img-to-pdf"); - addEndpointToGroup("Convert", "pdf-to-pdfa"); - addEndpointToGroup("Convert", "file-to-pdf"); - addEndpointToGroup("Convert", "xlsx-to-pdf"); - addEndpointToGroup("Convert", "pdf-to-word"); - addEndpointToGroup("Convert", "pdf-to-presentation"); - addEndpointToGroup("Convert", "pdf-to-text"); - addEndpointToGroup("Convert", "pdf-to-html"); - addEndpointToGroup("Convert", "pdf-to-xml"); - - // Adding endpoints to "Security" group - addEndpointToGroup("Security", "add-password"); - addEndpointToGroup("Security", "remove-password"); - addEndpointToGroup("Security", "change-permissions"); - addEndpointToGroup("Security", "add-watermark"); - addEndpointToGroup("Security", "cert-sign"); - - - - // Adding endpoints to "Other" group - addEndpointToGroup("Other", "ocr-pdf"); - addEndpointToGroup("Other", "add-image"); - addEndpointToGroup("Other", "compress-pdf"); - addEndpointToGroup("Other", "extract-images"); - addEndpointToGroup("Other", "change-metadata"); - addEndpointToGroup("Other", "extract-image-scans"); - addEndpointToGroup("Other", "sign"); - addEndpointToGroup("Other", "flatten"); - addEndpointToGroup("Other", "repair"); - addEndpointToGroup("Other", "remove-blanks"); - addEndpointToGroup("Other", "compare"); - - - - - - - - //CLI - addEndpointToGroup("CLI", "compress-pdf"); - addEndpointToGroup("CLI", "extract-image-scans"); - addEndpointToGroup("CLI", "remove-blanks"); - addEndpointToGroup("CLI", "repair"); - addEndpointToGroup("CLI", "pdf-to-pdfa"); - addEndpointToGroup("CLI", "file-to-pdf"); - addEndpointToGroup("CLI", "xlsx-to-pdf"); - addEndpointToGroup("CLI", "pdf-to-word"); - addEndpointToGroup("CLI", "pdf-to-presentation"); - addEndpointToGroup("CLI", "pdf-to-text"); - addEndpointToGroup("CLI", "pdf-to-html"); - addEndpointToGroup("CLI", "pdf-to-xml"); - addEndpointToGroup("CLI", "ocr-pdf"); - - //python - addEndpointToGroup("Python", "extract-image-scans"); - addEndpointToGroup("Python", "remove-blanks"); - - - - //openCV - addEndpointToGroup("OpenCV", "extract-image-scans"); - addEndpointToGroup("OpenCV", "remove-blanks"); - - //LibreOffice - addEndpointToGroup("LibreOffice", "repair"); - addEndpointToGroup("LibreOffice", "file-to-pdf"); - addEndpointToGroup("LibreOffice", "xlsx-to-pdf"); - addEndpointToGroup("LibreOffice", "pdf-to-word"); - addEndpointToGroup("LibreOffice", "pdf-to-presentation"); - addEndpointToGroup("LibreOffice", "pdf-to-text"); - addEndpointToGroup("LibreOffice", "pdf-to-html"); - addEndpointToGroup("LibreOffice", "pdf-to-xml"); - - - //OCRmyPDF - addEndpointToGroup("OCRmyPDF", "compress-pdf"); - addEndpointToGroup("OCRmyPDF", "pdf-to-pdfa"); - addEndpointToGroup("OCRmyPDF", "ocr-pdf"); - - //Java - addEndpointToGroup("Java", "merge-pdfs"); - addEndpointToGroup("Java", "remove-pages"); - addEndpointToGroup("Java", "split-pdfs"); - addEndpointToGroup("Java", "pdf-organizer"); - addEndpointToGroup("Java", "rotate-pdf"); - addEndpointToGroup("Java", "pdf-to-img"); - addEndpointToGroup("Java", "img-to-pdf"); - addEndpointToGroup("Java", "add-password"); - addEndpointToGroup("Java", "remove-password"); - addEndpointToGroup("Java", "change-permissions"); - addEndpointToGroup("Java", "add-watermark"); - addEndpointToGroup("Java", "add-image"); - addEndpointToGroup("Java", "extract-images"); - addEndpointToGroup("Java", "change-metadata"); - addEndpointToGroup("Java", "cert-sign"); - addEndpointToGroup("Java", "multi-page-layout"); - addEndpointToGroup("Java", "scale-pages"); - - - //Javascript - addEndpointToGroup("Javascript", "pdf-organizer"); - addEndpointToGroup("Javascript", "sign"); - addEndpointToGroup("Javascript", "compare"); - - } - - private void processEnvironmentConfigs() { - String endpointsToRemove = System.getenv("ENDPOINTS_TO_REMOVE"); - String groupsToRemove = System.getenv("GROUPS_TO_REMOVE"); - - if (endpointsToRemove != null) { - String[] endpoints = endpointsToRemove.split(","); - for (String endpoint : endpoints) { - disableEndpoint(endpoint.trim()); - } - } - - if (groupsToRemove != null) { - String[] groups = groupsToRemove.split(","); - for (String group : groups) { - disableGroup(group.trim()); - } - } - } - -} - +package stirling.software.SPDF.config; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +@Service +public class EndpointConfiguration { + private static final Logger logger = LoggerFactory.getLogger(EndpointConfiguration.class); + private Map endpointStatuses = new ConcurrentHashMap<>(); + private Map> endpointGroups = new ConcurrentHashMap<>(); + + public EndpointConfiguration() { + init(); + processEnvironmentConfigs(); + } + + public void enableEndpoint(String endpoint) { + endpointStatuses.put(endpoint, true); + } + + public void disableEndpoint(String endpoint) { + if(!endpointStatuses.containsKey(endpoint) || endpointStatuses.get(endpoint) != false) { + logger.info("Disabling {}", endpoint); + endpointStatuses.put(endpoint, false); + } + } + + public boolean isEndpointEnabled(String endpoint) { + if (endpoint.startsWith("/")) { + endpoint = endpoint.substring(1); + } + return endpointStatuses.getOrDefault(endpoint, true); + } + + public void addEndpointToGroup(String group, String endpoint) { + endpointGroups.computeIfAbsent(group, k -> new HashSet<>()).add(endpoint); + } + + public void enableGroup(String group) { + Set endpoints = endpointGroups.get(group); + if (endpoints != null) { + for (String endpoint : endpoints) { + enableEndpoint(endpoint); + } + } + } + + public void disableGroup(String group) { + Set endpoints = endpointGroups.get(group); + if (endpoints != null) { + for (String endpoint : endpoints) { + disableEndpoint(endpoint); + } + } + } + + public void init() { + // Adding endpoints to "PageOps" group + addEndpointToGroup("PageOps", "remove-pages"); + addEndpointToGroup("PageOps", "merge-pdfs"); + addEndpointToGroup("PageOps", "split-pdfs"); + addEndpointToGroup("PageOps", "pdf-organizer"); + addEndpointToGroup("PageOps", "rotate-pdf"); + addEndpointToGroup("PageOps", "multi-page-layout"); + addEndpointToGroup("PageOps", "scale-pages"); + addEndpointToGroup("PageOps", "adjust-contrast"); + addEndpointToGroup("PageOps", "crop"); + addEndpointToGroup("PageOps", "auto-split-pdf"); + + // Adding endpoints to "Convert" group + addEndpointToGroup("Convert", "pdf-to-img"); + addEndpointToGroup("Convert", "img-to-pdf"); + addEndpointToGroup("Convert", "pdf-to-pdfa"); + addEndpointToGroup("Convert", "file-to-pdf"); + addEndpointToGroup("Convert", "xlsx-to-pdf"); + addEndpointToGroup("Convert", "pdf-to-word"); + addEndpointToGroup("Convert", "pdf-to-presentation"); + addEndpointToGroup("Convert", "pdf-to-text"); + addEndpointToGroup("Convert", "pdf-to-html"); + addEndpointToGroup("Convert", "pdf-to-xml"); + + // Adding endpoints to "Security" group + addEndpointToGroup("Security", "add-password"); + addEndpointToGroup("Security", "remove-password"); + addEndpointToGroup("Security", "change-permissions"); + addEndpointToGroup("Security", "add-watermark"); + addEndpointToGroup("Security", "cert-sign"); + addEndpointToGroup("Security", "sanitize-pdf"); + + + // Adding endpoints to "Other" group + addEndpointToGroup("Other", "ocr-pdf"); + addEndpointToGroup("Other", "add-image"); + addEndpointToGroup("Other", "compress-pdf"); + addEndpointToGroup("Other", "extract-images"); + addEndpointToGroup("Other", "change-metadata"); + addEndpointToGroup("Other", "extract-image-scans"); + addEndpointToGroup("Other", "sign"); + addEndpointToGroup("Other", "flatten"); + addEndpointToGroup("Other", "repair"); + addEndpointToGroup("Other", "remove-blanks"); + addEndpointToGroup("Other", "compare"); + addEndpointToGroup("Other", "add-page-numbers"); + addEndpointToGroup("Other", "auto-rename"); + + + + + //CLI + addEndpointToGroup("CLI", "compress-pdf"); + addEndpointToGroup("CLI", "extract-image-scans"); + addEndpointToGroup("CLI", "remove-blanks"); + addEndpointToGroup("CLI", "repair"); + addEndpointToGroup("CLI", "pdf-to-pdfa"); + addEndpointToGroup("CLI", "file-to-pdf"); + addEndpointToGroup("CLI", "xlsx-to-pdf"); + addEndpointToGroup("CLI", "pdf-to-word"); + addEndpointToGroup("CLI", "pdf-to-presentation"); + addEndpointToGroup("CLI", "pdf-to-text"); + addEndpointToGroup("CLI", "pdf-to-html"); + addEndpointToGroup("CLI", "pdf-to-xml"); + addEndpointToGroup("CLI", "ocr-pdf"); + + //python + addEndpointToGroup("Python", "extract-image-scans"); + addEndpointToGroup("Python", "remove-blanks"); + + + + //openCV + addEndpointToGroup("OpenCV", "extract-image-scans"); + addEndpointToGroup("OpenCV", "remove-blanks"); + + //LibreOffice + addEndpointToGroup("LibreOffice", "repair"); + addEndpointToGroup("LibreOffice", "file-to-pdf"); + addEndpointToGroup("LibreOffice", "xlsx-to-pdf"); + addEndpointToGroup("LibreOffice", "pdf-to-word"); + addEndpointToGroup("LibreOffice", "pdf-to-presentation"); + addEndpointToGroup("LibreOffice", "pdf-to-text"); + addEndpointToGroup("LibreOffice", "pdf-to-html"); + addEndpointToGroup("LibreOffice", "pdf-to-xml"); + + + //OCRmyPDF + addEndpointToGroup("OCRmyPDF", "compress-pdf"); + addEndpointToGroup("OCRmyPDF", "pdf-to-pdfa"); + addEndpointToGroup("OCRmyPDF", "ocr-pdf"); + + //Java + addEndpointToGroup("Java", "merge-pdfs"); + addEndpointToGroup("Java", "remove-pages"); + addEndpointToGroup("Java", "split-pdfs"); + addEndpointToGroup("Java", "pdf-organizer"); + addEndpointToGroup("Java", "rotate-pdf"); + addEndpointToGroup("Java", "pdf-to-img"); + addEndpointToGroup("Java", "img-to-pdf"); + addEndpointToGroup("Java", "add-password"); + addEndpointToGroup("Java", "remove-password"); + addEndpointToGroup("Java", "change-permissions"); + addEndpointToGroup("Java", "add-watermark"); + addEndpointToGroup("Java", "add-image"); + addEndpointToGroup("Java", "extract-images"); + addEndpointToGroup("Java", "change-metadata"); + addEndpointToGroup("Java", "cert-sign"); + addEndpointToGroup("Java", "multi-page-layout"); + addEndpointToGroup("Java", "scale-pages"); + addEndpointToGroup("Java", "add-page-numbers"); + addEndpointToGroup("Java", "auto-rename"); + addEndpointToGroup("Java", "auto-split-pdf"); + addEndpointToGroup("Java", "sanitize-pdf"); + addEndpointToGroup("Java", "crop"); + + //Javascript + addEndpointToGroup("Javascript", "pdf-organizer"); + addEndpointToGroup("Javascript", "sign"); + addEndpointToGroup("Javascript", "compare"); + addEndpointToGroup("Javascript", "adjust-contrast"); + + + } + + private void processEnvironmentConfigs() { + String endpointsToRemove = System.getenv("ENDPOINTS_TO_REMOVE"); + String groupsToRemove = System.getenv("GROUPS_TO_REMOVE"); + + if (endpointsToRemove != null) { + String[] endpoints = endpointsToRemove.split(","); + for (String endpoint : endpoints) { + disableEndpoint(endpoint.trim()); + } + } + + if (groupsToRemove != null) { + String[] groups = groupsToRemove.split(","); + for (String group : groups) { + disableGroup(group.trim()); + } + } + } + +} + diff --git a/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java b/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java index 610b11c0..10a88e97 100644 --- a/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java +++ b/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java @@ -3,6 +3,7 @@ package stirling.software.SPDF.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @@ -15,4 +16,12 @@ public class WebMvcConfig implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(endpointInterceptor); } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + // Handler for external static resources + registry.addResourceHandler("/**") + .addResourceLocations("file:customFiles/static/", "classpath:/static/") + .setCachePeriod(0); // Optional: disable caching + } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/CropController.java b/src/main/java/stirling/software/SPDF/controller/api/CropController.java new file mode 100644 index 00000000..e56c1b40 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/CropController.java @@ -0,0 +1,132 @@ +package stirling.software.SPDF.controller.api; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.utils.GeneralUtils; +import stirling.software.SPDF.utils.WebResponseUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.itextpdf.kernel.geom.PageSize; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.kernel.pdf.canvas.parser.EventType; +import com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor; +import com.itextpdf.kernel.pdf.canvas.parser.data.IEventData; +import com.itextpdf.kernel.pdf.canvas.parser.data.TextRenderInfo; +import com.itextpdf.kernel.pdf.canvas.parser.listener.IEventListener; +import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; + +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.utils.WebResponseUtils; + +@RestController +@Tag(name = "General", description = "General APIs") +public class CropController { + + private static final Logger logger = LoggerFactory.getLogger(CropController.class); + + + @PostMapping(value = "/crop", consumes = "multipart/form-data") + @Operation(summary = "Crops a PDF document", description = "This operation takes an input PDF file and crops it according to the given coordinates. Input:PDF Output:PDF Type:SISO") + public ResponseEntity cropPdf( + @Parameter(description = "The input PDF file", required = true) @RequestParam("file") MultipartFile file, + @Parameter(description = "The x-coordinate of the top-left corner of the crop area", required = true, schema = @Schema(type = "number")) @RequestParam("x") float x, + @Parameter(description = "The y-coordinate of the top-left corner of the crop area", required = true, schema = @Schema(type = "number")) @RequestParam("y") float y, + @Parameter(description = "The width of the crop area", required = true, schema = @Schema(type = "number")) @RequestParam("width") float width, + @Parameter(description = "The height of the crop area", required = true, schema = @Schema(type = "number")) @RequestParam("height") float height) throws IOException { + byte[] bytes = file.getBytes(); + System.out.println("x=" + x + ", " + "y=" + y + ", " + "width=" + width + ", " +"height=" + height ); + PdfReader reader = new PdfReader(new ByteArrayInputStream(bytes)); + PdfDocument pdfDoc = new PdfDocument(reader); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PdfWriter writer = new PdfWriter(baos); + PdfDocument outputPdf = new PdfDocument(writer); + + int totalPages = pdfDoc.getNumberOfPages(); + + for (int i = 1; i <= totalPages; i++) { + PdfPage page = outputPdf.addNewPage(new PageSize(width, height)); + PdfCanvas pdfCanvas = new PdfCanvas(page); + + PdfFormXObject formXObject = pdfDoc.getPage(i).copyAsFormXObject(outputPdf); + + // Save the graphics state, apply the transformations, add the object, and then + // restore the graphics state + pdfCanvas.saveState(); + pdfCanvas.rectangle(x, y, width, height); + pdfCanvas.clip(); + pdfCanvas.addXObject(formXObject, -x, -y); + pdfCanvas.restoreState(); + } + + + outputPdf.close(); + byte[] pdfContent = baos.toByteArray(); + pdfDoc.close(); + return WebResponseUtils.bytesToWebResponse(pdfContent, + file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_cropped.pdf"); + } + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java b/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java index 420902cf..e3b4434a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java @@ -52,11 +52,11 @@ public class ScalePagesController { @Operation(summary = "Change the size of a PDF page/document", description = "This operation takes an input PDF file and the size to scale the pages to in the output PDF file. Input:PDF Output:PDF Type:SISO") public ResponseEntity scalePages( @Parameter(description = "The input PDF file", required = true) @RequestParam("fileInput") MultipartFile file, - @Parameter(description = "The scale of pages in the output PDF. Acceptable values are A0-A10, B0-B9, LETTER, TABLOID, LEDGER, LEGAL, EXECUTIVE.", required = true, schema = @Schema(type = "String", allowableValues = { + @Parameter(description = "The scale of pages in the output PDF. Acceptable values are A0-A10, B0-B9, LETTER, TABLOID, LEDGER, LEGAL, EXECUTIVE.", required = true, schema = @Schema(type = "string", allowableValues = { "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "LETTER", "TABLOID", "LEDGER", "LEGAL", "EXECUTIVE" })) @RequestParam("pageSize") String targetPageSize, - @Parameter(description = "The scale of the content on the pages of the output PDF. Acceptable values are floats.", required = true, schema = @Schema(type = "float")) @RequestParam("scaleFactor") float scaleFactor) + @Parameter(description = "The scale of the content on the pages of the output PDF. Acceptable values are floats.", required = true, schema = @Schema(type = "integer")) @RequestParam("scaleFactor") float scaleFactor) throws IOException { Map sizeMap = new HashMap<>(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java b/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java index 13732ba3..3409e1d3 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java @@ -1,162 +1,202 @@ -package stirling.software.SPDF.controller.api.filters; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; - -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import stirling.software.SPDF.utils.PdfUtils; -import stirling.software.SPDF.utils.ProcessExecutor; -import stirling.software.SPDF.utils.WebResponseUtils; - -@RestController -@Tag(name = "Filter", description = "Filter APIs") -public class FilterController { - - @PostMapping(consumes = "multipart/form-data", value = "/contains-text") - @Operation(summary = "Checks if a PDF contains set text, returns true if does", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean containsText( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to be converted to a PDF/A file", required = true) MultipartFile inputFile, - @Parameter(description = "The text to check for", required = true) String text, - @Parameter(description = "The page number to check for text on accepts 'All', ranges like '1-4'", required = false) String pageNumber) - throws IOException, InterruptedException { - PDDocument pdfDocument = PDDocument.load(inputFile.getInputStream()); - return PdfUtils.hasText(pdfDocument, pageNumber); - } - - @PostMapping(consumes = "multipart/form-data", value = "/contains-image") - @Operation(summary = "Checks if a PDF contains an image", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean containsImage( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to be converted to a PDF/A file", required = true) MultipartFile inputFile, - @Parameter(description = "The page number to check for image on accepts 'All', ranges like '1-4'", required = false) String pageNumber) - throws IOException, InterruptedException { - PDDocument pdfDocument = PDDocument.load(inputFile.getInputStream()); - return PdfUtils.hasImagesOnPage(null); - } - - @PostMapping(consumes = "multipart/form-data", value = "/page-count") - @Operation(summary = "Checks if a PDF is greater, less or equal to a setPageCount", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean pageCount( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, - @Parameter(description = "Page Count", required = true) String pageCount, - @Parameter(description = "Comparison type, accepts Greater, Equal, Less than", required = false) String comparator) - throws IOException, InterruptedException { - // Load the PDF - PDDocument document = PDDocument.load(inputFile.getInputStream()); - int actualPageCount = document.getNumberOfPages(); - - // Perform the comparison - switch (comparator) { - case "Greater": - return actualPageCount > Integer.parseInt(pageCount); - case "Equal": - return actualPageCount == Integer.parseInt(pageCount); - case "Less": - return actualPageCount < Integer.parseInt(pageCount); - default: - throw new IllegalArgumentException("Invalid comparator: " + comparator); - } - } - - @PostMapping(consumes = "multipart/form-data", value = "/page-size") - @Operation(summary = "Checks if a PDF is of a certain size", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean pageSize( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, - @Parameter(description = "Standard Page Size", required = true) String standardPageSize, - @Parameter(description = "Comparison type, accepts Greater, Equal, Less than", required = false) String comparator) - throws IOException, InterruptedException { - - // Load the PDF - PDDocument document = PDDocument.load(inputFile.getInputStream()); - - PDPage firstPage = document.getPage(0); - PDRectangle actualPageSize = firstPage.getMediaBox(); - - // Calculate the area of the actual page size - float actualArea = actualPageSize.getWidth() * actualPageSize.getHeight(); - - // Get the standard size and calculate its area - PDRectangle standardSize = PdfUtils.textToPageSize(standardPageSize); - float standardArea = standardSize.getWidth() * standardSize.getHeight(); - - // Perform the comparison - switch (comparator) { - case "Greater": - return actualArea > standardArea; - case "Equal": - return actualArea == standardArea; - case "Less": - return actualArea < standardArea; - default: - throw new IllegalArgumentException("Invalid comparator: " + comparator); - } - } - - - @PostMapping(consumes = "multipart/form-data", value = "/file-size") - @Operation(summary = "Checks if a PDF is a set file size", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean fileSize( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, - @Parameter(description = "File Size", required = true) String fileSize, - @Parameter(description = "Comparison type, accepts Greater, Equal, Less than", required = false) String comparator) - throws IOException, InterruptedException { - - // Get the file size - long actualFileSize = inputFile.getSize(); - - // Perform the comparison - switch (comparator) { - case "Greater": - return actualFileSize > Long.parseLong(fileSize); - case "Equal": - return actualFileSize == Long.parseLong(fileSize); - case "Less": - return actualFileSize < Long.parseLong(fileSize); - default: - throw new IllegalArgumentException("Invalid comparator: " + comparator); - } - } - - - @PostMapping(consumes = "multipart/form-data", value = "/page-rotation") - @Operation(summary = "Checks if a PDF is of a certain rotation", description = "Input:PDF Output:Boolean Type:SISO") - public Boolean pageRotation( - @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, - @Parameter(description = "Rotation in degrees", required = true) int rotation, - @Parameter(description = "Comparison type, accepts Greater, Equal, Less than", required = false) String comparator) - throws IOException, InterruptedException { - - // Load the PDF - PDDocument document = PDDocument.load(inputFile.getInputStream()); - - // Get the rotation of the first page - PDPage firstPage = document.getPage(0); - int actualRotation = firstPage.getRotation(); - - // Perform the comparison - switch (comparator) { - case "Greater": - return actualRotation > rotation; - case "Equal": - return actualRotation == rotation; - case "Less": - return actualRotation < rotation; - default: - throw new IllegalArgumentException("Invalid comparator: " + comparator); - } - } - -} +package stirling.software.SPDF.controller.api.filters; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.common.PDRectangle; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.utils.PdfUtils; +import stirling.software.SPDF.utils.ProcessExecutor; +import stirling.software.SPDF.utils.WebResponseUtils; +import io.swagger.v3.oas.annotations.media.Schema; + +@RestController +@Tag(name = "Filter", description = "Filter APIs") +public class FilterController { + + @PostMapping(consumes = "multipart/form-data", value = "/filter-contains-text") + @Operation(summary = "Checks if a PDF contains set text, returns true if does", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity containsText( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to be converted to a PDF/A file", required = true) MultipartFile inputFile, + @Parameter(description = "The text to check for", required = true) String text, + @Parameter(description = "The page number to check for text on accepts 'All', ranges like '1-4'", required = false) String pageNumber) + throws IOException, InterruptedException { + PDDocument pdfDocument = PDDocument.load(inputFile.getInputStream()); + if (PdfUtils.hasText(pdfDocument, pageNumber, text)) + return WebResponseUtils.pdfDocToWebResponse(pdfDocument, inputFile.getOriginalFilename()); + return null; + } + + // TODO + @PostMapping(consumes = "multipart/form-data", value = "/filter-contains-image") + @Operation(summary = "Checks if a PDF contains an image", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity containsImage( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to be converted to a PDF/A file", required = true) MultipartFile inputFile, + @Parameter(description = "The page number to check for image on accepts 'All', ranges like '1-4'", required = false) String pageNumber) + throws IOException, InterruptedException { + PDDocument pdfDocument = PDDocument.load(inputFile.getInputStream()); + if (PdfUtils.hasImages(pdfDocument, pageNumber)) + return WebResponseUtils.pdfDocToWebResponse(pdfDocument, inputFile.getOriginalFilename()); + return null; + } + + @PostMapping(consumes = "multipart/form-data", value = "/filter-page-count") + @Operation(summary = "Checks if a PDF is greater, less or equal to a setPageCount", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity pageCount( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, + @Parameter(description = "Page Count", required = true) String pageCount, + @Parameter(description = "Comparison type", schema = @Schema(description = "The comparison type, accepts Greater, Equal, Less than", allowableValues = { + "Greater", "Equal", "Less" })) String comparator) + throws IOException, InterruptedException { + // Load the PDF + PDDocument document = PDDocument.load(inputFile.getInputStream()); + int actualPageCount = document.getNumberOfPages(); + + boolean valid = false; + // Perform the comparison + switch (comparator) { + case "Greater": + valid = actualPageCount > Integer.parseInt(pageCount); + break; + case "Equal": + valid = actualPageCount == Integer.parseInt(pageCount); + break; + case "Less": + valid = actualPageCount < Integer.parseInt(pageCount); + break; + default: + throw new IllegalArgumentException("Invalid comparator: " + comparator); + } + + if (valid) + return WebResponseUtils.multiPartFileToWebResponse(inputFile); + return null; + } + + @PostMapping(consumes = "multipart/form-data", value = "/filter-page-size") + @Operation(summary = "Checks if a PDF is of a certain size", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity pageSize( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, + @Parameter(description = "Standard Page Size", required = true) String standardPageSize, + @Parameter(description = "Comparison type", schema = @Schema(description = "The comparison type, accepts Greater, Equal, Less than", allowableValues = { + "Greater", "Equal", "Less" })) String comparator) + throws IOException, InterruptedException { + + // Load the PDF + PDDocument document = PDDocument.load(inputFile.getInputStream()); + + PDPage firstPage = document.getPage(0); + PDRectangle actualPageSize = firstPage.getMediaBox(); + + // Calculate the area of the actual page size + float actualArea = actualPageSize.getWidth() * actualPageSize.getHeight(); + + // Get the standard size and calculate its area + PDRectangle standardSize = PdfUtils.textToPageSize(standardPageSize); + float standardArea = standardSize.getWidth() * standardSize.getHeight(); + + boolean valid = false; + // Perform the comparison + switch (comparator) { + case "Greater": + valid = actualArea > standardArea; + break; + case "Equal": + valid = actualArea == standardArea; + break; + case "Less": + valid = actualArea < standardArea; + break; + default: + throw new IllegalArgumentException("Invalid comparator: " + comparator); + } + + if (valid) + return WebResponseUtils.multiPartFileToWebResponse(inputFile); + return null; + } + + @PostMapping(consumes = "multipart/form-data", value = "/filter-file-size") + @Operation(summary = "Checks if a PDF is a set file size", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity fileSize( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, + @Parameter(description = "File Size", required = true) String fileSize, + @Parameter(description = "Comparison type", schema = @Schema(description = "The comparison type, accepts Greater, Equal, Less than", allowableValues = { + "Greater", "Equal", "Less" })) String comparator) + throws IOException, InterruptedException { + + // Get the file size + long actualFileSize = inputFile.getSize(); + + boolean valid = false; + // Perform the comparison + switch (comparator) { + case "Greater": + valid = actualFileSize > Long.parseLong(fileSize); + break; + case "Equal": + valid = actualFileSize == Long.parseLong(fileSize); + break; + case "Less": + valid = actualFileSize < Long.parseLong(fileSize); + break; + default: + throw new IllegalArgumentException("Invalid comparator: " + comparator); + } + + if (valid) + return WebResponseUtils.multiPartFileToWebResponse(inputFile); + return null; + } + + @PostMapping(consumes = "multipart/form-data", value = "/filter-page-rotation") + @Operation(summary = "Checks if a PDF is of a certain rotation", description = "Input:PDF Output:Boolean Type:SISO") + public ResponseEntity pageRotation( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file", required = true) MultipartFile inputFile, + @Parameter(description = "Rotation in degrees", required = true) int rotation, + @Parameter(description = "Comparison type", schema = @Schema(description = "The comparison type, accepts Greater, Equal, Less than", allowableValues = { + "Greater", "Equal", "Less" })) String comparator) + throws IOException, InterruptedException { + + // Load the PDF + PDDocument document = PDDocument.load(inputFile.getInputStream()); + + // Get the rotation of the first page + PDPage firstPage = document.getPage(0); + int actualRotation = firstPage.getRotation(); + boolean valid = false; + // Perform the comparison + switch (comparator) { + case "Greater": + valid = actualRotation > rotation; + break; + case "Equal": + valid = actualRotation == rotation; + break; + case "Less": + valid = actualRotation < rotation; + break; + default: + throw new IllegalArgumentException("Invalid comparator: " + comparator); + } + + if (valid) + return WebResponseUtils.multiPartFileToWebResponse(inputFile); + return null; + + } + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/AutoRenameController.java b/src/main/java/stirling/software/SPDF/controller/api/other/AutoRenameController.java new file mode 100644 index 00000000..66fd70a6 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/other/AutoRenameController.java @@ -0,0 +1,177 @@ +package stirling.software.SPDF.controller.api.other; + +import java.io.IOException; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.utils.GeneralUtils; +import stirling.software.SPDF.utils.PdfUtils; +import stirling.software.SPDF.utils.WebResponseUtils; +import org.apache.pdfbox.pdmodel.*; +import org.apache.pdfbox.pdmodel.common.*; +import org.apache.pdfbox.pdmodel.PDPageContentStream.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.http.*; +import org.springframework.web.multipart.MultipartFile; +import io.swagger.v3.oas.annotations.*; +import io.swagger.v3.oas.annotations.media.*; +import io.swagger.v3.oas.annotations.parameters.*; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.pdfbox.text.TextPosition; +import org.apache.tomcat.util.http.ResponseUtil; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; +import java.util.ArrayList; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import com.itextpdf.io.font.constants.StandardFonts; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.layout.Canvas; +import com.itextpdf.layout.element.Paragraph; +import com.itextpdf.layout.properties.TextAlignment; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.io.*; +import org.apache.pdfbox.pdmodel.*; +import org.apache.pdfbox.text.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import io.swagger.v3.oas.annotations.*; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.http.ResponseEntity; +@RestController +@Tag(name = "Other", description = "Other APIs") +public class AutoRenameController { + + private static final Logger logger = LoggerFactory.getLogger(AutoRenameController.class); + + private static final float TITLE_FONT_SIZE_THRESHOLD = 20.0f; + private static final int LINE_LIMIT = 11; + + @PostMapping(consumes = "multipart/form-data", value = "/auto-rename") + @Operation(summary = "Extract header from PDF file", description = "This endpoint accepts a PDF file and attempts to extract its title or header based on heuristics. Input:PDF Output:PDF Type:SISO") + public ResponseEntity extractHeader( + @RequestPart(value = "fileInput") @Parameter(description = "The input PDF file from which the header is to be extracted.", required = true) MultipartFile file, + @RequestParam(required = false, defaultValue = "false") @Parameter(description = "Flag indicating whether to use the first text as a fallback if no suitable title is found. Defaults to false.", required = false) Boolean useFirstTextAsFallback) + throws Exception { + + PDDocument document = PDDocument.load(file.getInputStream()); + PDFTextStripper reader = new PDFTextStripper() { + class LineInfo { + String text; + float fontSize; + + LineInfo(String text, float fontSize) { + this.text = text; + this.fontSize = fontSize; + } + } + + List lineInfos = new ArrayList<>(); + StringBuilder lineBuilder = new StringBuilder(); + float lastY = -1; + float maxFontSizeInLine = 0.0f; + int lineCount = 0; + + @Override + protected void processTextPosition(TextPosition text) { + if (lastY != text.getY() && lineCount < LINE_LIMIT) { + processLine(); + lineBuilder = new StringBuilder(text.getUnicode()); + maxFontSizeInLine = text.getFontSizeInPt(); + lastY = text.getY(); + lineCount++; + } else if (lineCount < LINE_LIMIT) { + lineBuilder.append(text.getUnicode()); + if (text.getFontSizeInPt() > maxFontSizeInLine) { + maxFontSizeInLine = text.getFontSizeInPt(); + } + } + } + + private void processLine() { + if (lineBuilder.length() > 0 && lineCount < LINE_LIMIT) { + lineInfos.add(new LineInfo(lineBuilder.toString(), maxFontSizeInLine)); + } + } + + @Override + public String getText(PDDocument doc) throws IOException { + this.lineInfos.clear(); + this.lineBuilder = new StringBuilder(); + this.lastY = -1; + this.maxFontSizeInLine = 0.0f; + this.lineCount = 0; + super.getText(doc); + processLine(); // Process the last line + + // Merge lines with same font size + List mergedLineInfos = new ArrayList<>(); + for (int i = 0; i < lineInfos.size(); i++) { + String mergedText = lineInfos.get(i).text; + float fontSize = lineInfos.get(i).fontSize; + while (i + 1 < lineInfos.size() && lineInfos.get(i + 1).fontSize == fontSize) { + mergedText += " " + lineInfos.get(i + 1).text; + i++; + } + mergedLineInfos.add(new LineInfo(mergedText, fontSize)); + } + + // Sort lines by font size in descending order and get the first one + mergedLineInfos.sort(Comparator.comparing((LineInfo li) -> li.fontSize).reversed()); + String title = mergedLineInfos.isEmpty() ? null : mergedLineInfos.get(0).text; + + return title != null ? title : (useFirstTextAsFallback ? (mergedLineInfos.isEmpty() ? null : mergedLineInfos.get(mergedLineInfos.size() - 1).text) : null); + } + + }; + + String header = reader.getText(document); + + + + // Sanitize the header string by removing characters not allowed in a filename. + if (header != null && header.length() < 255) { + header = header.replaceAll("[/\\\\?%*:|\"<>]", ""); + return WebResponseUtils.pdfDocToWebResponse(document, header + ".pdf"); + } else { + logger.info("File has no good title to be found"); + return WebResponseUtils.pdfDocToWebResponse(document, file.getOriginalFilename()); + } + } + + + + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java b/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java new file mode 100644 index 00000000..e69c0597 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java @@ -0,0 +1,137 @@ +package stirling.software.SPDF.controller.api.other; +import java.awt.image.BufferedImage; +import java.awt.image.DataBufferByte; +import java.awt.image.DataBufferInt; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +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.rendering.PDFRenderer; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.LuminanceSource; +import com.google.zxing.MultiFormatReader; +import com.google.zxing.NotFoundException; +import com.google.zxing.PlanarYUVLuminanceSource; +import com.google.zxing.Result; +import com.google.zxing.common.HybridBinarizer; + +import stirling.software.SPDF.utils.WebResponseUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; + +@RestController +public class AutoSplitPdfController { + + private static final String QR_CONTENT = "https://github.com/Frooodle/Stirling-PDF"; + + @PostMapping(value = "/auto-split-pdf", consumes = "multipart/form-data") + @Operation(summary = "Auto split PDF pages into separate documents", description = "This endpoint accepts a PDF file, scans each page for a specific QR code, and splits the document at the QR code boundaries. The output is a zip file containing each separate PDF document. Input:PDF Output:ZIP Type:SISO") + public ResponseEntity autoSplitPdf( + @RequestParam("fileInput") @Parameter(description = "The input PDF file which needs to be split into separate documents based on QR code boundaries.", required = true) MultipartFile file) + throws IOException { + InputStream inputStream = file.getInputStream(); + PDDocument document = PDDocument.load(inputStream); + PDFRenderer pdfRenderer = new PDFRenderer(document); + + List splitDocuments = new ArrayList<>(); + List splitDocumentsBoas = new ArrayList<>(); // create this list to store ByteArrayOutputStreams for zipping + + for (int page = 0; page < document.getNumberOfPages(); ++page) { + BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150); + String result = decodeQRCode(bim); + + if(QR_CONTENT.equals(result) && page != 0) { + splitDocuments.add(new PDDocument()); + } + + if (!splitDocuments.isEmpty() && !QR_CONTENT.equals(result)) { + splitDocuments.get(splitDocuments.size() - 1).addPage(document.getPage(page)); + } else if (page == 0) { + PDDocument firstDocument = new PDDocument(); + firstDocument.addPage(document.getPage(page)); + splitDocuments.add(firstDocument); + } + } + + // After all pages are added to splitDocuments, convert each to ByteArrayOutputStream and add to splitDocumentsBoas + for (PDDocument splitDocument : splitDocuments) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + splitDocument.save(baos); + splitDocumentsBoas.add(baos); + splitDocument.close(); + } + + document.close(); + + // After this line, you can find your zip logic integrated + Path zipFile = Files.createTempFile("split_documents", ".zip"); + String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", ""); + byte[] data; + try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) { + // loop through the split documents and write them to the zip file + for (int i = 0; i < splitDocumentsBoas.size(); i++) { + String fileName = filename + "_" + (i + 1) + ".pdf"; // You should replace "originalFileName" with the real file name + ByteArrayOutputStream baos = splitDocumentsBoas.get(i); + byte[] pdf = baos.toByteArray(); + + // Add PDF file to the zip + 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 the Resource in the response + return WebResponseUtils.bytesToWebResponse(data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); + } + + + private static String decodeQRCode(BufferedImage bufferedImage) { + LuminanceSource source; + + if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferByte) { + byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData(); + source = new PlanarYUVLuminanceSource(pixels, bufferedImage.getWidth(), bufferedImage.getHeight(), 0, 0, bufferedImage.getWidth(), bufferedImage.getHeight(), false); + } else if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferInt) { + int[] pixels = ((DataBufferInt) bufferedImage.getRaster().getDataBuffer()).getData(); + byte[] newPixels = new byte[pixels.length]; + for (int i = 0; i < pixels.length; i++) { + newPixels[i] = (byte) (pixels[i] & 0xff); + } + source = new PlanarYUVLuminanceSource(newPixels, bufferedImage.getWidth(), bufferedImage.getHeight(), 0, 0, bufferedImage.getWidth(), bufferedImage.getHeight(), false); + } else { + throw new IllegalArgumentException("BufferedImage must have 8-bit gray scale, 24-bit RGB, 32-bit ARGB (packed int), byte gray, or 3-byte/4-byte RGB image data"); + } + + BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); + + try { + Result result = new MultiFormatReader().decode(bitmap); + return result.getText(); + } catch (NotFoundException e) { + return null; // there is no QR code in the image + } + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/CompressController.java b/src/main/java/stirling/software/SPDF/controller/api/other/CompressController.java index 0002b808..42ab6a41 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/other/CompressController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/other/CompressController.java @@ -221,6 +221,15 @@ public class CompressController { // Read the optimized PDF file byte[] pdfBytes = Files.readAllBytes(tempOutputFile); + // Check if optimized file is larger than the original + if(pdfBytes.length > inputFileSize) { + // Log the occurrence + logger.warn("Optimized file is larger than the original. Returning the original file instead."); + + // Read the original file again + pdfBytes = Files.readAllBytes(tempInputFile); + } + // Clean up the temporary files Files.delete(tempInputFile); Files.delete(tempOutputFile); diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java b/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java new file mode 100644 index 00000000..c1454a24 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java @@ -0,0 +1,176 @@ +package stirling.software.SPDF.controller.api.other; + +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.utils.GeneralUtils; +import stirling.software.SPDF.utils.PdfUtils; +import stirling.software.SPDF.utils.WebResponseUtils; +import org.apache.pdfbox.pdmodel.*; +import org.apache.pdfbox.pdmodel.common.*; +import org.apache.pdfbox.pdmodel.PDPageContentStream.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.http.*; +import org.springframework.web.multipart.MultipartFile; +import io.swagger.v3.oas.annotations.*; +import io.swagger.v3.oas.annotations.media.*; +import io.swagger.v3.oas.annotations.parameters.*; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.tomcat.util.http.ResponseUtil; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import com.itextpdf.io.font.constants.StandardFonts; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.layout.Canvas; +import com.itextpdf.layout.element.Paragraph; +import com.itextpdf.layout.properties.TextAlignment; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; + +import java.io.*; + +@RestController +@Tag(name = "Other", description = "Other APIs") +public class PageNumbersController { + + private static final Logger logger = LoggerFactory.getLogger(PageNumbersController.class); + + @PostMapping(value = "/add-page-numbers", consumes = "multipart/form-data") + @Operation(summary = "Add page numbers to a PDF document", description = "This operation takes an input PDF file and adds page numbers to it. Input:PDF Output:PDF Type:SISO") + public ResponseEntity addPageNumbers( + @Parameter(description = "The input PDF file", required = true) @RequestParam("fileInput") MultipartFile file, + @Parameter(description = "Custom margin: small/medium/large", required = true, schema = @Schema(type = "string", allowableValues = {"small", "medium", "large"})) @RequestParam("customMargin") String customMargin, + @Parameter(description = "Position: 1 of 9 positions", required = true, schema = @Schema(type = "integer", minimum = "1", maximum = "9")) @RequestParam("position") int position, + @Parameter(description = "Starting number", required = true, schema = @Schema(type = "integer", minimum = "1")) @RequestParam("startingNumber") int startingNumber, + @Parameter(description = "Which pages to number, default all", required = false, schema = @Schema(type = "string")) @RequestParam(value = "pagesToNumber", required = false) String pagesToNumber, + @Parameter(description = "Custom text: defaults to just number but can have things like \"Page {n} of {p}\"", required = false, schema = @Schema(type = "string")) @RequestParam(value = "customText", required = false) String customText) + throws IOException { + + byte[] fileBytes = file.getBytes(); + ByteArrayInputStream bais = new ByteArrayInputStream(fileBytes); + + int pageNumber = startingNumber; + float marginFactor; + switch (customMargin.toLowerCase()) { + case "small": + marginFactor = 0.02f; + break; + case "medium": + marginFactor = 0.035f; + break; + case "large": + marginFactor = 0.05f; + break; + case "x-large": + marginFactor = 0.1f; + break; + default: + marginFactor = 0.035f; + break; + } + + float fontSize = 12.0f; + + PdfReader reader = new PdfReader(bais); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PdfWriter writer = new PdfWriter(baos); + + PdfDocument pdfDoc = new PdfDocument(reader, writer); + + List pagesToNumberList = GeneralUtils.parsePageList(pagesToNumber.split(","), pdfDoc.getNumberOfPages()); + + for (int i : pagesToNumberList) { + PdfPage page = pdfDoc.getPage(i+1); + Rectangle pageSize = page.getPageSize(); + PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); + + String text = customText != null ? customText.replace("{n}", String.valueOf(pageNumber)).replace("{total}", String.valueOf(pdfDoc.getNumberOfPages())) : String.valueOf(pageNumber); + + PdfFont font = PdfFontFactory.createFont(StandardFonts.HELVETICA); + float textWidth = font.getWidth(text, fontSize); + float textHeight = font.getAscent(text, fontSize) - font.getDescent(text, fontSize); + + float x, y; + TextAlignment alignment; + + int xGroup = (position - 1) % 3; + int yGroup = 2 - (position - 1) / 3; + + switch (xGroup) { + case 0: // left + x = pageSize.getLeft() + marginFactor * pageSize.getWidth(); + alignment = TextAlignment.LEFT; + break; + case 1: // center + x = pageSize.getLeft() + (pageSize.getWidth()) / 2; + alignment = TextAlignment.CENTER; + break; + default: // right + x = pageSize.getRight() - marginFactor * pageSize.getWidth(); + alignment = TextAlignment.RIGHT; + break; + } + + switch (yGroup) { + case 0: // bottom + y = pageSize.getBottom() + marginFactor * pageSize.getHeight(); + break; + case 1: // middle + y = pageSize.getBottom() + (pageSize.getHeight() ) / 2; + break; + default: // top + y = pageSize.getTop() - marginFactor * pageSize.getHeight(); + break; + } + + new Canvas(pdfCanvas, page.getPageSize()) + .showTextAligned(new Paragraph(text).setFont(font).setFontSize(fontSize), x, y, alignment); + + pageNumber++; + } + + + pdfDoc.close(); + byte[] resultBytes = baos.toByteArray(); + + return ResponseEntity.ok() + .header("Content-Type", "application/pdf; charset=UTF-8") + .header("Content-Disposition", "inline; filename=" + URLEncoder.encode(file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_numbersAdded.pdf", "UTF-8")) + .body(resultBytes); + } + + + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/Controller.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/Controller.java deleted file mode 100644 index d0325450..00000000 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/Controller.java +++ /dev/null @@ -1,399 +0,0 @@ -package stirling.software.SPDF.controller.api.pipeline; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.time.LocalDate; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; -import java.util.zip.ZipOutputStream; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ByteArrayResource; -import org.springframework.core.io.Resource; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.bind.annotation.PostMapping; -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.client.RestTemplate; -import org.springframework.web.multipart.MultipartFile; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import io.swagger.v3.oas.annotations.tags.Tag; -import stirling.software.SPDF.model.PipelineConfig; -import stirling.software.SPDF.model.PipelineOperation; -import stirling.software.SPDF.utils.WebResponseUtils; - - -@RestController -@Tag(name = "Pipeline", description = "Pipeline APIs") -public class Controller { - - @Autowired - private ObjectMapper objectMapper; - - - final String jsonFileName = "pipelineCofig.json"; - final String watchedFoldersDir = "watchedFolders/"; - @Scheduled(fixedRate = 5000) - public void scanFolders() { - Path watchedFolderPath = Paths.get(watchedFoldersDir); - if (!Files.exists(watchedFolderPath)) { - try { - Files.createDirectories(watchedFolderPath); - } catch (IOException e) { - e.printStackTrace(); - return; - } - } - - try (Stream paths = Files.walk(watchedFolderPath)) { - paths.filter(Files::isDirectory).forEach(t -> { - try { - if (!t.equals(watchedFolderPath) && !t.endsWith("processing")) { - handleDirectory(t); - } - } catch (Exception e) { - e.printStackTrace(); - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void handleDirectory(Path dir) throws Exception { - Path jsonFile = dir.resolve(jsonFileName); - Path processingDir = dir.resolve("processing"); // Directory to move files during processing - if (!Files.exists(processingDir)) { - Files.createDirectory(processingDir); - } - - if (Files.exists(jsonFile)) { - // Read JSON file - String jsonString; - try { - jsonString = new String(Files.readAllBytes(jsonFile)); - } catch (IOException e) { - e.printStackTrace(); - return; - } - - // Decode JSON to PipelineConfig - PipelineConfig config; - try { - config = objectMapper.readValue(jsonString, PipelineConfig.class); - // Assuming your PipelineConfig class has getters for all necessary fields, you can perform checks here - if (config.getOperations() == null || config.getOutputDir() == null || config.getName() == null) { - throw new IOException("Invalid JSON format"); - } - } catch (IOException e) { - e.printStackTrace(); - return; - } - - // For each operation in the pipeline - for (PipelineOperation operation : config.getOperations()) { - // Collect all files based on fileInput - File[] files; - String fileInput = (String) operation.getParameters().get("fileInput"); - if ("automated".equals(fileInput)) { - // If fileInput is "automated", process all files in the directory - try (Stream paths = Files.list(dir)) { - files = paths.filter(path -> !path.equals(jsonFile)) - .map(Path::toFile) - .toArray(File[]::new); - } catch (IOException e) { - e.printStackTrace(); - return; - } - } else { - // If fileInput contains a path, process only this file - files = new File[]{new File(fileInput)}; - } - - // Prepare the files for processing - File[] filesToProcess = files.clone(); - for (File file : filesToProcess) { - Files.move(file.toPath(), processingDir.resolve(file.getName())); - } - - // Process the files - try { - List resources = handleFiles(filesToProcess, jsonString); - - // Move resultant files and rename them as per config in JSON file - for (Resource resource : resources) { - String outputFileName = config.getOutputPattern().replace("{filename}", resource.getFile().getName()); - outputFileName = outputFileName.replace("{pipelineName}", config.getName()); - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); - outputFileName = outputFileName.replace("{date}", LocalDate.now().format(dateFormatter)); - DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HHmmss"); - outputFileName = outputFileName.replace("{time}", LocalTime.now().format(timeFormatter)); - // {filename} {folder} {date} {tmime} {pipeline} - - Files.move(resource.getFile().toPath(), Paths.get(config.getOutputDir(), outputFileName)); - } - - // If successful, delete the original files - for (File file : filesToProcess) { - Files.deleteIfExists(processingDir.resolve(file.getName())); - } - } catch (Exception e) { - // If an error occurs, move the original files back - for (File file : filesToProcess) { - Files.move(processingDir.resolve(file.getName()), file.toPath()); - } - throw e; - } - } - } - } - - - - -List processFiles(List outputFiles, String jsonString) throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - JsonNode jsonNode = mapper.readTree(jsonString); - - JsonNode pipelineNode = jsonNode.get("pipeline"); - ByteArrayOutputStream logStream = new ByteArrayOutputStream(); - PrintStream logPrintStream = new PrintStream(logStream); - - boolean hasErrors = false; - - for (JsonNode operationNode : pipelineNode) { - String operation = operationNode.get("operation").asText(); - JsonNode parametersNode = operationNode.get("parameters"); - String inputFileExtension = ""; - if(operationNode.has("inputFileType")) { - inputFileExtension = operationNode.get("inputFileType").asText(); - } else { - inputFileExtension=".pdf"; - } - - List newOutputFiles = new ArrayList<>(); - boolean hasInputFileType = false; - - for (Resource file : outputFiles) { - if (file.getFilename().endsWith(inputFileExtension)) { - hasInputFileType = true; - MultiValueMap body = new LinkedMultiValueMap<>(); - body.add("fileInput", file); - - Iterator> parameters = parametersNode.fields(); - while (parameters.hasNext()) { - Map.Entry parameter = parameters.next(); - body.add(parameter.getKey(), parameter.getValue().asText()); - } - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - - HttpEntity> entity = new HttpEntity<>(body, headers); - - RestTemplate restTemplate = new RestTemplate(); - String url = "http://localhost:8080/" + operation; - - ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, entity, byte[].class); - - if (!response.getStatusCode().equals(HttpStatus.OK)) { - logPrintStream.println("Error: " + response.getBody()); - hasErrors = true; - continue; - } - - // Check if the response body is a zip file - if (isZip(response.getBody())) { - // Unzip the file and add all the files to the new output files - newOutputFiles.addAll(unzip(response.getBody())); - } else { - Resource outputResource = new ByteArrayResource(response.getBody()) { - @Override - public String getFilename() { - return file.getFilename(); // Preserving original filename - } - }; - newOutputFiles.add(outputResource); - } - } - - if (!hasInputFileType) { - logPrintStream.println("No files with extension " + inputFileExtension + " found for operation " + operation); - hasErrors = true; - } - - outputFiles = newOutputFiles; - } - logPrintStream.close(); - - } - return outputFiles; -} - - -List handleFiles(File[] files, String jsonString) throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - JsonNode jsonNode = mapper.readTree(jsonString); - - JsonNode pipelineNode = jsonNode.get("pipeline"); - ByteArrayOutputStream logStream = new ByteArrayOutputStream(); - PrintStream logPrintStream = new PrintStream(logStream); - - boolean hasErrors = false; - List outputFiles = new ArrayList<>(); - - for (File file : files) { - Path path = Paths.get(file.getAbsolutePath()); - Resource fileResource = new ByteArrayResource(Files.readAllBytes(path)) { - @Override - public String getFilename() { - return file.getName(); - } - }; - outputFiles.add(fileResource); - } - return processFiles(outputFiles, jsonString); -} - - List handleFiles(MultipartFile[] files, String jsonString) throws Exception{ - ObjectMapper mapper = new ObjectMapper(); - JsonNode jsonNode = mapper.readTree(jsonString); - - JsonNode pipelineNode = jsonNode.get("pipeline"); - ByteArrayOutputStream logStream = new ByteArrayOutputStream(); - PrintStream logPrintStream = new PrintStream(logStream); - - boolean hasErrors = false; - List outputFiles = new ArrayList<>(); - - for (MultipartFile file : files) { - Resource fileResource = new ByteArrayResource(file.getBytes()) { - @Override - public String getFilename() { - return file.getOriginalFilename(); - } - }; - outputFiles.add(fileResource); - } - return processFiles(outputFiles, jsonString); - } - - @PostMapping("/handleData") - public ResponseEntity handleData(@RequestPart("fileInput") MultipartFile[] files, - @RequestParam("json") String jsonString) { - try { - - List outputFiles = handleFiles(files, jsonString); - - if (outputFiles.size() == 1) { - // If there is only one file, return it directly - Resource singleFile = outputFiles.get(0); - InputStream is = singleFile.getInputStream(); - byte[] bytes = new byte[(int)singleFile.contentLength()]; - is.read(bytes); - is.close(); - - return WebResponseUtils.bytesToWebResponse(bytes, singleFile.getFilename(), MediaType.APPLICATION_OCTET_STREAM); - } - - // Create a ByteArrayOutputStream to hold the zip - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ZipOutputStream zipOut = new ZipOutputStream(baos); - - // Loop through each file and add it to the zip - for (Resource file : outputFiles) { - ZipEntry zipEntry = new ZipEntry(file.getFilename()); - zipOut.putNextEntry(zipEntry); - - // Read the file into a byte array - InputStream is = file.getInputStream(); - byte[] bytes = new byte[(int)file.contentLength()]; - is.read(bytes); - - // Write the bytes of the file to the zip - zipOut.write(bytes, 0, bytes.length); - zipOut.closeEntry(); - - is.close(); - } - - zipOut.close(); - - return WebResponseUtils.boasToWebResponse(baos, "output.zip", MediaType.APPLICATION_OCTET_STREAM); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - private boolean isZip(byte[] data) { - if (data == null || data.length < 4) { - return false; - } - - // Check the first four bytes of the data against the standard zip magic number - return data[0] == 0x50 && data[1] == 0x4B && data[2] == 0x03 && data[3] == 0x04; - } - - private List unzip(byte[] data) throws IOException { - List unzippedFiles = new ArrayList<>(); - - try (ByteArrayInputStream bais = new ByteArrayInputStream(data); - ZipInputStream zis = new ZipInputStream(bais)) { - - ZipEntry entry; - while ((entry = zis.getNextEntry()) != null) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024]; - int count; - - while ((count = zis.read(buffer)) != -1) { - baos.write(buffer, 0, count); - } - - final String filename = entry.getName(); - Resource fileResource = new ByteArrayResource(baos.toByteArray()) { - @Override - public String getFilename() { - return filename; - } - }; - - // If the unzipped file is a zip file, unzip it - if (isZip(baos.toByteArray())) { - unzippedFiles.addAll(unzip(baos.toByteArray())); - } else { - unzippedFiles.add(fileResource); - } - } - } - - return unzippedFiles; - } -} diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java new file mode 100644 index 00000000..244cb807 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java @@ -0,0 +1,516 @@ +package stirling.software.SPDF.controller.api.pipeline; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.PostMapping; +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.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.model.PipelineConfig; +import stirling.software.SPDF.model.PipelineOperation; +import stirling.software.SPDF.utils.WebResponseUtils; + +@RestController +@Tag(name = "Pipeline", description = "Pipeline APIs") +public class PipelineController { + + private static final Logger logger = LoggerFactory.getLogger(PipelineController.class); + @Autowired + private ObjectMapper objectMapper; + + final String jsonFileName = "pipelineConfig.json"; + final String watchedFoldersDir = "./pipeline/watchedFolders/"; + final String finishedFoldersDir = "./pipeline/finishedFolders/"; + + @Scheduled(fixedRate = 25000) + public void scanFolders() { + logger.info("Scanning folders..."); + Path watchedFolderPath = Paths.get(watchedFoldersDir); + if (!Files.exists(watchedFolderPath)) { + try { + Files.createDirectories(watchedFolderPath); + logger.info("Created directory: {}", watchedFolderPath); + } catch (IOException e) { + logger.error("Error creating directory: {}", watchedFolderPath, e); + return; + } + } + try (Stream paths = Files.walk(watchedFolderPath)) { + paths.filter(Files::isDirectory).forEach(t -> { + try { + if (!t.equals(watchedFolderPath) && !t.endsWith("processing")) { + handleDirectory(t); + } + } catch (Exception e) { + logger.error("Error handling directory: {}", t, e); + } + }); + } catch (Exception e) { + logger.error("Error walking through directory: {}", watchedFolderPath, e); + } + } + + private void handleDirectory(Path dir) throws Exception { + logger.info("Handling directory: {}", dir); + Path jsonFile = dir.resolve(jsonFileName); + Path processingDir = dir.resolve("processing"); // Directory to move files during processing + if (!Files.exists(processingDir)) { + Files.createDirectory(processingDir); + logger.info("Created processing directory: {}", processingDir); + } + + if (Files.exists(jsonFile)) { + // Read JSON file + String jsonString; + try { + jsonString = new String(Files.readAllBytes(jsonFile)); + logger.info("Read JSON file: {}", jsonFile); + } catch (IOException e) { + logger.error("Error reading JSON file: {}", jsonFile, e); + return; + } + + // Decode JSON to PipelineConfig + PipelineConfig config; + try { + config = objectMapper.readValue(jsonString, PipelineConfig.class); + // Assuming your PipelineConfig class has getters for all necessary fields, you + // can perform checks here + if (config.getOperations() == null || config.getOutputDir() == null || config.getName() == null) { + throw new IOException("Invalid JSON format"); + } + } catch (IOException e) { + logger.error("Error parsing PipelineConfig: {}", jsonString, e); + return; + } + + // For each operation in the pipeline + for (PipelineOperation operation : config.getOperations()) { + // Collect all files based on fileInput + File[] files; + String fileInput = (String) operation.getParameters().get("fileInput"); + if ("automated".equals(fileInput)) { + // If fileInput is "automated", process all files in the directory + try (Stream paths = Files.list(dir)) { + files = paths + .filter(path -> !Files.isDirectory(path)) // exclude directories + .filter(path -> !path.equals(jsonFile)) // exclude jsonFile + .map(Path::toFile) + .toArray(File[]::new); + + } catch (IOException e) { + e.printStackTrace(); + return; + } + } else { + // If fileInput contains a path, process only this file + files = new File[] { new File(fileInput) }; + } + + // Prepare the files for processing + List filesToProcess = new ArrayList<>(); + for (File file : files) { + logger.info(file.getName()); + logger.info("{} to {}",file.toPath(), processingDir.resolve(file.getName())); + Files.move(file.toPath(), processingDir.resolve(file.getName())); + filesToProcess.add(processingDir.resolve(file.getName()).toFile()); + } + + // Process the files + try { + List resources = handleFiles(filesToProcess.toArray(new File[0]), jsonString); + + if(resources == null) { + return; + } + // Move resultant files and rename them as per config in JSON file + for (Resource resource : resources) { + String resourceName = resource.getFilename(); + String baseName = resourceName.substring(0, resourceName.lastIndexOf(".")); + String extension = resourceName.substring(resourceName.lastIndexOf(".")+1); + + String outputFileName = config.getOutputPattern().replace("{filename}", baseName); + + outputFileName = outputFileName.replace("{pipelineName}", config.getName()); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + outputFileName = outputFileName.replace("{date}", LocalDate.now().format(dateFormatter)); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HHmmss"); + outputFileName = outputFileName.replace("{time}", LocalTime.now().format(timeFormatter)); + + outputFileName += "." + extension; + // {filename} {folder} {date} {tmime} {pipeline} + String outputDir = config.getOutputDir(); + + // Check if the environment variable 'automatedOutputFolder' is set + String outputFolder = System.getenv("automatedOutputFolder"); + + if (outputFolder == null || outputFolder.isEmpty()) { + // If the environment variable is not set, use the default value + outputFolder = finishedFoldersDir; + } + logger.info("outputDir 0={}", outputDir); + // Replace the placeholders in the outputDir string + outputDir = outputDir.replace("{outputFolder}", outputFolder); + outputDir = outputDir.replace("{folderName}", dir.toString()); + logger.info("outputDir 1={}", outputDir); + outputDir = outputDir.replace("\\watchedFolders", ""); + outputDir = outputDir.replace("//watchedFolders", ""); + outputDir = outputDir.replace("\\\\watchedFolders", ""); + outputDir = outputDir.replace("/watchedFolders", ""); + + Path outputPath; + logger.info("outputDir 2={}", outputDir); + if (Paths.get(outputDir).isAbsolute()) { + // If it's an absolute path, use it directly + outputPath = Paths.get(outputDir); + } else { + // If it's a relative path, make it relative to the current working directory + outputPath = Paths.get(".", outputDir); + } + + logger.info("outputPath={}", outputPath); + + if (!Files.exists(outputPath)) { + try { + Files.createDirectories(outputPath); + logger.info("Created directory: {}", outputPath); + } catch (IOException e) { + logger.error("Error creating directory: {}", outputPath, e); + return; + } + } + logger.info("outputPath {}", outputPath); + logger.info("outputPath.resolve(outputFileName).toString() {}", outputPath.resolve(outputFileName).toString()); + File newFile = new File(outputPath.resolve(outputFileName).toString()); + OutputStream os = new FileOutputStream(newFile); + os.write(((ByteArrayResource)resource).getByteArray()); + os.close(); + logger.info("made {}", outputPath.resolve(outputFileName)); + } + + // If successful, delete the original files + for (File file : filesToProcess) { + Files.deleteIfExists(processingDir.resolve(file.getName())); + } + } catch (Exception e) { + // If an error occurs, move the original files back + for (File file : filesToProcess) { + Files.move(processingDir.resolve(file.getName()), file.toPath()); + } + throw e; + } + } + } + } + + List processFiles(List outputFiles, String jsonString) throws Exception { + + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(jsonString); + + JsonNode pipelineNode = jsonNode.get("pipeline"); + logger.info("Running pipelineNode: {}", pipelineNode); + ByteArrayOutputStream logStream = new ByteArrayOutputStream(); + PrintStream logPrintStream = new PrintStream(logStream); + + boolean hasErrors = false; + + for (JsonNode operationNode : pipelineNode) { + String operation = operationNode.get("operation").asText(); + logger.info("Running operation: {}", operation); + JsonNode parametersNode = operationNode.get("parameters"); + String inputFileExtension = ""; + if (operationNode.has("inputFileType")) { + inputFileExtension = operationNode.get("inputFileType").asText(); + } else { + inputFileExtension = ".pdf"; + } + + List newOutputFiles = new ArrayList<>(); + boolean hasInputFileType = false; + + for (Resource file : outputFiles) { + if (file.getFilename().endsWith(inputFileExtension)) { + hasInputFileType = true; + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("fileInput", file); + + Iterator> parameters = parametersNode.fields(); + while (parameters.hasNext()) { + Map.Entry parameter = parameters.next(); + body.add(parameter.getKey(), parameter.getValue().asText()); + } + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + + HttpEntity> entity = new HttpEntity<>(body, headers); + + RestTemplate restTemplate = new RestTemplate(); + String url = "http://localhost:8080/" + operation; + + ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST, entity, byte[].class); + + // If the operation is filter and the response body is null or empty, skip this file + if (operation.startsWith("filter-") && (response.getBody() == null || response.getBody().length == 0)) { + logger.info("Skipping file due to failing {}", operation); + continue; + } + + if (!response.getStatusCode().equals(HttpStatus.OK)) { + logPrintStream.println("Error: " + response.getBody()); + hasErrors = true; + continue; + } + + + // Define filename + String filename; + if ("auto-rename".equals(operation)) { + // If the operation is "auto-rename", generate a new filename. + // This is a simple example of generating a filename using current timestamp. + // Modify as per your needs. + filename = "file_" + System.currentTimeMillis(); + } else { + // Otherwise, keep the original filename. + filename = file.getFilename(); + } + + // Check if the response body is a zip file + if (isZip(response.getBody())) { + // Unzip the file and add all the files to the new output files + newOutputFiles.addAll(unzip(response.getBody())); + } else { + Resource outputResource = new ByteArrayResource(response.getBody()) { + @Override + public String getFilename() { + return filename; + } + }; + newOutputFiles.add(outputResource); + } + } + + if (!hasInputFileType) { + logPrintStream.println( + "No files with extension " + inputFileExtension + " found for operation " + operation); + hasErrors = true; + } + + outputFiles = newOutputFiles; + } + logPrintStream.close(); + + } + if (hasErrors) { + logger.error("Errors occurred during processing. Log: {}", logStream.toString()); + } + return outputFiles; + } + + List handleFiles(File[] files, String jsonString) throws Exception { + if(files == null || files.length == 0) { + logger.info("No files"); + return null; + } + + logger.info("Handling files: {} files, with JSON string of length: {}", files.length, jsonString.length()); + + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(jsonString); + + JsonNode pipelineNode = jsonNode.get("pipeline"); + + boolean hasErrors = false; + List outputFiles = new ArrayList<>(); + + for (File file : files) { + Path path = Paths.get(file.getAbsolutePath()); + System.out.println("Reading file: " + path); // debug statement + + if (Files.exists(path)) { + Resource fileResource = new ByteArrayResource(Files.readAllBytes(path)) { + @Override + public String getFilename() { + return file.getName(); + } + }; + outputFiles.add(fileResource); + } else { + System.out.println("File not found: " + path); // debug statement + } + } + logger.info("Files successfully loaded. Starting processing..."); + return processFiles(outputFiles, jsonString); + } + + List handleFiles(MultipartFile[] files, String jsonString) throws Exception { + if(files == null || files.length == 0) { + logger.info("No files"); + return null; + } + logger.info("Handling files: {} files, with JSON string of length: {}", files.length, jsonString.length()); + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.readTree(jsonString); + + JsonNode pipelineNode = jsonNode.get("pipeline"); + + boolean hasErrors = false; + List outputFiles = new ArrayList<>(); + + for (MultipartFile file : files) { + Resource fileResource = new ByteArrayResource(file.getBytes()) { + @Override + public String getFilename() { + return file.getOriginalFilename(); + } + }; + outputFiles.add(fileResource); + } + logger.info("Files successfully loaded. Starting processing..."); + return processFiles(outputFiles, jsonString); + } + + @PostMapping("/handleData") + public ResponseEntity handleData(@RequestPart("fileInput") MultipartFile[] files, + @RequestParam("json") String jsonString) { + logger.info("Received POST request to /handleData with {} files", files.length); + try { + List outputFiles = handleFiles(files, jsonString); + + if (outputFiles != null && outputFiles.size() == 1) { + // If there is only one file, return it directly + Resource singleFile = outputFiles.get(0); + InputStream is = singleFile.getInputStream(); + byte[] bytes = new byte[(int) singleFile.contentLength()]; + is.read(bytes); + is.close(); + + logger.info("Returning single file response..."); + return WebResponseUtils.bytesToWebResponse(bytes, singleFile.getFilename(), + MediaType.APPLICATION_OCTET_STREAM); + } else if (outputFiles == null) { + return null; + } + + // Create a ByteArrayOutputStream to hold the zip + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ZipOutputStream zipOut = new ZipOutputStream(baos); + + // Loop through each file and add it to the zip + for (Resource file : outputFiles) { + ZipEntry zipEntry = new ZipEntry(file.getFilename()); + zipOut.putNextEntry(zipEntry); + + // Read the file into a byte array + InputStream is = file.getInputStream(); + byte[] bytes = new byte[(int) file.contentLength()]; + is.read(bytes); + + // Write the bytes of the file to the zip + zipOut.write(bytes, 0, bytes.length); + zipOut.closeEntry(); + + is.close(); + } + + zipOut.close(); + + logger.info("Returning zipped file response..."); + return WebResponseUtils.boasToWebResponse(baos, "output.zip", MediaType.APPLICATION_OCTET_STREAM); + } catch (Exception e) { + logger.error("Error handling data: ", e); + return null; + } + } + + private boolean isZip(byte[] data) { + if (data == null || data.length < 4) { + return false; + } + + // Check the first four bytes of the data against the standard zip magic number + return data[0] == 0x50 && data[1] == 0x4B && data[2] == 0x03 && data[3] == 0x04; + } + + private List unzip(byte[] data) throws IOException { + logger.info("Unzipping data of length: {}", data.length); + List unzippedFiles = new ArrayList<>(); + + try (ByteArrayInputStream bais = new ByteArrayInputStream(data); + ZipInputStream zis = new ZipInputStream(bais)) { + + ZipEntry entry; + while ((entry = zis.getNextEntry()) != null) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int count; + + while ((count = zis.read(buffer)) != -1) { + baos.write(buffer, 0, count); + } + + final String filename = entry.getName(); + Resource fileResource = new ByteArrayResource(baos.toByteArray()) { + @Override + public String getFilename() { + return filename; + } + }; + + // If the unzipped file is a zip file, unzip it + if (isZip(baos.toByteArray())) { + logger.info("File {} is a zip file. Unzipping...", filename); + unzippedFiles.addAll(unzip(baos.toByteArray())); + } else { + unzippedFiles.add(fileResource); + } + } + } + + logger.info("Unzipping completed. {} files were unzipped.", unzippedFiles.size()); + return unzippedFiles; + } + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java b/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java new file mode 100644 index 00000000..ccc19b09 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java @@ -0,0 +1,140 @@ +package stirling.software.SPDF.controller.api.security; +import org.apache.pdfbox.cos.COSName; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.PDPageTree; +import org.apache.pdfbox.pdmodel.common.PDMetadata; +import org.apache.pdfbox.pdmodel.common.PDStream; +import org.apache.pdfbox.pdmodel.interactive.action.*; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink; +import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget; +import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; +import org.apache.pdfbox.pdmodel.interactive.form.PDField; +import org.apache.pdfbox.pdmodel.interactive.form.PDNonTerminalField; +import org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import stirling.software.SPDF.utils.WebResponseUtils; + +import java.io.IOException; +import java.io.InputStream; + +@RestController +public class SanitizeController { + + @PostMapping(consumes = "multipart/form-data", value = "/sanitize-pdf") + @Operation(summary = "Sanitize a PDF file", + description = "This endpoint processes a PDF file and removes specific elements based on the provided options. Input:PDF Output:PDF Type:SISO") + public ResponseEntity sanitizePDF( + @RequestPart(required = true, value = "fileInput") + @Parameter(description = "The input PDF file to be sanitized") + MultipartFile inputFile, + @RequestParam(name = "removeJavaScript", required = false, defaultValue = "true") + @Parameter(description = "Remove JavaScript actions from the PDF if set to true") + Boolean removeJavaScript, + @RequestParam(name = "removeEmbeddedFiles", required = false, defaultValue = "true") + @Parameter(description = "Remove embedded files from the PDF if set to true") + Boolean removeEmbeddedFiles, + @RequestParam(name = "removeMetadata", required = false, defaultValue = "true") + @Parameter(description = "Remove metadata from the PDF if set to true") + Boolean removeMetadata, + @RequestParam(name = "removeLinks", required = false, defaultValue = "true") + @Parameter(description = "Remove links from the PDF if set to true") + Boolean removeLinks, + @RequestParam(name = "removeFonts", required = false, defaultValue = "true") + @Parameter(description = "Remove fonts from the PDF if set to true") + Boolean removeFonts) throws IOException { + + try (PDDocument document = PDDocument.load(inputFile.getInputStream())) { + if (removeJavaScript) { + sanitizeJavaScript(document); + } + + if (removeEmbeddedFiles) { + sanitizeEmbeddedFiles(document); + } + + if (removeMetadata) { + sanitizeMetadata(document); + } + + if (removeLinks) { + sanitizeLinks(document); + } + + if (removeFonts) { + sanitizeFonts(document); + } + + return WebResponseUtils.pdfDocToWebResponse(document, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_sanitized.pdf"); + } + } + private void sanitizeJavaScript(PDDocument document) throws IOException { + for (PDPage page : document.getPages()) { + for (PDAnnotation annotation : page.getAnnotations()) { + if (annotation instanceof PDAnnotationWidget) { + PDAnnotationWidget widget = (PDAnnotationWidget) annotation; + PDAction action = widget.getAction(); + if (action instanceof PDActionJavaScript) { + widget.setAction(null); + } + } + } + PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm(); + if (acroForm != null) { + for (PDField field : acroForm.getFields()) { + if (field.getActions().getF() instanceof PDActionJavaScript) { + field.getActions().setF(null); + } + } + } + } + } + + private void sanitizeEmbeddedFiles(PDDocument document) { + PDPageTree allPages = document.getPages(); + + for (PDPage page : allPages) { + PDResources res = page.getResources(); + + // Remove embedded files from the PDF + res.getCOSObject().removeItem(COSName.getPDFName("EmbeddedFiles")); + } + } + + + private void sanitizeMetadata(PDDocument document) { + PDMetadata metadata = document.getDocumentCatalog().getMetadata(); + if (metadata != null) { + document.getDocumentCatalog().setMetadata(null); + } + } + + + + private void sanitizeLinks(PDDocument document) throws IOException { + for (PDPage page : document.getPages()) { + for (PDAnnotation annotation : page.getAnnotations()) { + if (annotation instanceof PDAnnotationLink) { + PDAction action = ((PDAnnotationLink) annotation).getAction(); + if (action instanceof PDActionLaunch || action instanceof PDActionURI) { + ((PDAnnotationLink) annotation).setAction(null); + } + } + } + } + } + + private void sanitizeFonts(PDDocument document) { + for (PDPage page : document.getPages()) { + page.getResources().getCOSObject().removeItem(COSName.getPDFName("Font")); + } + } + +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java index 4ef8604b..a8271207 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java @@ -1,12 +1,15 @@ package stirling.software.SPDF.controller.api.security; import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; -import java.util.List; + +import javax.imageio.ImageIO; import org.apache.commons.io.IOUtils; import org.apache.pdfbox.pdmodel.PDDocument; @@ -15,6 +18,8 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory; +import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState; import org.apache.pdfbox.util.Matrix; import org.springframework.core.io.ClassPathResource; @@ -30,124 +35,164 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import stirling.software.SPDF.utils.WebResponseUtils; import io.swagger.v3.oas.annotations.media.Schema; + @RestController @Tag(name = "Security", description = "Security APIs") public class WatermarkController { - @PostMapping(consumes = "multipart/form-data", value = "/add-watermark") - @Operation(summary = "Add watermark to a PDF file", - description = "This endpoint adds a watermark to a given PDF file. Users can specify the watermark text, font size, rotation, opacity, width spacer, and height spacer. Input:PDF Output:PDF Type:SISO") - public ResponseEntity addWatermark( - @RequestPart(required = true, value = "fileInput") - @Parameter(description = "The input PDF file to add a watermark") - MultipartFile pdfFile, - @RequestParam(defaultValue = "roman", name = "alphabet") - @Parameter(description = "The selected alphabet", - schema = @Schema(type = "string", - allowableValues = {"roman","arabic","japanese","korean","chinese"}, - defaultValue = "roman")) - String alphabet, - @RequestParam("watermarkText") - @Parameter(description = "The watermark text to add to the PDF file") - String watermarkText, - @RequestParam(defaultValue = "30", name = "fontSize") - @Parameter(description = "The font size of the watermark text", example = "30") - float fontSize, - @RequestParam(defaultValue = "0", name = "rotation") - @Parameter(description = "The rotation of the watermark text in degrees", example = "0") - float rotation, - @RequestParam(defaultValue = "0.5", name = "opacity") - @Parameter(description = "The opacity of the watermark text (0.0 - 1.0)", example = "0.5") - float opacity, - @RequestParam(defaultValue = "50", name = "widthSpacer") - @Parameter(description = "The width spacer between watermark texts", example = "50") - int widthSpacer, - @RequestParam(defaultValue = "50", name = "heightSpacer") - @Parameter(description = "The height spacer between watermark texts", example = "50") - int heightSpacer) throws IOException, Exception { + @PostMapping(consumes = "multipart/form-data", value = "/add-watermark") + @Operation(summary = "Add watermark to a PDF file", description = "This endpoint adds a watermark to a given PDF file. Users can specify the watermark type (text or image), rotation, opacity, width spacer, and height spacer. Input:PDF Output:PDF Type:SISO") + public ResponseEntity addWatermark( + @RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to add a watermark") MultipartFile pdfFile, + @RequestPart(required = true) @Parameter(description = "The watermark type (text or image)") String watermarkType, + @RequestPart(required = false) @Parameter(description = "The watermark text") String watermarkText, + @RequestPart(required = false) @Parameter(description = "The watermark image") MultipartFile watermarkImage, + + @RequestParam(defaultValue = "roman", name = "alphabet") @Parameter(description = "The selected alphabet", + schema = @Schema(type = "string", + allowableValues = {"roman","arabic","japanese","korean","chinese"}, + defaultValue = "roman")) String alphabet, + @RequestParam(defaultValue = "30", name = "fontSize") @Parameter(description = "The font size of the watermark text", example = "30") float fontSize, + @RequestParam(defaultValue = "0", name = "rotation") @Parameter(description = "The rotation of the watermark in degrees", example = "0") float rotation, + @RequestParam(defaultValue = "0.5", name = "opacity") @Parameter(description = "The opacity of the watermark (0.0 - 1.0)", example = "0.5") float opacity, + @RequestParam(defaultValue = "50", name = "widthSpacer") @Parameter(description = "The width spacer between watermark elements", example = "50") int widthSpacer, + @RequestParam(defaultValue = "50", name = "heightSpacer") @Parameter(description = "The height spacer between watermark elements", example = "50") int heightSpacer) + throws IOException, Exception { - // Load the input PDF - PDDocument document = PDDocument.load(pdfFile.getInputStream()); - String producer = document.getDocumentInformation().getProducer(); - // Create a page in the document - for (PDPage page : document.getPages()) { + // Load the input PDF + PDDocument document = PDDocument.load(pdfFile.getInputStream()); - // Get the page's content stream - PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true); + // Create a page in the document + for (PDPage page : document.getPages()) { - // Set transparency - PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); - graphicsState.setNonStrokingAlphaConstant(opacity); - contentStream.setGraphicsStateParameters(graphicsState); + // Get the page's content stream + PDPageContentStream contentStream = new PDPageContentStream(document, page, + PDPageContentStream.AppendMode.APPEND, true); + // Set transparency + PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); + graphicsState.setNonStrokingAlphaConstant(opacity); + contentStream.setGraphicsStateParameters(graphicsState); - String resourceDir = ""; - PDFont font = PDType1Font.HELVETICA_BOLD; - switch (alphabet) { - case "arabic": - resourceDir = "static/fonts/NotoSansArabic-Regular.ttf"; - break; - case "japanese": - resourceDir = "static/fonts/Meiryo.ttf"; - break; - case "korean": - resourceDir = "static/fonts/malgun.ttf"; - break; - case "chinese": - resourceDir = "static/fonts/SimSun.ttf"; - break; - case "roman": - default: - resourceDir = "static/fonts/NotoSans-Regular.ttf"; - break; - } + if (watermarkType.equalsIgnoreCase("text")) { + addTextWatermark(contentStream, watermarkText, document, page, rotation, widthSpacer, heightSpacer, + fontSize, alphabet); + } else if (watermarkType.equalsIgnoreCase("image")) { + addImageWatermark(contentStream, watermarkImage, document, page, rotation, widthSpacer, heightSpacer, + fontSize); + } + // Close the content stream + contentStream.close(); + } + + return WebResponseUtils.pdfDocToWebResponse(document, + pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_watermarked.pdf"); + } + + private void addTextWatermark(PDPageContentStream contentStream, String watermarkText, PDDocument document, + PDPage page, float rotation, int widthSpacer, int heightSpacer, float fontSize, String alphabet) throws IOException { + String resourceDir = ""; + PDFont font = PDType1Font.HELVETICA_BOLD; + switch (alphabet) { + case "arabic": + resourceDir = "static/fonts/NotoSansArabic-Regular.ttf"; + break; + case "japanese": + resourceDir = "static/fonts/Meiryo.ttf"; + break; + case "korean": + resourceDir = "static/fonts/malgun.ttf"; + break; + case "chinese": + resourceDir = "static/fonts/SimSun.ttf"; + break; + case "roman": + default: + resourceDir = "static/fonts/NotoSans-Regular.ttf"; + break; + } + + + if(!resourceDir.equals("")) { + ClassPathResource classPathResource = new ClassPathResource(resourceDir); + String fileExtension = resourceDir.substring(resourceDir.lastIndexOf(".")); + File tempFile = File.createTempFile("NotoSansFont", fileExtension); + try (InputStream is = classPathResource.getInputStream(); FileOutputStream os = new FileOutputStream(tempFile)) { + IOUtils.copy(is, os); + } - if(!resourceDir.equals("")) { - ClassPathResource classPathResource = new ClassPathResource(resourceDir); - String fileExtension = resourceDir.substring(resourceDir.lastIndexOf(".")); - File tempFile = File.createTempFile("NotoSansFont", fileExtension); - try (InputStream is = classPathResource.getInputStream(); FileOutputStream os = new FileOutputStream(tempFile)) { - IOUtils.copy(is, os); - } - - font = PDType0Font.load(document, tempFile); - tempFile.deleteOnExit(); - } - contentStream.beginText(); - contentStream.setFont(font, fontSize); - contentStream.setNonStrokingColor(Color.LIGHT_GRAY); - - // Set size and location of watermark - float pageWidth = page.getMediaBox().getWidth(); - float pageHeight = page.getMediaBox().getHeight(); - float watermarkWidth = widthSpacer + font.getStringWidth(watermarkText) * fontSize / 1000; - float watermarkHeight = heightSpacer + fontSize; - int watermarkRows = (int) (pageHeight / watermarkHeight + 1); - int watermarkCols = (int) (pageWidth / watermarkWidth + 1); - - // Add the watermark text - for (int i = 0; i < watermarkRows; i++) { - for (int j = 0; j < watermarkCols; j++) { - - if(producer.contains("Google Docs")) { - //This fixes weird unknown google docs y axis rotation/flip issue - //TODO: Long term fix one day - //contentStream.setTextMatrix(1, 0, 0, -1, j * watermarkWidth, pageHeight - i * watermarkHeight); - Matrix matrix = new Matrix(1, 0, 0, -1, j * watermarkWidth, pageHeight - i * watermarkHeight); - contentStream.setTextMatrix(matrix); - } else { - contentStream.setTextMatrix(Matrix.getRotateInstance((float) Math.toRadians(rotation), j * watermarkWidth, i * watermarkHeight)); - } - contentStream.showTextWithPositioning(new Object[] { watermarkText }); - } - } - contentStream.endText(); - - // Close the content stream - contentStream.close(); + font = PDType0Font.load(document, tempFile); + tempFile.deleteOnExit(); } - return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_watermarked.pdf"); - } + + contentStream.setFont(font, fontSize); + contentStream.setNonStrokingColor(Color.LIGHT_GRAY); + + // Set size and location of text watermark + float watermarkWidth = widthSpacer + font.getStringWidth(watermarkText) * fontSize / 1000; + float watermarkHeight = heightSpacer + fontSize; + float pageWidth = page.getMediaBox().getWidth(); + float pageHeight = page.getMediaBox().getHeight(); + int watermarkRows = (int) (pageHeight / watermarkHeight + 1); + int watermarkCols = (int) (pageWidth / watermarkWidth + 1); + + // Add the text watermark + for (int i = 0; i < watermarkRows; i++) { + for (int j = 0; j < watermarkCols; j++) { + contentStream.beginText(); + contentStream.setTextMatrix(Matrix.getRotateInstance((float) Math.toRadians(rotation), + j * watermarkWidth, i * watermarkHeight)); + contentStream.showText(watermarkText); + contentStream.endText(); + } + } + } + + private void addImageWatermark(PDPageContentStream contentStream, MultipartFile watermarkImage, PDDocument document, PDPage page, float rotation, + int widthSpacer, int heightSpacer, float fontSize) throws IOException { + +// Load the watermark image +BufferedImage image = ImageIO.read(watermarkImage.getInputStream()); + +// Compute width based on original aspect ratio +float aspectRatio = (float) image.getWidth() / (float) image.getHeight(); + +// Desired physical height (in PDF points) +float desiredPhysicalHeight = fontSize ; + +// Desired physical width based on the aspect ratio +float desiredPhysicalWidth = desiredPhysicalHeight * aspectRatio; + +// Convert the BufferedImage to PDImageXObject +PDImageXObject xobject = LosslessFactory.createFromImage(document, image); + +// Calculate the number of rows and columns for watermarks +float pageWidth = page.getMediaBox().getWidth(); +float pageHeight = page.getMediaBox().getHeight(); +int watermarkRows = (int) ((pageHeight + heightSpacer) / (desiredPhysicalHeight + heightSpacer)); +int watermarkCols = (int) ((pageWidth + widthSpacer) / (desiredPhysicalWidth + widthSpacer)); + +for (int i = 0; i < watermarkRows; i++) { +for (int j = 0; j < watermarkCols; j++) { +float x = j * (desiredPhysicalWidth + widthSpacer); +float y = i * (desiredPhysicalHeight + heightSpacer); + +// Save the graphics state +contentStream.saveGraphicsState(); + +// Create rotation matrix and rotate +contentStream.transform(Matrix.getTranslateInstance(x + desiredPhysicalWidth / 2, y + desiredPhysicalHeight / 2)); +contentStream.transform(Matrix.getRotateInstance(Math.toRadians(rotation), 0, 0)); +contentStream.transform(Matrix.getTranslateInstance(-desiredPhysicalWidth / 2, -desiredPhysicalHeight / 2)); + +// Draw the image and restore the graphics state +contentStream.drawImage(xobject, 0, 0, desiredPhysicalWidth, desiredPhysicalHeight); +contentStream.restoreGraphicsState(); +} + +} + + } } diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 11a7c9bf..dcf953a5 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -1,21 +1,76 @@ package stirling.software.SPDF.controller.web; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.HashMap; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; + +import com.fasterxml.jackson.databind.ObjectMapper; + import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; - @Controller @Tag(name = "General", description = "General APIs") public class GeneralWebController { - @GetMapping("/pipeline") - @Hidden - public String pipelineForm(Model model) { - model.addAttribute("currentPage", "pipeline"); - return "pipeline"; + + @GetMapping("/pipeline") + @Hidden + public String pipelineForm(Model model) { + model.addAttribute("currentPage", "pipeline"); + + List pipelineConfigs = new ArrayList<>(); + try (Stream paths = Files.walk(Paths.get("./pipeline/defaultWebUIConfigs/"))) { + List jsonFiles = paths + .filter(Files::isRegularFile) + .filter(p -> p.toString().endsWith(".json")) + .collect(Collectors.toList()); + + for (Path jsonFile : jsonFiles) { + String content = Files.readString(jsonFile, StandardCharsets.UTF_8); + pipelineConfigs.add(content); + } + List> pipelineConfigsWithNames = new ArrayList<>(); + for (String config : pipelineConfigs) { + Map jsonContent = new ObjectMapper().readValue(config, Map.class); + String name = (String) jsonContent.get("name"); + Map configWithName = new HashMap<>(); + configWithName.put("json", config); + configWithName.put("name", name); + pipelineConfigsWithNames.add(configWithName); + } + model.addAttribute("pipelineConfigsWithNames", pipelineConfigsWithNames); + + } catch (IOException e) { + e.printStackTrace(); } + + model.addAttribute("pipelineConfigs", pipelineConfigs); + + return "pipeline"; + } + + + @GetMapping("/merge-pdfs") @Hidden @@ -65,7 +120,35 @@ public class GeneralWebController { @Hidden public String signForm(Model model) { model.addAttribute("currentPage", "sign"); + model.addAttribute("fonts", getFontNames()); return "sign"; } + private List getFontNames() { + try { + return Files.list(Paths.get("src/main/resources/static/fonts")) + .map(Path::getFileName) + .map(Path::toString) + .filter(name -> name.endsWith(".woff2")) + .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension + .collect(Collectors.toList()); + } catch (IOException e) { + throw new RuntimeException("Failed to read font directory", e); + } + } + + @GetMapping("/crop") + @Hidden + public String cropForm(Model model) { + model.addAttribute("currentPage", "crop"); + return "crop"; + } + + + @GetMapping("/auto-split-pdf") + @Hidden + public String autoSPlitPDFForm(Model model) { + model.addAttribute("currentPage", "auto-split-pdf"); + return "auto-split-pdf"; + } } diff --git a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index 2c11decc..8fa57d08 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -32,6 +32,13 @@ public class OtherWebController { return modelAndView; } + @GetMapping("/add-page-numbers") + @Hidden + public String addPageNumbersForm(Model model) { + model.addAttribute("currentPage", "add-page-numbers"); + return "other/add-page-numbers"; + } + @GetMapping("/extract-images") @Hidden public String extractImagesForm(Model model) { @@ -133,4 +140,13 @@ public class OtherWebController { return "other/auto-crop"; } + @GetMapping("/auto-rename") + @Hidden + public String autoRenameForm(Model model) { + model.addAttribute("currentPage", "auto-rename"); + return "other/auto-rename"; + } + + + } diff --git a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java index 0dbb226b..fe176f62 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java @@ -1,46 +1,53 @@ -package stirling.software.SPDF.controller.web; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; - -import io.swagger.v3.oas.annotations.Hidden; -import io.swagger.v3.oas.annotations.tags.Tag; - -@Controller -@Tag(name = "Security", description = "Security APIs") -public class SecurityWebController { - @GetMapping("/add-password") - @Hidden - public String addPasswordForm(Model model) { - model.addAttribute("currentPage", "add-password"); - return "security/add-password"; - } - @GetMapping("/change-permissions") - @Hidden - public String permissionsForm(Model model) { - model.addAttribute("currentPage", "change-permissions"); - return "security/change-permissions"; - } - - @GetMapping("/remove-password") - @Hidden - public String removePasswordForm(Model model) { - model.addAttribute("currentPage", "remove-password"); - return "security/remove-password"; - } - - @GetMapping("/add-watermark") - @Hidden - public String addWatermarkForm(Model model) { - model.addAttribute("currentPage", "add-watermark"); - return "security/add-watermark"; - } - - @GetMapping("/cert-sign") - @Hidden - public String certSignForm(Model model) { - model.addAttribute("currentPage", "cert-sign"); - return "security/cert-sign"; - } -} +package stirling.software.SPDF.controller.web; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Controller +@Tag(name = "Security", description = "Security APIs") +public class SecurityWebController { + @GetMapping("/add-password") + @Hidden + public String addPasswordForm(Model model) { + model.addAttribute("currentPage", "add-password"); + return "security/add-password"; + } + @GetMapping("/change-permissions") + @Hidden + public String permissionsForm(Model model) { + model.addAttribute("currentPage", "change-permissions"); + return "security/change-permissions"; + } + + @GetMapping("/remove-password") + @Hidden + public String removePasswordForm(Model model) { + model.addAttribute("currentPage", "remove-password"); + return "security/remove-password"; + } + + @GetMapping("/add-watermark") + @Hidden + public String addWatermarkForm(Model model) { + model.addAttribute("currentPage", "add-watermark"); + return "security/add-watermark"; + } + + @GetMapping("/cert-sign") + @Hidden + public String certSignForm(Model model) { + model.addAttribute("currentPage", "cert-sign"); + return "security/cert-sign"; + } + + @GetMapping("/sanitize-pdf") + @Hidden + public String sanitizeForm(Model model) { + model.addAttribute("currentPage", "sanitize-pdf"); + return "security/sanitize-pdf"; + } +} diff --git a/src/main/java/stirling/software/SPDF/model/PipelineOperation.java b/src/main/java/stirling/software/SPDF/model/PipelineOperation.java index 8b079ba1..10c27bfc 100644 --- a/src/main/java/stirling/software/SPDF/model/PipelineOperation.java +++ b/src/main/java/stirling/software/SPDF/model/PipelineOperation.java @@ -22,4 +22,11 @@ public class PipelineOperation { public void setParameters(Map parameters) { this.parameters = parameters; } + + @Override + public String toString() { + return "PipelineOperation [operation=" + operation + ", parameters=" + parameters + "]"; + } + + } \ No newline at end of file diff --git a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java index 1e101d09..03eccf88 100644 --- a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java @@ -1,91 +1,113 @@ -package stirling.software.SPDF.utils; - -import java.util.ArrayList; -import java.util.List; - -public class GeneralUtils { - - public static Long convertSizeToBytes(String sizeStr) { - if (sizeStr == null) { - return null; - } - - sizeStr = sizeStr.trim().toUpperCase(); - try { - if (sizeStr.endsWith("KB")) { - return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); - } else if (sizeStr.endsWith("MB")) { - return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024); - } else if (sizeStr.endsWith("GB")) { - return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024 * 1024); - } else if (sizeStr.endsWith("B")) { - return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1)); - } else { - // Input string does not have a valid format, handle this case - } - } catch (NumberFormatException e) { - // The numeric part of the input string cannot be parsed, handle this case - } - - return null; - } - - public static List parsePageList(String[] pageOrderArr, int totalPages) { - List newPageOrder = new ArrayList<>(); - - // loop through the page order array - for (String element : pageOrderArr) { - // check if the element contains a range of pages - if (element.matches("\\d*n\\+?-?\\d*|\\d*\\+?n")) { - // Handle page order as a function - int coefficient = 0; - int constant = 0; - boolean coefficientExists = false; - boolean constantExists = false; - - if (element.contains("n")) { - String[] parts = element.split("n"); - if (!parts[0].equals("") && parts[0] != null) { - coefficient = Integer.parseInt(parts[0]); - coefficientExists = true; - } - if (parts.length > 1 && !parts[1].equals("") && parts[1] != null) { - constant = Integer.parseInt(parts[1]); - constantExists = true; - } - } else if (element.contains("+")) { - constant = Integer.parseInt(element.replace("+", "")); - constantExists = true; - } - - for (int i = 1; i <= totalPages; i++) { - int pageNum = coefficientExists ? coefficient * i : i; - pageNum += constantExists ? constant : 0; - - if (pageNum <= totalPages && pageNum > 0) { - newPageOrder.add(pageNum - 1); - } - } - } else if (element.contains("-")) { - // split the range into start and end page - String[] range = element.split("-"); - int start = Integer.parseInt(range[0]); - int end = Integer.parseInt(range[1]); - // check if the end page is greater than total pages - if (end > totalPages) { - end = totalPages; - } - // loop through the range of pages - for (int j = start; j <= end; j++) { - // print the current index - newPageOrder.add(j - 1); - } - } else { - // if the element is a single page - newPageOrder.add(Integer.parseInt(element) - 1); - } - } - - return newPageOrder; - } -} +package stirling.software.SPDF.utils; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +public class GeneralUtils { + + public static Long convertSizeToBytes(String sizeStr) { + if (sizeStr == null) { + return null; + } + + sizeStr = sizeStr.trim().toUpperCase(); + try { + if (sizeStr.endsWith("KB")) { + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); + } else if (sizeStr.endsWith("MB")) { + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024); + } else if (sizeStr.endsWith("GB")) { + return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024 * 1024); + } else if (sizeStr.endsWith("B")) { + return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1)); + } else { + // Input string does not have a valid format, handle this case + } + } catch (NumberFormatException e) { + // The numeric part of the input string cannot be parsed, handle this case + } + + return null; + } + + public static List parsePageList(String[] pageOrderArr, int totalPages) { + List newPageOrder = new ArrayList<>(); + + // loop through the page order array + for (String element : pageOrderArr) { + if (element.equalsIgnoreCase("all")) { + for (int i = 0; i < totalPages; i++) { + newPageOrder.add(i); + } + // As all pages are already added, no need to check further + break; + } + else if (element.matches("\\d*n\\+?-?\\d*|\\d*\\+?n")) { + // Handle page order as a function + int coefficient = 0; + int constant = 0; + boolean coefficientExists = false; + boolean constantExists = false; + + if (element.contains("n")) { + String[] parts = element.split("n"); + if (!parts[0].equals("") && parts[0] != null) { + coefficient = Integer.parseInt(parts[0]); + coefficientExists = true; + } + if (parts.length > 1 && !parts[1].equals("") && parts[1] != null) { + constant = Integer.parseInt(parts[1]); + constantExists = true; + } + } else if (element.contains("+")) { + constant = Integer.parseInt(element.replace("+", "")); + constantExists = true; + } + + for (int i = 1; i <= totalPages; i++) { + int pageNum = coefficientExists ? coefficient * i : i; + pageNum += constantExists ? constant : 0; + + if (pageNum <= totalPages && pageNum > 0) { + newPageOrder.add(pageNum - 1); + } + } + } else if (element.contains("-")) { + // split the range into start and end page + String[] range = element.split("-"); + int start = Integer.parseInt(range[0]); + int end = Integer.parseInt(range[1]); + // check if the end page is greater than total pages + if (end > totalPages) { + end = totalPages; + } + // loop through the range of pages + for (int j = start; j <= end; j++) { + // print the current index + newPageOrder.add(j - 1); + } + } else { + // if the element is a single page + newPageOrder.add(Integer.parseInt(element) - 1); + } + } + + return newPageOrder; + } + public static boolean createDir(String path) { + Path folder = Paths.get(path); + if (!Files.exists(folder)) { + try { + Files.createDirectories(folder); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + return true; + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java index 5e9d53b0..5b116a93 100644 --- a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java @@ -44,7 +44,7 @@ public class PdfUtils { public static PDRectangle textToPageSize(String size) { - switch (size) { + switch (size.toUpperCase()) { case "A0": return PDRectangle.A0; case "A1": @@ -68,43 +68,37 @@ public class PdfUtils { } } - public boolean hasImageInFile(PDDocument pdfDocument, String text, String pagesToCheck) throws IOException { - PDFTextStripper textStripper = new PDFTextStripper(); - String pdfText = ""; - if(pagesToCheck == null || pagesToCheck.equals("all")) { - pdfText = textStripper.getText(pdfDocument); - } else { - // remove whitespaces - pagesToCheck = pagesToCheck.replaceAll("\\s+", ""); + + + public static boolean hasImages(PDDocument document, String pagesToCheck) throws IOException { + String[] pageOrderArr = pagesToCheck.split(","); + List pageList = GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); - String[] splitPoints = pagesToCheck.split(","); - for (String splitPoint : splitPoints) { - if (splitPoint.contains("-")) { - // Handle page ranges - String[] range = splitPoint.split("-"); - int startPage = Integer.parseInt(range[0]); - int endPage = Integer.parseInt(range[1]); - - for (int i = startPage; i <= endPage; i++) { - textStripper.setStartPage(i); - textStripper.setEndPage(i); - pdfText += textStripper.getText(pdfDocument); - } - } else { - // Handle individual page - int page = Integer.parseInt(splitPoint); - textStripper.setStartPage(page); - textStripper.setEndPage(page); - pdfText += textStripper.getText(pdfDocument); - } + for (int pageNumber : pageList) { + PDPage page = document.getPage(pageNumber); + if (hasImagesOnPage(page)) { + return true; } } - pdfDocument.close(); - - return pdfText.contains(text); + return false; } + + public static boolean hasText(PDDocument document, String pageNumbersToCheck, String phrase) throws IOException { + String[] pageOrderArr = pageNumbersToCheck.split(","); + List pageList = GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); + + for (int pageNumber : pageList) { + PDPage page = document.getPage(pageNumber); + if (hasTextOnPage(page, phrase)) { + return true; + } + } + + return false; + } + public static boolean hasImagesOnPage(PDPage page) throws IOException { ImageFinder imageFinder = new ImageFinder(page); @@ -113,12 +107,17 @@ public class PdfUtils { } - public static boolean hasText(PDDocument document, String phrase) throws IOException { - PDFTextStripper pdfStripper = new PDFTextStripper(); - String text = pdfStripper.getText(document); - return text.contains(phrase); - } + + public static boolean hasTextOnPage(PDPage page, String phrase) throws IOException { + PDFTextStripper textStripper = new PDFTextStripper(); + PDDocument tempDoc = new PDDocument(); + tempDoc.addPage(page); + String pageText = textStripper.getText(tempDoc); + tempDoc.close(); + return pageText.contains(phrase); + } + public boolean containsTextInFile(PDDocument pdfDocument, String text, String pagesToCheck) throws IOException { PDFTextStripper textStripper = new PDFTextStripper(); diff --git a/src/main/java/stirling/software/SPDF/utils/WebResponseUtils.java b/src/main/java/stirling/software/SPDF/utils/WebResponseUtils.java index c986f220..59c0b056 100644 --- a/src/main/java/stirling/software/SPDF/utils/WebResponseUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/WebResponseUtils.java @@ -1,50 +1,61 @@ -package stirling.software.SPDF.utils; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; - -import org.apache.pdfbox.pdmodel.PDDocument; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; - -public class WebResponseUtils { - - public static ResponseEntity boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException { - return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName); - } - - public static ResponseEntity boasToWebResponse(ByteArrayOutputStream baos, String docName, MediaType mediaType) throws IOException { - return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName, mediaType); - } - - public static ResponseEntity bytesToWebResponse(byte[] bytes, String docName, MediaType mediaType) throws IOException { - - // Return the PDF as a response - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(mediaType); - headers.setContentLength(bytes.length); - String encodedDocName = URLEncoder.encode(docName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20"); - headers.setContentDispositionFormData("attachment", encodedDocName); - return new ResponseEntity<>(bytes, headers, HttpStatus.OK); - } - - public static ResponseEntity bytesToWebResponse(byte[] bytes, String docName) throws IOException { - return bytesToWebResponse(bytes, docName, MediaType.APPLICATION_PDF); - } - - public static ResponseEntity pdfDocToWebResponse(PDDocument document, String docName) throws IOException { - - // Open Byte Array and save document to it - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - document.save(baos); - // Close the document - document.close(); - - return boasToWebResponse(baos, docName); - } - -} +package stirling.software.SPDF.utils; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.multipart.MultipartFile; + +public class WebResponseUtils { + + public static ResponseEntity boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException { + return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName); + } + + public static ResponseEntity boasToWebResponse(ByteArrayOutputStream baos, String docName, MediaType mediaType) throws IOException { + return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName, mediaType); + } + + + public static ResponseEntity multiPartFileToWebResponse(MultipartFile file) throws IOException { + String fileName = file.getOriginalFilename(); + MediaType mediaType = MediaType.parseMediaType(file.getContentType()); + + byte[] bytes = file.getBytes(); + + return bytesToWebResponse(bytes, fileName, mediaType); + } + + public static ResponseEntity bytesToWebResponse(byte[] bytes, String docName, MediaType mediaType) throws IOException { + + // Return the PDF as a response + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(mediaType); + headers.setContentLength(bytes.length); + String encodedDocName = URLEncoder.encode(docName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20"); + headers.setContentDispositionFormData("attachment", encodedDocName); + return new ResponseEntity<>(bytes, headers, HttpStatus.OK); + } + + public static ResponseEntity bytesToWebResponse(byte[] bytes, String docName) throws IOException { + return bytesToWebResponse(bytes, docName, MediaType.APPLICATION_PDF); + } + + public static ResponseEntity pdfDocToWebResponse(PDDocument document, String docName) throws IOException { + + // Open Byte Array and save document to it + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + document.save(baos); + // Close the document + document.close(); + + return boasToWebResponse(baos, docName); + } + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6d5dfe95..06e4edec 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -15,7 +15,7 @@ server.error.whitelabel.enabled=false server.error.include-stacktrace=always server.error.include-exception=true server.error.include-message=always - +\ server.servlet.session.tracking-modes=cookie server.servlet.context-path=${APP_ROOT_PATH:/} @@ -26,3 +26,7 @@ spring.thymeleaf.encoding=UTF-8 server.connection-timeout=${CONNECTION_TIMEOUT:5m} spring.mvc.async.request-timeout=${ASYNC_CONNECTION_TIMEOUT:300000} + +spring.resources.static-locations=file:customFiles/static/ +#spring.thymeleaf.prefix=file:/customFiles/templates/,classpath:/templates/ +#spring.thymeleaf.cache=false \ No newline at end of file diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 8df50f1a..3b537e5e 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -1,471 +1,618 @@ -#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# -# Translated by Google Translate # -#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# - -########### -# Generic # -########### -# the direction that the language is written (ltr=left to right, rtl=right to left) -language.direction=rtl - -pdfPrompt=اختر PDF -multiPdfPrompt=اختر ملفات PDF (2+) -multiPdfDropPrompt=حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها -imgPrompt=اختر صورة -genericSubmit=إرسال -processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف -pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل): -goToPage=اذهب -true=\u0635\u062D\u064A\u062D -false=\u062E\u0637\u0623 -unknown=\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641 -save=\u062D\u0641\u0638 -close=\u0625\u063A\u0644\u0627\u0642 -filesSelected = الملفات المحددة -noFavourites = لم تتم إضافة أي مفضلات -bored = الانتظار بالملل؟ -alphabet=\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629 -############# -# HOME-PAGE # -############# -home.desc=متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك. - -navbar.convert=تحويل -navbar.security=الأمان -navbar.other=أخرى -navbar.darkmode=الوضع الداكن -navbar.pageOps=عمليات الصفحة - -home.multiTool.title=أداة متعددة PDF -home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها - -home.merge.title=دمج ملفات -home.merge.desc=دمج ملفات PDF متعددة في ملف واحد بسهولة. - -home.split.title=انقسام ملفات -home.split.desc=تقسيم ملفات PDF إلى مستندات متعددة - -home.rotate.title=تدوير ملفات -home.rotate.desc=قم بتدوير ملفات PDF الخاصة بك بسهولة. - -home.imageToPdf.title=صورة إلى PDF -home.imageToPdf.desc=تحويل الصور (PNG ، JPEG ، GIF) إلى PDF. - -home.pdfToImage.title=تحويل PDF إلى صورة -home.pdfToImage.desc=تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF) - -home.pdfOrganiser.title=منظم -home.pdfOrganiser.desc=إزالة / إعادة ترتيب الصفحات بأي ترتيب - -home.addImage.title=إضافة صورة إلى ملف PDF -home.addImage.desc=إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم) - -home.watermark.title=إضافة علامة مائية -home.watermark.desc=أضف علامة مائية مخصصة إلى مستند PDF الخاص بك. - -home.remove-watermark.title=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 -home.remove-watermark.desc=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0627\u0626\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. - -home.permissions.title=تغيير الأذونات -home.permissions.desc=قم بتغيير أذونات مستند PDF الخاص بك - -home.removePages.title=إزالة الصفحات -home.removePages.desc=حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك. - -home.addPassword.title=إضافة كلمة مرور -home.addPassword.desc=تشفير مستند PDF الخاص بك بكلمة مرور. - -home.removePassword.title=إزالة كلمة المرور -home.removePassword.desc=إزالة الحماية بكلمة مرور من مستند PDF الخاص بك. - -home.compressPdfs.title=ضغط ملفات -home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف. - -home.changeMetadata.title=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 -home.changeMetadata.desc=\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF - - -home.fileToPDF.title=\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF -home.fileToPDF.desc=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F) - -home.ocr.title=\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A -home.ocr.desc=\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635 - -home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 -home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A - -home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A -home.pdfToPDFA.desc=\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649 - - -home.PDFToWord.title=تحويل PDF إلى Word -home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT) - -home.PDFToPresentation.title=PDF للعرض التقديمي -home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP) - -home.PDFToText.title=تحويل PDF إلى نص / RTF -home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF - -home.PDFToHTML.title=تحويل PDF إلى HTML -home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML - -home.PDFToXML.title=تحويل PDF إلى XML -home.PDFToXML.desc=تحويل PDF إلى تنسيق XML - - -home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا -home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF - -home.sign.title = تسجيل الدخول -home.sign.desc = إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة - -home.flatten.title = تسطيح -home.flatten.desc = قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF - -home.repair.title = إصلاح -home.repair.desc = يحاول إصلاح ملف PDF تالف / معطل - -home.removeBlanks.title = إزالة الصفحات الفارغة -home.removeBlanks.desc = يكتشف ويزيل الصفحات الفارغة من المستند - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.compare.title = قارن -home.compare.desc = يقارن ويظهر الاختلافات بين 2 من مستندات PDF - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf = تنزيل PDF -text=نص -font=الخط -selectFillter = - حدد - -pageNum = رقم الصفحة - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title = توقيع الشهادة -certSign.header = قم بتوقيع ملف PDF بشهادتك (العمل قيد التقدم) -certSign.selectPDF = حدد ملف PDF للتوقيع: -certSign.selectKey = حدد ملف المفتاح الخاص (تنسيق PKCS # 8 ، يمكن أن يكون .pem أو .der): -certSign.selectCert = حدد ملف الشهادة الخاص بك (تنسيق X.509 ، يمكن أن يكون .pem أو .der): -certSign.selectP12 = حدد ملف تخزين المفاتيح PKCS # 12 (.p12 أو .pfx) (اختياري ، إذا تم توفيره ، يجب أن يحتوي على مفتاحك الخاص وشهادتك): -certSign.certType = نوع الشهادة -certSign.password = أدخل ملف تخزين المفاتيح أو كلمة المرور الخاصة (إن وجدت): -certSign.showSig = إظهار التوقيع -certSign.reason = السبب -certSign.location = الموقع -certSign.name = الاسم -certSign.submit = تسجيل PDF - -removeBlanks.title = إزالة الفراغات -removeBlanks.header = إزالة الصفحات الفارغة -removeBlanks.threshold = العتبة: -removeBlanks.thresholdDesc = الحد الفاصل لتحديد مدى بياض البكسل الأبيض -removeBlanks.whitePercent = نسبة الأبيض (٪): -removeBlanks.whitePercentDesc = النسبة المئوية للصفحة التي يجب أن تكون بيضاء لتتم إزالتها -removeBlanks.submit = إزالة الفراغات - -compare.title=يقارن -compare.header=قارن ملفات PDF -compare.document.1=المستند 1 -compare.document.2=المستند 2 -compare.submit=يقارن - -sign.title = تسجيل الدخول -sign.header = توقيع ملفات PDF -sign.upload = تحميل الصورة -sign.draw = رسم التوقيع -Sign.text = إدخال النص - -sign.clear=واضح -sign.add = إضافة - -repair.title = إصلاح -repair.header = إصلاح ملفات PDF -repair.submit = الإصلاح - -flatten.title = تسطيح -flatten.header = تسوية ملفات PDF -flatten.submit = تسطيح - -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). - - -navbar.settings=\u0625\u0639\u062F\u0627\u062F\u0627\u062A -settings.title=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A -settings.update=\u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0645\u062A\u0627\u062D -settings.appVersion=\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u062A\u0637\u0628\u064A\u0642: -settings.downloadOption.title=\u062A\u062D\u062F\u064A\u062F \u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 (\u0644\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0630\u0627\u062A \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0648\u0627\u062D\u062F \u063A\u064A\u0631 \u0627\u0644\u0645\u0636\u063A\u0648\u0637): -settings.downloadOption.1=\u0641\u062A\u062D \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 -settings.downloadOption.2=\u0641\u062A\u062D \u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629 -settings.downloadOption.3=\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 -settings.zipThreshold=\u0645\u0644\u0641\u0627\u062A \u0645\u0636\u063A\u0648\u0637\u0629 \u0639\u0646\u062F \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u0646\u0632\u064A\u0644\u0647\u0627 - -#OCR -ocr.title=\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A -ocr.header=\u0645\u0633\u062D \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A / \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 (\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641) -ocr.selectText.1=\u062D\u062F\u062F \u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u062A\u064A \u0633\u064A\u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF (\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0647\u064A \u062A\u0644\u0643 \u0627\u0644\u062A\u064A \u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062D\u0627\u0644\u064A\u064B\u0627): -ocr.selectText.2=\u0625\u0646\u062A\u0627\u062C \u0645\u0644\u0641 \u0646\u0635\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 OCR \u0628\u062C\u0627\u0646\u0628 \u0645\u0644\u0641 PDF \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0639\u062F\u0627\u062F\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 OCR -ocr.selectText.3=\u062A\u0645 \u0645\u0633\u062D \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0635\u062D\u064A\u062D\u0629 \u0636\u0648\u0626\u064A\u064B\u0627 \u0628\u0632\u0627\u0648\u064A\u0629 \u0645\u0646\u062D\u0631\u0641\u0629 \u0639\u0646 \u0637\u0631\u064A\u0642 \u062A\u062F\u0648\u064A\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A \u0645\u0643\u0627\u0646\u0647\u0627 -ocr.selectText.4=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629. (\u0644\u0627 \u064A\u0648\u062C\u062F \u062A\u063A\u064A\u064A\u0631 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C) -ocr.selectText.5=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u060C \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u060C \u0648\u064A\u062D\u0627\u0641\u0638 \u0639\u0644\u0649 \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C. -ocr.selectText.6=\u064A\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 \u062A\u0641\u0627\u0639\u0644\u064A \u060C \u0641\u0642\u0637 \u0635\u0641\u062D\u0627\u062A OCRs \u0627\u0644\u062A\u064A \u0647\u064A \u0635\u0648\u0631 -ocr.selectText.7=\u0641\u0631\u0636 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u060C \u0633\u064A\u0624\u062F\u064A \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u0639\u0644\u0649 \u0643\u0644 \u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062C\u0645\u064A\u0639 \u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0635\u0644\u064A -ocr.selectText.8=\u0639\u0627\u062F\u064A (\u062E\u0637\u0623 \u0625\u0630\u0627 \u0643\u0627\u0646 PDF \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635) -ocr.selectText.9=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 -ocr.selectText.10=\u0648\u0636\u0639 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 -ocr.selectText.11 = إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل) -ocr.selectText.12 = نوع العرض (متقدم) -ocr.help=\u064A\u0631\u062C\u0649 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0647 \u0627\u0644\u0648\u062B\u0627\u0626\u0642 \u062D\u0648\u0644 \u0643\u064A\u0641\u064A\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0644\u0644\u063A\u0627\u062A \u0623\u062E\u0631\u0649 \u0648 / \u0623\u0648 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0644\u064A\u0633 \u0641\u064A \u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0621 -ocr.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0648 Tesseract \u0644 OCR. -ocr.submit=\u0645\u0639\u0627\u0644\u062C\u0629 PDF \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 OCR - - -extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 -extractImages.header=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 -extractImages.selectText=\u062D\u062F\u062F \u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u0635\u0648\u0631\u0629 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0633\u062A\u062E\u0631\u062C\u0629 \u0625\u0644\u0649 -extractImages.submit=\u0627\u0633\u062A\u062E\u0631\u0627\u062C - -#File \u0625\u0644\u0649 PDF -fileToPDF.title=\u0645\u0644\u0641 \u0625\u0644\u0649 PDF -fileToPDF.header=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u0625\u0644\u0649 PDF -fileToPDF.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u0644\u064A\u0628\u0631 \u0623\u0648\u0641\u064A\u0633 \u0648\u0623\u0648\u0646\u0648\u0643\u0648\u0646\u0641 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A. -fileToPDF.supportedFileTypes=\u064A\u062C\u0628 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u0645\u0627 \u064A\u0644\u064A \u0648\u0644\u0643\u0646 \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0645\u062D\u062F\u062B\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u0627\u0644\u062A\u0646\u0633\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u060C \u064A\u0631\u062C\u0649 \u0627\u0644\u0631\u062C\u0648\u0639 \u0625\u0644\u0649 \u0648\u062B\u0627\u0626\u0642 LibreOffice -fileToPDF.submit=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 PDF - - -#Add image -addImage.title=إضافة صورة -addImage.header=إضافة صورة إلى PDF -addImage.everyPage=كل صفحة؟ -addImage.upload=إضافة صورة -addImage.submit=إضافة صورة - -#compress -compress.title = ضغط -compress.header = ضغط ملف PDF -compress.credit = تستخدم هذه الخدمة OCRmyPDF لضغط / تحسين PDF. -compress.selectText.1 = الوضع اليدوي - من 1 إلى 4 -compress.selectText.2 = مستوى التحسين: -compress.selectText.3 = 4 (رهيب للصور النصية) -compress.selectText.4 = الوضع التلقائي - يضبط الجودة تلقائيًا للحصول على ملف PDF بالحجم المحدد -compress.selectText.5 = حجم PDF المتوقع (على سبيل المثال 25 ميجا بايت ، 10.8 ميجا بايت ، 25 كيلو بايت) -compress.submit = ضغطضغط - - -#merge -merge.title=دمج -merge.header=دمج ملفات PDF متعددة (2+) -merge.submit=دمج - -#pdfOrganiser -pdfOrganiser.title=منظم الصفحة -pdfOrganiser.header=منظم صفحات PDF -pdfOrganiser.submit=إعادة ترتيب الصفحات - -#multiTool -multiTool.title=أداة متعددة PDF -multiTool.header=أداة متعددة 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 PDFS منفصلة مع: -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=Split - - -#merge -imageToPDF.title=صورة إلى PDF -imageToPDF.header=صورة إلى PDF -imageToPDF.submit=تحول -imageToPDF.selectText.1=\u062A\u0645\u062F\u062F \u0644\u0644\u0645\u0644\u0627\u0621\u0645\u0629 -imageToPDF.selectText.2=\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 -imageToPDF.selectText.3=\u0627\u0644\u0645\u0646\u0637\u0642 \u0627\u0644\u0645\u062A\u0639\u062F\u062F \u0644\u0644\u0645\u0644\u0641\u0627\u062A (\u0645\u0641\u0639\u0651\u0644 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0646\u062A \u062A\u0639\u0645\u0644 \u0645\u0639 \u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629) -imageToPDF.selectText.4=\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F -imageToPDF.selectText.5=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629 - -#pdfToImage -pdfToImage.title=تحويل PDF إلى صورة -pdfToImage.header=تحويل PDF إلى صورة -pdfToImage.selectText=تنسيق الصورة -pdfToImage.singleOrMultiple=\u0646\u0648\u0639 \u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0635\u0648\u0631\u0629 -pdfToImage.single=\u0635\u0648\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0643\u0628\u064A\u0631\u0629 -pdfToImage.multi=\u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 -pdfToImage.colorType=\u0646\u0648\u0639 \u0627\u0644\u0644\u0648\u0646 -pdfToImage.color=\u0627\u0644\u0644\u0648\u0646 -pdfToImage.grey=\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A -pdfToImage.blackwhite=\u0623\u0628\u064A\u0636 \u0648\u0623\u0633\u0648\u062F (\u0642\u062F \u064A\u0641\u0642\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A!) -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=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -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=widthSpacer (مسافة بين كل علامة مائية أفقيًا): -watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائية عموديًا): -watermark.selectText.7=\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A): -watermark.submit=إضافة علامة مائية - -#remove-watermark -remove-watermark.title=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 -remove-watermark.header=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 -remove-watermark.selectText.1=\u062D\u062F\u062F PDF \u0644\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 \u0645\u0646: -remove-watermark.selectText.2=\u0646\u0635 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629: -remove-watermark.submit=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 - -#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.title=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 -changeMetadata.header=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 -changeMetadata.selectText.1=\u064A\u0631\u062C\u0649 \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0631\u063A\u0628 \u0641\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627 -changeMetadata.selectText.2=\u062D\u0630\u0641 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 -changeMetadata.selectText.3=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 \u0627\u0644\u0645\u062E\u0635\u0635\u0629: -changeMetadata.author=\u0627\u0644\u0645\u0624\u0644\u0641: -changeMetadata.creationDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u0634\u0627\u0621 (yyyy / MM / dd HH: mm: ss): -changeMetadata.creator=\u0627\u0644\u0645\u0646\u0634\u0626: -changeMetadata.keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629: -changeMetadata.modDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss): -changeMetadata.producer=\u0627\u0644\u0645\u0646\u062A\u062C: -changeMetadata.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639: -changeMetadata.title=\u0627\u0644\u0639\u0646\u0648\u0627\u0646: -changeMetadata.trapped=\u0645\u062D\u0627\u0635\u0631: -changeMetadata.selectText.4=\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649: -changeMetadata.selectText.5=\u0625\u0636\u0627\u0641\u0629 \u0625\u062F\u062E\u0627\u0644 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u062E\u0635\u0635 -changeMetadata.submit=\u062A\u063A\u064A\u064A\u0631 - - - -xlsToPdf.title=\u062A\u062D\u0648\u064A\u0644 Excel \u0625\u0644\u0649 PDF -xlsToPdf.header=\u062A\u062D\u0648\u064A\u0644 Excel \u0625\u0644\u0649 PDF -xlsToPdf.selectText.1=\u062D\u062F\u062F \u0648\u0631\u0642\u0629 \u0625\u0643\u0633\u0644 XLS \u0623\u0648 XLSX \u0644\u0644\u062A\u062D\u0648\u064A\u0644 -xlsToPdf.convert=\u062A\u062D\u0648\u064A\u0644 - -pdfToPDFA.title=PDF \u0625\u0644\u0649 PDF / A -pdfToPDFA.header=PDF \u0625\u0644\u0649 PDF / A -pdfToPDFA.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0644\u062A\u062D\u0648\u064A\u0644 PDF / A. -pdfToPDFA.submit=\u062A\u062D\u0648\u064A\u0644 - - -PDFToWord.title=تحويل PDF إلى Word -PDFToWord.header=تحويل PDF إلى Word -PDFToWord.selectText.1=تنسيق ملف الإخراج -PDFToWord.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات. -PDFToWord.submit=تحويل - -PDFToPresentation.title=PDF للعرض التقديمي -PDFToPresentation.header=PDF للعرض التقديمي -PDFToPresentation.selectText.1=تنسيق ملف الإخراج -PDFToPresentation.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملف. -PDFToPresentation.submit=تحويل - - -PDFToText.title=تحويل PDF إلى نص / RTF -PDFToText.header=تحويل PDF إلى نص / RTF -PDFToText.selectText.1=تنسيق ملف الإخراج -PDFToText.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات. -PDFToText.submit=تحويل - - -PDFToHTML.title=PDF إلى HTML -PDFToHTML.header=PDF إلى HTML -PDFToHTML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات. -PDFToHTML.submit=تحويل - -PDFToXML.title=تحويل PDF إلى XML -PDFToXML.header=تحويل PDF إلى XML -PDFToXML.credit=تستخدم هذه الخدمة LibreOffice لتحويل الملفات. -PDFToXML.submit=تحويل +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=rtl + +pdfPrompt=اختر PDF +multiPdfPrompt=اختر ملفات PDF (2+) +multiPdfDropPrompt=حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها +imgPrompt=اختر صورة +genericSubmit=إرسال +processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف +pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل): +goToPage=اذهب +true=\u0635\u062D\u064A\u062D +false=\u062E\u0637\u0623 +unknown=\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641 +save=\u062D\u0641\u0638 +close=\u0625\u063A\u0644\u0627\u0642 +filesSelected=الملفات المحددة +noFavourites=لم تتم إضافة أي مفضلات +bored=الانتظار بالملل؟ +alphabet=\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629 +downloadPdf=تنزيل PDF +text=نص +font=الخط +selectFillter=- حدد - +pageNum=رقم الصفحة +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=تحويل +navbar.security=الأمان +navbar.other=أخرى +navbar.darkmode=الوضع الداكن +navbar.pageOps=عمليات الصفحة +navbar.settings=\u0625\u0639\u062F\u0627\u062F\u0627\u062A + +############# +# SETTINGS # +############# +settings.title=\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A +settings.update=\u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0645\u062A\u0627\u062D +settings.appVersion=\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u062A\u0637\u0628\u064A\u0642: +settings.downloadOption.title=\u062A\u062D\u062F\u064A\u062F \u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 (\u0644\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0630\u0627\u062A \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0648\u0627\u062D\u062F \u063A\u064A\u0631 \u0627\u0644\u0645\u0636\u063A\u0648\u0637): +settings.downloadOption.1=\u0641\u062A\u062D \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 +settings.downloadOption.2=\u0641\u062A\u062D \u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629 +settings.downloadOption.3=\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 +settings.zipThreshold=\u0645\u0644\u0641\u0627\u062A \u0645\u0636\u063A\u0648\u0637\u0629 \u0639\u0646\u062F \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u0646\u0632\u064A\u0644\u0647\u0627 + +############# +# HOME-PAGE # +############# +home.desc=متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك. + + +home.multiTool.title=أداة متعددة PDF +home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=دمج ملفات +home.merge.desc=دمج ملفات PDF متعددة في ملف واحد بسهولة. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=انقسام ملفات +home.split.desc=تقسيم ملفات PDF إلى مستندات متعددة + +home.rotate.title=تدوير ملفات +home.rotate.desc=قم بتدوير ملفات PDF الخاصة بك بسهولة. + +home.imageToPdf.title=صورة إلى PDF +home.imageToPdf.desc=تحويل الصور (PNG ، JPEG ، GIF) إلى PDF. + +home.pdfToImage.title=تحويل PDF إلى صورة +home.pdfToImage.desc=تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF) + +home.pdfOrganiser.title=منظم +home.pdfOrganiser.desc=إزالة / إعادة ترتيب الصفحات بأي ترتيب + +home.addImage.title=إضافة صورة إلى ملف PDF +home.addImage.desc=إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم) + +home.watermark.title=إضافة علامة مائية +home.watermark.desc=أضف علامة مائية مخصصة إلى مستند PDF الخاص بك. + +home.permissions.title=تغيير الأذونات +home.permissions.desc=قم بتغيير أذونات مستند PDF الخاص بك + +home.removePages.title=إزالة الصفحات +home.removePages.desc=حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك. + +home.addPassword.title=إضافة كلمة مرور +home.addPassword.desc=تشفير مستند PDF الخاص بك بكلمة مرور. + +home.removePassword.title=إزالة كلمة المرور +home.removePassword.desc=إزالة الحماية بكلمة مرور من مستند PDF الخاص بك. + +home.compressPdfs.title=ضغط ملفات +home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف. + +home.changeMetadata.title=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 +home.changeMetadata.desc=\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF + +home.fileToPDF.title=\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF +home.fileToPDF.desc=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F) + +home.ocr.title=\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A +home.ocr.desc=\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635 + +home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 +home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A + +home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A +home.pdfToPDFA.desc=\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649 + +home.PDFToWord.title=تحويل PDF إلى Word +home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT) + +home.PDFToPresentation.title=PDF للعرض التقديمي +home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP) + +home.PDFToText.title=تحويل PDF إلى نص / RTF +home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF + +home.PDFToHTML.title=تحويل PDF إلى HTML +home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML + +home.PDFToXML.title=تحويل PDF إلى XML +home.PDFToXML.desc=تحويل PDF إلى تنسيق XML + +home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا +home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF + +home.sign.title=تسجيل الدخول +home.sign.desc=إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة + +home.flatten.title=تسطيح +home.flatten.desc=قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF + +home.repair.title=إصلاح +home.repair.desc=يحاول إصلاح ملف PDF تالف / معطل + +home.removeBlanks.title=إزالة الصفحات الفارغة +home.removeBlanks.desc=يكتشف ويزيل الصفحات الفارغة من المستند + +home.compare.title=قارن +home.compare.desc=يقارن ويظهر الاختلافات بين 2 من مستندات PDF + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=توقيع الشهادة +certSign.header=قم بتوقيع ملف PDF بشهادتك (العمل قيد التقدم) +certSign.selectPDF=حدد ملف PDF للتوقيع: +certSign.selectKey=حدد ملف المفتاح الخاص (تنسيق PKCS # 8 ، يمكن أن يكون .pem أو .der): +certSign.selectCert=حدد ملف الشهادة الخاص بك (تنسيق X.509 ، يمكن أن يكون .pem أو .der): +certSign.selectP12=حدد ملف تخزين المفاتيح PKCS # 12 (.p12 أو .pfx) (اختياري ، إذا تم توفيره ، يجب أن يحتوي على مفتاحك الخاص وشهادتك): +certSign.certType=نوع الشهادة +certSign.password=أدخل ملف تخزين المفاتيح أو كلمة المرور الخاصة (إن وجدت): +certSign.showSig=إظهار التوقيع +certSign.reason=السبب +certSign.location=الموقع +certSign.name=الاسم +certSign.submit=تسجيل PDF + + +#removeBlanks +removeBlanks.title=إزالة الفراغات +removeBlanks.header=إزالة الصفحات الفارغة +removeBlanks.threshold=العتبة: +removeBlanks.thresholdDesc=الحد الفاصل لتحديد مدى بياض البكسل الأبيض +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=رسم التوقيع +########################## +### TODO: Translate ### +########################## +sign.text=Text Input +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=\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A +ocr.header=\u0645\u0633\u062D \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A / \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 (\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641) +ocr.selectText.1=\u062D\u062F\u062F \u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u062A\u064A \u0633\u064A\u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF (\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0647\u064A \u062A\u0644\u0643 \u0627\u0644\u062A\u064A \u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062D\u0627\u0644\u064A\u064B\u0627): +ocr.selectText.2=\u0625\u0646\u062A\u0627\u062C \u0645\u0644\u0641 \u0646\u0635\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 OCR \u0628\u062C\u0627\u0646\u0628 \u0645\u0644\u0641 PDF \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0639\u062F\u0627\u062F\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 OCR +ocr.selectText.3=\u062A\u0645 \u0645\u0633\u062D \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0635\u062D\u064A\u062D\u0629 \u0636\u0648\u0626\u064A\u064B\u0627 \u0628\u0632\u0627\u0648\u064A\u0629 \u0645\u0646\u062D\u0631\u0641\u0629 \u0639\u0646 \u0637\u0631\u064A\u0642 \u062A\u062F\u0648\u064A\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A \u0645\u0643\u0627\u0646\u0647\u0627 +ocr.selectText.4=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629. (\u0644\u0627 \u064A\u0648\u062C\u062F \u062A\u063A\u064A\u064A\u0631 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C) +ocr.selectText.5=\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u060C \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u060C \u0648\u064A\u062D\u0627\u0641\u0638 \u0639\u0644\u0649 \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C. +ocr.selectText.6=\u064A\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 \u062A\u0641\u0627\u0639\u0644\u064A \u060C \u0641\u0642\u0637 \u0635\u0641\u062D\u0627\u062A OCRs \u0627\u0644\u062A\u064A \u0647\u064A \u0635\u0648\u0631 +ocr.selectText.7=\u0641\u0631\u0636 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u060C \u0633\u064A\u0624\u062F\u064A \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u0639\u0644\u0649 \u0643\u0644 \u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062C\u0645\u064A\u0639 \u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0635\u0644\u064A +ocr.selectText.8=\u0639\u0627\u062F\u064A (\u062E\u0637\u0623 \u0625\u0630\u0627 \u0643\u0627\u0646 PDF \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635) +ocr.selectText.9=\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629 +ocr.selectText.10=\u0648\u0636\u0639 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 +ocr.selectText.11=إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل) +ocr.selectText.12=نوع العرض (متقدم) +ocr.help=\u064A\u0631\u062C\u0649 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0647 \u0627\u0644\u0648\u062B\u0627\u0626\u0642 \u062D\u0648\u0644 \u0643\u064A\u0641\u064A\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0644\u0644\u063A\u0627\u062A \u0623\u062E\u0631\u0649 \u0648 / \u0623\u0648 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0644\u064A\u0633 \u0641\u064A \u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0621 +ocr.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0648 Tesseract \u0644 OCR. +ocr.submit=\u0645\u0639\u0627\u0644\u062C\u0629 PDF \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 OCR + + +#extractImages +extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 +extractImages.header=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 +extractImages.selectText=\u062D\u062F\u062F \u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u0635\u0648\u0631\u0629 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0633\u062A\u062E\u0631\u062C\u0629 \u0625\u0644\u0649 +extractImages.submit=\u0627\u0633\u062A\u062E\u0631\u0627\u062C + + +#File to PDF +fileToPDF.title=\u0645\u0644\u0641 \u0625\u0644\u0649 PDF +fileToPDF.header=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u0625\u0644\u0649 PDF +fileToPDF.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u0644\u064A\u0628\u0631 \u0623\u0648\u0641\u064A\u0633 \u0648\u0623\u0648\u0646\u0648\u0643\u0648\u0646\u0641 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A. +fileToPDF.supportedFileTypes=\u064A\u062C\u0628 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u0645\u0627 \u064A\u0644\u064A \u0648\u0644\u0643\u0646 \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0645\u062D\u062F\u062B\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u0627\u0644\u062A\u0646\u0633\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u060C \u064A\u0631\u062C\u0649 \u0627\u0644\u0631\u062C\u0648\u0639 \u0625\u0644\u0649 \u0648\u062B\u0627\u0626\u0642 LibreOffice +fileToPDF.submit=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 PDF + + +#compress +compress.title=ضغط +compress.header=ضغط ملف PDF +compress.credit=تستخدم هذه الخدمة OCRmyPDF لضغط / تحسين PDF. +compress.selectText.1=الوضع اليدوي - من 1 إلى 4 +compress.selectText.2=مستوى التحسين: +compress.selectText.3=4 (رهيب للصور النصية) +compress.selectText.4=الوضع التلقائي - يضبط الجودة تلقائيًا للحصول على ملف PDF بالحجم المحدد +compress.selectText.5=حجم PDF المتوقع (على سبيل المثال 25 ميجا بايت ، 10.8 ميجا بايت ، 25 كيلو بايت) +compress.submit=ضغطضغط + + +#Add image +addImage.title=إضافة صورة +addImage.header=إضافة صورة إلى PDF +addImage.everyPage=كل صفحة؟ +addImage.upload=إضافة صورة +addImage.submit=إضافة صورة + + +#merge +merge.title=دمج +merge.header=دمج ملفات PDF متعددة (2+) +merge.submit=دمج + + +#pdfOrganiser +pdfOrganiser.title=منظم الصفحة +pdfOrganiser.header=منظم صفحات PDF +pdfOrganiser.submit=إعادة ترتيب الصفحات + + +#multiTool +multiTool.title=أداة متعددة PDF +multiTool.header=أداة متعددة 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 PDFS منفصلة مع: +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=Split + + +#merge +imageToPDF.title=صورة إلى PDF +imageToPDF.header=صورة إلى PDF +imageToPDF.submit=تحول +imageToPDF.selectText.1=\u062A\u0645\u062F\u062F \u0644\u0644\u0645\u0644\u0627\u0621\u0645\u0629 +imageToPDF.selectText.2=\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627 +imageToPDF.selectText.3=\u0627\u0644\u0645\u0646\u0637\u0642 \u0627\u0644\u0645\u062A\u0639\u062F\u062F \u0644\u0644\u0645\u0644\u0641\u0627\u062A (\u0645\u0641\u0639\u0651\u0644 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0646\u062A \u062A\u0639\u0645\u0644 \u0645\u0639 \u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629) +imageToPDF.selectText.4=\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F +imageToPDF.selectText.5=\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629 + + +#pdfToImage +pdfToImage.title=تحويل PDF إلى صورة +pdfToImage.header=تحويل PDF إلى صورة +pdfToImage.selectText=تنسيق الصورة +pdfToImage.singleOrMultiple=\u0646\u0648\u0639 \u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0635\u0648\u0631\u0629 +pdfToImage.single=\u0635\u0648\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0643\u0628\u064A\u0631\u0629 +pdfToImage.multi=\u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629 +pdfToImage.colorType=\u0646\u0648\u0639 \u0627\u0644\u0644\u0648\u0646 +pdfToImage.color=\u0627\u0644\u0644\u0648\u0646 +pdfToImage.grey=\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A +pdfToImage.blackwhite=\u0623\u0628\u064A\u0636 \u0648\u0623\u0633\u0648\u062F (\u0642\u062F \u064A\u0641\u0642\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A!) +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=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +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=widthSpacer (مسافة بين كل علامة مائية أفقيًا): +watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائية عموديًا): +watermark.selectText.7=\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A): +watermark.submit=إضافة علامة مائية + + +#remove-watermark +remove-watermark.title=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 +remove-watermark.header=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 +remove-watermark.selectText.1=\u062D\u062F\u062F PDF \u0644\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 \u0645\u0646: +remove-watermark.selectText.2=\u0646\u0635 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629: +remove-watermark.submit=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0626\u064A\u0629 + + +#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=\u0627\u0644\u0639\u0646\u0648\u0627\u0646: +changeMetadata.header=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 +changeMetadata.selectText.1=\u064A\u0631\u062C\u0649 \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0631\u063A\u0628 \u0641\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627 +changeMetadata.selectText.2=\u062D\u0630\u0641 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 +changeMetadata.selectText.3=\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 \u0627\u0644\u0645\u062E\u0635\u0635\u0629: +changeMetadata.author=\u0627\u0644\u0645\u0624\u0644\u0641: +changeMetadata.creationDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u0634\u0627\u0621 (yyyy / MM / dd HH: mm: ss): +changeMetadata.creator=\u0627\u0644\u0645\u0646\u0634\u0626: +changeMetadata.keywords=\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629: +changeMetadata.modDate=\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss): +changeMetadata.producer=\u0627\u0644\u0645\u0646\u062A\u062C: +changeMetadata.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639: +changeMetadata.title=\u0627\u0644\u0639\u0646\u0648\u0627\u0646: +changeMetadata.trapped=\u0645\u062D\u0627\u0635\u0631: +changeMetadata.selectText.4=\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649: +changeMetadata.selectText.5=\u0625\u0636\u0627\u0641\u0629 \u0625\u062F\u062E\u0627\u0644 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u062E\u0635\u0635 +changeMetadata.submit=\u062A\u063A\u064A\u064A\u0631 + + +#xlsToPdf +xlsToPdf.title=\u062A\u062D\u0648\u064A\u0644 Excel \u0625\u0644\u0649 PDF +xlsToPdf.header=\u062A\u062D\u0648\u064A\u0644 Excel \u0625\u0644\u0649 PDF +xlsToPdf.selectText.1=\u062D\u062F\u062F \u0648\u0631\u0642\u0629 \u0625\u0643\u0633\u0644 XLS \u0623\u0648 XLSX \u0644\u0644\u062A\u062D\u0648\u064A\u0644 +xlsToPdf.convert=\u062A\u062D\u0648\u064A\u0644 + + +#pdfToPDFA +pdfToPDFA.title=PDF \u0625\u0644\u0649 PDF / A +pdfToPDFA.header=PDF \u0625\u0644\u0649 PDF / A +pdfToPDFA.credit=\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0644\u062A\u062D\u0648\u064A\u0644 PDF / A. +pdfToPDFA.submit=\u062A\u062D\u0648\u064A\u0644 + + +#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=تحويل diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index b9f9d195..5a4e8e43 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -1,484 +1,615 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr = left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Selecciona PDF(s) -multiPdfPrompt=Selecciona PDFs (2+) -multiPdfDropPrompt=Selecciona (o arrossega) els documents PDF -imgPrompt=Selecciona Imatge(s) -genericSubmit=Envia -processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu -pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) : -goToPage=Anar -true=Verdader -false=Fals -unknown=Desconegut -save=Desa -close=Tanca -filesSelected=fitxers seleccionats -noFavourites=No s'ha afegit cap favorit -bored=Avorrit esperant? -alphabet=Alfabet -############# -# HOME-PAGE # -############# -home.desc=L'eina allotjada localment per a necessitats PDF. - - -navbar.convert=Converteix -navbar.security=Seguretat -navbar.other=Altres -navbar.darkmode=Mode Fost -navbar.pageOps=Operacions de Pàgina - -home.multiTool.title=PDF Multi Tool -home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines - -home.merge.title=Fusiona -home.merge.desc=Fusiona fàcilment pàgines en una. - -home.split.title=Divideix -home.split.desc=Divideix PDFs en múltiples documents - -home.rotate.title=Rota -home.rotate.desc=Rota els PDFs. - -home.imageToPdf.title=Imatge a PDF -home.imageToPdf.desc=Converteix imatge (PNG, JPEG, GIF) a PDF. - -home.pdfToImage.title=PDF a Imatge -home.pdfToImage.desc=Converteix PDF a imatge. (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Organitza -home.pdfOrganiser.desc=Elimina/Reorganitza pàgines en qualsevol ordre - -home.addImage.title=Afegir imatge a PDF -home.addImage.desc=Afegeix imatge en un PDF (En progrés) - -home.watermark.title=Afegir Marca d'aigua -home.watermark.desc=Afegir Marca d'aigua personalitzada en un PDF - -home.remove-watermark.title=Treure Marca d'Aigua -home.remove-watermark.desc=Treu Marca d'Aigua d'un PDF - -home.permissions.title=Canvia permissos -home.permissions.desc=Canvia permisos del document PDF - -home.removePages.title=Elimina -home.removePages.desc=Elimina pàgines del document PDF. - -home.addPassword.title=Afegir Password -home.addPassword.desc=Xifra document PDF amb password. - -home.removePassword.title=Elimina Password -home.removePassword.desc=Elimia Password de document PDF. - -home.compressPdfs.title=Comprimeix -home.compressPdfs.desc=Comprimeix PDFs per reduir la mida. - -home.changeMetadata.title=Canvia Metadades -home.changeMetadata.desc=Canvia/Treu/Afegeix matadades al document PDF. - -home.fileToPDF.title=Converteix arxiu a PDF -home.fileToPDF.desc=Converteix qualsevol arxiu a PDF (DOCX, PNG, XLS, PPT, TXT i més) - -home.ocr.title=Executa exploracions OCR i/o neteja escanejos -home.ocr.desc=Neteja escanejats i detecta text d'imatges dins d'un PDF i el torna a afegir com a text. - -home.extractImages.title=Extreu Imatges -home.extractImages.desc=Extreu les Imatges del PDF i les desa a zip - -home.pdfToPDFA.title=PDF a PDF/A -home.pdfToPDFA.desc=Converteix PDF a PDF/A per desar a llarg termini. - -home.PDFToWord.title=PDF a Word -home.PDFToWord.desc=Converteix PDF a formats de Word (DOC, DOCX and ODT) - -home.PDFToPresentation.title=PDF a Presentació -home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP) - -home.PDFToText.title=PDF a Text/RTF -home.PDFToText.desc=Converteix PDF a Text o format RTF - -home.PDFToHTML.title=PDF a HTML -home.PDFToHTML.desc=Converteix PDF a format HTML - -home.PDFToXML.title=PDF a XML -home.PDFToXML.desc=Converteix PDF a format XML - -home.ScannerImageSplit.title=Detecta/Divideix fotos escanejades -home.ScannerImageSplit.desc=Divideix múltiples fotos dins del PDF/foto - -home.sign.title=Sign -home.sign.desc=Afegeix signatura al PDF mitjançant dibuix, text o imatge - -home.flatten.title=Aplanar -home.flatten.desc=Elimineu tots els elements i formularis interactius d'un PDF - -home.repair.title=Reparar -home.repair.desc=Intenta reparar un PDF danyat o trencat - -home.removeBlanks.title=Elimina les pàgines en blanc -home.removeBlanks.desc=Detecta i elimina les pàgines en blanc d'un document - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.compare.title=Compara -home.compare.desc=Compara i mostra les diferències entre 2 documents PDF - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Descarregueu PDF -text=Text -font=Tipus de lletra -selectFillter=-- Selecciona -- -pageNum=Número de pàgina - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Significació del certificat -certSign.header=Firmar un PDF amb el vostre certificat (Treball en curs) -certSign.selectPDF=Seleccioneu un fitxer PDF per signar: -certSign.selectKey=Seleccioneu el vostre fitxer de clau privada (format PKCS#8, podria ser .pem o .der): -certSign.selectCert=Seleccioneu el vostre fitxer de certificat (format X.509, podria ser .pem o .der): -certSign.selectP12=Seleccioneu el vostre fitxer de magatzem de claus PKCS#12 (.p12 o .pfx) (Opcional, si es proporciona, hauria de contenir la vostra clau privada i certificat): -certSign.certType=Tipus de certificat -certSign.password=Introduïu el vostre magatzem de claus o contrasenya de clau privada (si n'hi ha): -certSign.showSig=Mostra la signatura -certSign.reason=Motiu -certSign.location=Ubicació -certSign.name=Nom -certSign.submit=Firma PDF - -removeBlanks.title=Elimina els espais en blanc -removeBlanks.header=Elimina les pàgines en blanc -removeBlanks.threshold=Llindar: -removeBlanks.thresholdDesc=Llindar per determinar el blanc que ha de ser un píxel blanc -removeBlanks.whitePercent=Percentatge blanc (%): -removeBlanks.whitePercentDesc=Percentatge de pàgina que ha de ser blanca per eliminar-la -removeBlanks.submit=Elimina els espais en blanc - -compare.title=Comparar -compare.header=Compara PDF -compare.document.1=Document 1 -compare.document.2=Document 2 -compare.submit=Comparar - -sign.title=Sign -sign.header=Firma els PDF -sign.upload=Penja la imatge -sign.draw=Dibuixa la signatura -sign.text=Entrada de text -sign.clear=Esborrar -sign.add=Afegeix - -repair.title=Reparar -repair.header=Repara els PDF -repair.submit=Reparar - -flatten.title=Aplanar -flatten.header=Aplana els PDF -flatten.submit=Aplanar - -ScannerImageSplit.selectText.1=Llindar d'angle: -ScannerImageSplit.selectText.2=Estableix l'angle absolut mínim necessari perquè la imatge es giri (per defecte: 10). -ScannerImageSplit.selectText.3=Tolerància: -ScannerImageSplit.selectText.4=Determina l'interval de variació de color al voltant del color de fons estimat (per defecte: 30). -ScannerImageSplit.selectText.5=Àrea Mínima: -ScannerImageSplit.selectText.6=Estableix el llindar d'àrea mínima per a una foto (per defecte: 10000). -ScannerImageSplit.selectText.7=Àrea de contorn mínima: -ScannerImageSplit.selectText.8=Estableix el llindar mínim de l'àrea de contorn per a una foto -ScannerImageSplit.selectText.9=Mida Vora: -ScannerImageSplit.selectText.10=Estableix la mida de la vora afegida i eliminada per evitar vores blanques a la sortida (per defecte: 1). - -navbar.settings=Opcions -settings.title=Opcions -settings.update=Actualització Disponible -settings.appVersion=Versió App: -settings.downloadOption.title=Trieu l'opció de descàrrega (per a descàrregues d'un sol fitxer no zip): -settings.downloadOption.1=Obre mateixa finestra -settings.downloadOption.2=Obre mateixa finestra -settings.downloadOption.3=Descarrega Arxiu -settings.zipThreshold=Comprimiu els fitxers quan el nombre de fitxers baixats superi - - - - - -#OCR -ocr.title=OCR / Neteja escaneig -ocr.header=Neteja Escanejos / OCR (Reconeixement òptic de caràcters) -ocr.selectText.1=Selecciona els idiomes que s'han de detectar dins del PDF (els que s'indiquen són els detectats): -ocr.selectText.2=Produeix un fitxer de text que contingui text OCR juntament amb el PDF editat per OCR -ocr.selectText.3=Corregeix pàgines escanejades amb un angle esbiaixat girant-les de nou al seu lloc -ocr.selectText.4=Neteja la pàgina, de manera que és menys probable que l'OCR trobi soroll de text de fons. (Sense canvis de sortida) -ocr.selectText.5=Neteja la pàgina, de manera que és menys probable que l'OCR trobi text al soroll de fons, mantenint la neteja a la sortida. -ocr.selectText.6=Ignora les pàgines que tenen text interactiu, només les pàgines OCR que són imatges -ocr.selectText.7=Força OCR, l'OCR de cada pàgina elimina tots els elements de text originals -ocr.selectText.8=Normal (error si el PDF conté text) -ocr.selectText.9=Opcions Addicionals -ocr.selectText.10=Mode OCR -ocr.selectText.11=Elimia Imatges després de l'OCR (Alimina TOTES les imatges, útil si és part d'un procés de conversió) -ocr.selectText.12=Tipus de Renderització (Avançat) -ocr.help=Llegiu aquesta documentació sobre com utilitzar-la per a altres idiomes i/o no utilitzar-la a Docker -ocr.credit=Aquest servei empra OCRmyPDF i Tesseract per OCR. -ocr.submit=Processa PDF amb OCR - - - -extractImages.title=Extreu Imatges -extractImages.header=Extreu Imatges -extractImages.selectText=Selecciona el format d'imatge al qual convertir les imatges extretes -extractImages.submit=Extreu - - -#File to PDF -fileToPDF.title=Arxiu a PDF -fileToPDF.header=Converteix arxiu a PDF -fileToPDF.credit=Utilitza LibreOffice i Unoconv per a la conversió. -fileToPDF.supportedFileTypes=Els tipus de fitxers admesos haurien d'incloure el següent, però per obtenir una llista completa actualitzada dels formats compatibles, consulteu la documentació de LibreOffice -fileToPDF.submit=Converteix a PDF - - -#compress -compress.title=Comprimir -compress.header=Comprimir PDF -compress.credit=Aquest servei utilitza Ghostscript per a la compressió/optimització de PDF. -compress.selectText.1=Mode manual: de l'1 al 4 -compress.selectText.2=Nivell d'optimització: -compress.selectText.3=4 (terrible per a imatges de text) -compress.selectText.4=Mode automàtic: ajusta automàticament la qualitat per tal que el PDF tingui la mida exacta -compress.selectText.5=Mida esperada del PDF (p. ex. 25 MB, 10,8 MB, 25 KB) -compress.submit=Comprimir - -#Add image -addImage.title=Afegir Imatge -addImage.header=Afegir Imatge a PDF (en construcció) -addImage.everyPage=Totes les pàgines? -addImage.upload=Afegir Imatge -addImage.submit=Afegir Imatge - - -#merge -merge.title=Fusiona -merge.header=Fusiona múltiples PDFs (2+) -merge.submit=Fusiona - -#pdfOrganiser -pdfOrganiser.title=Organitzador de pàgines -pdfOrganiser.header=Organitzador de pàgines PDF -pdfOrganiser.submit=Reorganitza Pàgines - -#multiTool -multiTool.title=PDF Multi Tool -multiTool.header=PDF Multi Tool - - -#pageRemover -pageRemover.title=Eliminació Pàgines -pageRemover.header=Eliminació Pàgines PDF -pageRemover.pagesToDelete=Pàgines a esborrar (Números de pàgina) : -pageRemover.submit=Esborra Pàgines - -#rotate -rotate.title=Rota PDF -rotate.header=Rota PDF -rotate.selectAngle=Selecciona l'angle de gir (en múltiples de 90 graus): -rotate.submit=Rota - - - - -#merge -split.title=Divideix PDF -split.header=Divideix PDF -split.desc.1=Els números seleccionats són el número de pàgina en què voleu fer la divisió -split.desc.2=Per tant, seleccionant 1,3,7-8 dividiria un document de 10 pàgines en 6 PDFS separats amb: -split.desc.3=Document #1: Pàgina 1 -split.desc.4=Document #2: Pàgina 2 i 3 -split.desc.5=Document #3: Pàgina 4, 5 i 6 -split.desc.6=Document #4: Pàgina 7 -split.desc.7=Document #5: Pàgina 8 -split.desc.8=Document #6: Pàgina 9 i 10 -split.splitPages=Introdueix pàgines per dividir-les: -split.submit=Divideix - - -#merge -imageToPDF.title=Imatge a PDF -imageToPDF.header=Imatge a PDF -imageToPDF.submit=Converteix -imageToPDF.selectText.1=Estirar per adaptar -imageToPDF.selectText.2=Auto rota PDF -imageToPDF.selectText.3=Lògica de diversos fitxers (només està activada si es treballa amb diverses imatges) -imageToPDF.selectText.4=Combina en un únic PDF -imageToPDF.selectText.5=Converteix per separar PDFs - -#pdfToImage -pdfToImage.title=PDF a Imatge -pdfToImage.header=PDF a Imatge -pdfToImage.selectText=Format Imatge -pdfToImage.singleOrMultiple=Tipus Imatge Resultant -pdfToImage.single=Única Imatge Gran -pdfToImage.multi=Múltiples Imatges -pdfToImage.colorType=Tipus Color -pdfToImage.color=Color -pdfToImage.grey=Escala de Grisos -pdfToImage.blackwhite=Blanc i Negre (Pot perdre dades!) -pdfToImage.submit=Converteix - -#addPassword -addPassword.title=Afegir Password -addPassword.header=Afegir password (Encriptat) -addPassword.selectText.1=PDF a encriptar -addPassword.selectText.2=Password -addPassword.selectText.3=Longitud clau de xifratge -addPassword.selectText.4=Valors més alts són més forts, però els valors més baixos tenen una millor compatibilitat. -addPassword.selectText.5=Permissos a Establir -addPassword.selectText.6=Evita muntatge del document -addPassword.selectText.7=Evita extracció de contingut -addPassword.selectText.8=Evita extracció per accessibilitat -addPassword.selectText.9=Evita emplenar formularis -addPassword.selectText.10=Evita modificacions -addPassword.selectText.11=Evita modificacions d'annotacions -addPassword.selectText.12=Evita impressió -addPassword.selectText.13=Evita impressió de diferents formats -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Encripta - -#watermark -watermark.title=Afegir Marca d'Aigua -watermark.header=Afegir Marca d'Aigua -watermark.selectText.1=Seleciona PDF per afegir Marca d'Aigua: -watermark.selectText.2=Text de la Marca d'Aigua -watermark.selectText.3=Mida de la Font: -watermark.selectText.4=Rotació (0-360): -watermark.selectText.5=separació d'amplada (Espai horitzontal entre cada Marca d'Aigua): -watermark.selectText.6=separació d'alçada (Espai vertical entre cada Marca d'Aigua): -watermark.selectText.7=Opacitat (0% - 100%): -watermark.submit=Afegir Marca d'Aigua - -#remove-watermark -remove-watermark.title=Elimina Marca d'Aigua -remove-watermark.header=Elimina Marca d'Aigua -remove-watermark.selectText.1=Seleciona PDF per eliminar Marca d'Aigua: -remove-watermark.selectText.2=Text de la Marca d'Aigua: -remove-watermark.submit=Elimina Marca d'Aigua - -#Change permissions -permissions.title=Canviar Permissos -permissions.header=Canviar Permissos -permissions.warning=Advertència perquè aquests permisos siguin inalterables, es recomana establir-los amb una contrasenya a través de la pàgina d'afegir contrasenya -permissions.selectText.1=Selecciona PDF per Canviar Permissos -permissions.selectText.2=Permissos a canviar -permissions.selectText.3=Evita muntatge del document -permissions.selectText.4=Evita extracció de contingut -permissions.selectText.5=evita extracció de contingut per accessibilitat -permissions.selectText.6=Evita emplenar formularis -permissions.selectText.7=Evita modificacions -permissions.selectText.8=Evita modificacions d'annotacions -permissions.selectText.9=Evita impressió -permissions.selectText.10=Evita impressió de diferents formats -permissions.submit=Canviar Permissos - -#remove password -removePassword.title=Treure Password -removePassword.header=Treure Password (Decriptar) -removePassword.selectText.1=Selecciona PDF a Decriptar -removePassword.selectText.2=Password -removePassword.submit=Treu Password - -changeMetadata.title=Canvia Metadades -changeMetadata.header=Canvia Metadades -changeMetadata.selectText.1=Edit les variables a canviar -changeMetadata.selectText.2=Neteja totes les matadades -changeMetadata.selectText.3=Mostra Metadades Personalitzades: -changeMetadata.author=Autor: -changeMetadata.creationDate=Data Creació (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Creador: -changeMetadata.keywords=Keywords: -changeMetadata.modDate=Data Modificació (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Productor: -changeMetadata.subject=Assumpte: -changeMetadata.title=Títol: -changeMetadata.trapped=Atrapat: -changeMetadata.selectText.4=Altres Metadades: -changeMetadata.selectText.5=Afegir entrada personalizada -changeMetadata.submit=Canvia - -xlsToPdf.title=Excel a PDF -xlsToPdf.header=Excel a PDF -xlsToPdf.selectText.1=Selecciona arxiu XLS o XLSX a convertir -xlsToPdf.convert=Converteix - - - - -pdfToPDFA.title=PDF a PDF/A -pdfToPDFA.header=PDF a PDF/A -pdfToPDFA.credit=Utilitza OCRmyPDF per la conversió a PDF/A -pdfToPDFA.submit=Converteix - - - -PDFToWord.title=PDF a Word -PDFToWord.header=PDF a Word -PDFToWord.selectText.1=Format d'Arxiu de Sortida -PDFToWord.credit=Utilitza LibreOffice per a la conversió d'Arxius. -PDFToWord.submit=Converteix - -PDFToPresentation.title=PDF a Presentació -PDFToPresentation.header=PDF a Presentació -PDFToPresentation.selectText.1=Format d'Arxiu de Sortida -PDFToPresentation.credit=Utilitza LibreOffice per a la conversió d'Arxius. -PDFToPresentation.submit=Converteix - - -PDFToText.title=PDF a Text/RTF -PDFToText.header=PDF a Text/RTF -PDFToText.selectText.1=Format d'Arxiu de Sortida -PDFToText.credit=Utilitza LibreOffice per a la conversió d'Arxius. -PDFToText.submit=Converteix - - -PDFToHTML.title=PDF a HTML -PDFToHTML.header=PDF a HTML -PDFToHTML.credit=Utilitza LibreOffice per a la conversió d'Arxius. -PDFToHTML.submit=Converteix - -PDFToXML.title=PDF a XML -PDFToXML.header=PDF a XML -PDFToXML.credit=Utilitza LibreOffice per a la conversió d'Arxius. -PDFToXML.submit=Converteix - - - - - - - - - - - - +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Selecciona PDF(s) +multiPdfPrompt=Selecciona PDFs (2+) +multiPdfDropPrompt=Selecciona (o arrossega) els documents PDF +imgPrompt=Selecciona Imatge(s) +genericSubmit=Envia +processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu +pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) : +goToPage=Anar +true=Verdader +false=Fals +unknown=Desconegut +save=Desa +close=Tanca +filesSelected=fitxers seleccionats +noFavourites=No s'ha afegit cap favorit +bored=Avorrit esperant? +alphabet=Alfabet +downloadPdf=Descarregueu PDF +text=Text +font=Tipus de lletra +selectFillter=-- Selecciona -- +pageNum=Número de pàgina +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Converteix +navbar.security=Seguretat +navbar.other=Altres +navbar.darkmode=Mode Fost +navbar.pageOps=Operacions de Pàgina +navbar.settings=Opcions + +############# +# SETTINGS # +############# +settings.title=Opcions +settings.update=Actualització Disponible +settings.appVersion=Versió App: +settings.downloadOption.title=Trieu l'opció de descàrrega (per a descàrregues d'un sol fitxer no zip): +settings.downloadOption.1=Obre mateixa finestra +settings.downloadOption.2=Obre mateixa finestra +settings.downloadOption.3=Descarrega Arxiu +settings.zipThreshold=Comprimiu els fitxers quan el nombre de fitxers baixats superi + +############# +# HOME-PAGE # +############# +home.desc=L'eina allotjada localment per a necessitats PDF. + + +home.multiTool.title=PDF Multi Tool +home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Fusiona +home.merge.desc=Fusiona fàcilment pàgines en una. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Divideix +home.split.desc=Divideix PDFs en múltiples documents + +home.rotate.title=Rota +home.rotate.desc=Rota els PDFs. + +home.imageToPdf.title=Imatge a PDF +home.imageToPdf.desc=Converteix imatge (PNG, JPEG, GIF) a PDF. + +home.pdfToImage.title=PDF a Imatge +home.pdfToImage.desc=Converteix PDF a imatge. (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Organitza +home.pdfOrganiser.desc=Elimina/Reorganitza pàgines en qualsevol ordre + +home.addImage.title=Afegir imatge a PDF +home.addImage.desc=Afegeix imatge en un PDF (En progrés) + +home.watermark.title=Afegir Marca d'aigua +home.watermark.desc=Afegir Marca d'aigua personalitzada en un PDF + +home.permissions.title=Canvia permissos +home.permissions.desc=Canvia permisos del document PDF + +home.removePages.title=Elimina +home.removePages.desc=Elimina pàgines del document PDF. + +home.addPassword.title=Afegir Password +home.addPassword.desc=Xifra document PDF amb password. + +home.removePassword.title=Elimina Password +home.removePassword.desc=Elimia Password de document PDF. + +home.compressPdfs.title=Comprimeix +home.compressPdfs.desc=Comprimeix PDFs per reduir la mida. + +home.changeMetadata.title=Canvia Metadades +home.changeMetadata.desc=Canvia/Treu/Afegeix matadades al document PDF. + +home.fileToPDF.title=Converteix arxiu a PDF +home.fileToPDF.desc=Converteix qualsevol arxiu a PDF (DOCX, PNG, XLS, PPT, TXT i més) + +home.ocr.title=Executa exploracions OCR i/o neteja escanejos +home.ocr.desc=Neteja escanejats i detecta text d'imatges dins d'un PDF i el torna a afegir com a text. + +home.extractImages.title=Extreu Imatges +home.extractImages.desc=Extreu les Imatges del PDF i les desa a zip + +home.pdfToPDFA.title=PDF a PDF/A +home.pdfToPDFA.desc=Converteix PDF a PDF/A per desar a llarg termini. + +home.PDFToWord.title=PDF a Word +home.PDFToWord.desc=Converteix PDF a formats de Word (DOC, DOCX and ODT) + +home.PDFToPresentation.title=PDF a Presentació +home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP) + +home.PDFToText.title=PDF a Text/RTF +home.PDFToText.desc=Converteix PDF a Text o format RTF + +home.PDFToHTML.title=PDF a HTML +home.PDFToHTML.desc=Converteix PDF a format HTML + +home.PDFToXML.title=PDF a XML +home.PDFToXML.desc=Converteix PDF a format XML + +home.ScannerImageSplit.title=Detecta/Divideix fotos escanejades +home.ScannerImageSplit.desc=Divideix múltiples fotos dins del PDF/foto + +home.sign.title=Sign +home.sign.desc=Afegeix signatura al PDF mitjançant dibuix, text o imatge + +home.flatten.title=Aplanar +home.flatten.desc=Elimineu tots els elements i formularis interactius d'un PDF + +home.repair.title=Reparar +home.repair.desc=Intenta reparar un PDF danyat o trencat + +home.removeBlanks.title=Elimina les pàgines en blanc +home.removeBlanks.desc=Detecta i elimina les pàgines en blanc d'un document + +home.compare.title=Compara +home.compare.desc=Compara i mostra les diferències entre 2 documents PDF + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Significació del certificat +certSign.header=Firmar un PDF amb el vostre certificat (Treball en curs) +certSign.selectPDF=Seleccioneu un fitxer PDF per signar: +certSign.selectKey=Seleccioneu el vostre fitxer de clau privada (format PKCS#8, podria ser .pem o .der): +certSign.selectCert=Seleccioneu el vostre fitxer de certificat (format X.509, podria ser .pem o .der): +certSign.selectP12=Seleccioneu el vostre fitxer de magatzem de claus PKCS#12 (.p12 o .pfx) (Opcional, si es proporciona, hauria de contenir la vostra clau privada i certificat): +certSign.certType=Tipus de certificat +certSign.password=Introduïu el vostre magatzem de claus o contrasenya de clau privada (si n'hi ha): +certSign.showSig=Mostra la signatura +certSign.reason=Motiu +certSign.location=Ubicació +certSign.name=Nom +certSign.submit=Firma PDF + + +#removeBlanks +removeBlanks.title=Elimina els espais en blanc +removeBlanks.header=Elimina les pàgines en blanc +removeBlanks.threshold=Llindar: +removeBlanks.thresholdDesc=Llindar per determinar el blanc que ha de ser un píxel blanc +removeBlanks.whitePercent=Percentatge blanc (%): +removeBlanks.whitePercentDesc=Percentatge de pàgina que ha de ser blanca per eliminar-la +removeBlanks.submit=Elimina els espais en blanc + + +#compare +compare.title=Comparar +compare.header=Compara PDF +compare.document.1=Document 1 +compare.document.2=Document 2 +compare.submit=Comparar + + +#sign +sign.title=Sign +sign.header=Firma els PDF +sign.upload=Penja la imatge +sign.draw=Dibuixa la signatura +sign.text=Entrada de text +sign.clear=Esborrar +sign.add=Afegeix + + +#repair +repair.title=Reparar +repair.header=Repara els PDF +repair.submit=Reparar + + +#flatten +flatten.title=Aplanar +flatten.header=Aplana els PDF +flatten.submit=Aplanar + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Llindar d'angle: +ScannerImageSplit.selectText.2=Estableix l'angle absolut mínim necessari perquè la imatge es giri (per defecte: 10). +ScannerImageSplit.selectText.3=Tolerància: +ScannerImageSplit.selectText.4=Determina l'interval de variació de color al voltant del color de fons estimat (per defecte: 30). +ScannerImageSplit.selectText.5=Àrea Mínima: +ScannerImageSplit.selectText.6=Estableix el llindar d'àrea mínima per a una foto (per defecte: 10000). +ScannerImageSplit.selectText.7=Àrea de contorn mínima: +ScannerImageSplit.selectText.8=Estableix el llindar mínim de l'àrea de contorn per a una foto +ScannerImageSplit.selectText.9=Mida Vora: +ScannerImageSplit.selectText.10=Estableix la mida de la vora afegida i eliminada per evitar vores blanques a la sortida (per defecte: 1). + + +#OCR +ocr.title=OCR / Neteja escaneig +ocr.header=Neteja Escanejos / OCR (Reconeixement òptic de caràcters) +ocr.selectText.1=Selecciona els idiomes que s'han de detectar dins del PDF (els que s'indiquen són els detectats): +ocr.selectText.2=Produeix un fitxer de text que contingui text OCR juntament amb el PDF editat per OCR +ocr.selectText.3=Corregeix pàgines escanejades amb un angle esbiaixat girant-les de nou al seu lloc +ocr.selectText.4=Neteja la pàgina, de manera que és menys probable que l'OCR trobi soroll de text de fons. (Sense canvis de sortida) +ocr.selectText.5=Neteja la pàgina, de manera que és menys probable que l'OCR trobi text al soroll de fons, mantenint la neteja a la sortida. +ocr.selectText.6=Ignora les pàgines que tenen text interactiu, només les pàgines OCR que són imatges +ocr.selectText.7=Força OCR, l'OCR de cada pàgina elimina tots els elements de text originals +ocr.selectText.8=Normal (error si el PDF conté text) +ocr.selectText.9=Opcions Addicionals +ocr.selectText.10=Mode OCR +ocr.selectText.11=Elimia Imatges després de l'OCR (Alimina TOTES les imatges, útil si és part d'un procés de conversió) +ocr.selectText.12=Tipus de Renderització (Avançat) +ocr.help=Llegiu aquesta documentació sobre com utilitzar-la per a altres idiomes i/o no utilitzar-la a Docker +ocr.credit=Aquest servei empra OCRmyPDF i Tesseract per OCR. +ocr.submit=Processa PDF amb OCR + + +#extractImages +extractImages.title=Extreu Imatges +extractImages.header=Extreu Imatges +extractImages.selectText=Selecciona el format d'imatge al qual convertir les imatges extretes +extractImages.submit=Extreu + + +#File to PDF +fileToPDF.title=Arxiu a PDF +fileToPDF.header=Converteix arxiu a PDF +fileToPDF.credit=Utilitza LibreOffice i Unoconv per a la conversió. +fileToPDF.supportedFileTypes=Els tipus de fitxers admesos haurien d'incloure el següent, però per obtenir una llista completa actualitzada dels formats compatibles, consulteu la documentació de LibreOffice +fileToPDF.submit=Converteix a PDF + + +#compress +compress.title=Comprimir +compress.header=Comprimir PDF +compress.credit=Aquest servei utilitza Ghostscript per a la compressió/optimització de PDF. +compress.selectText.1=Mode manual: de l'1 al 4 +compress.selectText.2=Nivell d'optimització: +compress.selectText.3=4 (terrible per a imatges de text) +compress.selectText.4=Mode automàtic: ajusta automàticament la qualitat per tal que el PDF tingui la mida exacta +compress.selectText.5=Mida esperada del PDF (p. ex. 25 MB, 10,8 MB, 25 KB) +compress.submit=Comprimir + + +#Add image +addImage.title=Afegir Imatge +addImage.header=Afegir Imatge a PDF (en construcció) +addImage.everyPage=Totes les pàgines? +addImage.upload=Afegir Imatge +addImage.submit=Afegir Imatge + + +#merge +merge.title=Fusiona +merge.header=Fusiona múltiples PDFs (2+) +merge.submit=Fusiona + + +#pdfOrganiser +pdfOrganiser.title=Organitzador de pàgines +pdfOrganiser.header=Organitzador de pàgines PDF +pdfOrganiser.submit=Reorganitza Pàgines + + +#multiTool +multiTool.title=PDF Multi Tool +multiTool.header=PDF Multi Tool + + +#pageRemover +pageRemover.title=Eliminació Pàgines +pageRemover.header=Eliminació Pàgines PDF +pageRemover.pagesToDelete=Pàgines a esborrar (Números de pàgina) : +pageRemover.submit=Esborra Pàgines + + +#rotate +rotate.title=Rota PDF +rotate.header=Rota PDF +rotate.selectAngle=Selecciona l'angle de gir (en múltiples de 90 graus): +rotate.submit=Rota + + +#merge +split.title=Divideix PDF +split.header=Divideix PDF +split.desc.1=Els números seleccionats són el número de pàgina en què voleu fer la divisió +split.desc.2=Per tant, seleccionant 1,3,7-8 dividiria un document de 10 pàgines en 6 PDFS separats amb: +split.desc.3=Document #1: Pàgina 1 +split.desc.4=Document #2: Pàgina 2 i 3 +split.desc.5=Document #3: Pàgina 4, 5 i 6 +split.desc.6=Document #4: Pàgina 7 +split.desc.7=Document #5: Pàgina 8 +split.desc.8=Document #6: Pàgina 9 i 10 +split.splitPages=Introdueix pàgines per dividir-les: +split.submit=Divideix + + +#merge +imageToPDF.title=Imatge a PDF +imageToPDF.header=Imatge a PDF +imageToPDF.submit=Converteix +imageToPDF.selectText.1=Estirar per adaptar +imageToPDF.selectText.2=Auto rota PDF +imageToPDF.selectText.3=Lògica de diversos fitxers (només està activada si es treballa amb diverses imatges) +imageToPDF.selectText.4=Combina en un únic PDF +imageToPDF.selectText.5=Converteix per separar PDFs + + +#pdfToImage +pdfToImage.title=PDF a Imatge +pdfToImage.header=PDF a Imatge +pdfToImage.selectText=Format Imatge +pdfToImage.singleOrMultiple=Tipus Imatge Resultant +pdfToImage.single=Única Imatge Gran +pdfToImage.multi=Múltiples Imatges +pdfToImage.colorType=Tipus Color +pdfToImage.color=Color +pdfToImage.grey=Escala de Grisos +pdfToImage.blackwhite=Blanc i Negre (Pot perdre dades!) +pdfToImage.submit=Converteix + + +#addPassword +addPassword.title=Afegir Password +addPassword.header=Afegir password (Encriptat) +addPassword.selectText.1=PDF a encriptar +addPassword.selectText.2=Password +addPassword.selectText.3=Longitud clau de xifratge +addPassword.selectText.4=Valors més alts són més forts, però els valors més baixos tenen una millor compatibilitat. +addPassword.selectText.5=Permissos a Establir +addPassword.selectText.6=Evita muntatge del document +addPassword.selectText.7=Evita extracció de contingut +addPassword.selectText.8=Evita extracció per accessibilitat +addPassword.selectText.9=Evita emplenar formularis +addPassword.selectText.10=Evita modificacions +addPassword.selectText.11=Evita modificacions d'annotacions +addPassword.selectText.12=Evita impressió +addPassword.selectText.13=Evita impressió de diferents formats +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Encripta + + +#watermark +watermark.title=Afegir Marca d'Aigua +watermark.header=Afegir Marca d'Aigua +watermark.selectText.1=Seleciona PDF per afegir Marca d'Aigua: +watermark.selectText.2=Text de la Marca d'Aigua +watermark.selectText.3=Mida de la Font: +watermark.selectText.4=Rotació (0-360): +watermark.selectText.5=separació d'amplada (Espai horitzontal entre cada Marca d'Aigua): +watermark.selectText.6=separació d'alçada (Espai vertical entre cada Marca d'Aigua): +watermark.selectText.7=Opacitat (0% - 100%): +watermark.submit=Afegir Marca d'Aigua + + +#remove-watermark +remove-watermark.title=Elimina Marca d'Aigua +remove-watermark.header=Elimina Marca d'Aigua +remove-watermark.selectText.1=Seleciona PDF per eliminar Marca d'Aigua: +remove-watermark.selectText.2=Text de la Marca d'Aigua: +remove-watermark.submit=Elimina Marca d'Aigua + + +#Change permissions +permissions.title=Canviar Permissos +permissions.header=Canviar Permissos +permissions.warning=Advertència perquè aquests permisos siguin inalterables, es recomana establir-los amb una contrasenya a través de la pàgina d'afegir contrasenya +permissions.selectText.1=Selecciona PDF per Canviar Permissos +permissions.selectText.2=Permissos a canviar +permissions.selectText.3=Evita muntatge del document +permissions.selectText.4=Evita extracció de contingut +permissions.selectText.5=evita extracció de contingut per accessibilitat +permissions.selectText.6=Evita emplenar formularis +permissions.selectText.7=Evita modificacions +permissions.selectText.8=Evita modificacions d'annotacions +permissions.selectText.9=Evita impressió +permissions.selectText.10=Evita impressió de diferents formats +permissions.submit=Canviar Permissos + + +#remove password +removePassword.title=Treure Password +removePassword.header=Treure Password (Decriptar) +removePassword.selectText.1=Selecciona PDF a Decriptar +removePassword.selectText.2=Password +removePassword.submit=Treu Password + + +#changeMetadata +changeMetadata.title=Títol: +changeMetadata.header=Canvia Metadades +changeMetadata.selectText.1=Edit les variables a canviar +changeMetadata.selectText.2=Neteja totes les matadades +changeMetadata.selectText.3=Mostra Metadades Personalitzades: +changeMetadata.author=Autor: +changeMetadata.creationDate=Data Creació (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Creador: +changeMetadata.keywords=Keywords: +changeMetadata.modDate=Data Modificació (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Productor: +changeMetadata.subject=Assumpte: +changeMetadata.title=Títol: +changeMetadata.trapped=Atrapat: +changeMetadata.selectText.4=Altres Metadades: +changeMetadata.selectText.5=Afegir entrada personalizada +changeMetadata.submit=Canvia + + +#xlsToPdf +xlsToPdf.title=Excel a PDF +xlsToPdf.header=Excel a PDF +xlsToPdf.selectText.1=Selecciona arxiu XLS o XLSX a convertir +xlsToPdf.convert=Converteix + + +#pdfToPDFA +pdfToPDFA.title=PDF a PDF/A +pdfToPDFA.header=PDF a PDF/A +pdfToPDFA.credit=Utilitza OCRmyPDF per la conversió a PDF/A +pdfToPDFA.submit=Converteix + + +#PDFToWord +PDFToWord.title=PDF a Word +PDFToWord.header=PDF a Word +PDFToWord.selectText.1=Format d'Arxiu de Sortida +PDFToWord.credit=Utilitza LibreOffice per a la conversió d'Arxius. +PDFToWord.submit=Converteix + + +#PDFToPresentation +PDFToPresentation.title=PDF a Presentació +PDFToPresentation.header=PDF a Presentació +PDFToPresentation.selectText.1=Format d'Arxiu de Sortida +PDFToPresentation.credit=Utilitza LibreOffice per a la conversió d'Arxius. +PDFToPresentation.submit=Converteix + + +#PDFToText +PDFToText.title=PDF a Text/RTF +PDFToText.header=PDF a Text/RTF +PDFToText.selectText.1=Format d'Arxiu de Sortida +PDFToText.credit=Utilitza LibreOffice per a la conversió d'Arxius. +PDFToText.submit=Converteix + + +#PDFToHTML +PDFToHTML.title=PDF a HTML +PDFToHTML.header=PDF a HTML +PDFToHTML.credit=Utilitza LibreOffice per a la conversió d'Arxius. +PDFToHTML.submit=Converteix + + +#PDFToXML +PDFToXML.title=PDF a XML +PDFToXML.header=PDF a XML +PDFToXML.credit=Utilitza LibreOffice per a la conversió d'Arxius. +PDFToXML.submit=Converteix diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index a4076b03..641946b2 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -1,487 +1,618 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr=left to right, rtl=right to left) -language.direction=ltr - -pdfPrompt=PDF auswählen -multiPdfPrompt=PDFs auswählen(2+) -multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin) -imgPrompt=Wählen Sie ein Bild -genericSubmit=Einreichen -processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern -pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein): -goToPage=Los -true=Wahr -false=Falsch -unknown=Unbekannt -save=Speichern -close=Schließen -filesSelected=Dateien ausgewählt -noFavourites=Keine Favoriten hinzugefügt -bored=Gelangweiltes Warten? -alphabet=Alphabet -############# -# HOME-PAGE # -############# -home.desc=Ihr lokal gehosteter One-Stop-Shop für alle Ihre PDF-Anforderungen. - -navbar.convert=Konvertieren -navbar.security=Sicherheit -navbar.other=Anderes -navbar.darkmode=Dark Mode -navbar.pageOps=Seitenoperationen - -home.multiTool.title=PDF-Multitool -home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen - -home.merge.title=Zusammenführen -home.merge.desc=Mehrere PDF-Dateien zu einer einzigen zusammenführen. - -home.split.title=Aufteilen -home.split.desc=PDFs in mehrere Dokumente aufteilen. - -home.rotate.title=Drehen -home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach. - -home.imageToPdf.title=Bild zu PDF -home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF. - -home.pdfToImage.title=PDF zu Bild -home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF). - -home.pdfOrganiser.title=Organisieren -home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern. - -home.addImage.title=Bild einfügen -home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (Work in progress). - -home.watermark.title=Wasserzeichen hinzufügen -home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu. - -home.remove-watermark.title=Wasserzeichen entfernen -home.remove-watermark.desc=Wasserzeichen aus Ihrem PDF-Dokument entfernen. - -home.permissions.title=Berechtigungen ändern -home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern. - -home.removePages.title=Entfernen -home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen. - -home.addPassword.title=Passwort hinzufügen -home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln. - -home.removePassword.title=Passwort entfernen -home.removePassword.desc=Den Passwortschutz eines PDFs entfernen. - -home.compressPdfs.title=Komprimieren -home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren. - -home.changeMetadata.title=Metadaten ändern -home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument - -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.ocr.title=Führe OCR auf PDF- und/oder 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.extractImages.title=Bilder extrahieren -home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Datei - -home.pdfToPDFA.title=PDF zu PDF/A konvertieren -home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren - -home.PDFToWord.title=PDF zu Word -home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT) - -home.PDFToPresentation.title=PDF zu Präsentation -home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP) - -home.PDFToText.title=PDF in Text/RTF -home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren - -home.PDFToHTML.title=PDF in HTML -home.PDFToHTML.desc=PDF in HTML-Format konvertieren - -home.PDFToXML.title=PDF in XML -home.PDFToXML.desc=PDF in XML-Format konvertieren - -home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen -home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF - -home.sign.title=Signieren -home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu - -home.flatten.title=Abflachen -home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen - -home.repair.title=Reparatur -home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren - -home.removeBlanks.title=Leere Seiten entfernen -home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.compare.title=Vergleichen -home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=PDF herunterladen -text=Text -font=Schriftart -selectFillter=-- Auswählen -- -pageNum=Seitenzahl - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Zertifikatsignierung -certSign.header=Signieren Sie ein PDF mit Ihrem Zertifikat (in Arbeit) -certSign.selectPDF=Wählen Sie eine PDF-Datei zum Signieren aus: -certSign.selectKey=Wählen Sie Ihre private Schlüsseldatei aus (PKCS#8-Format, könnte .pem oder .der sein): -certSign.selectCert=Wählen Sie Ihre Zertifikatsdatei aus (X.509-Format, könnte .pem oder .der sein): -certSign.selectP12=Wählen Sie Ihre PKCS#12-Keystore-Datei (.p12 oder .pfx) aus (optional, falls angegeben, sollte sie Ihren privaten Schlüssel und Ihr Zertifikat enthalten): -certSign.certType=Zertifikattyp -certSign.password=Geben Sie Ihr Keystore- oder Private-Key-Passwort ein (falls vorhanden): -certSign.showSig=Signatur anzeigen -certSign.reason=Grund -certSign.location=Standort -certSign.name=Name -certSign.submit=PDF signieren - -removeBlanks.title=Leerzeichen entfernen -removeBlanks.header=Leere Seiten entfernen -removeBlanks.threshold=Schwellenwert: -removeBlanks.thresholdDesc=Schwellenwert zur Bestimmung, wie weiß ein weißer Pixel sein muss -removeBlanks.whitePercent=Weißprozentsatz (%): -removeBlanks.whitePercentDesc=Prozentsatz der Seite, die weiß sein muss, um entfernt zu werden -removeBlanks.submit=Leerzeichen entfernen - -compare.title=Vergleichen -compare.header=PDFs vergleichen -compare.document.1=Dokument 1 -compare.document.2=Dokument 2 -compare.submit=Vergleichen - -sign.title=Signieren -sign.header=PDFs signieren -sign.upload=Bild hochladen -sign.draw=Signatur zeichnen -sign.text=Texteingabe -sign.clear=Klar -sign.add=Hinzufügen - -repair.title=Reparieren -Repair.header=PDFs reparieren -repair.submit=Reparieren - -flatten.title=Abflachen -flatten.header=PDFs reduzieren -flatten.submit=Abflachen - -ScannerImageSplit.selectText.1=Winkelschwelle: -ScannerImageSplit.selectText.2=Legt den minimalen absoluten Winkel fest, der erforderlich ist, damit das Bild gedreht werden kann (Standard: 10). -ScannerImageSplit.selectText.3=Toleranz: -ScannerImageSplit.selectText.4=Bestimmt den Bereich der Farbvariation um die geschätzte Hintergrundfarbe herum (Standard: 30). -ScannerImageSplit.selectText.5=Mindestbereich: -ScannerImageSplit.selectText.6=Legt den minimalen Bereichsschwellenwert für ein Foto fest (Standard: 10000). -ScannerImageSplit.selectText.7=Minimaler Konturbereich: -ScannerImageSplit.selectText.8=Legt den minimalen Konturbereichsschwellenwert für ein Foto fest -ScannerImageSplit.selectText.9=Randgröße: -ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1). - - -navbar.settings=Einstellungen -settings.title=Einstellungen -settings.update=Update verfügbar -settings.appVersion=App-Version: -settings.downloadOption.title=Download-Option wählen (für einzelne Dateien, die keine Zip-Downloads sind): -settings.downloadOption.1=Im selben Fenster öffnen -settings.downloadOption.2=In neuem Fenster öffnen -settings.downloadOption.3=Datei herunterladen -settings.zipThreshold=Dateien komprimieren, wenn die Anzahl der heruntergeladenen Dateien überschritten wird - -#OCR -ocr.title=OCR / Scan-Bereinigung -ocr.header=Scans bereinigen / OCR (Optical Character Recognition) -ocr.selectText.1=Sprachen auswählen, die im PDF erkannt werden sollen (die aufgelisteten sind die aktuell erkannten): -ocr.selectText.2=Textdatei erzeugen, die OCR-Text neben dem OCR-bearbeiteten PDF enthält -ocr.selectText.3=Korrekte Seiten wurden in einem schiefen Winkel gescannt, indem sie wieder an ihren Platz gedreht wurden -ocr.selectText.4=Seite säubern, daher ist es weniger wahrscheinlich, dass OCR Text im Hintergrundrauschen findet. (Keine Ausgangsänderung) -ocr.selectText.5=Seite säubern, sodass es weniger wahrscheinlich ist, dass OCR Text im Hintergrundrauschen findet, Bereinigung der Ausgabe wird beibehalten. -ocr.selectText.6=Ignoriert Seiten mit interaktivem Text, nur OCR-Seiten, die Bilder sind -ocr.selectText.7=OCR erzwingen, OCR wird jede Seite entfernen und alle ursprünglichen Textelemente entfernen -ocr.selectText.8=Normal (Fehler, wenn PDF Text enthält) -ocr.selectText.9=Zusätzliche Einstellungen -ocr.selectText.10=OCR-Modus -ocr.selectText.11=Bilder nach OCR entfernen (Entfernt ALLE Bilder, nur sinnvoll, wenn Teil des Konvertierungsschritts) -ocr.selectText.12=Rendertyp (Erweitert) -ocr.help=Bitte lesen Sie diese Dokumentation, um zu erfahren, wie Sie dies für andere Sprachen verwenden und/oder nicht in Docker verwenden können -ocr.credit=Dieser Dienst verwendet OCRmyPDF und Tesseract für OCR. -ocr.submit=PDF mit OCR verarbeiten - - -extractImages.title=Bilder extrahieren -extractImages.header=Bilder extrahieren -extractImages.selectText=Wählen Sie das Bildformat aus, in das extrahierte Bilder konvertiert werden sollen -extractImages.submit=Extrahieren - - -#File to PDF -fileToPDF.title=Datei in PDF -fileToPDF.header=Beliebige Dateien in PDF konvertieren -fileToPDF.credit=Dieser Dienst verwendet LibreOffice und Unoconv für die Dateikonvertierung. -fileToPDF.supportedFileTypes=Unterstützte Dateitypen sollten die folgenden enthalten, eine vollständige aktualisierte Liste der unterstützten Formate finden Sie jedoch in der LibreOffice-Dokumentation -fileToPDF.submit=In PDF konvertieren - - - - - -#Add image -addImage.title=Bild hinzufügen -addImage.header=Ein Bild einfügen -addImage.everyPage=Jede Seite? -addImage.upload=Bild hinzufügen -addImage.submit=Bild hinzufügen - -#compress -compress.title=Komprimieren -compress.header=PDF komprimieren -compress.credit=Dieser Dienst verwendet Ghostscript für die PDF-Komprimierung/-Optimierung. -compress.selectText.1=Manueller Modus – Von 1 bis 4 -compress.selectText.2=Optimierungsstufe: -compress.selectText.3=4 (Schrecklich für Textbilder) -compress.selectText.4=Automatischer Modus – Passt die Qualität automatisch an, um das PDF auf die exakte Größe zu bringen -compress.selectText.5=Erwartete PDF-Größe (z. B. 25 MB, 10,8 MB, 25 KB) -compress.submit=Komprimieren - - -#merge -merge.title=Zusammenführen -merge.header=Mehrere PDFs zusammenführen (2+) -merge.submit=Zusammenführen - -#pdfOrganiser -pdfOrganiser.title=Seiten anordnen -pdfOrganiser.header=PDF Seitenorganisation -pdfOrganiser.submit=Seiten anordnen - -#Mehrfachwerkzeug -multiTool.title=PDF-Multitool -multiTool.header=PDF-Multitool - -#pageRemover -pageRemover.title=Seiten entfernen -pageRemover.header=PDF Seiten entfernen -pageRemover.pagesToDelete=Seiten zu entfernen (geben Sie eine Kommagetrennte Liste der Seitenzahlen an): -pageRemover.submit=Seiten löschen - -#rotate -rotate.title=PDF drehen -rotate.header=PDF drehen -rotate.selectAngle=Wählen Sie den Winkel (in Vielfachen von 90 Grad): -rotate.submit=Drehen - - - - -#merge -split.title=PDF aufteilen -split.header=PDF aufteilen -split.desc.1=Die Nummern, die Sie auswählen, sind die Seitenzahlen, an denen Sie aufteilen möchten. -split.desc.2=So würde die Auswahl von 1,3,7-8 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit: -split.desc.3=Dokument #1: Seite 1 -split.desc.4=Dokument #2: Seite 2 und 3 -split.desc.5=Dokument #3: Seite 4, 5 und 6 -split.desc.6=Dokument #4: Seite 7 -split.desc.7=Dokument #5: Seite 8 -split.desc.8=Dokument #6: Seite 9 und 10 -split.splitPages=Geben Sie die Seiten an, an denen aufgeteilt werden soll: -split.submit=Aufteilen - - -#merge -imageToPDF.title=Bild zu PDF -imageToPDF.header=Bild zu PDF -imageToPDF.submit=Umwandeln -imageToPDF.selectText.1=Auf Seite strecken -imageToPDF.selectText.2=PDF automatisch drehen -imageToPDF.selectText.3=Mehrere Dateien verarbeiten (nur aktiv, wenn Sie mit mehreren Bildern arbeiten) -imageToPDF.selectText.4=In ein einziges PDF zusammenführen -imageToPDF.selectText.5=In separate PDFs konvertieren - -#pdfToImage -pdfToImage.title=PDF zu Bild -pdfToImage.header=PDF zu Bild -pdfToImage.selectText=Bildformat -pdfToImage.singleOrMultiple=Bildergebnistyp -pdfToImage.single=Einzelnes großes Bild -pdfToImage.multi=Mehrere Bilder -pdfToImage.colorType=Farbtyp -pdfToImage.color=Farbe -pdfToImage.grey=Graustufen -pdfToImage.blackwhite=Schwarzweiß (Datenverlust möglich!) -pdfToImage.submit=Umwandeln - -#addPassword -addPassword.title=Passwort hinzufügen -addPassword.header=Passwort hinzufügen (Verschlüsseln) -addPassword.selectText.1=Das zu verschlüsselnde PDF auswählen -addPassword.selectText.2=Passwort -addPassword.selectText.3=Länge des Schlüssels -addPassword.selectText.4=Größere Werte sind stärker, aber niedrigere Werte sind besser kompatibel. -addPassword.selectText.5=Zu setzende Berechtigungen -addPassword.selectText.6=Das zusammensetzen des PDFs verhindern -addPassword.selectText.7=Inhaltsextrahierung verhindern -addPassword.selectText.8=Inhaltsextrahierung zur Barrierefreiheit verhindern -addPassword.selectText.9=Ausfüllen des Formulars verhindern -addPassword.selectText.10=Modifizierung verhindern -addPassword.selectText.11=Ändern von Kommentaren verhindern -addPassword.selectText.12=Drucken verhindern -addPassword.selectText.13=Drucken verschiedener Formate verhindern -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Verschlüsseln - -#watermark -watermark.title=Wasserzeichen hinzufügen -watermark.header=Wasserzeichen hinzufügen -watermark.selectText.1=PDF auswählen, dem ein Wasserzeichen hinzugefügt werden soll: -watermark.selectText.2=Wasserzeichen Text: -watermark.selectText.3=Schriftgröße: -watermark.selectText.4=Drehung (0-360): -watermark.selectText.5=breiteSpacer (horizontaler Abstand zwischen den einzelnen Wasserzeichen): -watermark.selectText.6=höheSpacer (vertikaler Abstand zwischen den einzelnen Wasserzeichen): -watermark.selectText.7=Deckkraft (0% - 100 %): -watermark.submit=Wasserzeichen hinzufügen - -#remove-watermark -remove-watermark.title=Wasserzeichen entfernen -remove-watermark.header=Wasserzeichen entfernen -remove-watermark.selectText.1=PDF auswählen, um Wasserzeichen zu entfernen von: -remove-watermark.selectText.2=Wasserzeichentext: -remove-watermark.submit=Wasserzeichen entfernen - -#Change permissions -permissions.title=Berechtigungen ändern -permissions.header=Berechtigungen ändern -permissions.warning=Achtung: Damit diese Berechtigungen nicht geändert werden können, wird empfohlen, sie über die "Passwort hinzufügen"-Seite mit einem Passwort zu versehen -permissions.selectText.1=Das zu ändernde PDF auswählen -permissions.selectText.2=Zu setzende Berechtigungen -permissions.selectText.3=Das zusammensetzen des PDFs verhindern -permissions.selectText.4=Inhaltsextrahierung verhindern -permissions.selectText.5=Inhaltsextrahierung zur Barrierefreiheit verhindern -permissions.selectText.6=Ausfüllen des Formulars verhindern -permissions.selectText.7=Modifizierung verhindern -permissions.selectText.8=Ändern von Kommentaren verhindern -permissions.selectText.9=Drucken verhindern -permissions.selectText.10=Drucken verschiedener Formate verhindern -permissions.submit=Ändern - -#remove password -removePassword.title=Passwort entfernen -removePassword.header=Passwort entfernen (Entschlüsseln) -removePassword.selectText.1=Das zu entschlüsselnde PDF auswählen -removePassword.selectText.2=Passwort -removePassword.submit=Entfernen - - -changeMetadata.title=Metadaten ändern -changeMetadata.header=Metadaten ändern -changeMetadata.selectText.1=Bitte bearbeiten Sie die Variablen, die Sie ändern möchten -changeMetadata.selectText.2=Alle Metadaten löschen -changeMetadata.selectText.3=Benutzerdefinierte Metadaten anzeigen: -changeMetadata.author=Autor: -changeMetadata.creationDate=Erstellungsdatum (jjjj/MM/tt HH:mm:ss): -changeMetadata.creator=Ersteller: -changeMetadata.keywords=Schlüsselwörter: -changeMetadata.modDate=Änderungsdatum (JJJJ/MM/TT HH:mm:ss): -changeMetadata.producer=Produzent: -changeMetadata.subject=Betreff: -changeMetadata.title=Titel: -changeMetadata.trapped=Gefangen: -changeMetadata.selectText.4=Andere Metadaten: -changeMetadata.selectText.5=Benutzerdefinierten Metadateneintrag hinzufügen -changeMetadata.submit=Ändern - - - -xlsToPdf.title=Excel in PDF -xlsToPdf.header=Excel in PDF -xlsToPdf.selectText.1=XLS- oder XLSX-Excel-Tabelle zum Konvertieren auswählen -xlsToPdf.convert=konvertieren - - -pdfToPDFA.title=PDF zu PDF/A -pdfToPDFA.header=PDF zu PDF/A -pdfToPDFA.credit=Dieser Dienst verwendet OCRmyPDF für die PDF/A-Konvertierung -pdfToPDFA.submit=Konvertieren - - - - - -PDFToWord.title=PDF zu Word -PDFToWord.header=PDF zu Word -PDFToWord.selectText.1=Ausgabedateiformat -PDFToWord.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. -PDFToWord.submit=Konvertieren - -PDFToPresentation.title=PDF zu Präsentation -PDFToPresentation.header=PDF zu Präsentation -PDFToPresentation.selectText.1=Ausgabedateiformat -PDFToPresentation.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. -PDFToPresentation.submit=Konvertieren - - -PDFToText.title=PDF in Text/RTF -PDFToText.header=PDF in Text/RTF -PDFToText.selectText.1=Ausgabedateiformat -PDFToText.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. -PDFToText.submit=Konvertieren - - -PDFToHTML.title=PDF in HTML -PDFToHTML.header=PDF in HTML -PDFToHTML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. -PDFToHTML.submit=Konvertieren - -PDFToXML.title=PDF in XML -PDFToXML.header=PDF in XML -PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. -PDFToXML.submit=Konvertieren - - - - - - - - - - - - - - - +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=PDF auswählen +multiPdfPrompt=PDFs auswählen(2+) +multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin) +imgPrompt=Wählen Sie ein Bild +genericSubmit=Einreichen +processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern +pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein): +goToPage=Los +true=Wahr +false=Falsch +unknown=Unbekannt +save=Speichern +close=Schließen +filesSelected=Dateien ausgewählt +noFavourites=Keine Favoriten hinzugefügt +bored=Gelangweiltes Warten? +alphabet=Alphabet +downloadPdf=PDF herunterladen +text=Text +font=Schriftart +selectFillter=-- Auswählen -- +pageNum=Seitenzahl +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Konvertieren +navbar.security=Sicherheit +navbar.other=Anderes +navbar.darkmode=Dark Mode +navbar.pageOps=Seitenoperationen +navbar.settings=Einstellungen + +############# +# SETTINGS # +############# +settings.title=Einstellungen +settings.update=Update verfügbar +settings.appVersion=App-Version: +settings.downloadOption.title=Download-Option wählen (für einzelne Dateien, die keine Zip-Downloads sind): +settings.downloadOption.1=Im selben Fenster öffnen +settings.downloadOption.2=In neuem Fenster öffnen +settings.downloadOption.3=Datei herunterladen +settings.zipThreshold=Dateien komprimieren, wenn die Anzahl der heruntergeladenen Dateien überschritten wird + +############# +# HOME-PAGE # +############# +home.desc=Ihr lokal gehosteter One-Stop-Shop für alle Ihre PDF-Anforderungen. + + +home.multiTool.title=PDF-Multitool +home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Zusammenführen +home.merge.desc=Mehrere PDF-Dateien zu einer einzigen zusammenführen. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Aufteilen +home.split.desc=PDFs in mehrere Dokumente aufteilen. + +home.rotate.title=Drehen +home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach. + +home.imageToPdf.title=Bild zu PDF +home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF. + +home.pdfToImage.title=PDF zu Bild +home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF). + +home.pdfOrganiser.title=Organisieren +home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern. + +home.addImage.title=Bild einfügen +home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (Work in progress). + +home.watermark.title=Wasserzeichen hinzufügen +home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu. + +home.permissions.title=Berechtigungen ändern +home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern. + +home.removePages.title=Entfernen +home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen. + +home.addPassword.title=Passwort hinzufügen +home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln. + +home.removePassword.title=Passwort entfernen +home.removePassword.desc=Den Passwortschutz eines PDFs entfernen. + +home.compressPdfs.title=Komprimieren +home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren. + +home.changeMetadata.title=Metadaten ändern +home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument + +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.ocr.title=Führe OCR auf PDF- und/oder 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.extractImages.title=Bilder extrahieren +home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Datei + +home.pdfToPDFA.title=PDF zu PDF/A konvertieren +home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren + +home.PDFToWord.title=PDF zu Word +home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT) + +home.PDFToPresentation.title=PDF zu Präsentation +home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP) + +home.PDFToText.title=PDF in Text/RTF +home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren + +home.PDFToHTML.title=PDF in HTML +home.PDFToHTML.desc=PDF in HTML-Format konvertieren + +home.PDFToXML.title=PDF in XML +home.PDFToXML.desc=PDF in XML-Format konvertieren + +home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen +home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF + +home.sign.title=Signieren +home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu + +home.flatten.title=Abflachen +home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen + +home.repair.title=Reparatur +home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren + +home.removeBlanks.title=Leere Seiten entfernen +home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument + +home.compare.title=Vergleichen +home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Zertifikatsignierung +certSign.header=Signieren Sie ein PDF mit Ihrem Zertifikat (in Arbeit) +certSign.selectPDF=Wählen Sie eine PDF-Datei zum Signieren aus: +certSign.selectKey=Wählen Sie Ihre private Schlüsseldatei aus (PKCS#8-Format, könnte .pem oder .der sein): +certSign.selectCert=Wählen Sie Ihre Zertifikatsdatei aus (X.509-Format, könnte .pem oder .der sein): +certSign.selectP12=Wählen Sie Ihre PKCS#12-Keystore-Datei (.p12 oder .pfx) aus (optional, falls angegeben, sollte sie Ihren privaten Schlüssel und Ihr Zertifikat enthalten): +certSign.certType=Zertifikattyp +certSign.password=Geben Sie Ihr Keystore- oder Private-Key-Passwort ein (falls vorhanden): +certSign.showSig=Signatur anzeigen +certSign.reason=Grund +certSign.location=Standort +certSign.name=Name +certSign.submit=PDF signieren + + +#removeBlanks +removeBlanks.title=Leerzeichen entfernen +removeBlanks.header=Leere Seiten entfernen +removeBlanks.threshold=Schwellenwert: +removeBlanks.thresholdDesc=Schwellenwert zur Bestimmung, wie weiß ein weißer Pixel sein muss +removeBlanks.whitePercent=Weißprozentsatz (%): +removeBlanks.whitePercentDesc=Prozentsatz der Seite, die weiß sein muss, um entfernt zu werden +removeBlanks.submit=Leerzeichen entfernen + + +#compare +compare.title=Vergleichen +compare.header=PDFs vergleichen +compare.document.1=Dokument 1 +compare.document.2=Dokument 2 +compare.submit=Vergleichen + + +#sign +sign.title=Signieren +sign.header=PDFs signieren +sign.upload=Bild hochladen +sign.draw=Signatur zeichnen +sign.text=Texteingabe +sign.clear=Klar +sign.add=Hinzufügen + + +#repair +repair.title=Reparieren +########################## +### TODO: Translate ### +########################## +repair.header=Repair PDFs +repair.submit=Reparieren + + +#flatten +flatten.title=Abflachen +flatten.header=PDFs reduzieren +flatten.submit=Abflachen + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Winkelschwelle: +ScannerImageSplit.selectText.2=Legt den minimalen absoluten Winkel fest, der erforderlich ist, damit das Bild gedreht werden kann (Standard: 10). +ScannerImageSplit.selectText.3=Toleranz: +ScannerImageSplit.selectText.4=Bestimmt den Bereich der Farbvariation um die geschätzte Hintergrundfarbe herum (Standard: 30). +ScannerImageSplit.selectText.5=Mindestbereich: +ScannerImageSplit.selectText.6=Legt den minimalen Bereichsschwellenwert für ein Foto fest (Standard: 10000). +ScannerImageSplit.selectText.7=Minimaler Konturbereich: +ScannerImageSplit.selectText.8=Legt den minimalen Konturbereichsschwellenwert für ein Foto fest +ScannerImageSplit.selectText.9=Randgröße: +ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1). + + +#OCR +ocr.title=OCR / Scan-Bereinigung +ocr.header=Scans bereinigen / OCR (Optical Character Recognition) +ocr.selectText.1=Sprachen auswählen, die im PDF erkannt werden sollen (die aufgelisteten sind die aktuell erkannten): +ocr.selectText.2=Textdatei erzeugen, die OCR-Text neben dem OCR-bearbeiteten PDF enthält +ocr.selectText.3=Korrekte Seiten wurden in einem schiefen Winkel gescannt, indem sie wieder an ihren Platz gedreht wurden +ocr.selectText.4=Seite säubern, daher ist es weniger wahrscheinlich, dass OCR Text im Hintergrundrauschen findet. (Keine Ausgangsänderung) +ocr.selectText.5=Seite säubern, sodass es weniger wahrscheinlich ist, dass OCR Text im Hintergrundrauschen findet, Bereinigung der Ausgabe wird beibehalten. +ocr.selectText.6=Ignoriert Seiten mit interaktivem Text, nur OCR-Seiten, die Bilder sind +ocr.selectText.7=OCR erzwingen, OCR wird jede Seite entfernen und alle ursprünglichen Textelemente entfernen +ocr.selectText.8=Normal (Fehler, wenn PDF Text enthält) +ocr.selectText.9=Zusätzliche Einstellungen +ocr.selectText.10=OCR-Modus +ocr.selectText.11=Bilder nach OCR entfernen (Entfernt ALLE Bilder, nur sinnvoll, wenn Teil des Konvertierungsschritts) +ocr.selectText.12=Rendertyp (Erweitert) +ocr.help=Bitte lesen Sie diese Dokumentation, um zu erfahren, wie Sie dies für andere Sprachen verwenden und/oder nicht in Docker verwenden können +ocr.credit=Dieser Dienst verwendet OCRmyPDF und Tesseract für OCR. +ocr.submit=PDF mit OCR verarbeiten + + +#extractImages +extractImages.title=Bilder extrahieren +extractImages.header=Bilder extrahieren +extractImages.selectText=Wählen Sie das Bildformat aus, in das extrahierte Bilder konvertiert werden sollen +extractImages.submit=Extrahieren + + +#File to PDF +fileToPDF.title=Datei in PDF +fileToPDF.header=Beliebige Dateien in PDF konvertieren +fileToPDF.credit=Dieser Dienst verwendet LibreOffice und Unoconv für die Dateikonvertierung. +fileToPDF.supportedFileTypes=Unterstützte Dateitypen sollten die folgenden enthalten, eine vollständige aktualisierte Liste der unterstützten Formate finden Sie jedoch in der LibreOffice-Dokumentation +fileToPDF.submit=In PDF konvertieren + + +#compress +compress.title=Komprimieren +compress.header=PDF komprimieren +compress.credit=Dieser Dienst verwendet Ghostscript für die PDF-Komprimierung/-Optimierung. +compress.selectText.1=Manueller Modus – Von 1 bis 4 +compress.selectText.2=Optimierungsstufe: +compress.selectText.3=4 (Schrecklich für Textbilder) +compress.selectText.4=Automatischer Modus – Passt die Qualität automatisch an, um das PDF auf die exakte Größe zu bringen +compress.selectText.5=Erwartete PDF-Größe (z. B. 25 MB, 10,8 MB, 25 KB) +compress.submit=Komprimieren + + +#Add image +addImage.title=Bild hinzufügen +addImage.header=Ein Bild einfügen +addImage.everyPage=Jede Seite? +addImage.upload=Bild hinzufügen +addImage.submit=Bild hinzufügen + + +#merge +merge.title=Zusammenführen +merge.header=Mehrere PDFs zusammenführen (2+) +merge.submit=Zusammenführen + + +#pdfOrganiser +pdfOrganiser.title=Seiten anordnen +pdfOrganiser.header=PDF Seitenorganisation +pdfOrganiser.submit=Seiten anordnen + + +#multiTool +multiTool.title=PDF-Multitool +multiTool.header=PDF-Multitool + + +#pageRemover +pageRemover.title=Seiten entfernen +pageRemover.header=PDF Seiten entfernen +pageRemover.pagesToDelete=Seiten zu entfernen (geben Sie eine Kommagetrennte Liste der Seitenzahlen an): +pageRemover.submit=Seiten löschen + + +#rotate +rotate.title=PDF drehen +rotate.header=PDF drehen +rotate.selectAngle=Wählen Sie den Winkel (in Vielfachen von 90 Grad): +rotate.submit=Drehen + + +#merge +split.title=PDF aufteilen +split.header=PDF aufteilen +split.desc.1=Die Nummern, die Sie auswählen, sind die Seitenzahlen, an denen Sie aufteilen möchten. +split.desc.2=So würde die Auswahl von 1,3,7-8 ein 10-seitiges Dokument in 6 separate PDFs aufteilen, mit: +split.desc.3=Dokument #1: Seite 1 +split.desc.4=Dokument #2: Seite 2 und 3 +split.desc.5=Dokument #3: Seite 4, 5 und 6 +split.desc.6=Dokument #4: Seite 7 +split.desc.7=Dokument #5: Seite 8 +split.desc.8=Dokument #6: Seite 9 und 10 +split.splitPages=Geben Sie die Seiten an, an denen aufgeteilt werden soll: +split.submit=Aufteilen + + +#merge +imageToPDF.title=Bild zu PDF +imageToPDF.header=Bild zu PDF +imageToPDF.submit=Umwandeln +imageToPDF.selectText.1=Auf Seite strecken +imageToPDF.selectText.2=PDF automatisch drehen +imageToPDF.selectText.3=Mehrere Dateien verarbeiten (nur aktiv, wenn Sie mit mehreren Bildern arbeiten) +imageToPDF.selectText.4=In ein einziges PDF zusammenführen +imageToPDF.selectText.5=In separate PDFs konvertieren + + +#pdfToImage +pdfToImage.title=PDF zu Bild +pdfToImage.header=PDF zu Bild +pdfToImage.selectText=Bildformat +pdfToImage.singleOrMultiple=Bildergebnistyp +pdfToImage.single=Einzelnes großes Bild +pdfToImage.multi=Mehrere Bilder +pdfToImage.colorType=Farbtyp +pdfToImage.color=Farbe +pdfToImage.grey=Graustufen +pdfToImage.blackwhite=Schwarzweiß (Datenverlust möglich!) +pdfToImage.submit=Umwandeln + + +#addPassword +addPassword.title=Passwort hinzufügen +addPassword.header=Passwort hinzufügen (Verschlüsseln) +addPassword.selectText.1=Das zu verschlüsselnde PDF auswählen +addPassword.selectText.2=Passwort +addPassword.selectText.3=Länge des Schlüssels +addPassword.selectText.4=Größere Werte sind stärker, aber niedrigere Werte sind besser kompatibel. +addPassword.selectText.5=Zu setzende Berechtigungen +addPassword.selectText.6=Das zusammensetzen des PDFs verhindern +addPassword.selectText.7=Inhaltsextrahierung verhindern +addPassword.selectText.8=Inhaltsextrahierung zur Barrierefreiheit verhindern +addPassword.selectText.9=Ausfüllen des Formulars verhindern +addPassword.selectText.10=Modifizierung verhindern +addPassword.selectText.11=Ändern von Kommentaren verhindern +addPassword.selectText.12=Drucken verhindern +addPassword.selectText.13=Drucken verschiedener Formate verhindern +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Verschlüsseln + + +#watermark +watermark.title=Wasserzeichen hinzufügen +watermark.header=Wasserzeichen hinzufügen +watermark.selectText.1=PDF auswählen, dem ein Wasserzeichen hinzugefügt werden soll: +watermark.selectText.2=Wasserzeichen Text: +watermark.selectText.3=Schriftgröße: +watermark.selectText.4=Drehung (0-360): +watermark.selectText.5=breiteSpacer (horizontaler Abstand zwischen den einzelnen Wasserzeichen): +watermark.selectText.6=höheSpacer (vertikaler Abstand zwischen den einzelnen Wasserzeichen): +watermark.selectText.7=Deckkraft (0% - 100 %): +watermark.submit=Wasserzeichen hinzufügen + + +#remove-watermark +remove-watermark.title=Wasserzeichen entfernen +remove-watermark.header=Wasserzeichen entfernen +remove-watermark.selectText.1=PDF auswählen, um Wasserzeichen zu entfernen von: +remove-watermark.selectText.2=Wasserzeichentext: +remove-watermark.submit=Wasserzeichen entfernen + + +#Change permissions +permissions.title=Berechtigungen ändern +permissions.header=Berechtigungen ändern +permissions.warning=Achtung: Damit diese Berechtigungen nicht geändert werden können, wird empfohlen, sie über die "Passwort hinzufügen"-Seite mit einem Passwort zu versehen +permissions.selectText.1=Das zu ändernde PDF auswählen +permissions.selectText.2=Zu setzende Berechtigungen +permissions.selectText.3=Das zusammensetzen des PDFs verhindern +permissions.selectText.4=Inhaltsextrahierung verhindern +permissions.selectText.5=Inhaltsextrahierung zur Barrierefreiheit verhindern +permissions.selectText.6=Ausfüllen des Formulars verhindern +permissions.selectText.7=Modifizierung verhindern +permissions.selectText.8=Ändern von Kommentaren verhindern +permissions.selectText.9=Drucken verhindern +permissions.selectText.10=Drucken verschiedener Formate verhindern +permissions.submit=Ändern + + +#remove password +removePassword.title=Passwort entfernen +removePassword.header=Passwort entfernen (Entschlüsseln) +removePassword.selectText.1=Das zu entschlüsselnde PDF auswählen +removePassword.selectText.2=Passwort +removePassword.submit=Entfernen + + +#changeMetadata +changeMetadata.title=Titel: +changeMetadata.header=Metadaten ändern +changeMetadata.selectText.1=Bitte bearbeiten Sie die Variablen, die Sie ändern möchten +changeMetadata.selectText.2=Alle Metadaten löschen +changeMetadata.selectText.3=Benutzerdefinierte Metadaten anzeigen: +changeMetadata.author=Autor: +changeMetadata.creationDate=Erstellungsdatum (jjjj/MM/tt HH:mm:ss): +changeMetadata.creator=Ersteller: +changeMetadata.keywords=Schlüsselwörter: +changeMetadata.modDate=Änderungsdatum (JJJJ/MM/TT HH:mm:ss): +changeMetadata.producer=Produzent: +changeMetadata.subject=Betreff: +changeMetadata.title=Titel: +changeMetadata.trapped=Gefangen: +changeMetadata.selectText.4=Andere Metadaten: +changeMetadata.selectText.5=Benutzerdefinierten Metadateneintrag hinzufügen +changeMetadata.submit=Ändern + + +#xlsToPdf +xlsToPdf.title=Excel in PDF +xlsToPdf.header=Excel in PDF +xlsToPdf.selectText.1=XLS- oder XLSX-Excel-Tabelle zum Konvertieren auswählen +xlsToPdf.convert=konvertieren + + +#pdfToPDFA +pdfToPDFA.title=PDF zu PDF/A +pdfToPDFA.header=PDF zu PDF/A +pdfToPDFA.credit=Dieser Dienst verwendet OCRmyPDF für die PDF/A-Konvertierung +pdfToPDFA.submit=Konvertieren + + +#PDFToWord +PDFToWord.title=PDF zu Word +PDFToWord.header=PDF zu Word +PDFToWord.selectText.1=Ausgabedateiformat +PDFToWord.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. +PDFToWord.submit=Konvertieren + + +#PDFToPresentation +PDFToPresentation.title=PDF zu Präsentation +PDFToPresentation.header=PDF zu Präsentation +PDFToPresentation.selectText.1=Ausgabedateiformat +PDFToPresentation.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. +PDFToPresentation.submit=Konvertieren + + +#PDFToText +PDFToText.title=PDF in Text/RTF +PDFToText.header=PDF in Text/RTF +PDFToText.selectText.1=Ausgabedateiformat +PDFToText.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. +PDFToText.submit=Konvertieren + + +#PDFToHTML +PDFToHTML.title=PDF in HTML +PDFToHTML.header=PDF in HTML +PDFToHTML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. +PDFToHTML.submit=Konvertieren + + +#PDFToXML +PDFToXML.title=PDF in XML +PDFToXML.header=PDF in XML +PDFToXML.credit=Dieser Dienst verwendet LibreOffice für die Dateikonvertierung. +PDFToXML.submit=Konvertieren diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index b224a758..50f3f816 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -21,23 +21,53 @@ filesSelected=files selected noFavourites=No favourites added bored=Bored Waiting? alphabet=Alphabet +downloadPdf=Download PDF +text=Text +font=Font +selectFillter=-- Select -- +pageNum=Page Number +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Convert +navbar.security=Security +navbar.other=Other +navbar.darkmode=Dark Mode +navbar.pageOps=Page Operations +navbar.settings=Settings + +############# +# SETTINGS # +############# +settings.title=Settings +settings.update=Update available +settings.appVersion=App Version: +settings.downloadOption.title=Choose download option (For single file non zip downloads): +settings.downloadOption.1=Open in same window +settings.downloadOption.2=Open in new window +settings.downloadOption.3=Download file +settings.zipThreshold=Zip files when the number of downloaded files exceeds + ############# # HOME-PAGE # ############# home.desc=Your locally hosted one-stop-shop for all your PDF needs. -navbar.convert=Convert -navbar.security=Security -navbar.other=Other -navbar.darkmode=Dark Mode -navbar.pageOps=Page Operations - home.multiTool.title=PDF Multi Tool home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Merge home.merge.desc=Easily merge multiple PDFs into one. +merge.tags=merge,Page operations,Back end,server side home.split.title=Split home.split.desc=Split PDFs into multiple documents @@ -132,30 +162,113 @@ home.pageLayout.desc=Merge multiple pages of a PDF document into a single page home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of a page and/or its contents. -home.pipeline.title=Pipeline -home.pipeline.desc=Pipeline desc. +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location -downloadPdf=Download PDF -text=Text -font=Font -selectFillter=-- Select -- -pageNum=Page Number +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline pipeline.title=Pipeline + +#pageLayout pageLayout.title=Multi Page Layout pageLayout.header=Multi Page Layout pageLayout.pagesPerSheet=Pages per sheet: pageLayout.submit=Submit + +#scalePages scalePages.title=Adjust page-scale scalePages.header=Adjust page-scale scalePages.pageSize=Size of a page of the document. scalePages.scaleFactor=Zoom level (crop) of a page. scalePages.submit=Submit + +#certSign certSign.title=Certificate Signing certSign.header=Sign a PDF with your certificate (Work in progress) certSign.selectPDF=Select a PDF File for Signing: @@ -167,12 +280,11 @@ certSign.password=Enter Your Keystore or Private Key Password (If Any): certSign.showSig=Show Signature certSign.reason=Reason certSign.location=Location -certSign.name=Name - +certSign.name=Name certSign.submit=Sign PDF - +#removeBlanks removeBlanks.title=Remove Blanks removeBlanks.header=Remove Blank Pages removeBlanks.threshold=Threshold: @@ -181,12 +293,16 @@ removeBlanks.whitePercent=White Percent (%): removeBlanks.whitePercentDesc=Percent of page that must be white to be removed removeBlanks.submit=Remove Blanks + +#compare compare.title=Compare compare.header=Compare PDFs compare.document.1=Document 1 compare.document.2=Document 2 compare.submit=Compare + +#sign sign.title=Sign sign.header=Sign PDFs sign.upload=Upload Image @@ -195,14 +311,20 @@ sign.text=Text Input sign.clear=Clear sign.add=Add + +#repair repair.title=Repair repair.header=Repair PDFs repair.submit=Repair + +#flatten flatten.title=Flatten flatten.header=Flatten PDFs flatten.submit=Flatten + +#ScannerImageSplit ScannerImageSplit.selectText.1=Angle Threshold: ScannerImageSplit.selectText.2=Sets the minimum absolute angle required for the image to be rotated (default: 10). ScannerImageSplit.selectText.3=Tolerance: @@ -214,19 +336,6 @@ ScannerImageSplit.selectText.8=Sets the minimum contour area threshold for a pho ScannerImageSplit.selectText.9=Border Size: ScannerImageSplit.selectText.10=Sets the size of the border added and removed to prevent white borders in the output (default: 1). -navbar.settings=Settings -settings.title=Settings -settings.update=Update available -settings.appVersion=App Version: -settings.downloadOption.title=Choose download option (For single file non zip downloads): -settings.downloadOption.1=Open in same window -settings.downloadOption.2=Open in new window -settings.downloadOption.3=Download file -settings.zipThreshold=Zip files when the number of downloaded files exceeds - - - - #OCR ocr.title=OCR / Scan Cleanup @@ -248,7 +357,7 @@ ocr.credit=This service uses OCRmyPDF and Tesseract for OCR. ocr.submit=Process PDF with OCR - +#extractImages extractImages.title=Extract Images extractImages.header=Extract Images extractImages.selectText=Select image format to convert extracted images to @@ -288,11 +397,13 @@ merge.title=Merge merge.header=Merge multiple PDFs (2+) merge.submit=Merge + #pdfOrganiser pdfOrganiser.title=Page Organiser pdfOrganiser.header=PDF Page Organiser pdfOrganiser.submit=Rearrange Pages + #multiTool multiTool.title=PDF Multi Tool multiTool.header=PDF Multi Tool @@ -304,6 +415,7 @@ pageRemover.header=PDF Page remover pageRemover.pagesToDelete=Pages to delete (Enter a comma-separated list of page numbers) : pageRemover.submit=Delete Pages + #rotate rotate.title=Rotate PDF rotate.header=Rotate PDF @@ -311,8 +423,6 @@ rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): rotate.submit=Rotate - - #merge split.title=Split PDF split.header=Split PDF @@ -337,6 +447,7 @@ imageToPDF.selectText.2=Auto rotate PDF imageToPDF.selectText.3=Multi file logic (Only enabled if working with multiple images) imageToPDF.selectText.4=Merge into single PDF imageToPDF.selectText.5=Convert to separate PDFs + #pdfToImage pdfToImage.title=PDF to Image @@ -351,6 +462,7 @@ pdfToImage.grey=Greyscale pdfToImage.blackwhite=Black and White (May lose data!) pdfToImage.submit=Convert + #addPassword addPassword.title=Add Password addPassword.header=Add password (Encrypt) @@ -372,6 +484,7 @@ addPassword.selectText.15=Restricts what can be done with the document once it i addPassword.selectText.16=Restricts the opening of the document itself addPassword.submit=Encrypt + #watermark watermark.title=Add Watermark watermark.header=Add Watermark @@ -384,6 +497,7 @@ watermark.selectText.6=heightSpacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.submit=Add Watermark + #remove-watermark remove-watermark.title=Remove Watermark remove-watermark.header=Remove Watermark @@ -391,6 +505,7 @@ remove-watermark.selectText.1=Select PDF to remove watermark from: remove-watermark.selectText.2=Watermark Text: remove-watermark.submit=Remove Watermark + #Change permissions permissions.title=Change Permissions permissions.header=Change Permissions @@ -407,6 +522,7 @@ permissions.selectText.9=Prevent printing permissions.selectText.10=Prevent printing different formats permissions.submit=Change + #remove password removePassword.title=Remove password removePassword.header=Remove password (Decrypt) @@ -414,6 +530,8 @@ removePassword.selectText.1=Select PDF to Decrypt removePassword.selectText.2=Password removePassword.submit=Remove + +#changeMetadata changeMetadata.title=Change Metadata changeMetadata.header=Change Metadata changeMetadata.selectText.1=Please edit the variables you wish to change @@ -432,27 +550,30 @@ changeMetadata.selectText.4=Other Metadata: changeMetadata.selectText.5=Add Custom Metadata Entry changeMetadata.submit=Change + +#xlsToPdf xlsToPdf.title=Excel to PDF xlsToPdf.header=Excel to PDF xlsToPdf.selectText.1=Select XLS or XLSX Excel sheet to convert xlsToPdf.convert=convert - - +#pdfToPDFA pdfToPDFA.title=PDF To PDF/A pdfToPDFA.header=PDF To PDF/A pdfToPDFA.credit=This service uses OCRmyPDF for PDF/A conversion pdfToPDFA.submit=Convert - +#PDFToWord PDFToWord.title=PDF to Word PDFToWord.header=PDF to Word PDFToWord.selectText.1=Output file format PDFToWord.credit=This service uses LibreOffice for file conversion. PDFToWord.submit=Convert + +#PDFToPresentation PDFToPresentation.title=PDF to Presentation PDFToPresentation.header=PDF to Presentation PDFToPresentation.selectText.1=Output file format @@ -460,6 +581,7 @@ PDFToPresentation.credit=This service uses LibreOffice for file conversion. PDFToPresentation.submit=Convert +#PDFToText PDFToText.title=PDF to Text/RTF PDFToText.header=PDF to Text/RTF PDFToText.selectText.1=Output file format @@ -467,24 +589,15 @@ PDFToText.credit=This service uses LibreOffice for file conversion. PDFToText.submit=Convert +#PDFToHTML PDFToHTML.title=PDF to HTML PDFToHTML.header=PDF to HTML PDFToHTML.credit=This service uses LibreOffice for file conversion. PDFToHTML.submit=Convert + +#PDFToXML PDFToXML.title=PDF to XML PDFToXML.header=PDF to XML PDFToXML.credit=This service uses LibreOffice for file conversion. -PDFToXML.submit=Convert - - - - - - - - - - - - +PDFToXML.submit=Convert \ No newline at end of file diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 09c4ba54..c0dd3fd3 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -1,470 +1,621 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr = left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Seleccionar PDF(s) -multiPdfPrompt=Seleccionar PDFs (2+) -multiPdfDropPrompt=Selecciona (o arrastra y suelta) todos los PDFs que quieras -imgPrompt=Seleccionar Imagen(es) -genericSubmit=Enviar -processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo -pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma): -goToPage=Ir a -true=Verdadero -false=Falso -unknown=Desconocido -save=Guardar -close=Cerrar -filesSelected=archivos seleccionados -noFavourites=No se agregaron favoritos -bored=¿Aburrido de esperar? -alphabet=Alfabeto -############# -# HOME-PAGE # -############# -home.desc=Tu ventanilla única autohospedada para todas tus necesidades PDF - -navbar.convert=Convertir -navbar.security=Seguridad -navbar.other=Otro -navbar.darkmode=Modo oscuro -navbar.pageOps=Operaciones de página - -home.multiTool.title=Multi-herramienta PDF -home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas - -home.merge.title=Unir -home.merge.desc=Unir fácilmente múltiples PDFs en uno - -home.split.title=Dividir -home.split.desc=Dividir PDFs en múltiples documentos - -home.rotate.title=Rotar -home.rotate.desc=Rotar fácilmente tus PDFs - -home.imageToPdf.title=Imagen a PDF -home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF - -home.pdfToImage.title=PDF a Imagen -home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Organizador -home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden - -home.addImage.title=Agregar imagen al PDF -home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (trabajo en progreso) - -home.watermark.title=Añadir marca de agua -home.watermark.desc=Añadir una marca de agua predefinida al documento PDF - -home.remove-watermark.title=Eliminar marca de agua -home.remove-watermark.desc=Eliminar marca de agua de tu documento PDF - -home.permissions.title=Cambiar permisos -home.permissions.desc=Cambiar los permisos del documento PDF - -home.removePages.title=Eliminar -home.removePages.desc=Eliminar páginas no deseadas del documento PDF - -home.addPassword.title=Añadir contraseña -home.addPassword.desc=Encriptar el documento PDF con una contraseña - -home.removePassword.title=Eliminar contraseña -home.removePassword.desc=Eliminar la contraseña del documento PDF - -home.compressPdfs.title=Comprimir -home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero - -home.changeMetadata.title=Cambiar metadatos -home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF - -home.fileToPDF.title=Convertir fichero a PDF -home.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más) - -home.ocr.title=Ejecutar OCR en PDF y/o escaneos de limpieza -home.ocr.desc=Escaneos de limpieza y detectar texto de imágenes dentro de un PDF y volver a agregarlo como texto - -home.extractImages.title=Extraer imágenes -home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZIP - -home.pdfToPDFA.title=Convertir PDF a PDF/A -home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo - -home.PDFToWord.title=PDF a Word -home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT) - -home.PDFToPresentation.title=PDF a presentación -home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP) - -home.PDFToText.title=PDF a TXT o RTF -home.PDFToText.desc=Convertir PDF a formato TXT o RTF - -home.PDFToHTML.title=PDF a HTML -home.PDFToHTML.desc=Convertir PDF a formato HTML - -home.PDFToXML.title=PDF a XML -home.PDFToXML.desc=Convertir PDF a formato XML - -home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas -home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF - -home.sign.title=Firmar -home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen - -home.flatten.title=Aplanar -home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF - -home.repair.title=Reparar -home.repair.desc=Intentar reparar un PDF corrupto/roto - -home.removeBlanks.title=Eliminar páginas en blanco -home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento - -home.certSign.title=Firmar con certificado -home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) - -home.compare.title=Comparar -home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF - -home.pageLayout.title=Diseño de varias páginas -home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página - -home.scalePages.title=Escalar/ajustar tamaño de página -home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido - -error.pdfPassword=El documento PDF está protegido con contraseña y no se ha proporcionado o es incorrecta - -downloadPdf=Descargar PDF -text=Texto -font=Fuente -selectFilter=-- Seleccionar -- -pageNum=Número de página - -pageLayout.title=Diseño de varias páginas -pageLayout.header=Diseño de varias páginas -pageLayout.pagesPerSheet=Páginas por hoja: -pageLayout.submit=Entregar - -scalePages.title=Ajustar escala de la página -scalePages.header=Adjustar escala de la página -scalePages.pageSize=Tamaño de la página del documento -scalePages.scaleFactor=Nivel de zoom (recorte) de la página -scalePages.submit=Entregar - -certSign.title=Firma de certificado -certSign.header=Firmar un PDF con su certificado (Trabajo en progreso) -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.selectCert=Seleccione su archivo de certificado (formato X.509, podría ser .pem o .der): -certSign.selectP12=Seleccione su archivo de almacén de claves PKCS#12 (.p12 o .pfx) (Opcional, si se proporciona, debe contener su clave privada y certificado): -certSign.certType=Tipo de certificado -certSign.password=Ingrese su almacén de claves o contraseña de clave privada (si corresponde): -certSign.showSig=Mostrar firma -certSign.reason=Razón -certSign.location=Ubicación -certSign.name=Nombre -certSign.submit=Firmar PDF - -removeBlanks.title=Eliminar espacios en blanco -removeBlanks.header=Eliminar páginas en blanco -removeBlanks.threshold=Umbral: -removeBlanks.thresholdDesc=Umbral para determinar cuán blanco debe ser un píxel blanco -removeBlanks.whitePercent=Porcentaje de blanco (%): -removeBlanks.whitePercentDesc=Porcentaje de página que debe ser blanca para ser eliminada -removeBlanks.submit=Eliminar espacios en blanco - -compare.title=Comparar -compare.header=Comparar archivos PDF -compare.document.1=Documento 1 -compare.document.2=Documento 2 -compare.submit=Comparar - -sign.title=Firmar -sign.header=Firmar archivos PDF -sign.upload=Subir imagen -sign.draw=Dibujar firma -sign.text=Entrada de texto -sign.clear=Borrar -sign.add=Agregar - -repair.title=Reparar -repair.header=Reparar archivos PDF -repair.submit=Reparar - -flatten.title=Aplanar -flatten.header=Acoplar archivos PDF -flatten.submit=Aplanar - -ScannerImageSplit.selectText.1=Umbral de ángulo: -ScannerImageSplit.selectText.2=Establecer el ángulo absoluto mínimo requerido para rotar la imagen (predeterminado: 10). -ScannerImageSplit.selectText.3=Tolerancia: -ScannerImageSplit.selectText.4=Determinar el rango de variación de color alrededor del color de fondo estimado (predeterminado: 30). -ScannerImageSplit.selectText.5=Área mínima: -ScannerImageSplit.selectText.6=Establecer el umbral mínimo de área para una foto (predeterminado: 10000). -ScannerImageSplit.selectText.7=Área de contorno mínima: -ScannerImageSplit.selectText.8=Establecer el umbral mínimo del área de contorno para una foto -ScannerImageSplit.selectText.9=Tamaño del borde: -ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1). - -navbar.settings=Ajustes -settings.title=Ajustes -settings.update=Actualización disponible -settings.appVersion=Versión de la aplicación: -settings.downloadOption.title=Elegir la opción de descarga (para descargas de un solo archivo sin ZIP): -settings.downloadOption.1=Abrir en la misma ventana -settings.downloadOption.2=Abrir en una nueva ventana -settings.downloadOption.3=Descargar el fichero -settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descargados - - - - -#OCR -ocr.title=OCR / Escaneo de limpieza -ocr.header=Escaneos de limpieza / OCR (Reconocimiento óptico de caracteres) -ocr.selectText.1=Seleccionar los idiomas que se detectarán en el PDF (Los enumerados son los detectados actualmente): -ocr.selectText.2=Producir un archivo de texto que contenga texto OCR junto con el PDF editado con OCR -ocr.selectText.3=Corregir las páginas que se escanearon en un ángulo torcido girándolas nuevamente a su lugar -ocr.selectText.4=Limpiar la página para que sea menos probable que el OCR encuentre texto en el ruido de fondo (Sin cambio de salida) -ocr.selectText.5=Limpiar la página para que sea menos probable que el OCR encuentre texto en el ruido de fondo, mantiene la limpieza en la salida. -ocr.selectText.6=Ignorar las páginas que tienen texto interactivo, solo las páginas OCR que son imágenes -ocr.selectText.7=Forzar OCR, OCR eliminará en cada página todo el texto original -ocr.selectText.8=Normal (se producirá un error si el PDF contiene texto) -ocr.selectText.9=Ajustes adicionales -ocr.selectText.10=Modo OCR -ocr.selectText.11=Eliminar imágenes después de OCR (Elimina TODAS las imágenes, solo es útil si es parte del paso de conversión) -ocr.selectText.12=Tipo de procesamiento (avanzado) -ocr.help=Lea esta documentación sobre cómo usar esto para otros idiomas y/o no usarlo en Docker -ocr.credit=Este servicio utiliza OCRmyPDF y Tesseract para OCR -ocr.submit=Procesar PDF con OCR - - - -extractImages.title=Extraer imágenes -extractImages.header=Extraer imágenes -extractImages.selectText=Seleccionar el formato de imagen para convertir las imágenes extraídas -extractImages.submit=Extraer - - -#File to PDF -fileToPDF.title=Archivo a PDF -fileToPDF.header=Convertir cualquier archivo a PDF -fileToPDF.credit=Este servicio usa LibreOffice y Unoconv para la conversión de ficheros -fileToPDF.supportedFileTypes=Los tipos de ficheros soportados deben incluir los de abajo; sin embargo, para una completa y acutualizada lista de formatos soportados, por favor consulte la documentación de LibreOffice -fileToPDF.submit=Convertir a PDF - - -#compress -compress.title=Comprimir -compress.header=Comprimir PDF -compress.credit=Este servicio utiliza Ghostscript para compresión/optimización de PDF -compress.selectText.1=Modo manual - De 1 a 4 -compress.selectText.2=Nivel de optimización: -compress.selectText.3=4 (Terrible para imágenes de texto) -compress.selectText.4=Modo automático: ajusta automáticamente la calidad para que el PDF tenga el tamaño exacto -compress.selectText.5=Tamaño esperado del PDF (por ejemplo, 25 MB, 10.8 MB, 25 KB) -compress.submit=Comprimir - - -#Add image -addImage.title=Añadir imagen -addImage.header=Añadir imagen de PDF -addImage.everyPage=¿Todas las páginas? -addImage.upload=Añadir imagen -addImage.submit=Añadir imagen - - -#merge -merge.title=Unir -merge.header=Unir múltiples PDFs (2+) -merge.submit=Unir - -#pdfOrganiser -pdfOrganiser.title=Organizador de páginas -pdfOrganiser.header=Organizador de páginas PDF -pdfOrganiser.submit=Organizar páginas - -#herramienta multiple -multiTool.title=Multi-herramienta PDF -multiTool.header=Multi-herramienta PDF - -#pageRemover -pageRemover.title=Eliminador de páginas -pageRemover.header=Eliminador de páginas PDF -pageRemover.pagesToDelete=Páginas a eliminar (introducir una lista de números de página separados por coma): -pageRemover.submit=Eliminar Páginas - -#rotate -rotate.title=Rotar PDF -rotate.header=Rotar PDF -rotate.SeleccionaAngle=Seleccionar ángulo de rotación (múltiplo de 90 grados): -rotate.submit=Rotar - - - - -#merge -split.title=Dividir PDF -split.header=Dividir PDF -split.desc.1=Los números que seleccione son el número de página en el que desea hacer una división -split.desc.2=Como tal, seleccionar 1,3,7-8 dividiría un documento de 10 páginas en 6 archivos PDF separados con: -split.desc.3=Documento #1: Página 1 -split.desc.4=Documento #2: Páginas 2 y 3 -split.desc.5=Documento #3: Páginas 4, 5 y 6 -split.desc.6=Documento #4: Página 7 -split.desc.7=Documento #5: Página 8 -split.desc.8=Documento #6: Páginas 9 y 10 -split.splitPages=Introducir las páginas para dividir: -split.submit=Dividir - - -#merge -imageToPDF.title=Imagen a PDF -imageToPDF.header=Imagen a PDF -imageToPDF.submit=Convertir -imageToPDF.selectText.1=Estirar para ajustar -imageToPDF.selectText.2=Rotación automática del PDF -imageToPDF.selectText.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes) -imageToPDF.selectText.4=Unir en un único archivo PDF -imageToPDF.selectText.5=Convertir a PDFs separados - -#pdfToImage -pdfToImage.title=PDF a Imagen -pdfToImage.header=PDF a Imagen -pdfToImage.selectText=Formato de Imagen -pdfToImage.singleOrMultiple=Tipo resultante de imagen -pdfToImage.single=Una única imagen grande -pdfToImage.multi=Múltiples imágenes -pdfToImage.colorType=Tipo de color -pdfToImage.color=Color -pdfToImage.grey=Escala de grises -pdfToImage.blackwhite=Blanco y Negro (¡Puede perder datos!) -pdfToImage.submit=Convertir - -#addPassword -addPassword.title=Añadir contraseña -addPassword.header=Añadir contraseña (encriptar) -addPassword.selectText.1=Seleccionar PDF para encriptar -addPassword.selectText.2=Contraseña -addPassword.selectText.3=Longitud de la clave de cifrado -addPassword.selectText.4=Valores altos son más fuertes, pero valores bajos tienen mejor compatibilidad -addPassword.selectText.5=Permisos para establecer -addPassword.selectText.6=Impedir el ensamblaje del documento -addPassword.selectText.7=Impedir la extracción de contenido -addPassword.selectText.8=Impedir la extracción para la accesibilidad -addPassword.selectText.9=Impedir rellenar formulario -addPassword.selectText.10=Impedir modificación -addPassword.selectText.11=Impedir modificación de anotaciones -addPassword.selectText.12=Impedir imprimir -addPassword.selectText.13=Impedir imprimir diferentes formatos -addPassword.selectText.14=Contraseña -addPassword.selectText.15=Restringe qué se puede hacer con el documento una vez abierto (no soportado por todos los lectores) -addPassword.selectText.16=Restringe la apertura del propio documento -addPassword.submit=Encriptar - -#watermark -watermark.title=Añadir marca de agua -watermark.header=Añadir marca de agua -watermark.selectText.1=Seleccionar PDF para añadir marca de agua: -watermark.selectText.2=Texto de la marca de agua: -watermark.selectText.3=Tamaño de la Fuente: -watermark.selectText.4=Rotación (0-360): -watermark.selectText.5=Ancho (Espacio entre cada marca de agua horizontalmente): -watermark.selectText.6=Alto (Espacio entre cada marca de agua verticalmente): -watermark.selectText.7=Opacidad (0% - 100%): -watermark.submit=Añadir marca de agua - -#remove-watermark -remove-watermark.title=Eliminar marca de agua -remove-watermark.header=Eliminar marca de agua -remove-watermark.selectText.1=Seleccionar PDF para eliminar la marca de agua: -remove-watermark.selectText.2=Texto de la marca de agua: -remove-watermark.submit=Eliminar marca de agua - -#Change permissions -permissions.title=Cambiar permisos -permissions.header=Cambiar permisos -permissions.warning=Advertencia: para que estos permisos no se puedan cambiar, se recomienda configurarlos con una contraseña a través de la página de cambio de contraseña -permissions.selectText.1=Seleccionar PDF para cambiar los permisos -permissions.selectText.2=Permisos a establecer -permissions.selectText.3=Impedir el ensamblaje del documento -permissions.selectText.4=Impedir la extracción de contenido -permissions.selectText.5=Impedir la extracción para la accesibilidad -permissions.selectText.6=Impedir rellenar formulario -permissions.selectText.7=Impedir modificación -permissions.selectText.8=Impedir modificación de anotaciones -permissions.selectText.9=Impedir imprimir -permissions.selectText.10=Impedir imprimir diferentes formatos -permissions.submit=Cambiar - -#remove password -removePassword.title=Eliminar contraseña -removePassword.header=Eliminar contraseña (desencriptar) -removePassword.selectText.1=Seleccionar PDF para desencriptar -removePassword.selectText.2=Contraseña -removePassword.submit=Eliminar - -changeMetadata.title=Cambiar metadatos -changeMetadata.header=Cambiar metadatos -changeMetadata.selectText.1=Editar las variables que desea cambiar -changeMetadata.selectText.2=Eliminar todos los metadatos -changeMetadata.selectText.3=Mostrar metadatos personalizados: -changeMetadata.author=Autor: -changeMetadata.creationDate=Fecha de creación (aaaa/MM/dd HH:mm:ss): -changeMetadata.creator=Creador: -changeMetadata.keywords=Palabras clave: -changeMetadata.modDate=Fecha de modificación (aaaa/MM/dd HH:mm:ss): -changeMetadata.producer=Productor: -changeMetadata.subject=Asunto: -changeMetadata.title=Título: -changeMetadata.trapped=Trapped: -changeMetadata.selectText.4=Otros Metadatos: -changeMetadata.selectText.5=Agregar entrada de metadatos personalizados -changeMetadata.submit=Cambiar - -xlsToPdf.title=Excel a PDF -xlsToPdf.header=Excel a PDF -xlsToPdf.selectText.1=Seleccionar hoja de cálculo de Excel XLS o XLSX para convertir -xlsToPdf.convert=Convertir - - - - -pdfToPDFA.title=PDF a PDF/A -pdfToPDFA.header=PDF a PDF/A -pdfToPDFA.credit=Este servicio usa OCRmyPDF para la conversión a PDF/A -pdfToPDFA.submit=Convertir - - - -PDFToWord.title=PDF a Word -PDFToWord.header=PDF a Word -PDFToWord.selectText.1=Formato de archivo de salida -PDFToWord.credit=Este servicio utiliza LibreOffice para la conversión de archivos -PDFToWord.submit=Convertir - -PDFToPresentation.title=PDF a presentación -PDFToPresentation.header=PDF a presentación -PDFToPresentation.selectText.1=Formato de archivo de salida -PDFToPresentation.credit=Este servicio utiliza LibreOffice para la conversión de archivos -PDFToPresentation.submit=Convertir - - -PDFToText.title=PDF a TXT/RTF -PDFToText.header=PDF a TXT/RTF -PDFToText.selectText.1=Formato de archivo de salida -PDFToText.credit=Este servicio utiliza LibreOffice para la conversión de archivos -PDFToText.submit=Convertir - - -PDFToHTML.title=PDF a HTML -PDFToHTML.header=PDF a HTML -PDFToHTML.credit=Este servicio utiliza LibreOffice para la conversión de archivos -PDFToHTML.submit=Convertir - -PDFToXML.title=PDF a XML -PDFToXML.header=PDF a XML -PDFToXML.credit=Este servicio utiliza LibreOffice para la conversión de archivos -PDFToXML.submit=Convertir +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Seleccionar PDF(s) +multiPdfPrompt=Seleccionar PDFs (2+) +multiPdfDropPrompt=Selecciona (o arrastra y suelta) todos los PDFs que quieras +imgPrompt=Seleccionar Imagen(es) +genericSubmit=Enviar +processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo +pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma): +goToPage=Ir a +true=Verdadero +false=Falso +unknown=Desconocido +save=Guardar +close=Cerrar +filesSelected=archivos seleccionados +noFavourites=No se agregaron favoritos +bored=¿Aburrido de esperar? +alphabet=Alfabeto +downloadPdf=Descargar PDF +text=Texto +font=Fuente +########################## +### TODO: Translate ### +########################## +selectFillter=-- Select -- +pageNum=Número de página +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=El documento PDF está protegido con contraseña y no se ha proporcionado o es incorrecta + + +############# +# NAVBAR # +############# +navbar.convert=Convertir +navbar.security=Seguridad +navbar.other=Otro +navbar.darkmode=Modo oscuro +navbar.pageOps=Operaciones de página +navbar.settings=Ajustes + +############# +# SETTINGS # +############# +settings.title=Ajustes +settings.update=Actualización disponible +settings.appVersion=Versión de la aplicación: +settings.downloadOption.title=Elegir la opción de descarga (para descargas de un solo archivo sin ZIP): +settings.downloadOption.1=Abrir en la misma ventana +settings.downloadOption.2=Abrir en una nueva ventana +settings.downloadOption.3=Descargar el fichero +settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descargados + +############# +# HOME-PAGE # +############# +home.desc=Tu ventanilla única autohospedada para todas tus necesidades PDF + + +home.multiTool.title=Multi-herramienta PDF +home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Unir +home.merge.desc=Unir fácilmente múltiples PDFs en uno +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Dividir +home.split.desc=Dividir PDFs en múltiples documentos + +home.rotate.title=Rotar +home.rotate.desc=Rotar fácilmente tus PDFs + +home.imageToPdf.title=Imagen a PDF +home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF + +home.pdfToImage.title=PDF a Imagen +home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Organizador +home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden + +home.addImage.title=Agregar imagen al PDF +home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (trabajo en progreso) + +home.watermark.title=Añadir marca de agua +home.watermark.desc=Añadir una marca de agua predefinida al documento PDF + +home.permissions.title=Cambiar permisos +home.permissions.desc=Cambiar los permisos del documento PDF + +home.removePages.title=Eliminar +home.removePages.desc=Eliminar páginas no deseadas del documento PDF + +home.addPassword.title=Añadir contraseña +home.addPassword.desc=Encriptar el documento PDF con una contraseña + +home.removePassword.title=Eliminar contraseña +home.removePassword.desc=Eliminar la contraseña del documento PDF + +home.compressPdfs.title=Comprimir +home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero + +home.changeMetadata.title=Cambiar metadatos +home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF + +home.fileToPDF.title=Convertir fichero a PDF +home.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más) + +home.ocr.title=Ejecutar OCR en PDF y/o escaneos de limpieza +home.ocr.desc=Escaneos de limpieza y detectar texto de imágenes dentro de un PDF y volver a agregarlo como texto + +home.extractImages.title=Extraer imágenes +home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZIP + +home.pdfToPDFA.title=Convertir PDF a PDF/A +home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo + +home.PDFToWord.title=PDF a Word +home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT) + +home.PDFToPresentation.title=PDF a presentación +home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP) + +home.PDFToText.title=PDF a TXT o RTF +home.PDFToText.desc=Convertir PDF a formato TXT o RTF + +home.PDFToHTML.title=PDF a HTML +home.PDFToHTML.desc=Convertir PDF a formato HTML + +home.PDFToXML.title=PDF a XML +home.PDFToXML.desc=Convertir PDF a formato XML + +home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas +home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF + +home.sign.title=Firmar +home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen + +home.flatten.title=Aplanar +home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF + +home.repair.title=Reparar +home.repair.desc=Intentar reparar un PDF corrupto/roto + +home.removeBlanks.title=Eliminar páginas en blanco +home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento + +home.compare.title=Comparar +home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF + +home.certSign.title=Firmar con certificado +home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) + +home.pageLayout.title=Diseño de varias páginas +home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página + +home.scalePages.title=Escalar/ajustar tamaño de página +home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Diseño de varias páginas +pageLayout.header=Diseño de varias páginas +pageLayout.pagesPerSheet=Páginas por hoja: +pageLayout.submit=Entregar + + +#scalePages +scalePages.title=Ajustar escala de la página +scalePages.header=Adjustar escala de la página +scalePages.pageSize=Tamaño de la página del documento +scalePages.scaleFactor=Nivel de zoom (recorte) de la página +scalePages.submit=Entregar + + +#certSign +certSign.title=Firma de certificado +certSign.header=Firmar un PDF con su certificado (Trabajo en progreso) +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.selectCert=Seleccione su archivo de certificado (formato X.509, podría ser .pem o .der): +certSign.selectP12=Seleccione su archivo de almacén de claves PKCS#12 (.p12 o .pfx) (Opcional, si se proporciona, debe contener su clave privada y certificado): +certSign.certType=Tipo de certificado +certSign.password=Ingrese su almacén de claves o contraseña de clave privada (si corresponde): +certSign.showSig=Mostrar firma +certSign.reason=Razón +certSign.location=Ubicación +certSign.name=Nombre +certSign.submit=Firmar PDF + + +#removeBlanks +removeBlanks.title=Eliminar espacios en blanco +removeBlanks.header=Eliminar páginas en blanco +removeBlanks.threshold=Umbral: +removeBlanks.thresholdDesc=Umbral para determinar cuán blanco debe ser un píxel blanco +removeBlanks.whitePercent=Porcentaje de blanco (%): +removeBlanks.whitePercentDesc=Porcentaje de página que debe ser blanca para ser eliminada +removeBlanks.submit=Eliminar espacios en blanco + + +#compare +compare.title=Comparar +compare.header=Comparar archivos PDF +compare.document.1=Documento 1 +compare.document.2=Documento 2 +compare.submit=Comparar + + +#sign +sign.title=Firmar +sign.header=Firmar archivos PDF +sign.upload=Subir imagen +sign.draw=Dibujar firma +sign.text=Entrada de texto +sign.clear=Borrar +sign.add=Agregar + + +#repair +repair.title=Reparar +repair.header=Reparar archivos PDF +repair.submit=Reparar + + +#flatten +flatten.title=Aplanar +flatten.header=Acoplar archivos PDF +flatten.submit=Aplanar + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Umbral de ángulo: +ScannerImageSplit.selectText.2=Establecer el ángulo absoluto mínimo requerido para rotar la imagen (predeterminado: 10). +ScannerImageSplit.selectText.3=Tolerancia: +ScannerImageSplit.selectText.4=Determinar el rango de variación de color alrededor del color de fondo estimado (predeterminado: 30). +ScannerImageSplit.selectText.5=Área mínima: +ScannerImageSplit.selectText.6=Establecer el umbral mínimo de área para una foto (predeterminado: 10000). +ScannerImageSplit.selectText.7=Área de contorno mínima: +ScannerImageSplit.selectText.8=Establecer el umbral mínimo del área de contorno para una foto +ScannerImageSplit.selectText.9=Tamaño del borde: +ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1). + + +#OCR +ocr.title=OCR / Escaneo de limpieza +ocr.header=Escaneos de limpieza / OCR (Reconocimiento óptico de caracteres) +ocr.selectText.1=Seleccionar los idiomas que se detectarán en el PDF (Los enumerados son los detectados actualmente): +ocr.selectText.2=Producir un archivo de texto que contenga texto OCR junto con el PDF editado con OCR +ocr.selectText.3=Corregir las páginas que se escanearon en un ángulo torcido girándolas nuevamente a su lugar +ocr.selectText.4=Limpiar la página para que sea menos probable que el OCR encuentre texto en el ruido de fondo (Sin cambio de salida) +ocr.selectText.5=Limpiar la página para que sea menos probable que el OCR encuentre texto en el ruido de fondo, mantiene la limpieza en la salida. +ocr.selectText.6=Ignorar las páginas que tienen texto interactivo, solo las páginas OCR que son imágenes +ocr.selectText.7=Forzar OCR, OCR eliminará en cada página todo el texto original +ocr.selectText.8=Normal (se producirá un error si el PDF contiene texto) +ocr.selectText.9=Ajustes adicionales +ocr.selectText.10=Modo OCR +ocr.selectText.11=Eliminar imágenes después de OCR (Elimina TODAS las imágenes, solo es útil si es parte del paso de conversión) +ocr.selectText.12=Tipo de procesamiento (avanzado) +ocr.help=Lea esta documentación sobre cómo usar esto para otros idiomas y/o no usarlo en Docker +ocr.credit=Este servicio utiliza OCRmyPDF y Tesseract para OCR +ocr.submit=Procesar PDF con OCR + + +#extractImages +extractImages.title=Extraer imágenes +extractImages.header=Extraer imágenes +extractImages.selectText=Seleccionar el formato de imagen para convertir las imágenes extraídas +extractImages.submit=Extraer + + +#File to PDF +fileToPDF.title=Archivo a PDF +fileToPDF.header=Convertir cualquier archivo a PDF +fileToPDF.credit=Este servicio usa LibreOffice y Unoconv para la conversión de ficheros +fileToPDF.supportedFileTypes=Los tipos de ficheros soportados deben incluir los de abajo; sin embargo, para una completa y acutualizada lista de formatos soportados, por favor consulte la documentación de LibreOffice +fileToPDF.submit=Convertir a PDF + + +#compress +compress.title=Comprimir +compress.header=Comprimir PDF +compress.credit=Este servicio utiliza Ghostscript para compresión/optimización de PDF +compress.selectText.1=Modo manual - De 1 a 4 +compress.selectText.2=Nivel de optimización: +compress.selectText.3=4 (Terrible para imágenes de texto) +compress.selectText.4=Modo automático: ajusta automáticamente la calidad para que el PDF tenga el tamaño exacto +compress.selectText.5=Tamaño esperado del PDF (por ejemplo, 25 MB, 10.8 MB, 25 KB) +compress.submit=Comprimir + + +#Add image +addImage.title=Añadir imagen +addImage.header=Añadir imagen de PDF +addImage.everyPage=¿Todas las páginas? +addImage.upload=Añadir imagen +addImage.submit=Añadir imagen + + +#merge +merge.title=Unir +merge.header=Unir múltiples PDFs (2+) +merge.submit=Unir + + +#pdfOrganiser +pdfOrganiser.title=Organizador de páginas +pdfOrganiser.header=Organizador de páginas PDF +pdfOrganiser.submit=Organizar páginas + + +#multiTool +multiTool.title=Multi-herramienta PDF +multiTool.header=Multi-herramienta PDF + + +#pageRemover +pageRemover.title=Eliminador de páginas +pageRemover.header=Eliminador de páginas PDF +pageRemover.pagesToDelete=Páginas a eliminar (introducir una lista de números de página separados por coma): +pageRemover.submit=Eliminar Páginas + + +#rotate +rotate.title=Rotar PDF +rotate.header=Rotar PDF +########################## +### TODO: Translate ### +########################## +rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): +rotate.submit=Rotar + + +#merge +split.title=Dividir PDF +split.header=Dividir PDF +split.desc.1=Los números que seleccione son el número de página en el que desea hacer una división +split.desc.2=Como tal, seleccionar 1,3,7-8 dividiría un documento de 10 páginas en 6 archivos PDF separados con: +split.desc.3=Documento #1: Página 1 +split.desc.4=Documento #2: Páginas 2 y 3 +split.desc.5=Documento #3: Páginas 4, 5 y 6 +split.desc.6=Documento #4: Página 7 +split.desc.7=Documento #5: Página 8 +split.desc.8=Documento #6: Páginas 9 y 10 +split.splitPages=Introducir las páginas para dividir: +split.submit=Dividir + + +#merge +imageToPDF.title=Imagen a PDF +imageToPDF.header=Imagen a PDF +imageToPDF.submit=Convertir +imageToPDF.selectText.1=Estirar para ajustar +imageToPDF.selectText.2=Rotación automática del PDF +imageToPDF.selectText.3=Lógica de archivos múltiples (únicamente activado si funciona con multiples imágenes) +imageToPDF.selectText.4=Unir en un único archivo PDF +imageToPDF.selectText.5=Convertir a PDFs separados + + +#pdfToImage +pdfToImage.title=PDF a Imagen +pdfToImage.header=PDF a Imagen +pdfToImage.selectText=Formato de Imagen +pdfToImage.singleOrMultiple=Tipo resultante de imagen +pdfToImage.single=Una única imagen grande +pdfToImage.multi=Múltiples imágenes +pdfToImage.colorType=Tipo de color +pdfToImage.color=Color +pdfToImage.grey=Escala de grises +pdfToImage.blackwhite=Blanco y Negro (¡Puede perder datos!) +pdfToImage.submit=Convertir + + +#addPassword +addPassword.title=Añadir contraseña +addPassword.header=Añadir contraseña (encriptar) +addPassword.selectText.1=Seleccionar PDF para encriptar +addPassword.selectText.2=Contraseña +addPassword.selectText.3=Longitud de la clave de cifrado +addPassword.selectText.4=Valores altos son más fuertes, pero valores bajos tienen mejor compatibilidad +addPassword.selectText.5=Permisos para establecer +addPassword.selectText.6=Impedir el ensamblaje del documento +addPassword.selectText.7=Impedir la extracción de contenido +addPassword.selectText.8=Impedir la extracción para la accesibilidad +addPassword.selectText.9=Impedir rellenar formulario +addPassword.selectText.10=Impedir modificación +addPassword.selectText.11=Impedir modificación de anotaciones +addPassword.selectText.12=Impedir imprimir +addPassword.selectText.13=Impedir imprimir diferentes formatos +addPassword.selectText.14=Contraseña +addPassword.selectText.15=Restringe qué se puede hacer con el documento una vez abierto (no soportado por todos los lectores) +addPassword.selectText.16=Restringe la apertura del propio documento +addPassword.submit=Encriptar + + +#watermark +watermark.title=Añadir marca de agua +watermark.header=Añadir marca de agua +watermark.selectText.1=Seleccionar PDF para añadir marca de agua: +watermark.selectText.2=Texto de la marca de agua: +watermark.selectText.3=Tamaño de la Fuente: +watermark.selectText.4=Rotación (0-360): +watermark.selectText.5=Ancho (Espacio entre cada marca de agua horizontalmente): +watermark.selectText.6=Alto (Espacio entre cada marca de agua verticalmente): +watermark.selectText.7=Opacidad (0% - 100%): +watermark.submit=Añadir marca de agua + + +#remove-watermark +remove-watermark.title=Eliminar marca de agua +remove-watermark.header=Eliminar marca de agua +remove-watermark.selectText.1=Seleccionar PDF para eliminar la marca de agua: +remove-watermark.selectText.2=Texto de la marca de agua: +remove-watermark.submit=Eliminar marca de agua + + +#Change permissions +permissions.title=Cambiar permisos +permissions.header=Cambiar permisos +permissions.warning=Advertencia: para que estos permisos no se puedan cambiar, se recomienda configurarlos con una contraseña a través de la página de cambio de contraseña +permissions.selectText.1=Seleccionar PDF para cambiar los permisos +permissions.selectText.2=Permisos a establecer +permissions.selectText.3=Impedir el ensamblaje del documento +permissions.selectText.4=Impedir la extracción de contenido +permissions.selectText.5=Impedir la extracción para la accesibilidad +permissions.selectText.6=Impedir rellenar formulario +permissions.selectText.7=Impedir modificación +permissions.selectText.8=Impedir modificación de anotaciones +permissions.selectText.9=Impedir imprimir +permissions.selectText.10=Impedir imprimir diferentes formatos +permissions.submit=Cambiar + + +#remove password +removePassword.title=Eliminar contraseña +removePassword.header=Eliminar contraseña (desencriptar) +removePassword.selectText.1=Seleccionar PDF para desencriptar +removePassword.selectText.2=Contraseña +removePassword.submit=Eliminar + + +#changeMetadata +changeMetadata.title=Título: +changeMetadata.header=Cambiar metadatos +changeMetadata.selectText.1=Editar las variables que desea cambiar +changeMetadata.selectText.2=Eliminar todos los metadatos +changeMetadata.selectText.3=Mostrar metadatos personalizados: +changeMetadata.author=Autor: +changeMetadata.creationDate=Fecha de creación (aaaa/MM/dd HH:mm:ss): +changeMetadata.creator=Creador: +changeMetadata.keywords=Palabras clave: +changeMetadata.modDate=Fecha de modificación (aaaa/MM/dd HH:mm:ss): +changeMetadata.producer=Productor: +changeMetadata.subject=Asunto: +changeMetadata.title=Título: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Otros Metadatos: +changeMetadata.selectText.5=Agregar entrada de metadatos personalizados +changeMetadata.submit=Cambiar + + +#xlsToPdf +xlsToPdf.title=Excel a PDF +xlsToPdf.header=Excel a PDF +xlsToPdf.selectText.1=Seleccionar hoja de cálculo de Excel XLS o XLSX para convertir +xlsToPdf.convert=Convertir + + +#pdfToPDFA +pdfToPDFA.title=PDF a PDF/A +pdfToPDFA.header=PDF a PDF/A +pdfToPDFA.credit=Este servicio usa OCRmyPDF para la conversión a PDF/A +pdfToPDFA.submit=Convertir + + +#PDFToWord +PDFToWord.title=PDF a Word +PDFToWord.header=PDF a Word +PDFToWord.selectText.1=Formato de archivo de salida +PDFToWord.credit=Este servicio utiliza LibreOffice para la conversión de archivos +PDFToWord.submit=Convertir + + +#PDFToPresentation +PDFToPresentation.title=PDF a presentación +PDFToPresentation.header=PDF a presentación +PDFToPresentation.selectText.1=Formato de archivo de salida +PDFToPresentation.credit=Este servicio utiliza LibreOffice para la conversión de archivos +PDFToPresentation.submit=Convertir + + +#PDFToText +PDFToText.title=PDF a TXT/RTF +PDFToText.header=PDF a TXT/RTF +PDFToText.selectText.1=Formato de archivo de salida +PDFToText.credit=Este servicio utiliza LibreOffice para la conversión de archivos +PDFToText.submit=Convertir + + +#PDFToHTML +PDFToHTML.title=PDF a HTML +PDFToHTML.header=PDF a HTML +PDFToHTML.credit=Este servicio utiliza LibreOffice para la conversión de archivos +PDFToHTML.submit=Convertir + + +#PDFToXML +PDFToXML.title=PDF a XML +PDFToXML.header=PDF a XML +PDFToXML.credit=Este servicio utiliza LibreOffice para la conversión de archivos +PDFToXML.submit=Convertir diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 02f6a29d..a934ea54 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -21,22 +21,65 @@ filesSelected=Hautatutako fitxategiak noFavourites=Ez dira gogokoak gehitu bored=Itxaroten aspertuta? alphabet=Alfabetoa -############# -# HOME-PAGE # -############# -home.desc=Zure leihatila bakarra autoostatatua zure PDF behar guztietarako +downloadPdf=PDFa deskargatu +text=Testua +font=Letra-tipoa +########################## +### TODO: Translate ### +########################## +selectFillter=-- Select -- +pageNum=Orrialde-zenbakia +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=PDF dokumentua pasahitzarekin babestuta dago eta pasahitza ez da sartu edo akastuna da + +############# +# NAVBAR # +############# navbar.convert=Bihurtu navbar.security=Segurtasuna navbar.other=Beste bat navbar.darkmode=Modu iluna navbar.pageOps=Orrialde-eragiketak +navbar.settings=Ezarpenak + +############# +# SETTINGS # +############# +settings.title=Ezarpenak +settings.update=Eguneratze eskuragarria +settings.appVersion=Aplikazioaren bertsioa: +settings.downloadOption.title=Hautatu deskargatzeko aukera (fitxategi bakarra deskargatzeko ZIP gabe): +settings.downloadOption.1=Ireki leiho berean +settings.downloadOption.2=Ireki leiho berrian +settings.downloadOption.3=Deskargatu fitxategia +settings.zipThreshold=ZIP fitxategiak deskargatutako fitxategi kopurua gainditzen denean + +############# +# HOME-PAGE # +############# +home.desc=Zure leihatila bakarra autoostatatua zure PDF behar guztietarako + 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 +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Elkartu -home.merge.desc=Elkartu zenbait PDF dokumentu bakar batean modu errazean +home.merge.desc=Elkartu zenbait PDF dokumentu bakar batean modu errazean +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side home.split.title=Zatitu home.split.desc=Zatitu PDFak zenbait dokumentutan @@ -59,16 +102,13 @@ home.addImage.desc=Gehitu irudi bat PDFan ezarritako kokaleku batean (lanean) home.watermark.title=Gehitu ur-marka home.watermark.desc=Gehitu aurrez zehaztutako ur-marka bat PFD dokumentuari -home.remove-watermark.title= Ezabatu ur-marka -home.remove-watermark.desc= Ezabatu ur-marka PDF dokumentutik - home.permissions.title=Aldatu baimenak home.permissions.desc=Aldatu PDF dokumentuaren baimenak home.removePages.title=Ezabatu home.removePages.desc=Ezabatu nahi ez dituzun orrialdeak PDF dokumentutik -home.addPassword.title=Gehitu pasahitza +home.addPassword.title=Gehitu pasahitza home.addPassword.desc=Enkriptatu PDF dokumentua pasahitz batekin home.removePassword.title=Ezabatu pasahitza @@ -78,7 +118,7 @@ home.compressPdfs.title=Konprimatu home.compressPdfs.desc=Konprimatu PDFak fitxategiaren tamaina murrizteko home.changeMetadata.title=Aldatu metadatuak -home.changeMetadata.desc=Aldatu/Ezabatu/Gehitu metadatuak PDF dokumentuari +home.changeMetadata.desc=Aldatu/Ezabatu/Gehitu metadatuak PDF dokumentuari home.fileToPDF.title=Fitxategia PDF bihurtu home.fileToPDF.desc=PDF bihurtu ia edozein fitxategi (DOCX, PNG, XLS, PPT, TXT eta gehiago) @@ -122,37 +162,128 @@ home.repair.desc=Saiatu PDF hondatu/kaltetu bat konpontzen home.removeBlanks.title=Ezabatu orrialde zuriak home.removeBlanks.desc=Detektatu orrialde zuriak eta dokumentutik ezabatu -home.certSign.title=Sinatu ziurtagiriarekin -home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12) - home.compare.title=Konparatu home.compare.desc=Konparatu eta erakutsi 2 PDF dokumenturen aldeak +home.certSign.title=Sinatu ziurtagiriarekin +home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12) + home.pageLayout.title=Zenbait orrialderen diseinua -home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde +home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde home.scalePages.title=Eskalatu/Doitu orrialdearen tamaina home.scalePages.desc=Eskalatu/Aldatu orrialde baten tamaina eta/edo edukia -error.pdfPassword=PDF dokumentua pasahitzarekin babestuta dago eta pasahitza ez da sartu edo akastuna da +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts -downloadPdf=PDFa deskargatu -text=Testua -font=Letra-tipoa -selectFilter=-- Hautatu -- -pageNum=Orrialde-zenbakia +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout pageLayout.title=Hainbat orrialderen diseinua pageLayout.header=Hainbat orrialderen diseinua pageLayout.pagesPerSheet=Orrialdeak orriko: pageLayout.submit=Entregatu + +#scalePages scalePages.title=Doitu orrialdearen eskala scalePages.header=Doitu orrialdearen eskala scalePages.pageSize=Dokumentuaren orrialdearen tamaina scalePages.scaleFactor=Orriaren zoom maila (moztea) scalePages.submit=Entregatu + +#certSign certSign.title=Ziurtagiriaren sinadura certSign.header=Sinatu PDF bat haren ziurtagiriarekin (lanean) certSign.selectPDF=Hautatu PDF fitxategi bat sinatzeko: @@ -167,6 +298,8 @@ certSign.location=Kokalekua certSign.name=Izena certSign.submit=Sinatu PDFa + +#removeBlanks removeBlanks.title=Ezabatu zuriuneak removeBlanks.header=Ezabatu orrialde zuriak removeBlanks.threshold=Gutxieneko balioa: @@ -175,28 +308,38 @@ removeBlanks.whitePercent=Zuriaren protzentajea (%): removeBlanks.whitePercentDesc=Zuria izan behar den orriaren ehunekoa ezabatua izan dadin removeBlanks.submit=Ezabatu zuriuneak + +#compare compare.title=Konparatu compare.header=Konparatu PDF fitxategiak compare.document.1=1. dokumentua compare.document.2=2. dokumentua compare.submit=Konparatu + +#sign sign.title=Sinatu sign.header=Sinatu PDF fitxategiak -sign.upload=Igo irudia -sign.draw=Marraztu sinadura +sign.upload=Igo irudia +sign.draw=Marraztu sinadura sign.text=Testua sartzea sign.clear=Garbitu sign.add=Gehitu + +#repair repair.title=Konpondu repair.header=Konpondu PDF fitxategiak repair.submit=Konpondu + +#flatten flatten.title=Lautu flatten.header=Akoplatu PDF fitxategiak flatten.submit=Lautu + +#ScannerImageSplit ScannerImageSplit.selectText.1=Angeluaren gutxieneko balioa: ScannerImageSplit.selectText.2=Ezarri eskatutako gutxieneko angelu absolutua irudia biratzeko (lehenetsia: 10). ScannerImageSplit.selectText.3=Tolerantzia: @@ -207,19 +350,7 @@ ScannerImageSplit.selectText.7=Inguruko area gutxienekoa: ScannerImageSplit.selectText.8=Ezarri inguruko arearen gutxieneko balioa argazki batentzat ScannerImageSplit.selectText.9=Ertzaren tamaina: ScannerImageSplit.selectText.10=Ezarri gehitutako eta ezabatutako ertzaren tamaina irteeran ertz zuriak saihesteko (lehenetsia: 1). - -navbar.settings=Ezarpenak -settings.title=Ezarpenak -settings.update=Eguneratze eskuragarria -settings.appVersion=Aplikazioaren bertsioa: -settings.downloadOption.title=Hautatu deskargatzeko aukera (fitxategi bakarra deskargatzeko ZIP gabe): -settings.downloadOption.1=Ireki leiho berean -settings.downloadOption.2=Ireki leiho berrian -settings.downloadOption.3=Deskargatu fitxategia -settings.zipThreshold=ZIP fitxategiak deskargatutako fitxategi kopurua gainditzen denean - - - + #OCR ocr.title=OCR / Garbiketa-eskaneatzea @@ -241,7 +372,7 @@ ocr.credit=Zerbitzu honek OCRmyPDF eta OCR-rako Tesseract erabiltzen ditu ocr.submit=PDF prozesatu OCR-rekin - +#extractImages extractImages.title=Atera irudiak extractImages.header=Atera irudiak extractImages.selectText=Hautatu irudi-formatua ateratako irudiak bihurtzeko @@ -269,8 +400,8 @@ compress.submit=Konprimatu #Add image -addImage.title=Gehitu irudia -addImage.header=Gehitu PDF-irudia +addImage.title=Gehitu irudia +addImage.header=Gehitu PDF-irudia addImage.everyPage=Orrialde guztiak? addImage.upload=Gehitu irudia addImage.submit=Gehitu irudia @@ -281,34 +412,39 @@ merge.title=Elkartu merge.header=Elkartu zenbait PDF (2+) merge.submit=Elkartu + #pdfOrganiser pdfOrganiser.title=Orrialdeen antolatzailea pdfOrganiser.header=PDF orrialdeen antolatzailea -pdfOrganiser.submit=Antolatu orrialdeak +pdfOrganiser.submit=Antolatu orrialdeak -#herramienta multiple -multiTool.title= PDF erabilera anitzeko tresna + +#multiTool +multiTool.title=PDF erabilera anitzeko tresna multiTool.header=PDF erabilera anitzeko tresna + #pageRemover pageRemover.title=Orrialdeen ezabatzailea pageRemover.header=PDF orrialdeen ezabatzailea pageRemover.pagesToDelete=Ezabatu beharreko orrialdeak (sartu komaz bereizitako orrialde-zenbakien zerrenda): -pageRemover.submit=Ezabatu orrialdeak +pageRemover.submit=Ezabatu orrialdeak + #rotate -rotate.title=Biratu PDFa -rotate.header=Biratu PDFa -rotate.SeleccionaAngle=Hautatu errotazio-angelua (90 graduren multiploa): +rotate.title=Biratu PDFa +rotate.header=Biratu PDFa +########################## +### TODO: Translate ### +########################## +rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): rotate.submit=Biratu - - #merge split.title=Zatitu PDFa split.header=Zatitu PDFa -split.desc.1=Hautatzen dituzun zenbakiak zatiketa egin nahi duzun orrialde-zenbakiak dira +split.desc.1=Hautatzen dituzun zenbakiak zatiketa egin nahi duzun orrialde-zenbakiak dira split.desc.2=Beraz, 1,3,7-8 hautatzean 10 orrialdeko dokumentua zatituko luke 6 PDF fitxategi bereizituetan split.desc.3=#1 Dokumentua: 1. orrialdea split.desc.4=#2 Dokumentua: 2. eta 3. orrialdeak @@ -329,6 +465,7 @@ imageToPDF.selectText.2=PDFaren errotazio automatikoa imageToPDF.selectText.3=Fitxategi askoren logika (gaituta bakarrik zenbait irudirekin ari denean) imageToPDF.selectText.4=Elkartu PDF bakar batean imageToPDF.selectText.5=Bihurtu eta PDF bereizituak sortu + #pdfToImage pdfToImage.title=PDFa irudi bihurtu @@ -343,6 +480,7 @@ pdfToImage.grey=Gris-eskala pdfToImage.blackwhite=Zuria eta Beltza (Datuak galdu ditzake!) pdfToImage.submit=Bihurtu + #addPassword addPassword.title=Gehitu pasahitza addPassword.header=Gehitu pasahitza (enkriptatu) @@ -361,9 +499,10 @@ addPassword.selectText.12=Galarazi inprimatzea addPassword.selectText.13=Galarazi zenbait formatu inprimatzea addPassword.selectText.14=Pasahitza addPassword.selectText.15=Mugatu zer egin daitekeen dokumentuarekin behin zabalduta (Irakurle guztiek onartu gabe) -addPassword.selectText.16=Mugatu dokumentu bera zabaltzeko aukera +addPassword.selectText.16=Mugatu dokumentu bera zabaltzeko aukera addPassword.submit=Enkriptatu + #watermark watermark.title=Gehitu ur-marka watermark.header=Gehitu ur-marka @@ -376,6 +515,7 @@ watermark.selectText.6=Altuera (ur-marka bakoitzaren arteko espazioa bertikalean watermark.selectText.7=Opakutasuna (0% - 100%): watermark.submit=Gehitu ur-marka + #remove-watermark remove-watermark.title=Ezabatu ur-marka remove-watermark.header=Ezabatu ur-marka @@ -383,6 +523,7 @@ remove-watermark.selectText.1=Hautatu PDFa ur-marka ezabatzeko: remove-watermark.selectText.2=Ur-markaren testua: remove-watermark.submit=Ezabatu ur-marka + #Change permissions permissions.title=Aldatu baimenak permissions.header=Aldatu baimenak @@ -399,6 +540,7 @@ permissions.selectText.9=Galarazi inprimatzea permissions.selectText.10=Galarazi zenbait formatu inprimatzea permissions.submit=Aldatu + #remove password removePassword.title=Ezabatu pasahitza removePassword.header=Ezabatu pasahitza (desenkriptatu) @@ -406,7 +548,9 @@ removePassword.selectText.1=Hautatu PDFa desenkriptatzeko removePassword.selectText.2=Pasahitza removePassword.submit=Ezabatu -changeMetadata.title=Aldatu metadatuak + +#changeMetadata +changeMetadata.title=Izenburua: changeMetadata.header=Aldatu metadatuak changeMetadata.selectText.1=Editatu aldatu nahi dituzun aldagaiak changeMetadata.selectText.2=Ezabatu metadatu guztiak @@ -424,27 +568,30 @@ changeMetadata.selectText.4=Beste metadatu batzuk: changeMetadata.selectText.5=Gehitu metadatu pertsonalizatuen sarrera changeMetadata.submit=Aldatu + +#xlsToPdf xlsToPdf.title=Excela PDF bihurtu xlsToPdf.header=Excela PDF bihurtu xlsToPdf.selectText.1=Hautatu Excel XLSren edo XLSXren kalkulu-orria bihurtzeko xlsToPdf.convert=Bikurtu - - +#pdfToPDFA pdfToPDFA.title=PDFa PDF/A bihurtu pdfToPDFA.header=PDFa PDF/A bihurtu pdfToPDFA.credit=Zerbitzu honek OCRmyPDF erabiltzen du PDFak PDF/A bihurtzeko pdfToPDFA.submit=Bihurtu - +#PDFToWord PDFToWord.title=PDFa Word bihurtu PDFToWord.header=PDFa Word bihurtu PDFToWord.selectText.1=Irteerako fitxategiaren formatua PDFToWord.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko PDFToWord.submit=Bihurtu + +#PDFToPresentation PDFToPresentation.title=PDFa aurkezpen bihurtu PDFToPresentation.header=PDFa aurkezpen bihurtu PDFToPresentation.selectText.1=Irteerako fitxategiaren formatua @@ -452,6 +599,7 @@ PDFToPresentation.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bi PDFToPresentation.submit=Bihurtu +#PDFToText PDFToText.title=PDFa TXT/RTF bihurtu PDFToText.header=PDFa TXT/RTF bihurtu PDFToText.selectText.1=Irteerako fitxategiaren formatua @@ -459,12 +607,15 @@ PDFToText.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko PDFToText.submit=Bihurtu +#PDFToHTML PDFToHTML.title=PDFa HTML bihurtu PDFToHTML.header=PDFa HTML bihurtu PDFToHTML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko PDFToHTML.submit=Bihurtu + +#PDFToXML PDFToXML.title=PDFa XML bihurtu PDFToXML.header=PDFa XML bihurtu PDFToXML.credit=Zerbitzu honek LibreOffice erabiltzen du fitxategiak bihurtzeko -PDFToXML.submit=Bihurtu \ No newline at end of file +PDFToXML.submit=Bihurtu diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 421018eb..12a5d5db 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -1,471 +1,618 @@ -#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# -# Translated by Google Translate # -#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# - -########### -# Generic # -########### -# the direction that the language is written (ltr=left to right, rtl=right to left) -language.direction=ltr - -pdfPrompt=Choisir PDF -multiPdfPrompt=Choisir des PDF (2+) -multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin -imgPrompt=Choisir une image -genericSubmit=Soumettre -processTimeWarning=Attention�: ce processus peut prendre jusqu'à une minute en fonction de la taille du fichier -pageOrderPrompt=Ordre des pages (Entrez une liste de numéros de page séparés par des virgules): -goToPage=Aller -true=Vrai -false=Faux -unknown=Inconnu -save=Enregistrer -close=Fermer -filesSelected=fichiers sélectionnés -noFavourites=Aucun favori ajouté -bored=Ennuyé d'attendre ? -alphabet=Alphabet -############# -# HOME-PAGE # -############# -home.desc=Votre guichet unique hébergé localement pour tous vos besoins PDF. - -navbar.convert=Convertir -navbar.security=Sécurité -navbar.other=Autre -navbar.darkmode=Mode sombre -navbar.pageOps=Opérations de page - -home.multiTool.title=Multi-outil PDF -home.multiTool.desc=Fusionner, faire pivoter, réorganiser et supprimer des pages - -home.merge.title=Fusionnez -home.merge.desc=Fusionnez facilement plusieurs PDF en un seul. - -home.split.title=Fractionner -home.split.desc=Diviser les PDF en plusieurs documents - -home.rotate.title=Tourner -home.rotate.desc=Faites pivoter facilement vos PDF. - -home.imageToPdf.title=Image au format PDF -home.imageToPdf.desc=Convertir une image (PNG, JPEG, GIF) en PDF. - -home.pdfToImage.title=PDF vers image -home.pdfToImage.desc=Convertir un PDF en image. (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Organisateur -home.pdfOrganiser.desc=Supprimer/Réorganiser les pages dans n'importe quel ordre - -home.addImage.title=Ajouter une image au PDF -home.addImage.desc=Ajoute une image à un emplacement défini sur le PDF (Travail en cours) - -home.watermark.title=Ajouter un filigrane -home.watermark.desc=Ajoutez un filigrane personnalisé à votre document PDF. - -home.remove-watermark.title=Supprimer le filigrane -home.remove-watermark.desc=Supprimez les filigranes de votre document PDF. - -home.permissions.title=Modifier les autorisations -home.permissions.desc=Modifier les permissions de votre document PDF - -home.removePages.title=Supprimer -home.removePages.desc=Supprimez les pages inutiles de votre document PDF. - -home.addPassword.title=Ajouter un mot de passe -home.addPassword.desc=Cryptez votre document PDF avec un mot de passe. - -home.removePassword.title=Supprimer le mot de passe -home.removePassword.desc=Supprimez la protection par mot de passe de votre document PDF. - -home.compressPdfs.title=Compresser -home.compressPdfs.desc=Compressez les PDF pour réduire leur taille de fichier. - -home.changeMetadata.title=Modifier les métadonnées -home.changeMetadata.desc=Modifier/Supprimer/Ajouter des métadonnées d'un document PDF - - -home.fileToPDF.title=Convertir un fichier en PDF -home.fileToPDF.desc=Convertissez presque n\u2019importe quel fichier en PDF (DOCX, PNG, XLS, PPT, TXT et plus) - -home.ocr.title=Exécuter l'OCR sur les scans PDF et/ou de nettoyage -home.ocr.desc=Le nettoyage analyse et détecte le texte des images dans un PDF et le rajoute en tant que texte. - -home.extractImages.title=Extraire les images -home.extractImages.desc=Extrait toutes les images d\u2019un PDF et les enregistre au format zip - - -home.pdfToPDFA.title=Convertir PDF en PDF/A -home.pdfToPDFA.desc=Convertir un PDF en PDF/A pour un stockage à long terme - -home.PDFToWord.title=PDF vers Word -home.PDFToWord.desc=Convertir les formats PDF en Word (DOC, DOCX et ODT) - -home.PDFToPresentation.title=PDF vers présentation -home.PDFToPresentation.desc=Convertir des PDF en formats de présentation (PPT, PPTX et ODP) - -home.PDFToText.title=PDF vers texte/RTF -home.PDFToText.desc=Convertir un PDF au format Texte ou RTF - -home.PDFToHTML.title=PDF vers HTML -home.PDFToHTML.desc=Convertir le PDF au format HTML - -home.PDFToXML.title=PDF vers XML -home.PDFToXML.desc=Convertir le PDF au format XML - -home.ScannerImageSplit.title=Détecter/diviser les photos numérisées -home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF - -home.sign.title=Signe -home.sign.desc=Ajoute une signature au PDF par dessin, texte ou image - -home.flatten.title=Aplatir -home.flatten.desc=Supprimer tous les éléments et formulaires interactifs d'un PDF - -home.repair.title=Réparer -home.repair.desc=Essaye de réparer un PDF corrompu/cassé - -home.removeBlanks.title=Supprimer les pages vierges -home.removeBlanks.desc=Détecte et supprime les pages vierges d'un document - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.compare.title=Comparer -home.compare.desc=Compare et affiche les différences entre 2 documents PDF - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Télécharger le PDF -text=Texte -font=Police -selectFilter=-- Sélectionner -- -pageNum=numéro de page - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Signature du certificat -certSign.header=Signer un PDF avec votre certificat (Travail en cours) -certSign.selectPDF=Sélectionnez un fichier PDF à signer : -certSign.selectKey=Sélectionnez votre fichier de clé privée (format PKCS#8, peut être .pem ou .der) : -certSign.selectCert=Sélectionnez votre fichier de certificat (format X.509, peut être .pem ou .der) : -certSign.selectP12=Sélectionnez votre fichier de magasin de clés PKCS#12 (.p12 ou .pfx) (facultatif, s'il est fourni, il doit contenir votre clé privée et votre certificat) : -certSign.certType=Type de certificat -certSign.password=Entrez votre mot de passe de keystore ou de clé privée (le cas échéant) : -certSign.showSig=Afficher la signature -certSign.reason=Raison -certSign.location=Emplacement -certSign.name=Nom -certSign.submit=Signer le PDF - -removeBlanks.title=Supprimer les blancs -removeBlanks.header=Supprimer les pages vierges -removeBlanks.threshold=Seuil : -removeBlanks.thresholdDesc=Seuil pour déterminer à quel point un pixel blanc doit être blanc -removeBlanks.whitePercent=Pourcentage blanc (%) : -removeBlanks.whitePercentDesc=Pourcentage de page qui doit être blanche pour être supprimée -removeBlanks.submit=Supprimer les blancs - -compare.title=Comparer -compare.header=Comparer des PDF -compare.document.1=Document 1 -compare.document.2=Document 2 -compare.submit=Comparer - -sign.title=Signe -sign.header=Signer des PDF -sign.upload=Télécharger l'image -sign.draw=Dessiner une signature -sign.text=Saisie de texte -sign.clear=Effacer -sign.add=Ajouter - -repair.title=Réparer -repair.header=Réparer les PDF -repair.submit=Réparer - -flatten.title=Aplatir -flatten.header=Aplatir les PDF -flatten.submit=Aplatir - -ScannerImageSplit.selectText.1=Seuil d'angle : -ScannerImageSplit.selectText.2=Définit l'angle absolu minimum requis pour la rotation de l'image (par défaut : 10). -ScannerImageSplit.selectText.3=Tolérance : -ScannerImageSplit.selectText.4=Détermine la plage de variation de couleur autour de la couleur d'arrière-plan estimée (par défaut : 30). -ScannerImageSplit.selectText.5=Zone minimale : -ScannerImageSplit.selectText.6=Définit le seuil de zone minimum pour une photo (par défaut : 10000). -ScannerImageSplit.selectText.7=Zone de contour minimale : -ScannerImageSplit.selectText.8=Définit le seuil de zone de contour minimum pour une photo -ScannerImageSplit.selectText.9=Taille de la bordure : -ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut : 1). - -navbar.settings=Paramètres -settings.title=Paramètres -settings.update=Mise à jour disponible -settings.appVersion=Version de l'application : -settings.downloadOption.title=Choisissez l'option de téléchargement (pour les téléchargements sans fichier unique) : -settings.downloadOption.1=Ouvrir dans la même fenêtre -settings.downloadOption.2=Ouvrir dans une nouvelle fenêtre -settings.downloadOption.3=Fichier téléchargé -settings.zipThreshold=Zip les fichiers lorsque le nombre de fichiers téléchargés dépasse - - -#OCR -ocr.title=OCR / Nettoyage de numérisation -ocr.header=Nettoyage des scans / OCR (reconnaissance optique des caractères) -ocr.selectText.1=Sélectionnez les langues à détecter dans le PDF (celles répertoriées sont celles actuellement détectées) : -ocr.selectText.2=Produire un fichier texte contenant du texte OCR avec le PDF OCR -ocr.selectText.3=Les pages correctes ont été numérisées à un angle oblique en les remettant en place -ocr.selectText.4=Nettoyer la page pour qu'il soit moins probable que l'OCR trouve du texte dans le bruit de fond. (Pas de changement de sortie) -ocr.selectText.5=Nettoyer la page afin qu'il soit moins probable que l'OCR trouve du texte dans le bruit de fond, maintient le nettoyage dans la sortie. -ocr.selectText.6=Ignore les pages contenant du texte interactif, seulement les pages OCR qui sont des images -ocr.selectText.7=Forcer l'OCR, OCR chaque page supprimera tous les éléments de texte d'origine -ocr.selectText.8=Normal (Erreur si le PDF contient du texte) -ocr.selectText.9=Paramètres supplémentaires -ocr.selectText.10=Mode ROC -ocr.selectText.11=Supprimer les images après l'OCR (Supprime TOUTES les images, utile uniquement si elles font partie de l'étape de conversion) -ocr.selectText.12=Type de rendu (avancé) -ocr.help=Veuillez lire cette documentation pour savoir comment l'utiliser pour d'autres langues et/ou une utilisation non dans docker -ocr.credit=Ce service utilise OCRmyPDF et Tesseract pour l'OCR. -ocr.submit=Traiter PDF avec OCR - - -extractImages.title=Extraire les images -extractImages.header=Extraire les images -extractImages.selectText=Sélectionner le format d'image pour convertir les images extraites en -extractImages.submit=Extraire - -#File to PDF -fileToPDF.title=Fichier au format PDF -fileToPDF.header=Convertir n'importe quel fichier au format PDF -fileToPDF.credit=Ce service utilise LibreOffice et Unoconv pour la conversion de fichiers. -fileToPDF.supportedFileTypes=Les types de fichiers pris en charge doivent inclure les éléments ci-dessous, mais pour une liste complète et mise à jour des formats pris en charge, veuillez vous référer à la documentation de LibreOffice. -fileToPDF.submit=Convertir en PDF - - - -#Add image -addImage.title=Ajouter une image -addImage.header=Ajouter une image au PDF -addImage.everyPage=Chaque page? -addImage.upload=Ajouter une image -addImage.submit=Ajouter une image - -#compress -compress.title=Compresser -compress.header=Compresser le PDF -compress.credit=Ce service utilise Ghostscript pour PDF Compress/Optimisation. -compress.selectText.1=Mode manuel - De 1 à 4 -compress.selectText.2=Niveau d'optimisation : -compress.selectText.3=4 (Terrible pour les images de texte) -compress.selectText.4=Mode automatique - Ajuste automatiquement la qualité pour obtenir le PDF à la taille exacte -compress.selectText.5=Taille PDF attendue (par exemple, 25 Mo, 10,8 Mo, 25 Ko) -compress.submit=Compresser - - -#merge -merge.title=Fusionner -merge.header=Fusionner plusieurs PDF (2+) -merge.submit=Fusionner - -#pdfOrganiser -pdfOrganiser.title=Organisateur de pages -pdfOrganiser.header=Organisateur de pages PDF -pdfOrganiser.submit=Réorganiser les pages - -#Outil Multi-fonction -multiTool.title=Multi-outil PDF -multiTool.header=Outil multiple PDF - - -#pageRemover -pageRemover.title=Suppresseur de pages -pageRemover.header=Outil de suppression de pages PDF -pageRemover.pagesToDelete=Pages à supprimer (Entrez une liste de numéros de page séparés par des virgules): -pageRemover.submit=Supprimer des pages - -#rotate -rotate.title=Faire pivoter le PDF -rotate.header=Faire pivoter le PDF -rotate.selectAngle=Sélectionner l'angle de rotation (en multiples de 90 degrés) : -rotate.submit=Rotation - -#Split PDF -split.title=Fractionner le PDF -split.header=Diviser le PDF -split.desc.1=Les numéros que vous sélectionnez sont le numéro de page sur lequel vous souhaitez faire un fractionnement. -split.desc.2=Ainsi, la sélection de 1,3,7-8 diviserait un document de 10 pages en 6 PDF distincts avec : -split.desc.3=Document #1 : Page 1 -split.desc.4=Document #2 : Pages 2 et 3 -split.desc.5=Document #3 : Pages 4, 5 et 6 -split.desc.6=Document #4 : Page 7 -split.desc.7=Document #5 : Page 8 -split.desc.8=Document #6 : Pages 9 et 10 -split.splitPages=Entrez les pages sur lesquelles fractionner : -split.submit=Diviser - -#imageToPDF -imageToPDF.title=Image au format PDF -imageToPDF.header=Image au format PDF -imageToPDF.submit=Convertir -imageToPDF.selectText.1=Étirer pour s'adapter -imageToPDF.selectText.2=Rotation automatique du PDF -imageToPDF.selectText.3=Logique de fichiers multiples (activé uniquement si vous travaillez avec plusieurs images) -imageToPDF.selectText.4=Fusionner en un seul PDF -imageToPDF.selectText.5=Convertir en PDFs distincts - -#PDF to Image -pdfToImage.title=PDF vers image -pdfToImage.header=PDF vers image -pdfToImage.selectText=Format d'image -pdfToImage.singleOrMultiple=Type de résultat d'image -pdfToImage.single=Une seule grande image -pdfToImage.multi=Plusieurs images -pdfToImage.colorType=Type de couleur -pdfToImage.color=Couleur -pdfToImage.grey=Niveaux de gris -pdfToImage.blackwhite=Noir et Blanc (Peut perdre des données !) -pdfToImage.submit=Convertir - -#addPassword -addPassword.title=Ajouter un mot de passe -addPassword.header=Ajouter un mot de passe (chiffrer) -addPassword.selectText.1=Sélectionnez le PDF à chiffrer -addPassword.selectText.2=Mot de passe -addPassword.selectText.3=Longueur de la clé de chiffrement -addPassword.selectText.4=Les valeurs supérieures sont plus fortes, mais les valeurs inférieures ont une meilleure compatibilité. -addPassword.selectText.5=Autorisations à définir -addPassword.selectText.6=Empêcher l'assemblage du document -addPassword.selectText.7=Empêcher l'extraction de contenu -addPassword.selectText.8=Empêcher l'extraction pour l'accessibilité -addPassword.selectText.9=Empêcher de remplir le formulaire -addPassword.selectText.10=Empêcher la modification -addPassword.selectText.11=Empêcher la modification des annotations -addPassword.selectText.12=Empêcher l'impression -addPassword.selectText.13=Empêcher l'impression de différents formats -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Crypter - -#watermark -watermark.title=Ajouter un filigrane -watermark.header=Ajouter un filigrane -watermark.selectText.1=Sélectionnez le PDF auquel ajouter un filigrane : -watermark.selectText.2=Texte du filigrane : -watermark.selectText.3=Taille de la police : -watermark.selectText.4=Rotation (0-360) : -watermark.selectText.5=widthSpacer (Espace entre chaque filigrane horizontalement) : -watermark.selectText.6=heightSpacer (Espace entre chaque filigrane verticalement) : -watermark.selectText.7=Opacité (0 % - 100 %) : -watermark.submit=Ajouter un filigrane - -#remove-watermark -remove-watermark.title=Supprimer le filigrane -remove-watermark.header=Supprimer le filigrane -remove-watermark.selectText.1=Sélectionnez le PDF pour supprimer le filigrane : -remove-watermark.selectText.2=Texte du filigrane : -remove-watermark.submit=Supprimer le filigrane - -#Change Permissions -permissions.title=Modifier les autorisations -permissions.header=Modifier les autorisations -permissions.warning=Attention pour que ces permissions soient immuables il est recommandé de les définir avec un mot de passe via la page add-password. -permissions.selectText.1=Sélectionnez le PDF pour modifier les autorisations : -permissions.selectText.2=Autorisations à définir : -permissions.selectText.3=Employer l'assemblage du document -permissions.selectText.4=Employer l'extraction de contenu -permissions.selectText.5=Employer l'extraction pour l'accessibilité -permissions.selectText.6=Employer pour remplir le formulaire -permissions.selectText.7=Employer pour la modification -permissions.selectText.8=Employer pour la modification des annotations -permissions.selectText.9=Employer pour l'impression -permissions.selectText.10=Empêcher l'impression de différents formats -permissions.submit=Modificateur - -#supprimer le mot de passe -removePassword.title=Supprimer le mot de passe -removePassword.header=Supprimer le mot de passe (Déchiffrer) -removePassword.selectText.1=Sélectionnez le PDF à déchiffrer -removePassword.selectText.2=Mot de passe -removePassword.submit=Supprimer - -#Change Metadata -changeMetadata.title=Modifier les métadonnées -changeMetadata.header=Modifier les métadonnées -changeMetadata.selectText.1=Veuillez modifier les variables que vous souhaitez modifier. -changeMetadata.selectText.2=Supprimer toutes les métadonnées. -changeMetadata.selectText.3=Afficher les métadonnées personnalisées : -changeMetadata.author=Auteur : -changeMetadata.creationDate=Date de création (aaaa/MM/jj HH:mm:ss) : -changeMetadata.creator=Créateur : -changeMetadata.keywords=Mots clés : -changeMetadata.modDate=Date de modification (aaaa/MM/jj HH:mm:ss) : -changeMetadata.producer=Producteur : -changeMetadata.subject=Objet : -changeMetadata.title=Titre : -changeMetadata.trapped=Piégé : -changeMetadata.selectText.4=Autres métadonnées : -changeMetadata.selectText.5=Ajouter une entrée de métadonnées personnalisées -changeMetadata.submit=Modifier - -#XLS to PDF -xlsToPdf.title=Excel vers PDF -xlsToPdf.header=Excel en PDF -xlsToPdf.selectText.1=Sélectionnez une feuille Excel XLS ou XLSX à convertir. -xlsToPdf.convert=Convertir - -pdfToPDFA.title=PDF vers PDF/A -pdfToPDFA.header=PDF vers PDF/A -pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion PDF/A -pdfToPDFA.submit=Convertir - - - - -PDFToWord.title=PDF vers Word -PDFToWord.header=PDF vers Word -PDFToWord.selectText.1=Format du fichier de sortie -PDFToWord.credit=Ce service utilise LibreOffice pour la conversion de fichiers. -PDFToWord.submit=Convertir - -PDFToPresentation.title=PDF vers présentation -PDFToPresentation.header=PDF vers présentation -PDFToPresentation.selectText.1=Format du fichier de sortie -PDFToPresentation.credit=Ce service utilise LibreOffice pour la conversion de fichiers. -PDFToPresentation.submit=Convertir - - -PDFToText.title=PDF vers Texte/RTF -PDFToText.header=PDF vers texte/RTF -PDFToText.selectText.1=Format du fichier de sortie -PDFToText.credit=Ce service utilise LibreOffice pour la conversion de fichiers. -PDFToText.submit=Convertir - - -PDFToHTML.title=PDF vers HTML -PDFToHTML.header=PDF vers HTML -PDFToHTML.credit=Ce service utilise LibreOffice pour la conversion de fichiers. -PDFToHTML.submit=Convertir - -PDFToXML.title=PDF vers XML -PDFToXML.header=PDF vers XML -PDFToXML.credit=Ce service utilise LibreOffice pour la conversion de fichiers. -PDFToXML.submit=Convertir - - +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Choisir PDF +multiPdfPrompt=Choisir des PDF (2+) +multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin +imgPrompt=Choisir une image +genericSubmit=Soumettre +processTimeWarning=Attention�: ce processus peut prendre jusqu'à une minute en fonction de la taille du fichier +pageOrderPrompt=Ordre des pages (Entrez une liste de numéros de page séparés par des virgules): +goToPage=Aller +true=Vrai +false=Faux +unknown=Inconnu +save=Enregistrer +close=Fermer +filesSelected=fichiers sélectionnés +noFavourites=Aucun favori ajouté +bored=Ennuyé d'attendre ? +alphabet=Alphabet +downloadPdf=Télécharger le PDF +text=Texte +font=Police +########################## +### TODO: Translate ### +########################## +selectFillter=-- Select -- +pageNum=numéro de page +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Convertir +navbar.security=Sécurité +navbar.other=Autre +navbar.darkmode=Mode sombre +navbar.pageOps=Opérations de page +navbar.settings=Paramètres + +############# +# SETTINGS # +############# +settings.title=Paramètres +settings.update=Mise à jour disponible +settings.appVersion=Version de l'application : +settings.downloadOption.title=Choisissez l'option de téléchargement (pour les téléchargements sans fichier unique) : +settings.downloadOption.1=Ouvrir dans la même fenêtre +settings.downloadOption.2=Ouvrir dans une nouvelle fenêtre +settings.downloadOption.3=Fichier téléchargé +settings.zipThreshold=Zip les fichiers lorsque le nombre de fichiers téléchargés dépasse + +############# +# HOME-PAGE # +############# +home.desc=Votre guichet unique hébergé localement pour tous vos besoins PDF. + + +home.multiTool.title=Multi-outil PDF +home.multiTool.desc=Fusionner, faire pivoter, réorganiser et supprimer des pages +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Fusionnez +home.merge.desc=Fusionnez facilement plusieurs PDF en un seul. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Fractionner +home.split.desc=Diviser les PDF en plusieurs documents + +home.rotate.title=Tourner +home.rotate.desc=Faites pivoter facilement vos PDF. + +home.imageToPdf.title=Image au format PDF +home.imageToPdf.desc=Convertir une image (PNG, JPEG, GIF) en PDF. + +home.pdfToImage.title=PDF vers image +home.pdfToImage.desc=Convertir un PDF en image. (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Organisateur +home.pdfOrganiser.desc=Supprimer/Réorganiser les pages dans n'importe quel ordre + +home.addImage.title=Ajouter une image au PDF +home.addImage.desc=Ajoute une image à un emplacement défini sur le PDF (Travail en cours) + +home.watermark.title=Ajouter un filigrane +home.watermark.desc=Ajoutez un filigrane personnalisé à votre document PDF. + +home.permissions.title=Modifier les autorisations +home.permissions.desc=Modifier les permissions de votre document PDF + +home.removePages.title=Supprimer +home.removePages.desc=Supprimez les pages inutiles de votre document PDF. + +home.addPassword.title=Ajouter un mot de passe +home.addPassword.desc=Cryptez votre document PDF avec un mot de passe. + +home.removePassword.title=Supprimer le mot de passe +home.removePassword.desc=Supprimez la protection par mot de passe de votre document PDF. + +home.compressPdfs.title=Compresser +home.compressPdfs.desc=Compressez les PDF pour réduire leur taille de fichier. + +home.changeMetadata.title=Modifier les métadonnées +home.changeMetadata.desc=Modifier/Supprimer/Ajouter des métadonnées d'un document PDF + +home.fileToPDF.title=Convertir un fichier en PDF +home.fileToPDF.desc=Convertissez presque n\u2019importe quel fichier en PDF (DOCX, PNG, XLS, PPT, TXT et plus) + +home.ocr.title=Exécuter l'OCR sur les scans PDF et/ou de nettoyage +home.ocr.desc=Le nettoyage analyse et détecte le texte des images dans un PDF et le rajoute en tant que texte. + +home.extractImages.title=Extraire les images +home.extractImages.desc=Extrait toutes les images d\u2019un PDF et les enregistre au format zip + +home.pdfToPDFA.title=Convertir PDF en PDF/A +home.pdfToPDFA.desc=Convertir un PDF en PDF/A pour un stockage à long terme + +home.PDFToWord.title=PDF vers Word +home.PDFToWord.desc=Convertir les formats PDF en Word (DOC, DOCX et ODT) + +home.PDFToPresentation.title=PDF vers présentation +home.PDFToPresentation.desc=Convertir des PDF en formats de présentation (PPT, PPTX et ODP) + +home.PDFToText.title=PDF vers texte/RTF +home.PDFToText.desc=Convertir un PDF au format Texte ou RTF + +home.PDFToHTML.title=PDF vers HTML +home.PDFToHTML.desc=Convertir le PDF au format HTML + +home.PDFToXML.title=PDF vers XML +home.PDFToXML.desc=Convertir le PDF au format XML + +home.ScannerImageSplit.title=Détecter/diviser les photos numérisées +home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF + +home.sign.title=Signe +home.sign.desc=Ajoute une signature au PDF par dessin, texte ou image + +home.flatten.title=Aplatir +home.flatten.desc=Supprimer tous les éléments et formulaires interactifs d'un PDF + +home.repair.title=Réparer +home.repair.desc=Essaye de réparer un PDF corrompu/cassé + +home.removeBlanks.title=Supprimer les pages vierges +home.removeBlanks.desc=Détecte et supprime les pages vierges d'un document + +home.compare.title=Comparer +home.compare.desc=Compare et affiche les différences entre 2 documents PDF + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Signature du certificat +certSign.header=Signer un PDF avec votre certificat (Travail en cours) +certSign.selectPDF=Sélectionnez un fichier PDF à signer : +certSign.selectKey=Sélectionnez votre fichier de clé privée (format PKCS#8, peut être .pem ou .der) : +certSign.selectCert=Sélectionnez votre fichier de certificat (format X.509, peut être .pem ou .der) : +certSign.selectP12=Sélectionnez votre fichier de magasin de clés PKCS#12 (.p12 ou .pfx) (facultatif, s'il est fourni, il doit contenir votre clé privée et votre certificat) : +certSign.certType=Type de certificat +certSign.password=Entrez votre mot de passe de keystore ou de clé privée (le cas échéant) : +certSign.showSig=Afficher la signature +certSign.reason=Raison +certSign.location=Emplacement +certSign.name=Nom +certSign.submit=Signer le PDF + + +#removeBlanks +removeBlanks.title=Supprimer les blancs +removeBlanks.header=Supprimer les pages vierges +removeBlanks.threshold=Seuil : +removeBlanks.thresholdDesc=Seuil pour déterminer à quel point un pixel blanc doit être blanc +removeBlanks.whitePercent=Pourcentage blanc (%) : +removeBlanks.whitePercentDesc=Pourcentage de page qui doit être blanche pour être supprimée +removeBlanks.submit=Supprimer les blancs + + +#compare +compare.title=Comparer +compare.header=Comparer des PDF +compare.document.1=Document 1 +compare.document.2=Document 2 +compare.submit=Comparer + + +#sign +sign.title=Signe +sign.header=Signer des PDF +sign.upload=Télécharger l'image +sign.draw=Dessiner une signature +sign.text=Saisie de texte +sign.clear=Effacer +sign.add=Ajouter + + +#repair +repair.title=Réparer +repair.header=Réparer les PDF +repair.submit=Réparer + + +#flatten +flatten.title=Aplatir +flatten.header=Aplatir les PDF +flatten.submit=Aplatir + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Seuil d'angle : +ScannerImageSplit.selectText.2=Définit l'angle absolu minimum requis pour la rotation de l'image (par défaut : 10). +ScannerImageSplit.selectText.3=Tolérance : +ScannerImageSplit.selectText.4=Détermine la plage de variation de couleur autour de la couleur d'arrière-plan estimée (par défaut : 30). +ScannerImageSplit.selectText.5=Zone minimale : +ScannerImageSplit.selectText.6=Définit le seuil de zone minimum pour une photo (par défaut : 10000). +ScannerImageSplit.selectText.7=Zone de contour minimale : +ScannerImageSplit.selectText.8=Définit le seuil de zone de contour minimum pour une photo +ScannerImageSplit.selectText.9=Taille de la bordure : +ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut : 1). + + +#OCR +ocr.title=OCR / Nettoyage de numérisation +ocr.header=Nettoyage des scans / OCR (reconnaissance optique des caractères) +ocr.selectText.1=Sélectionnez les langues à détecter dans le PDF (celles répertoriées sont celles actuellement détectées) : +ocr.selectText.2=Produire un fichier texte contenant du texte OCR avec le PDF OCR +ocr.selectText.3=Les pages correctes ont été numérisées à un angle oblique en les remettant en place +ocr.selectText.4=Nettoyer la page pour qu'il soit moins probable que l'OCR trouve du texte dans le bruit de fond. (Pas de changement de sortie) +ocr.selectText.5=Nettoyer la page afin qu'il soit moins probable que l'OCR trouve du texte dans le bruit de fond, maintient le nettoyage dans la sortie. +ocr.selectText.6=Ignore les pages contenant du texte interactif, seulement les pages OCR qui sont des images +ocr.selectText.7=Forcer l'OCR, OCR chaque page supprimera tous les éléments de texte d'origine +ocr.selectText.8=Normal (Erreur si le PDF contient du texte) +ocr.selectText.9=Paramètres supplémentaires +ocr.selectText.10=Mode ROC +ocr.selectText.11=Supprimer les images après l'OCR (Supprime TOUTES les images, utile uniquement si elles font partie de l'étape de conversion) +ocr.selectText.12=Type de rendu (avancé) +ocr.help=Veuillez lire cette documentation pour savoir comment l'utiliser pour d'autres langues et/ou une utilisation non dans docker +ocr.credit=Ce service utilise OCRmyPDF et Tesseract pour l'OCR. +ocr.submit=Traiter PDF avec OCR + + +#extractImages +extractImages.title=Extraire les images +extractImages.header=Extraire les images +extractImages.selectText=Sélectionner le format d'image pour convertir les images extraites en +extractImages.submit=Extraire + + +#File to PDF +fileToPDF.title=Fichier au format PDF +fileToPDF.header=Convertir n'importe quel fichier au format PDF +fileToPDF.credit=Ce service utilise LibreOffice et Unoconv pour la conversion de fichiers. +fileToPDF.supportedFileTypes=Les types de fichiers pris en charge doivent inclure les éléments ci-dessous, mais pour une liste complète et mise à jour des formats pris en charge, veuillez vous référer à la documentation de LibreOffice. +fileToPDF.submit=Convertir en PDF + + +#compress +compress.title=Compresser +compress.header=Compresser le PDF +compress.credit=Ce service utilise Ghostscript pour PDF Compress/Optimisation. +compress.selectText.1=Mode manuel - De 1 à 4 +compress.selectText.2=Niveau d'optimisation : +compress.selectText.3=4 (Terrible pour les images de texte) +compress.selectText.4=Mode automatique - Ajuste automatiquement la qualité pour obtenir le PDF à la taille exacte +compress.selectText.5=Taille PDF attendue (par exemple, 25 Mo, 10,8 Mo, 25 Ko) +compress.submit=Compresser + + +#Add image +addImage.title=Ajouter une image +addImage.header=Ajouter une image au PDF +addImage.everyPage=Chaque page? +addImage.upload=Ajouter une image +addImage.submit=Ajouter une image + + +#merge +merge.title=Fusionner +merge.header=Fusionner plusieurs PDF (2+) +merge.submit=Fusionner + + +#pdfOrganiser +pdfOrganiser.title=Organisateur de pages +pdfOrganiser.header=Organisateur de pages PDF +pdfOrganiser.submit=Réorganiser les pages + + +#multiTool +multiTool.title=Multi-outil PDF +multiTool.header=Outil multiple PDF + + +#pageRemover +pageRemover.title=Suppresseur de pages +pageRemover.header=Outil de suppression de pages PDF +pageRemover.pagesToDelete=Pages à supprimer (Entrez une liste de numéros de page séparés par des virgules): +pageRemover.submit=Supprimer des pages + + +#rotate +rotate.title=Faire pivoter le PDF +rotate.header=Faire pivoter le PDF +rotate.selectAngle=Sélectionner l'angle de rotation (en multiples de 90 degrés) : +rotate.submit=Rotation + + +#merge +split.title=Fractionner le PDF +split.header=Diviser le PDF +split.desc.1=Les numéros que vous sélectionnez sont le numéro de page sur lequel vous souhaitez faire un fractionnement. +split.desc.2=Ainsi, la sélection de 1,3,7-8 diviserait un document de 10 pages en 6 PDF distincts avec : +split.desc.3=Document #1 : Page 1 +split.desc.4=Document #2 : Pages 2 et 3 +split.desc.5=Document #3 : Pages 4, 5 et 6 +split.desc.6=Document #4 : Page 7 +split.desc.7=Document #5 : Page 8 +split.desc.8=Document #6 : Pages 9 et 10 +split.splitPages=Entrez les pages sur lesquelles fractionner : +split.submit=Diviser + + +#merge +imageToPDF.title=Image au format PDF +imageToPDF.header=Image au format PDF +imageToPDF.submit=Convertir +imageToPDF.selectText.1=Étirer pour s'adapter +imageToPDF.selectText.2=Rotation automatique du PDF +imageToPDF.selectText.3=Logique de fichiers multiples (activé uniquement si vous travaillez avec plusieurs images) +imageToPDF.selectText.4=Fusionner en un seul PDF +imageToPDF.selectText.5=Convertir en PDFs distincts + + +#pdfToImage +pdfToImage.title=PDF vers image +pdfToImage.header=PDF vers image +pdfToImage.selectText=Format d'image +pdfToImage.singleOrMultiple=Type de résultat d'image +pdfToImage.single=Une seule grande image +pdfToImage.multi=Plusieurs images +pdfToImage.colorType=Type de couleur +pdfToImage.color=Couleur +pdfToImage.grey=Niveaux de gris +pdfToImage.blackwhite=Noir et Blanc (Peut perdre des données !) +pdfToImage.submit=Convertir + + +#addPassword +addPassword.title=Ajouter un mot de passe +addPassword.header=Ajouter un mot de passe (chiffrer) +addPassword.selectText.1=Sélectionnez le PDF à chiffrer +addPassword.selectText.2=Mot de passe +addPassword.selectText.3=Longueur de la clé de chiffrement +addPassword.selectText.4=Les valeurs supérieures sont plus fortes, mais les valeurs inférieures ont une meilleure compatibilité. +addPassword.selectText.5=Autorisations à définir +addPassword.selectText.6=Empêcher l'assemblage du document +addPassword.selectText.7=Empêcher l'extraction de contenu +addPassword.selectText.8=Empêcher l'extraction pour l'accessibilité +addPassword.selectText.9=Empêcher de remplir le formulaire +addPassword.selectText.10=Empêcher la modification +addPassword.selectText.11=Empêcher la modification des annotations +addPassword.selectText.12=Empêcher l'impression +addPassword.selectText.13=Empêcher l'impression de différents formats +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Crypter + + +#watermark +watermark.title=Ajouter un filigrane +watermark.header=Ajouter un filigrane +watermark.selectText.1=Sélectionnez le PDF auquel ajouter un filigrane : +watermark.selectText.2=Texte du filigrane : +watermark.selectText.3=Taille de la police : +watermark.selectText.4=Rotation (0-360) : +watermark.selectText.5=widthSpacer (Espace entre chaque filigrane horizontalement) : +watermark.selectText.6=heightSpacer (Espace entre chaque filigrane verticalement) : +watermark.selectText.7=Opacité (0 % - 100 %) : +watermark.submit=Ajouter un filigrane + + +#remove-watermark +remove-watermark.title=Supprimer le filigrane +remove-watermark.header=Supprimer le filigrane +remove-watermark.selectText.1=Sélectionnez le PDF pour supprimer le filigrane : +remove-watermark.selectText.2=Texte du filigrane : +remove-watermark.submit=Supprimer le filigrane + + +#Change permissions +permissions.title=Modifier les autorisations +permissions.header=Modifier les autorisations +permissions.warning=Attention pour que ces permissions soient immuables il est recommandé de les définir avec un mot de passe via la page add-password. +permissions.selectText.1=Sélectionnez le PDF pour modifier les autorisations : +permissions.selectText.2=Autorisations à définir : +permissions.selectText.3=Employer l'assemblage du document +permissions.selectText.4=Employer l'extraction de contenu +permissions.selectText.5=Employer l'extraction pour l'accessibilité +permissions.selectText.6=Employer pour remplir le formulaire +permissions.selectText.7=Employer pour la modification +permissions.selectText.8=Employer pour la modification des annotations +permissions.selectText.9=Employer pour l'impression +permissions.selectText.10=Empêcher l'impression de différents formats +permissions.submit=Modificateur + + +#remove password +removePassword.title=Supprimer le mot de passe +removePassword.header=Supprimer le mot de passe (Déchiffrer) +removePassword.selectText.1=Sélectionnez le PDF à déchiffrer +removePassword.selectText.2=Mot de passe +removePassword.submit=Supprimer + + +#changeMetadata +changeMetadata.title=Titre : +changeMetadata.header=Modifier les métadonnées +changeMetadata.selectText.1=Veuillez modifier les variables que vous souhaitez modifier. +changeMetadata.selectText.2=Supprimer toutes les métadonnées. +changeMetadata.selectText.3=Afficher les métadonnées personnalisées : +changeMetadata.author=Auteur : +changeMetadata.creationDate=Date de création (aaaa/MM/jj HH:mm:ss) : +changeMetadata.creator=Créateur : +changeMetadata.keywords=Mots clés : +changeMetadata.modDate=Date de modification (aaaa/MM/jj HH:mm:ss) : +changeMetadata.producer=Producteur : +changeMetadata.subject=Objet : +changeMetadata.title=Titre : +changeMetadata.trapped=Piégé : +changeMetadata.selectText.4=Autres métadonnées : +changeMetadata.selectText.5=Ajouter une entrée de métadonnées personnalisées +changeMetadata.submit=Modifier + + +#xlsToPdf +xlsToPdf.title=Excel vers PDF +xlsToPdf.header=Excel en PDF +xlsToPdf.selectText.1=Sélectionnez une feuille Excel XLS ou XLSX à convertir. +xlsToPdf.convert=Convertir + + +#pdfToPDFA +pdfToPDFA.title=PDF vers PDF/A +pdfToPDFA.header=PDF vers PDF/A +pdfToPDFA.credit=Ce service utilise OCRmyPDF pour la conversion PDF/A +pdfToPDFA.submit=Convertir + + +#PDFToWord +PDFToWord.title=PDF vers Word +PDFToWord.header=PDF vers Word +PDFToWord.selectText.1=Format du fichier de sortie +PDFToWord.credit=Ce service utilise LibreOffice pour la conversion de fichiers. +PDFToWord.submit=Convertir + + +#PDFToPresentation +PDFToPresentation.title=PDF vers présentation +PDFToPresentation.header=PDF vers présentation +PDFToPresentation.selectText.1=Format du fichier de sortie +PDFToPresentation.credit=Ce service utilise LibreOffice pour la conversion de fichiers. +PDFToPresentation.submit=Convertir + + +#PDFToText +PDFToText.title=PDF vers Texte/RTF +PDFToText.header=PDF vers texte/RTF +PDFToText.selectText.1=Format du fichier de sortie +PDFToText.credit=Ce service utilise LibreOffice pour la conversion de fichiers. +PDFToText.submit=Convertir + + +#PDFToHTML +PDFToHTML.title=PDF vers HTML +PDFToHTML.header=PDF vers HTML +PDFToHTML.credit=Ce service utilise LibreOffice pour la conversion de fichiers. +PDFToHTML.submit=Convertir + + +#PDFToXML +PDFToXML.title=PDF vers XML +PDFToXML.header=PDF vers XML +PDFToXML.credit=Ce service utilise LibreOffice pour la conversion de fichiers. +PDFToXML.submit=Convertir diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 74098132..c6bc9eb6 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -1,472 +1,614 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr = left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Scegli PDF -multiPdfPrompt=Scegli 2 o più PDF -multiPdfDropPrompt=Scegli (o trascina e rilascia) uno o più PDF -imgPrompt=Scegli immagine/i -genericSubmit=Invia -processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file -pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola): -goToPage=Vai -true=Vero -false=Falso -unknown=Sconosciuto -save=Salva -close=Chiudi -filesSelected=file selezionati -noFavourites=Nessun preferito -bored=Stanco di aspettare? -alphabet=Alfabeto -############# -# HOME-PAGE # -############# -home.desc=La tua pagina self-hostata per gestire qualsiasi PDF. - - -navbar.convert=Converti -navbar.security=Sicurezza -navbar.other=Altro -navbar.darkmode=Modalità Scura -navbar.pageOps=Modifica pagine - -home.multiTool.title=Multifunzione PDF -home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine - -home.merge.title=Unisci -home.merge.desc=Unisci facilmente più PDF in uno. - -home.split.title=Dividi -home.split.desc=Dividi un singolo PDF in più documenti. - -home.rotate.title=Ruota -home.rotate.desc=Ruota un PDF. - -home.imageToPdf.title=Da immagine a PDF -home.imageToPdf.desc=Converti un'immagine (PNG, JPEG, GIF) in PDF. - -home.pdfToImage.title=Da PDF a immagine -home.pdfToImage.desc=Converti un PDF in un'immagine. (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Organizza -home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine. - -home.addImage.title=Aggiungi Immagine -home.addImage.desc=Aggiungi un'immagine in un punto specifico del PDF (Work in progress) - -home.watermark.title=Aggiungi Filigrana -home.watermark.desc=Aggiungi una filigrana al tuo PDF. - -home.remove-watermark.title=Rimuovi Filigrana -home.remove-watermark.desc=Rimuovi la filigrana dal tuo PDF. - -home.permissions.title=Cambia Permessi -home.permissions.desc=Cambia i permessi del tuo PDF. - -home.removePages.title=Rimuovi -home.removePages.desc=Elimina alcune pagine dal PDF. - -home.addPassword.title=Aggiungi Password -home.addPassword.desc=Crittografa il tuo PDF con una password. - -home.removePassword.title=Rimuovi Password -home.removePassword.desc=Rimuovi la password dal tuo PDF. - -home.compressPdfs.title=Comprimi -home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni. - -home.changeMetadata.title=Modifica Proprietà -home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento 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.ocr.title=OCR / Pulisci scansioni -home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro. - -home.extractImages.title=Estrai immagini -home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip. - -home.pdfToPDFA.title=Converti in PDF/A -home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine. - -home.PDFToWord.title=Da PDF a Word -home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT) - -home.PDFToPresentation.title=Da PDF a presentazioni -home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP) - -home.PDFToText.title=Da PDF a testo/RTF -home.PDFToText.desc=Converti un PDF in testo o RTF. - -home.PDFToHTML.title=Da PDF ad HTML -home.PDFToHTML.desc=Converti un PDF in HTML. - -home.PDFToXML.title=Da PDF a XML -home.PDFToXML.desc=Converti un PDF in XML. - -home.ScannerImageSplit.title=Trova/Dividi foto scansionate -home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF. - -home.sign.title=Firma -home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine. - -home.flatten.title=Appiattisci -home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF. - -home.repair.title=Ripara -home.repair.desc=Prova a riparare un PDF corrotto. - -home.removeBlanks.title=Rimuovi pagine vuote -home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF. - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.compare.title=Compara -home.compare.desc=Vedi e compara le differenze tra due PDF. - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Scarica PDF -text=Testo -font=Font -selectFillter=-- Seleziona -- -pageNum=Numero pagina - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Firma del certificato -certSign.header=Firma un PDF con il tuo certificato (Lavoro in corso) -certSign.selectPDF=Seleziona un file PDF per la firma: -certSign.selectKey=Seleziona il file della tua chiave privata (formato PKCS#8, potrebbe essere .pem o .der): -certSign.selectCert=Seleziona il tuo file di certificato (formato X.509, potrebbe essere .pem o .der): -certSign.selectP12=Selezionare il file keystore PKCS#12 (.p12 o .pfx) (facoltativo, se fornito, dovrebbe contenere la chiave privata e il certificato): -certSign.certType=Tipo di certificato -certSign.password=Inserisci la tua password dell'archivio chiavi o della chiave privata (se presente): -certSign.showSig=Mostra firma -certSign.reason=Motivo -certSign.location=Posizione -certSign.name=Nome -certSign.submit=Firma PDF - -removeBlanks.title=Rimuovi spazi vuoti -removeBlanks.header=Rimuovi pagine vuote -removeBlanks.threshold=Soglia: -removeBlanks.thresholdDesc=Soglia che determina un pixel 'bianco' -removeBlanks.whitePercent=Percentuale di bianco (%): -removeBlanks.whitePercentDesc=Percentuale della pagina che deve essere bianca per venire rimossa -removeBlanks.submit=Rimuovi - -compare.title=Compara -compare.header=Compara PDF -compare.document.1=Documento 1 -compare.document.2=Documento 2 -compare.submit=Compara - -sign.title=Firma -sign.header=Firma PDF -sign.upload=Carica immagine -sign.draw=Disegna Firma -sign.text=Testo -sign.clear=Cancella -sign.add=Aggiungi - -repair.title=Ripara -repair.header=Ripara PDF -repair.submit=Ripara - -flatten.title=Appiattisci -flatten.header=Appiattisci PDF -flatten.submit=Appiattisci - -ScannerImageSplit.selectText.1=Soglia angolo: -ScannerImageSplit.selectText.2=Imposta il minimo angolo richiesto perché l'immagine venga ruotata (default: 10). -ScannerImageSplit.selectText.3=Tolleranza: -ScannerImageSplit.selectText.4=Imposta lo spettro di colori attorno al colore di sfondo stimato (default: 30). -ScannerImageSplit.selectText.5=Area minima: -ScannerImageSplit.selectText.6=Imposta l'area minima di una foto (default: 10000). -ScannerImageSplit.selectText.7=Area di contorno minima: -ScannerImageSplit.selectText.8=Imposta l'area minima del contorno di una foto -ScannerImageSplit.selectText.9=Spessore bordo: -ScannerImageSplit.selectText.10=Imposta lo spessore del bordo aggiunto o rimosso per prevenire bordi bianchi nel risultato (default: 1). - -navbar.settings=Impostazioni -settings.title=Impostazioni -settings.update=Aggiornamento disponibile -settings.appVersion=Versione App: -settings.downloadOption.title=Scegli opzione di download (Per file singoli non compressi): -settings.downloadOption.1=Apri in questa finestra -settings.downloadOption.2=Apri in una nuova finestra -settings.downloadOption.3=Scarica file -settings.zipThreshold=Comprimi file in .zip quando il numero di download supera - - - - - -#OCR -ocr.title=OCR / Pulisci scansioni -ocr.header=Pulisci scansioni / OCR (riconoscimento testo) -ocr.selectText.1=Scegli lingue da usare per il riconoscimento testo (L'elenco contiene quelle attualmente disponibili): -ocr.selectText.2=Crea file di testo contenente il testo estratto oltre al PDF originale -ocr.selectText.3=Sistema le pagine che sono state scansionate storte ruotandole in posizione corretta. -ocr.selectText.4=Pulisci il foglio in modo da evitare errori nella lettura. (non cambia il risultato) -ocr.selectText.5=Pulisci il foglio in modo da evitare errori nella lettura. (cambia il risultato) -ocr.selectText.6=Ignora pagine che contengono testo interattivo, scansiona solo pagine che contengono immagini -ocr.selectText.7=Forza scansione, scansiona ogni pagina rimuovendo gli elementi originali -ocr.selectText.8=Normale (Darà errore se il PDF contiene testo) -ocr.selectText.9=Impostazioni extra -ocr.selectText.10=Modalità OCR -ocr.selectText.11=Rimuovi immagini dopo la scansione (Rimuove TUTTE le immagini, utile solo come parte del processo di conversione) -ocr.selectText.12=Modalità di rendering (avanzato) -ocr.help=Per favore leggi la documentazione su come usare il programma per altri linguaggi e/o uso non in Docker -ocr.credit=Questo servizio utilizza OCRmyPDF e Tesseract per l'OCR. -ocr.submit=Scansiona testo nel PDF con OCR - - - -extractImages.title=Estrai immagini -extractImages.header=Estrai immagini -extractImages.selectText=Seleziona il formato in cui salvare le immagini estratte -extractImages.submit=Estrai - - -#File to PDF -fileToPDF.title=Converti file in PDF -fileToPDF.header=Converti qualsiasi file in PDF -fileToPDF.credit=Questo servizio utilizza LibreOffice e Unoconv per la conversione dei file. -fileToPDF.supportedFileTypes=I formati file supportati dovrebbero includere quelli sottostanti. Tuttavia, per una lista aggiornata controlla la documentazione di LibreOffice -fileToPDF.submit=Converti in PDF - - -#compress -compress.title=Comprimi -compress.header=Comprimi PDF -compress.credit=Questo servizio utilizza Ghostscript per la compressione/ottimizzazione dei PDF. -compress.selectText.1=Modalità manuale - Da 1 a 4 -compress.selectText.2=Livello di ottimizzazione: -compress.selectText.3=4 (Terribile per le immagini di testo) -compress.selectText.4=Modalità automatica - Regola automaticamente la qualità per ottenere le dimensioni esatte del PDF -compress.selectText.5=Dimensioni PDF previste (ad es. 25 MB, 10,8 MB, 25 KB) -compress.submit=Comprimi - -#Add image -addImage.title=Aggiungi Immagine -addImage.header=Aggiungi un'immagine ad un PDF -addImage.everyPage=Ogni pagina? -addImage.upload=Aggiungi immagine -addImage.submit=Aggiungi immagine - - -#merge -merge.title=Unisci -merge.header=Unisci 2 o più PDF -merge.submit=Unisci - -#pdfOrganiser -pdfOrganiser.title=Organizza pagine -pdfOrganiser.header=Organizza le pagine di un PDF -pdfOrganiser.submit=Riordina pagine - -#multiTool -multiTool.title=Multifunzione PDF -multiTool.header=Multifunzione PDF - - -#pageRemover -pageRemover.title=Rimuovi pagine -pageRemover.header=Rimuovi pagine da un PDF -pageRemover.pagesToDelete=Pagine da eliminare (inserisci una lista di numeri separati da virgola): -pageRemover.submit=Rimuovi pagine - -#rotate -rotate.title=Ruota PDF -rotate.header=Ruota PDF -rotate.selectAngle=Scegli angolo di rotazione (in multipli di 90 gradi): -rotate.submit=Ruota - - - - -#split -split.title=Dividi PDF -split.header=Dividi PDF -split.desc.1=I numeri che scegli sono le pagine a cui desideri dividere il documento -split.desc.2=Per esempio inserendo 1,3,7-8 separeresti un documento di 10 pagine in 6 diversi PDF con: -split.desc.3=Documento #1: Pagina 1 -split.desc.4=Documento #2: Pagine 2 e 3 -split.desc.5=Documento #3: Pagine 4, 5 e 6 -split.desc.6=Documento #4: Pagina 7 -split.desc.7=Documento #5: Pagina 8 -split.desc.8=Documento #6: Pagine 9 e 10 -split.splitPages=Inserisci pagine a cui dividere: -split.submit=Dividi - - -#imageToPDF -imageToPDF.title=Immagine a PDF -imageToPDF.header=Immagine a PDF -imageToPDF.submit=Converti -imageToPDF.selectText.1=Allarga per riempire -imageToPDF.selectText.2=Ruota automaticamente PDF -imageToPDF.selectText.3=Logica multi-file (funziona solo se ci sono più immagini) -imageToPDF.selectText.4=Unisci in un unico PDF -imageToPDF.selectText.5=Converti in PDF separati - -#pdfToImage -pdfToImage.title=PDF a immagine -pdfToImage.header=PDF a immagine -pdfToImage.selectText=Formato immagini -pdfToImage.singleOrMultiple=Tipo di immagine -pdfToImage.single=Unica immagine larga -pdfToImage.multi=Più immagini -pdfToImage.colorType=Tipo di colore -pdfToImage.color=A colori -pdfToImage.grey=Scala di grigi -pdfToImage.blackwhite=Bianco e Nero (potresti perdere dettagli!) -pdfToImage.submit=Converti - -#addPassword -addPassword.title=Aggiungi Password -addPassword.header=Aggiungi password (crittografa) -addPassword.selectText.1=Seleziona PDF da crittografare -addPassword.selectText.2=Password -addPassword.selectText.3=Lunghezza chiave -addPassword.selectText.4=Valori più grandi sono più sicuri, ma valori più piccoli offrono una compatibilità maggiore. -addPassword.selectText.5=Permessi -addPassword.selectText.6=Previeni assemblaggio del documento -addPassword.selectText.7=Previeni estrazione del contenuto -addPassword.selectText.8=Previeni estrazione per accessibilità -addPassword.selectText.9=Previeni compilazione dei moduli -addPassword.selectText.10=Previeni modifiche -addPassword.selectText.11=Previeni annotazioni -addPassword.selectText.12=Previeni stampa -addPassword.selectText.13=Previeni stampa in diversi formati -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Crittografa - -#watermark -watermark.title=Aggiungi Filigrana -watermark.header=Aggiungi filigrana -watermark.selectText.1=Seleziona PDF a cui aggiungere la filigrana: -watermark.selectText.2=Testo: -watermark.selectText.3=Dimensione carattere: -watermark.selectText.4=Rotazione (0-360): -watermark.selectText.5=spazio orizzontale (tra ogni filigrana): -watermark.selectText.6=spazio verticale (tra ogni filigrana): -watermark.selectText.7=Opacità (0% - 100%): -watermark.submit=Aggiungi Filigrana - -#remove-watermark -remove-watermark.title=Rimuovi Filigrana -remove-watermark.header=Rimuovi filigrana -remove-watermark.selectText.1=Seleziona PDF da cui rimuovere la filigrana: -remove-watermark.selectText.2=Testo: -remove-watermark.submit=Rimuovi Filigrana - -#Change permissions -permissions.title=Cambia Permessi -permissions.header=Cambia permessi -permissions.warning=Attenzione: per avere questi permessi non modificabili è raccomandabile impostarli attraverso una password -permissions.selectText.1=Seleziona PDF a cui cambiare permessi -permissions.selectText.2=Permessi da impostare -permissions.selectText.3=Previeni assemblaggio del documento -permissions.selectText.4=Previeni estrazione del contenuto -permissions.selectText.5=Previeni estrazione per accessibilità -permissions.selectText.6=Previeni compilazione dei moduli -permissions.selectText.7=Previeni modifiche -permissions.selectText.8=Previeni annotazioni -permissions.selectText.9=Previeni stampa -permissions.selectText.10=Previeni stampa in diversi formati -permissions.submit=Cambia Permessi - -#remove password -removePassword.title=Rimuovi Password -removePassword.header=Rimuovi password (de-crittografa) -removePassword.selectText.1=Seleziona PDF da decrittare -removePassword.selectText.2=Password -removePassword.submit=Rimuovi Password - -changeMetadata.title=Cambia Proprietà -changeMetadata.header=Cambia Proprietà -changeMetadata.selectText.1=Imposta i dati che vuoi cambiare -changeMetadata.selectText.2=Cancella tutte le proprietà -changeMetadata.selectText.3=Visualizza proprietà custom: -changeMetadata.author=Autore: -changeMetadata.creationDate=Data di creazione (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Creatore: -changeMetadata.keywords=Parole chiave: -changeMetadata.modDate=Data di modifica (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Produttore: -changeMetadata.subject=Oggetto: -changeMetadata.title=Titolo: -changeMetadata.trapped=Trapped: -changeMetadata.selectText.4=Altre proprietà: -changeMetadata.selectText.5=Aggiungi proprietà personalizzata: -changeMetadata.submit=Cambia Proprietà - -xlsToPdf.title=Da Excel a PDF -xlsToPdf.header=Da Excel a PDF -xlsToPdf.selectText.1=Seleziona un foglio XLS o XLSX da convertire -xlsToPdf.convert=Converti - - - - -pdfToPDFA.title=Da PDF a PDF/A -pdfToPDFA.header=Da PDF a PDF/A -pdfToPDFA.credit=Questo servizio utilizza OCRmyPDF per la conversione in PDF/A. -pdfToPDFA.submit=Converti - - - -PDFToWord.title=Da PDF a Word -PDFToWord.header=Da PDF a Word -PDFToWord.selectText.1=Formato file di output -PDFToWord.credit=Questo servizio utilizza LibreOffice per la conversione. -PDFToWord.submit=Converti - -PDFToPresentation.title=Da PDF a presentazione -PDFToPresentation.header=Da PDF a presentazione -PDFToPresentation.selectText.1=Formato file di output -PDFToPresentation.credit=Questo servizio utilizza LibreOffice per la conversione. -PDFToPresentation.submit=Converti - - -PDFToText.title=Da PDF a testo/RTF -PDFToText.header=Da PDF a testo/RTF -PDFToText.selectText.1=Formato file di output -PDFToText.credit=Questo servizio utilizza LibreOffice per la conversione. -PDFToText.submit=Converti - - -PDFToHTML.title=Da PDF a HTML -PDFToHTML.header=Da PDF a HTML -PDFToHTML.credit=Questo servizio utilizza LibreOffice per la conversione. -PDFToHTML.submit=Converti - -PDFToXML.title=Da PDF a XML -PDFToXML.header=Da PDF a XML -PDFToXML.credit=Questo servizio utilizza LibreOffice per la conversione. -PDFToXML.submit=Converti +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Scegli PDF +multiPdfPrompt=Scegli 2 o più PDF +multiPdfDropPrompt=Scegli (o trascina e rilascia) uno o più PDF +imgPrompt=Scegli immagine/i +genericSubmit=Invia +processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file +pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola): +goToPage=Vai +true=Vero +false=Falso +unknown=Sconosciuto +save=Salva +close=Chiudi +filesSelected=file selezionati +noFavourites=Nessun preferito +bored=Stanco di aspettare? +alphabet=Alfabeto +downloadPdf=Scarica PDF +text=Testo +font=Font +selectFillter=-- Seleziona -- +pageNum=Numero pagina +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Converti +navbar.security=Sicurezza +navbar.other=Altro +navbar.darkmode=Modalità Scura +navbar.pageOps=Modifica pagine +navbar.settings=Impostazioni + +############# +# SETTINGS # +############# +settings.title=Impostazioni +settings.update=Aggiornamento disponibile +settings.appVersion=Versione App: +settings.downloadOption.title=Scegli opzione di download (Per file singoli non compressi): +settings.downloadOption.1=Apri in questa finestra +settings.downloadOption.2=Apri in una nuova finestra +settings.downloadOption.3=Scarica file +settings.zipThreshold=Comprimi file in .zip quando il numero di download supera + +############# +# HOME-PAGE # +############# +home.desc=La tua pagina self-hostata per gestire qualsiasi PDF. + + +home.multiTool.title=Multifunzione PDF +home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Unisci +home.merge.desc=Unisci facilmente più PDF in uno. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Dividi +home.split.desc=Dividi un singolo PDF in più documenti. + +home.rotate.title=Ruota +home.rotate.desc=Ruota un PDF. + +home.imageToPdf.title=Da immagine a PDF +home.imageToPdf.desc=Converti un'immagine (PNG, JPEG, GIF) in PDF. + +home.pdfToImage.title=Da PDF a immagine +home.pdfToImage.desc=Converti un PDF in un'immagine. (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Organizza +home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine. + +home.addImage.title=Aggiungi Immagine +home.addImage.desc=Aggiungi un'immagine in un punto specifico del PDF (Work in progress) + +home.watermark.title=Aggiungi Filigrana +home.watermark.desc=Aggiungi una filigrana al tuo PDF. + +home.permissions.title=Cambia Permessi +home.permissions.desc=Cambia i permessi del tuo PDF. + +home.removePages.title=Rimuovi +home.removePages.desc=Elimina alcune pagine dal PDF. + +home.addPassword.title=Aggiungi Password +home.addPassword.desc=Crittografa il tuo PDF con una password. + +home.removePassword.title=Rimuovi Password +home.removePassword.desc=Rimuovi la password dal tuo PDF. + +home.compressPdfs.title=Comprimi +home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni. + +home.changeMetadata.title=Modifica Proprietà +home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento 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.ocr.title=OCR / Pulisci scansioni +home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro. + +home.extractImages.title=Estrai immagini +home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip. + +home.pdfToPDFA.title=Converti in PDF/A +home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine. + +home.PDFToWord.title=Da PDF a Word +home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT) + +home.PDFToPresentation.title=Da PDF a presentazioni +home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP) + +home.PDFToText.title=Da PDF a testo/RTF +home.PDFToText.desc=Converti un PDF in testo o RTF. + +home.PDFToHTML.title=Da PDF ad HTML +home.PDFToHTML.desc=Converti un PDF in HTML. + +home.PDFToXML.title=Da PDF a XML +home.PDFToXML.desc=Converti un PDF in XML. + +home.ScannerImageSplit.title=Trova/Dividi foto scansionate +home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF. + +home.sign.title=Firma +home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine. + +home.flatten.title=Appiattisci +home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF. + +home.repair.title=Ripara +home.repair.desc=Prova a riparare un PDF corrotto. + +home.removeBlanks.title=Rimuovi pagine vuote +home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF. + +home.compare.title=Compara +home.compare.desc=Vedi e compara le differenze tra due PDF. + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Firma del certificato +certSign.header=Firma un PDF con il tuo certificato (Lavoro in corso) +certSign.selectPDF=Seleziona un file PDF per la firma: +certSign.selectKey=Seleziona il file della tua chiave privata (formato PKCS#8, potrebbe essere .pem o .der): +certSign.selectCert=Seleziona il tuo file di certificato (formato X.509, potrebbe essere .pem o .der): +certSign.selectP12=Selezionare il file keystore PKCS#12 (.p12 o .pfx) (facoltativo, se fornito, dovrebbe contenere la chiave privata e il certificato): +certSign.certType=Tipo di certificato +certSign.password=Inserisci la tua password dell'archivio chiavi o della chiave privata (se presente): +certSign.showSig=Mostra firma +certSign.reason=Motivo +certSign.location=Posizione +certSign.name=Nome +certSign.submit=Firma PDF + + +#removeBlanks +removeBlanks.title=Rimuovi spazi vuoti +removeBlanks.header=Rimuovi pagine vuote +removeBlanks.threshold=Soglia: +removeBlanks.thresholdDesc=Soglia che determina un pixel 'bianco' +removeBlanks.whitePercent=Percentuale di bianco (%): +removeBlanks.whitePercentDesc=Percentuale della pagina che deve essere bianca per venire rimossa +removeBlanks.submit=Rimuovi + + +#compare +compare.title=Compara +compare.header=Compara PDF +compare.document.1=Documento 1 +compare.document.2=Documento 2 +compare.submit=Compara + + +#sign +sign.title=Firma +sign.header=Firma PDF +sign.upload=Carica immagine +sign.draw=Disegna Firma +sign.text=Testo +sign.clear=Cancella +sign.add=Aggiungi + + +#repair +repair.title=Ripara +repair.header=Ripara PDF +repair.submit=Ripara + + +#flatten +flatten.title=Appiattisci +flatten.header=Appiattisci PDF +flatten.submit=Appiattisci + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Soglia angolo: +ScannerImageSplit.selectText.2=Imposta il minimo angolo richiesto perché l'immagine venga ruotata (default: 10). +ScannerImageSplit.selectText.3=Tolleranza: +ScannerImageSplit.selectText.4=Imposta lo spettro di colori attorno al colore di sfondo stimato (default: 30). +ScannerImageSplit.selectText.5=Area minima: +ScannerImageSplit.selectText.6=Imposta l'area minima di una foto (default: 10000). +ScannerImageSplit.selectText.7=Area di contorno minima: +ScannerImageSplit.selectText.8=Imposta l'area minima del contorno di una foto +ScannerImageSplit.selectText.9=Spessore bordo: +ScannerImageSplit.selectText.10=Imposta lo spessore del bordo aggiunto o rimosso per prevenire bordi bianchi nel risultato (default: 1). + + +#OCR +ocr.title=OCR / Pulisci scansioni +ocr.header=Pulisci scansioni / OCR (riconoscimento testo) +ocr.selectText.1=Scegli lingue da usare per il riconoscimento testo (L'elenco contiene quelle attualmente disponibili): +ocr.selectText.2=Crea file di testo contenente il testo estratto oltre al PDF originale +ocr.selectText.3=Sistema le pagine che sono state scansionate storte ruotandole in posizione corretta. +ocr.selectText.4=Pulisci il foglio in modo da evitare errori nella lettura. (non cambia il risultato) +ocr.selectText.5=Pulisci il foglio in modo da evitare errori nella lettura. (cambia il risultato) +ocr.selectText.6=Ignora pagine che contengono testo interattivo, scansiona solo pagine che contengono immagini +ocr.selectText.7=Forza scansione, scansiona ogni pagina rimuovendo gli elementi originali +ocr.selectText.8=Normale (Darà errore se il PDF contiene testo) +ocr.selectText.9=Impostazioni extra +ocr.selectText.10=Modalità OCR +ocr.selectText.11=Rimuovi immagini dopo la scansione (Rimuove TUTTE le immagini, utile solo come parte del processo di conversione) +ocr.selectText.12=Modalità di rendering (avanzato) +ocr.help=Per favore leggi la documentazione su come usare il programma per altri linguaggi e/o uso non in Docker +ocr.credit=Questo servizio utilizza OCRmyPDF e Tesseract per l'OCR. +ocr.submit=Scansiona testo nel PDF con OCR + + +#extractImages +extractImages.title=Estrai immagini +extractImages.header=Estrai immagini +extractImages.selectText=Seleziona il formato in cui salvare le immagini estratte +extractImages.submit=Estrai + + +#File to PDF +fileToPDF.title=Converti file in PDF +fileToPDF.header=Converti qualsiasi file in PDF +fileToPDF.credit=Questo servizio utilizza LibreOffice e Unoconv per la conversione dei file. +fileToPDF.supportedFileTypes=I formati file supportati dovrebbero includere quelli sottostanti. Tuttavia, per una lista aggiornata controlla la documentazione di LibreOffice +fileToPDF.submit=Converti in PDF + + +#compress +compress.title=Comprimi +compress.header=Comprimi PDF +compress.credit=Questo servizio utilizza Ghostscript per la compressione/ottimizzazione dei PDF. +compress.selectText.1=Modalità manuale - Da 1 a 4 +compress.selectText.2=Livello di ottimizzazione: +compress.selectText.3=4 (Terribile per le immagini di testo) +compress.selectText.4=Modalità automatica - Regola automaticamente la qualità per ottenere le dimensioni esatte del PDF +compress.selectText.5=Dimensioni PDF previste (ad es. 25 MB, 10,8 MB, 25 KB) +compress.submit=Comprimi + + +#Add image +addImage.title=Aggiungi Immagine +addImage.header=Aggiungi un'immagine ad un PDF +addImage.everyPage=Ogni pagina? +addImage.upload=Aggiungi immagine +addImage.submit=Aggiungi immagine + + +#merge +merge.title=Unisci +merge.header=Unisci 2 o più PDF +merge.submit=Unisci + + +#pdfOrganiser +pdfOrganiser.title=Organizza pagine +pdfOrganiser.header=Organizza le pagine di un PDF +pdfOrganiser.submit=Riordina pagine + + +#multiTool +multiTool.title=Multifunzione PDF +multiTool.header=Multifunzione PDF + + +#pageRemover +pageRemover.title=Rimuovi pagine +pageRemover.header=Rimuovi pagine da un PDF +pageRemover.pagesToDelete=Pagine da eliminare (inserisci una lista di numeri separati da virgola): +pageRemover.submit=Rimuovi pagine + + +#rotate +rotate.title=Ruota PDF +rotate.header=Ruota PDF +rotate.selectAngle=Scegli angolo di rotazione (in multipli di 90 gradi): +rotate.submit=Ruota + + +#merge +split.title=Dividi PDF +split.header=Dividi PDF +split.desc.1=I numeri che scegli sono le pagine a cui desideri dividere il documento +split.desc.2=Per esempio inserendo 1,3,7-8 separeresti un documento di 10 pagine in 6 diversi PDF con: +split.desc.3=Documento #1: Pagina 1 +split.desc.4=Documento #2: Pagine 2 e 3 +split.desc.5=Documento #3: Pagine 4, 5 e 6 +split.desc.6=Documento #4: Pagina 7 +split.desc.7=Documento #5: Pagina 8 +split.desc.8=Documento #6: Pagine 9 e 10 +split.splitPages=Inserisci pagine a cui dividere: +split.submit=Dividi + + +#merge +imageToPDF.title=Immagine a PDF +imageToPDF.header=Immagine a PDF +imageToPDF.submit=Converti +imageToPDF.selectText.1=Allarga per riempire +imageToPDF.selectText.2=Ruota automaticamente PDF +imageToPDF.selectText.3=Logica multi-file (funziona solo se ci sono più immagini) +imageToPDF.selectText.4=Unisci in un unico PDF +imageToPDF.selectText.5=Converti in PDF separati + + +#pdfToImage +pdfToImage.title=PDF a immagine +pdfToImage.header=PDF a immagine +pdfToImage.selectText=Formato immagini +pdfToImage.singleOrMultiple=Tipo di immagine +pdfToImage.single=Unica immagine larga +pdfToImage.multi=Più immagini +pdfToImage.colorType=Tipo di colore +pdfToImage.color=A colori +pdfToImage.grey=Scala di grigi +pdfToImage.blackwhite=Bianco e Nero (potresti perdere dettagli!) +pdfToImage.submit=Converti + + +#addPassword +addPassword.title=Aggiungi Password +addPassword.header=Aggiungi password (crittografa) +addPassword.selectText.1=Seleziona PDF da crittografare +addPassword.selectText.2=Password +addPassword.selectText.3=Lunghezza chiave +addPassword.selectText.4=Valori più grandi sono più sicuri, ma valori più piccoli offrono una compatibilità maggiore. +addPassword.selectText.5=Permessi +addPassword.selectText.6=Previeni assemblaggio del documento +addPassword.selectText.7=Previeni estrazione del contenuto +addPassword.selectText.8=Previeni estrazione per accessibilità +addPassword.selectText.9=Previeni compilazione dei moduli +addPassword.selectText.10=Previeni modifiche +addPassword.selectText.11=Previeni annotazioni +addPassword.selectText.12=Previeni stampa +addPassword.selectText.13=Previeni stampa in diversi formati +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Crittografa + + +#watermark +watermark.title=Aggiungi Filigrana +watermark.header=Aggiungi filigrana +watermark.selectText.1=Seleziona PDF a cui aggiungere la filigrana: +watermark.selectText.2=Testo: +watermark.selectText.3=Dimensione carattere: +watermark.selectText.4=Rotazione (0-360): +watermark.selectText.5=spazio orizzontale (tra ogni filigrana): +watermark.selectText.6=spazio verticale (tra ogni filigrana): +watermark.selectText.7=Opacità (0% - 100%): +watermark.submit=Aggiungi Filigrana + + +#remove-watermark +remove-watermark.title=Rimuovi Filigrana +remove-watermark.header=Rimuovi filigrana +remove-watermark.selectText.1=Seleziona PDF da cui rimuovere la filigrana: +remove-watermark.selectText.2=Testo: +remove-watermark.submit=Rimuovi Filigrana + + +#Change permissions +permissions.title=Cambia Permessi +permissions.header=Cambia permessi +permissions.warning=Attenzione: per avere questi permessi non modificabili è raccomandabile impostarli attraverso una password +permissions.selectText.1=Seleziona PDF a cui cambiare permessi +permissions.selectText.2=Permessi da impostare +permissions.selectText.3=Previeni assemblaggio del documento +permissions.selectText.4=Previeni estrazione del contenuto +permissions.selectText.5=Previeni estrazione per accessibilità +permissions.selectText.6=Previeni compilazione dei moduli +permissions.selectText.7=Previeni modifiche +permissions.selectText.8=Previeni annotazioni +permissions.selectText.9=Previeni stampa +permissions.selectText.10=Previeni stampa in diversi formati +permissions.submit=Cambia Permessi + + +#remove password +removePassword.title=Rimuovi Password +removePassword.header=Rimuovi password (de-crittografa) +removePassword.selectText.1=Seleziona PDF da decrittare +removePassword.selectText.2=Password +removePassword.submit=Rimuovi Password + + +#changeMetadata +changeMetadata.title=Titolo: +changeMetadata.header=Cambia Proprietà +changeMetadata.selectText.1=Imposta i dati che vuoi cambiare +changeMetadata.selectText.2=Cancella tutte le proprietà +changeMetadata.selectText.3=Visualizza proprietà custom: +changeMetadata.author=Autore: +changeMetadata.creationDate=Data di creazione (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Creatore: +changeMetadata.keywords=Parole chiave: +changeMetadata.modDate=Data di modifica (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Produttore: +changeMetadata.subject=Oggetto: +changeMetadata.title=Titolo: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Altre proprietà: +changeMetadata.selectText.5=Aggiungi proprietà personalizzata: +changeMetadata.submit=Cambia Proprietà + + +#xlsToPdf +xlsToPdf.title=Da Excel a PDF +xlsToPdf.header=Da Excel a PDF +xlsToPdf.selectText.1=Seleziona un foglio XLS o XLSX da convertire +xlsToPdf.convert=Converti + + +#pdfToPDFA +pdfToPDFA.title=Da PDF a PDF/A +pdfToPDFA.header=Da PDF a PDF/A +pdfToPDFA.credit=Questo servizio utilizza OCRmyPDF per la conversione in PDF/A. +pdfToPDFA.submit=Converti + + +#PDFToWord +PDFToWord.title=Da PDF a Word +PDFToWord.header=Da PDF a Word +PDFToWord.selectText.1=Formato file di output +PDFToWord.credit=Questo servizio utilizza LibreOffice per la conversione. +PDFToWord.submit=Converti + + +#PDFToPresentation +PDFToPresentation.title=Da PDF a presentazione +PDFToPresentation.header=Da PDF a presentazione +PDFToPresentation.selectText.1=Formato file di output +PDFToPresentation.credit=Questo servizio utilizza LibreOffice per la conversione. +PDFToPresentation.submit=Converti + + +#PDFToText +PDFToText.title=Da PDF a testo/RTF +PDFToText.header=Da PDF a testo/RTF +PDFToText.selectText.1=Formato file di output +PDFToText.credit=Questo servizio utilizza LibreOffice per la conversione. +PDFToText.submit=Converti + + +#PDFToHTML +PDFToHTML.title=Da PDF a HTML +PDFToHTML.header=Da PDF a HTML +PDFToHTML.credit=Questo servizio utilizza LibreOffice per la conversione. +PDFToHTML.submit=Converti + + +#PDFToXML +PDFToXML.title=Da PDF a XML +PDFToXML.header=Da PDF a XML +PDFToXML.credit=Questo servizio utilizza LibreOffice per la conversione. +PDFToXML.submit=Converti diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 17326a99..53a65c8d 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -1,512 +1,615 @@ -########### -# 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=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다 -pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력): -goToPage=이동 -true=참 -false=거짓 -unknown=알 수 없음 -save=저장 -close=닫기 -filesSelected=개 파일 선택됨 -noFavourites=즐겨찾기 없음 -bored=기다리는 게 지루하신가요? -alphabet=\uC54C\uD30C\uBCB3 -############# -# HOME-PAGE # -############# -home.desc=당신의 PDF에 필요한 모든 것이 있는 로컬 호스팅된 원스톱 숍입니다. - - -navbar.convert=변환 -navbar.security=보안 -navbar.other=기타 -navbar.darkmode=다크 모드 -navbar.pageOps=Page Operations - -home.multiTool.title=PDF 멀티 툴 -home.multiTool.desc=페이지를 병합, 회전, 재배열, 제거하세요. - -home.merge.title=병합 -home.merge.desc=여러 개의 PDF를 쉽게 하나로 합치세요. - -home.split.title=분할 -home.split.desc=PDF를 여러 개의 문서로 분할하세요. - -home.rotate.title=회전 -home.rotate.desc=PDF를 쉽게 회전하세요. - -home.imageToPdf.title=Image to PDF -home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요. - -home.pdfToImage.title=PDF to Image -home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요. - -home.pdfOrganiser.title=정렬 -home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요. - -home.addImage.title=사진 추가 -home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중) - -home.watermark.title=워터마크 추가 -home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요. - -home.remove-watermark.title=워터마크 제거 -home.remove-watermark.desc=PDF 문서에서 워터마크를 제거하세요. - -home.permissions.title=권한 변경 -home.permissions.desc=PDF 문서의 권한을 변경하세요. - -home.removePages.title=제거 -home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요. - -home.addPassword.title=비밀번호 추가 -home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요. - -home.removePassword.title=비밀번호 제거 -home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요. - -home.compressPdfs.title=압축 -home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요. - -home.changeMetadata.title=메타데이터 변경 -home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요. - -home.fileToPDF.title=파일을 PDF로 변환 -home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등) - -home.ocr.title=OCR / 깔끔하게 스캔 -home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다. - -home.extractImages.title=이미지 추출 -home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다. - -home.pdfToPDFA.title=PDF to PDF/A -home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요. - -home.PDFToWord.title=PDF to Word -home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT) - -home.PDFToPresentation.title=PDF to 프리젠테이션 -home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP) - -home.PDFToText.title=PDF to 텍스트/RTF -home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요. - -home.PDFToHTML.title=PDF to HTML -home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요. - -home.PDFToXML.title=PDF to XML -home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요. - -home.ScannerImageSplit.title=스캔한 사진 감지/분할 -home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다. - -home.sign.title=서명 -home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다. - -home.flatten.title=합치기 -home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요. - -home.repair.title=복구 -home.repair.desc=손상된 PDF의 복구를 시도합니다. - -home.removeBlanks.title=빈 페이지 제거 -home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다. - -home.compare.title=비교 -home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다. - -home.certSign.title=인증서로 서명 -home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=PDF 다운로드 -text=텍스트 -font=폰트 -selectFillter=-- 선택 -- -pageNum=페이지 번호 - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=인증서로 서명 -certSign.header=PDF에 당신의 인증서로 서명하세요 (개발 중) -certSign.selectPDF=서명할 PDF를 선택하세요: -certSign.selectKey=개인 키 파일을 선택하세요 (PKCS#8 형식, .pem 또는 .der): -certSign.selectCert=인증서 파일을 선택하세요 (X.509 형식, .pem 또는 .der): -certSign.selectP12=PKCS#12 키 저장소 파일을 선택하세요 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다): -certSign.certType=인증서 유형 -certSign.password=키 저장소 또는 개인 키 비밀번호를 입력하세요 (있는 경우): -certSign.showSig=서명 보기 -certSign.reason=이유 -certSign.location=위치 -certSign.name=이름 - -certSign.submit=PDF 서명 - - - -removeBlanks.title=빈 페이지 제거 -removeBlanks.header=빈 페이지 제거 -removeBlanks.threshold=임계값: -removeBlanks.thresholdDesc=흰색 픽셀이 얼마나 흰색이어야 하는지를 결정하는 임계값 -removeBlanks.whitePercent=흰색 비율 (%): -removeBlanks.whitePercentDesc=제거될 페이지의 흰색 픽셀 비율 -removeBlanks.submit=빈 페이지 제거 - -compare.title=비교 -compare.header=PDF 비교 -compare.document.1=문서 1 -compare.document.2=문서 2 -compare.submit=비교 - -sign.title=서명 -sign.header=PDF에 서명 -sign.upload=이미지 업로드 -sign.draw=서명 그리기 -sign.text=텍스트 입력 -sign.clear=초기화 -sign.add=추가 - -repair.title=복구 -repair.header=PDF 복구 -repair.submit=복구 - -flatten.title=합치기 -flatten.header=PDF 합치기 -flatten.submit=합치기 - -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). - -navbar.settings=설정 -settings.title=설정 -settings.update=업데이트 가능 -settings.appVersion=앱 버전: -settings.downloadOption.title=다운로드 옵션 선택 (zip 파일이 아닌 단일 파일 다운로드 시): -settings.downloadOption.1=현재 창에서 열기 -settings.downloadOption.2=새 창에서 열기 -settings.downloadOption.3=다운로드 -settings.zipThreshold=다운로드한 파일 수가 초과된 경우 파일 압축하기 - - - - - -#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=이 서비스는 OCR에 OCRmyPDF와 Tesseract를 사용합니다. -ocr.submit=OCR로 PDF 처리 - - - -extractImages.title=이미지 추출 -extractImages.header=이미지 추출 -extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택하세요. -extractImages.submit=추출 - - -#File to PDF -fileToPDF.title=File to PDF -fileToPDF.header=모든 파일을 PDF로 변환 -fileToPDF.credit=이 서비스는 파일 변환에 LibreOffice와 Unoconv를 사용합니다. -fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같지만, 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조하세요. -fileToPDF.submit=PDF로 변환 - - -#compress -compress.title=압축 -compress.header=PDF 압축 -compress.credit=이 서비스는 PDF 압축/최적화를 위해 Ghostscript를 사용합니다. -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.submit=병합 - -#pdfOrganiser -pdfOrganiser.title=페이지 정렬 도구 -pdfOrganiser.header=PDF 페이지 정렬 -pdfOrganiser.submit=페이지 재정렬 - -#multiTool -multiTool.title=PDF 멀티 툴 -multiTool.header=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=분할 - - -#imageToPdf -imageToPDF.title=Image to PDF -imageToPDF.header=이미지를 PDF로 변환 -imageToPDF.submit=변환 -imageToPDF.selectText.1=맞춤 크기로 늘리기 -imageToPDF.selectText.2=PDF 자동 회전 -imageToPDF.selectText.3=다중 파일 로직 (여러 이미지로 작업하는 경우에만 활성화됨) -imageToPDF.selectText.4=단일 PDF로 병합 -imageToPDF.selectText.5=별개의 PDF로 변환 - -#pdfToImage -pdfToImage.title=PDF to Image -pdfToImage.header=PDF를 이미지로 변환 -pdfToImage.selectText=이미지 형식 -pdfToImage.singleOrMultiple=이미지 결과 유형 -pdfToImage.single=단일 큰 이미지 -pdfToImage.multi=여러 이미지 -pdfToImage.colorType=색상 유형 -pdfToImage.color=컬러 -pdfToImage.grey=그레이스케일 -pdfToImage.blackwhite=흑백 (데이터 손실 가능성 있음!) -pdfToImage.submit=변환하기 - - -#imageToPdf -imageToPDF.title=이미지를 PDF로 변환 -imageToPDF.header=이미지를 PDF로 변환 -imageToPDF.submit=변환하기 -imageToPDF.selectText.1=맞춤 크기로 늘리기 -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=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself� -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=가로 간격 (각 워터마크 사이의 가로 공간): -watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간): -watermark.selectText.7=투명도 (0% - 100%): -watermark.submit=워터마크 추가 - -#remove-watermark -remove-watermark.title=워터마크 제거 -remove-watermark.header=워터마크 제거 -remove-watermark.selectText.1=워터마크를 제거할 PDF 선택: -remove-watermark.selectText.2=워터마크 텍스트: -remove-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.title=메타데이터 변경 -changeMetadata.header=메타데이터 변경 -changeMetadata.selectText.1=변경하려는 변수를 편집해주세요 -changeMetadata.selectText.2=모든 메타데이터 삭제 -changeMetadata.selectText.3=사용자 정의 메타데이터 표시: -changeMetadata.author=저자: -changeMetadata.creationDate=작성일 (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=제작자: -changeMetadata.keywords=키워드: -changeMetadata.modDate=수정일 (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=생성자: -changeMetadata.subject=주제: -changeMetadata.title=제목: -changeMetadata.trapped=잠긴 상태: -changeMetadata.selectText.4=기타 메타데이터: -changeMetadata.selectText.5=사용자 정의 메타데이터 항목 추가 -changeMetadata.submit=변경 - -xlsToPdf.title=Excel to PDF -xlsToPdf.header=Excel을 PDF로 변환 -xlsToPdf.selectText.1=변환할 XLS 또는 XLSX Excel 시트 선택 -xlsToPdf.convert=변환하기 - - - - -pdfToPDFA.title=PDF To PDF/A -pdfToPDFA.header=PDF를 PDF/A로 변환 -pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF를 사용합니다. -pdfToPDFA.submit=변환 - - - -PDFToWord.title=PDF to Word -PDFToWord.header=PDF를 Word로 변환 -PDFToWord.selectText.1=출력 파일 형식 -PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. -PDFToWord.submit=변환 - -PDFToPresentation.title=PDF to Presentation -PDFToPresentation.header=PDF를 프레젠테이션으로 변환 -PDFToPresentation.selectText.1=출력 파일 형식 -PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. -PDFToPresentation.submit=변환 - - -PDFToText.title=PDF to Text/RTF -PDFToText.header=PDF를 텍스트/RTF로 변환 -PDFToText.selectText.1=출력 파일 형식 -PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. -PDFToText.submit=변환 - - -PDFToHTML.title=PDF to HTML -PDFToHTML.header=PDF를 HTML로 변환 -PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. -PDFToHTML.submit=변환 - -PDFToXML.title=PDF to XML -PDFToXML.header=PDF를 XML로 변환 -PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. -PDFToXML.submit=변환 - - - - - - - - - - - - +########### +# 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=경고: 파일 크기에 따라 1분 정도 소요될 수 있습니다 +pageOrderPrompt=페이지 순서(쉼표로 구분된 페이지 번호 목록 입력): +goToPage=이동 +true=참 +false=거짓 +unknown=알 수 없음 +save=저장 +close=닫기 +filesSelected=개 파일 선택됨 +noFavourites=즐겨찾기 없음 +bored=기다리는 게 지루하신가요? +alphabet=\uC54C\uD30C\uBCB3 +downloadPdf=PDF 다운로드 +text=텍스트 +font=폰트 +selectFillter=-- 선택 -- +pageNum=페이지 번호 +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=변환 +navbar.security=보안 +navbar.other=기타 +navbar.darkmode=다크 모드 +navbar.pageOps=Page Operations +navbar.settings=설정 + +############# +# SETTINGS # +############# +settings.title=설정 +settings.update=업데이트 가능 +settings.appVersion=앱 버전: +settings.downloadOption.title=다운로드 옵션 선택 (zip 파일이 아닌 단일 파일 다운로드 시): +settings.downloadOption.1=현재 창에서 열기 +settings.downloadOption.2=새 창에서 열기 +settings.downloadOption.3=다운로드 +settings.zipThreshold=다운로드한 파일 수가 초과된 경우 파일 압축하기 + +############# +# HOME-PAGE # +############# +home.desc=당신의 PDF에 필요한 모든 것이 있는 로컬 호스팅된 원스톱 숍입니다. + + +home.multiTool.title=PDF 멀티 툴 +home.multiTool.desc=페이지를 병합, 회전, 재배열, 제거하세요. +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=병합 +home.merge.desc=여러 개의 PDF를 쉽게 하나로 합치세요. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=분할 +home.split.desc=PDF를 여러 개의 문서로 분할하세요. + +home.rotate.title=회전 +home.rotate.desc=PDF를 쉽게 회전하세요. + +home.imageToPdf.title=Image to PDF +home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요. + +home.pdfToImage.title=PDF to Image +home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요. + +home.pdfOrganiser.title=정렬 +home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요. + +home.addImage.title=사진 추가 +home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중) + +home.watermark.title=워터마크 추가 +home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요. + +home.permissions.title=권한 변경 +home.permissions.desc=PDF 문서의 권한을 변경하세요. + +home.removePages.title=제거 +home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요. + +home.addPassword.title=비밀번호 추가 +home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요. + +home.removePassword.title=비밀번호 제거 +home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요. + +home.compressPdfs.title=압축 +home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요. + +home.changeMetadata.title=메타데이터 변경 +home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요. + +home.fileToPDF.title=파일을 PDF로 변환 +home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등) + +home.ocr.title=OCR / 깔끔하게 스캔 +home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다. + +home.extractImages.title=이미지 추출 +home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다. + +home.pdfToPDFA.title=PDF to PDF/A +home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요. + +home.PDFToWord.title=PDF to Word +home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT) + +home.PDFToPresentation.title=PDF to 프리젠테이션 +home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP) + +home.PDFToText.title=PDF to 텍스트/RTF +home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요. + +home.PDFToHTML.title=PDF to HTML +home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요. + +home.PDFToXML.title=PDF to XML +home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요. + +home.ScannerImageSplit.title=스캔한 사진 감지/분할 +home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다. + +home.sign.title=서명 +home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다. + +home.flatten.title=합치기 +home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요. + +home.repair.title=복구 +home.repair.desc=손상된 PDF의 복구를 시도합니다. + +home.removeBlanks.title=빈 페이지 제거 +home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다. + +home.compare.title=비교 +home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다. + +home.certSign.title=인증서로 서명 +home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=인증서로 서명 +certSign.header=PDF에 당신의 인증서로 서명하세요 (개발 중) +certSign.selectPDF=서명할 PDF를 선택하세요: +certSign.selectKey=개인 키 파일을 선택하세요 (PKCS#8 형식, .pem 또는 .der): +certSign.selectCert=인증서 파일을 선택하세요 (X.509 형식, .pem 또는 .der): +certSign.selectP12=PKCS#12 키 저장소 파일을 선택하세요 (.p12 or .pfx) (선택 사항, 선택할 경우, 개인 키와 인증서를 포함하고 있어야 합니다): +certSign.certType=인증서 유형 +certSign.password=키 저장소 또는 개인 키 비밀번호를 입력하세요 (있는 경우): +certSign.showSig=서명 보기 +certSign.reason=이유 +certSign.location=위치 +certSign.name=이름 +certSign.submit=PDF 서명 + + +#removeBlanks +removeBlanks.title=빈 페이지 제거 +removeBlanks.header=빈 페이지 제거 +removeBlanks.threshold=임계값: +removeBlanks.thresholdDesc=흰색 픽셀이 얼마나 흰색이어야 하는지를 결정하는 임계값 +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=이 서비스는 OCR에 OCRmyPDF와 Tesseract를 사용합니다. +ocr.submit=OCR로 PDF 처리 + + +#extractImages +extractImages.title=이미지 추출 +extractImages.header=이미지 추출 +extractImages.selectText=추출된 이미지를 변환할 이미지 형식을 선택하세요. +extractImages.submit=추출 + + +#File to PDF +fileToPDF.title=File to PDF +fileToPDF.header=모든 파일을 PDF로 변환 +fileToPDF.credit=이 서비스는 파일 변환에 LibreOffice와 Unoconv를 사용합니다. +fileToPDF.supportedFileTypes=지원되는 파일 형식은 아래와 같지만, 지원되는 형식의 전체 업데이트 목록은 LibreOffice 설명서를 참조하세요. +fileToPDF.submit=PDF로 변환 + + +#compress +compress.title=압축 +compress.header=PDF 압축 +compress.credit=이 서비스는 PDF 압축/최적화를 위해 Ghostscript를 사용합니다. +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.submit=병합 + + +#pdfOrganiser +pdfOrganiser.title=페이지 정렬 도구 +pdfOrganiser.header=PDF 페이지 정렬 +pdfOrganiser.submit=페이지 재정렬 + + +#multiTool +multiTool.title=PDF 멀티 툴 +multiTool.header=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.selectText.1=맞춤 크기로 늘리기 +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=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself� +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=가로 간격 (각 워터마크 사이의 가로 공간): +watermark.selectText.6=세로 간격 (각 워터마크 사이의 세로 공간): +watermark.selectText.7=투명도 (0% - 100%): +watermark.submit=워터마크 추가 + + +#remove-watermark +remove-watermark.title=워터마크 제거 +remove-watermark.header=워터마크 제거 +remove-watermark.selectText.1=워터마크를 제거할 PDF 선택: +remove-watermark.selectText.2=워터마크 텍스트: +remove-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=작성일 (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=제작자: +changeMetadata.keywords=키워드: +changeMetadata.modDate=수정일 (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=생성자: +changeMetadata.subject=주제: +changeMetadata.title=제목: +changeMetadata.trapped=잠긴 상태: +changeMetadata.selectText.4=기타 메타데이터: +changeMetadata.selectText.5=사용자 정의 메타데이터 항목 추가 +changeMetadata.submit=변경 + + +#xlsToPdf +xlsToPdf.title=Excel to PDF +xlsToPdf.header=Excel을 PDF로 변환 +xlsToPdf.selectText.1=변환할 XLS 또는 XLSX Excel 시트 선택 +xlsToPdf.convert=변환하기 + + +#pdfToPDFA +pdfToPDFA.title=PDF To PDF/A +pdfToPDFA.header=PDF를 PDF/A로 변환 +pdfToPDFA.credit=이 서비스는 PDF/A 변환을 위해 OCRmyPDF를 사용합니다. +pdfToPDFA.submit=변환 + + +#PDFToWord +PDFToWord.title=PDF to Word +PDFToWord.header=PDF를 Word로 변환 +PDFToWord.selectText.1=출력 파일 형식 +PDFToWord.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. +PDFToWord.submit=변환 + + +#PDFToPresentation +PDFToPresentation.title=PDF to Presentation +PDFToPresentation.header=PDF를 프레젠테이션으로 변환 +PDFToPresentation.selectText.1=출력 파일 형식 +PDFToPresentation.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. +PDFToPresentation.submit=변환 + + +#PDFToText +PDFToText.title=PDF to Text/RTF +PDFToText.header=PDF를 텍스트/RTF로 변환 +PDFToText.selectText.1=출력 파일 형식 +PDFToText.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. +PDFToText.submit=변환 + + +#PDFToHTML +PDFToHTML.title=PDF to HTML +PDFToHTML.header=PDF를 HTML로 변환 +PDFToHTML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. +PDFToHTML.submit=변환 + + +#PDFToXML +PDFToXML.title=PDF to XML +PDFToXML.header=PDF를 XML로 변환 +PDFToXML.credit=이 서비스는 파일 변환을 위해 LibreOffice를 사용합니다. +PDFToXML.submit=변환 diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index c436c9fe..2eba82a1 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -1,472 +1,615 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr = left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Wybierz PDF -multiPdfPrompt=Wybierz PDF (2+) -multiPdfDropPrompt=Wybierz (lub przeciągnij i puść) wszystkie dokumenty PDF -imgPrompt=Wybierz obraz(y) -genericSubmit=Wyślij -processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku -pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) : -goToPage=Idź -true=Tak -false=Nie -unknown=Nieznany -save=Zapisz -close=Zamknij -filesSelected=wybrane pliki -noFavourites=Nie dodano ulubionych -bored=Znudzony czekaniem? -alphabet=Alfabet -############# -# HOME-PAGE # -############# -home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF. - - -navbar.convert=Konwertuj -navbar.security=Bezpieczeństwo -navbar.other=Inne -navbar.darkmode=Tryb nocny -navbar.pageOps=Strony - -home.multiTool.title=Multi narzędzie PDF -home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony - -home.merge.title=Połącz -home.merge.desc=Łatwe łączenie wielu dokumentów PDF w jeden. - -home.split.title=Podziel -home.split.desc=Podziel dokument PDF na wiele dokumentów - -home.rotate.title=Obróć -home.rotate.desc=Łatwo obracaj dokumenty PDF. - -home.imageToPdf.title=Obraz na PDF -home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF. - -home.pdfToImage.title=PDF na Obraz -home.pdfToImage.desc=Konwertuj plik PDF na obraz (PNG, JPEG, GIF). - -home.pdfOrganiser.title=Uporządkuj -home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności - -home.addImage.title=Dodaj obraz -home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie) - -home.watermark.title=Dodaj znak wodny -home.watermark.desc=Dodaj niestandardowy znak wodny do dokumentu PDF. - -home.remove-watermark.title=Usuń znak wodny -home.remove-watermark.desc=Usuń znaki wodne z dokumentu PDF. - -home.permissions.title=Zmień uprawnienia -home.permissions.desc=Zmień uprawnienia dokumentu PDF - -home.removePages.title=Usuń -home.removePages.desc=Usuń niechciane strony z dokumentu PDF. - -home.addPassword.title=Dodaj hasło -home.addPassword.desc=Zaszyfruj dokument PDF za pomocą hasła. - -home.removePassword.title=Usuń hasło -home.removePassword.desc=Usuń ochronę hasłem z dokumentu PDF. - -home.compressPdfs.title=Kompresuj -home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar. - -home.changeMetadata.title=Zmień metadane -home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF - -home.fileToPDF.title=Konwertuj plik do PDF -home.fileToPDF.desc=Konwertuj dowolny plik do dokumentu PDF (DOCX, PNG, XLS, PPT, TXT i więcej) - -home.ocr.title=OCR / Zamiana na tekst -home.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst. - -home.extractImages.title=Wyodrębnij obrazy -home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie - -home.pdfToPDFA.title=PDF na PDF/A -home.pdfToPDFA.desc=Konwertuj dokument PDF na PDF/A w celu długoterminowego przechowywania - -home.PDFToWord.title=PDF na Word -home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT) - -home.PDFToPresentation.title=PDF na Prezentację -home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP) - -home.PDFToText.title=PDF na Tekst/RTF -home.PDFToText.desc=Konwertuj dokument PDF na tekst lub format RTF - -home.PDFToHTML.title=PDF na HTML -home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML - -home.PDFToXML.title=PDF na XML -home.PDFToXML.desc=Konwertuj dokument PDF na format XML - -home.ScannerImageSplit.title=Wykryj/Podziel zeskanowane zdjęcia -home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF - -home.sign.title=Podpis -home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu - -home.flatten.title=Spłaszcz -home.flatten.desc=Usuń wszystkie interaktywne elementy i formularze z dokumentu PDF - -home.repair.title=Napraw -home.repair.desc=Spróbuj naprawić uszkodzony dokument PDF - -home.removeBlanks.title=Usuń puste strony -home.removeBlanks.desc=Wykrywa i usuwa puste strony z dokumentu PDF - -home.compare.title=Porównaj -home.compare.desc=Porównuje i pokazuje różnice między dwoma dokumentami PDF - -home.certSign.title=Podpisz certyfikatem -home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12) - -home.pageLayout.title=Układ wielu stron -home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę - -home.scalePages.title=Dopasuj rozmiar stron -home.scalePages.desc=Dopasuj rozmiar stron wybranego dokumentu PDF - -error.pdfPassword=Dokument PDF jest zabezpieczony hasłem, musisz podać prawidłowe hasło. - -downloadPdf=Pobierz PDF -text=Tekst -font=Czcionka -selectFillter=-- Wybierz -- -pageNum=Numer strony - -pageLayout.title=Układ wielu stron -pageLayout.header=Układ wielu stron -pageLayout.pagesPerSheet=Stron na jednym arkuszu: -pageLayout.submit=Wykonaj - -scalePages.title=Dopasuj rozmiar stron -scalePages.header=Dopasuj rozmiar stron -scalePages.pageSize=Rozmiar stron dokumentu: -scalePages.scaleFactor=Poziom powiększenia (przycięcia) stron: -scalePages.submit=Wykonaj - -certSign.title=Podpisywanie certyfikatem -certSign.header=Podpisz dokument PDF certyfikatem prywatnym (moduł w budowie) -certSign.selectPDF=Wybierz dokument PDF do podpisania: -certSign.selectKey=Wybierz plik klucza prywatnego (format PKCS#8, może to być .pem lub .der): -certSign.selectCert=Wybierz plik certyfikatu (format X.509, może to być .pem lub .der): -certSign.selectP12=Wybierz plik magazynu kluczy PKCS#12 (.p12 lub .pfx) (opcjonalnie, jeśli jest podany, powinien zawierać klucz prywatny i certyfikat): -certSign.certType=Typ certyfikatu -certSign.password=Wprowadź hasło do magazynu kluczy lub klucza prywatnego (jeśli istnieje): -certSign.showSig=Wyświetl podpis -certSign.reason=Organizacja -certSign.location=Lokalizacja -certSign.name=Nazwa -certSign.submit=Podpisz PDF - -removeBlanks.title=Usuń puste -removeBlanks.header=Usuń puste strony -removeBlanks.threshold=Próg: -removeBlanks.thresholdDesc=Próg określający, jak biały musi być biały piksel -removeBlanks.whitePercent=Procent białego (%): -removeBlanks.whitePercentDesc=Procent strony, która musi być biała, aby została usunięta -removeBlanks.submit=Usuń puste - -compare.title=Porównaj -compare.header=Porównaj PDF(y) -compare.document.1=Dokument 1 -compare.document.2=Dokument 2 -compare.submit=Porównaj - -sign.title=Podpis -sign.header=Dodaj podpis do dokumentu PDF -sign.upload=Wczytaj opbraz -sign.draw=Narysuj podpis -sign.text=Wprowadź tekst -sign.clear=Wyczyść -sign.add=Dodaj - -repair.title=Napraw -repair.header=Napraw dokument(y) PDF -repair.submit=Napraw - -flatten.title=Spłaszcz -flatten.header=Spłaszcz dokument(y) PDF -flatten.submit=Spłaszcz - -ScannerImageSplit.selectText.1=Próg kąta: -ScannerImageSplit.selectText.2=Ustawia minimalny kąt bezwzględny wymagany do obrócenia obrazu (domyślnie: 10). -ScannerImageSplit.selectText.3=Tolerancja: -ScannerImageSplit.selectText.4=Określa zakres zmienności kolorów wokół szacowanego koloru tła (domyślnie: 30). -ScannerImageSplit.selectText.5=Minimalna powierzchnia: -ScannerImageSplit.selectText.6=Ustawia próg minimalnego obszaru dla zdjęcia (domyślnie: 10000). -ScannerImageSplit.selectText.7=Minimalny obszar konturu: -ScannerImageSplit.selectText.8=Ustawia próg minimalnego obszaru konturu dla zdjęcia -ScannerImageSplit.selectText.9=Rozmiar obramowania: -ScannerImageSplit.selectText.10=Ustawia rozmiar dodawanego i usuwanego obramowania, aby uniknąć białych obramowań na wyjściu (domyślnie: 1). - -navbar.settings=Ustawienia -settings.title=Ustawienia -settings.update=Dostępna aktualizacja -settings.appVersion=Wersia aplikacji: -settings.downloadOption.title=Wybierz opcję pobierania (w przypadku pobierania pojedynczych plików innych niż ZIP): -settings.downloadOption.1=Otwórz w tym samym oknie -settings.downloadOption.2=Otwórz w nowym oknie -settings.downloadOption.3=Pobierz plik -settings.zipThreshold=Spakuj pliki, gdy liczba pobranych plików przekroczy - - - - - -#OCR -ocr.title=OCR / Zamiana na tekst -ocr.header=OCR / Zamiana na tekst (optyczne rozpoznawanie znaków) -ocr.selectText.1=Wybierz języki, które mają zostać wykryte w dokumencie PDF (te z listy to języki, które są obecnie wykrywane): -ocr.selectText.2=Utwórz plik tekstowy zawierający tekst OCR oraz dokument PDF z OCR -ocr.selectText.3=Prawidłowe strony zostały zeskanowane pod przekrzywionym kątem przez obrócenie ich z powrotem na miejsce -ocr.selectText.4=Wyczyść stronę, więc jest mniej prawdopodobne że OCR znajdzie tekst w obrazie tła. (Brak zmiany wyjścia) -ocr.selectText.5=Wyczyść stronę, więc jest mniej prawdopodobne że OCR znajdzie tekst w obrazie tła, utrzymuje porządek na wyjściu. -ocr.selectText.6=Ignoruje strony zawierające interaktywny tekst, tylko strony OCR, które są obrazami -ocr.selectText.7=Wymuś OCR, każda strona usunie wszystkie oryginalne elementy tekstowe -ocr.selectText.8=Normalny (wystąpi błąd, jeśli plik PDF zawiera tekst) -ocr.selectText.9=Dodatkowe ustawienia -ocr.selectText.10=Tryb OCR -ocr.selectText.11=Usuń obrazy po OCR (usuwa wszystkie obrazy, przydatne tylko, jeśli jest częścią etapu konwersji) -ocr.selectText.12=Typ renderowania (zaawansowany) -ocr.help=Przeczytaj tę dokumentację, aby dowiedzieć się, jak używać tego w innych językach i/lub nie używać docker -ocr.credit=Ta usługa używa OCRmyPDF i Tesseract do OCR. -ocr.submit=Przetwarzaj PDF za pomocą OCR - - - -extractImages.title=Wyodrębnij obrazy -extractImages.header=Wyodrębnij obrazy -extractImages.selectText=Wybierz format obrazu, na który chcesz przekonwertować wyodrębniony obraz. -extractImages.submit=Wyodrębnij - - -#File to PDF -fileToPDF.title=Plik na PDF -fileToPDF.header=Konwertuj dowolny plik na dokument PDF -fileToPDF.credit=Ta usługa używa LibreOffice i Unoconv do konwersji plików. -fileToPDF.supportedFileTypes=Obsługiwane typy plików powinny być zgodne z poniższymi, jednak pełną zaktualizowaną listę obsługiwanych formatów można znaleźć w dokumentacji LibreOffice -fileToPDF.submit=Konwertuj na PDF - - -#compress -compress.title=Kompresuj -compress.header=Kompresuj PDF -compress.credit=Ta usługa używa Ghostscript do kompresji/optymalizacji PDF. -compress.selectText.1=Tryb ręczny - Od 1 do 4 -compress.selectText.2=Poziom optymalizacji: -compress.selectText.3=4 (Straszne dla obrazów tekstowych) -compress.selectText.4=Tryb automatyczny - Automatycznie dostosowuje jakość, aby uzyskać dokładny rozmiar pliku PDF -compress.selectText.5=Oczekiwany rozmiar pliku PDF (np. 25 MB, 10,8 MB, 25 KB) -compress.submit=Kompresuj - -#Add image -addImage.title=Dodaj obraz -addImage.header=Dodaj obraz do PDF -addImage.everyPage=Każda strona? -addImage.upload=Dodaj obraz -addImage.submit=Dodaj obraz - - -#merge -merge.title=Połącz -merge.header=Połącz wiele dokumentów PDF (2+) -merge.submit=Połącz - -#pdfOrganiser -pdfOrganiser.title=Kolejność stron -pdfOrganiser.header=Kolejność stron PDF -pdfOrganiser.submit=Zmień kolejność stron - -#multiTool -multiTool.title=Multi narzędzie PDF -multiTool.header=Multi narzędzie PDF - - -#pageRemover -pageRemover.title=Narzędzie do usuwania stron -pageRemover.header=Narzędzie do usuwania stron w dokumentach PDF -pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron oddzielonych przecinkami): -pageRemover.submit=Usuń strony - -#rotate -rotate.title=Obróć dokument PDF -rotate.header=Obróć dokument PDF -rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni): -rotate.submit=Obróć - - - - -#merge -split.title=Podziel dokument PDF -split.header=Podziel dokument PDF -split.desc.1=Wybrane numery to numery stron, na których chcesz dokonać podziału -split.desc.2=Np. taki wybór 1,3,7-8 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z: -split.desc.3=Dokument #1: Strona 1 -split.desc.4=Dokument #2: Strona 2 i 3 -split.desc.5=Dokument #3: Strona 4, 5 i 6 -split.desc.6=Dokument #4: Strona 7 -split.desc.7=Dokument #5: Strona 8 -split.desc.8=Dokument #6: Strona 9 i 10 -split.splitPages=Wprowadź strony do podziału na: -split.submit=Podziel - - -#merge -imageToPDF.title=Obraz na PDF -imageToPDF.header=Obraz na PDF -imageToPDF.submit=Konwertuj -imageToPDF.selectText.1=Rozciągnij, aby dopasować -imageToPDF.selectText.2=Automatyczne obracanie PDF -imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy z wieloma obrazami) -imageToPDF.selectText.4=Połącz w jeden dokument PDF -imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF - -#pdfToImage -pdfToImage.title=PDF na Obraz -pdfToImage.header=PDF na Obraz -pdfToImage.selectText=Format obrazu -pdfToImage.singleOrMultiple=Typ pliku obrazu -pdfToImage.single=Pojedynczy duży obraz -pdfToImage.multi=Wiele obrazów -pdfToImage.colorType=Rodzaj koloru -pdfToImage.color=Kolor -pdfToImage.grey=Odcień szarości -pdfToImage.blackwhite=Czarno-biały (może spowodować utratę danych!) -pdfToImage.submit=Konwertuj - -#addPassword -addPassword.title=Dodaj hasło -addPassword.header=Dodaj hasło (zaszyfruj) -addPassword.selectText.1=Wybierz plik PDF do zaszyfrowania -addPassword.selectText.2=Hasło -addPassword.selectText.3=Długość hasła -addPassword.selectText.4=Wyższe wartości są silniejsze, ale niższe wartości zapewniają lepszą kompatybilność. -addPassword.selectText.5=Uprawnienia do zmian -addPassword.selectText.6=Zablokuj zmiany w dokumencie -addPassword.selectText.7=Zablokuj zmiany w treści -addPassword.selectText.8=Zablokuj zmiany w celu ułatwienia dostępu -addPassword.selectText.9=Zablokuj wypełnianie formularzy -addPassword.selectText.10=Zablokuj modyfikacje -addPassword.selectText.11=Zablokuj modyfikacje adnotacji -addPassword.selectText.12=Zablokuj drukowanie -addPassword.selectText.13=Zablokuj drukowanie różnych formatów -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Zablokuj - -#watermark -watermark.title=Dodaj znak wodny -watermark.header=Dodaj znak wodny -watermark.selectText.1=Wybierz dokument PDF, do którego chcesz dodać znak wodny: -watermark.selectText.2=Treść znaku wodnego: -watermark.selectText.3=Rozmiar czcionki: -watermark.selectText.4=Obrót (0-360): -watermark.selectText.5=Odstęp w poziomie (odstęp między każdym znakiem wodnym w poziomie): -watermark.selectText.6=Odstęp w pionie (odstęp między każdym znakiem wodnym w pionie): -watermark.selectText.7=Nieprzezroczystość (0% - 100%): -watermark.submit=Dodaj znak wodny - -#remove-watermark -remove-watermark.title=Usuń znak wodny -remove-watermark.header=Usuń znak wodny -remove-watermark.selectText.1=Wybierz dokument PDF, aby usunąć znak wodny z: -remove-watermark.selectText.2=Treść zanku wodnego: -remove-watermark.submit=Usuń znak wodny - -#Change permissions -permissions.title=Zmień uprawnienia -permissions.header=Zmień uprawnienia -permissions.warning=Ostrzeżenie, aby te uprawnienia były zablokowane, zaleca się ustawienie hasła na stronie dodawania hasła -permissions.selectText.1=Wybierz dokument PDF, aby zmienić uprawnienia -permissions.selectText.2=Uprawnienia do zmian -permissions.selectText.3=Zablokuj zmiany w dokumencie -permissions.selectText.4=Zablokuj zmiany w treści -permissions.selectText.5=Zablokuj zmiany w celu ułatwienia dostępu -permissions.selectText.6=Zablokuj wypełnianie formularzy -permissions.selectText.7=Zablokuj modyfikacje -permissions.selectText.8=Zablokuj modyfikacje adnotacji -permissions.selectText.9=Zablokuj drukowanie -permissions.selectText.10=Zablokuj drukowanie różnych formatów -permissions.submit=Zmień - -#remove password -removePassword.title=Usuń hasło -removePassword.header=Usuń hasło (odszyfruj) -removePassword.selectText.1=Wybierz dokument PDF do odszyfrowania -removePassword.selectText.2=Hasło -removePassword.submit=Usuń - -changeMetadata.title=Zmień metadane -changeMetadata.header=Zmień metadane -changeMetadata.selectText.1=Edytuj zmienne, które chcesz zmienić -changeMetadata.selectText.2=Usuń wszystkie metadane -changeMetadata.selectText.3=Pokaż niestandardowe metadane: -changeMetadata.author=Autor: -changeMetadata.creationDate=Data utworzenia (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Twórca: -changeMetadata.keywords=Słowa kluczowe: -changeMetadata.modDate=Data modyfikacji (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Producent: -changeMetadata.subject=Temat: -changeMetadata.title=Tytuł: -changeMetadata.trapped=Zablokowany: -changeMetadata.selectText.4=Inne metadane: -changeMetadata.selectText.5=Dodaj niestandardowy wpis w metadanych -changeMetadata.submit=Zmień - -xlsToPdf.title=Excel na PDF -xlsToPdf.header=Excel na PDF -xlsToPdf.selectText.1=Wybierz arkusz Microsoft Excel XLS lub XLSX do konwersji -xlsToPdf.convert=Konwertuj - - - - -pdfToPDFA.title=PDF na PDF/A -pdfToPDFA.header=PDF na PDF/A -pdfToPDFA.credit=Ta usługa używa OCRmyPDF do konwersji PDF/A -pdfToPDFA.submit=Konwertuj - - - -PDFToWord.title=PDF na Word -PDFToWord.header=PDF na Word -PDFToWord.selectText.1=Format pliku wyjściowego -PDFToWord.credit=Ta usługa używa LibreOffice do konwersji plików. -PDFToWord.submit=Konwertuj - -PDFToPresentation.title=PDF na Prezentację -PDFToPresentation.header=PDF na Prezentację -PDFToPresentation.selectText.1=Format pliku wyjściowego -PDFToPresentation.credit=Ta usługa używa LibreOffice do konwersji plików. -PDFToPresentation.submit=Konwertuj - - -PDFToText.title=PDF na Tekst/RTF -PDFToText.header=PDF na Tekst/RTF -PDFToText.selectText.1=Format pliku wyjściowego -PDFToText.credit=Ta usługa używa LibreOffice do konwersji plików. -PDFToText.submit=Konwertuj - - -PDFToHTML.title=PDF na HTML -PDFToHTML.header=PDF na HTML -PDFToHTML.credit=Ta usługa używa LibreOffice do konwersji plików. -PDFToHTML.submit=Konwertuj - -PDFToXML.title=PDF na XML -PDFToXML.header=PDF na XML -PDFToXML.credit=Ta usługa używa LibreOffice do konwersji plików. -PDFToXML.submit=Konwertuj +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Wybierz PDF +multiPdfPrompt=Wybierz PDF (2+) +multiPdfDropPrompt=Wybierz (lub przeciągnij i puść) wszystkie dokumenty PDF +imgPrompt=Wybierz obraz(y) +genericSubmit=Wyślij +processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku +pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) : +goToPage=Idź +true=Tak +false=Nie +unknown=Nieznany +save=Zapisz +close=Zamknij +filesSelected=wybrane pliki +noFavourites=Nie dodano ulubionych +bored=Znudzony czekaniem? +alphabet=Alfabet +downloadPdf=Pobierz PDF +text=Tekst +font=Czcionka +selectFillter=-- Wybierz -- +pageNum=Numer strony +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=Dokument PDF jest zabezpieczony hasłem, musisz podać prawidłowe hasło. + + +############# +# NAVBAR # +############# +navbar.convert=Konwertuj +navbar.security=Bezpieczeństwo +navbar.other=Inne +navbar.darkmode=Tryb nocny +navbar.pageOps=Strony +navbar.settings=Ustawienia + +############# +# SETTINGS # +############# +settings.title=Ustawienia +settings.update=Dostępna aktualizacja +settings.appVersion=Wersia aplikacji: +settings.downloadOption.title=Wybierz opcję pobierania (w przypadku pobierania pojedynczych plików innych niż ZIP): +settings.downloadOption.1=Otwórz w tym samym oknie +settings.downloadOption.2=Otwórz w nowym oknie +settings.downloadOption.3=Pobierz plik +settings.zipThreshold=Spakuj pliki, gdy liczba pobranych plików przekroczy + +############# +# HOME-PAGE # +############# +home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związanych z dokumentami PDF. + + +home.multiTool.title=Multi narzędzie PDF +home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Połącz +home.merge.desc=Łatwe łączenie wielu dokumentów PDF w jeden. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Podziel +home.split.desc=Podziel dokument PDF na wiele dokumentów + +home.rotate.title=Obróć +home.rotate.desc=Łatwo obracaj dokumenty PDF. + +home.imageToPdf.title=Obraz na PDF +home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF. + +home.pdfToImage.title=PDF na Obraz +home.pdfToImage.desc=Konwertuj plik PDF na obraz (PNG, JPEG, GIF). + +home.pdfOrganiser.title=Uporządkuj +home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności + +home.addImage.title=Dodaj obraz +home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie) + +home.watermark.title=Dodaj znak wodny +home.watermark.desc=Dodaj niestandardowy znak wodny do dokumentu PDF. + +home.permissions.title=Zmień uprawnienia +home.permissions.desc=Zmień uprawnienia dokumentu PDF + +home.removePages.title=Usuń +home.removePages.desc=Usuń niechciane strony z dokumentu PDF. + +home.addPassword.title=Dodaj hasło +home.addPassword.desc=Zaszyfruj dokument PDF za pomocą hasła. + +home.removePassword.title=Usuń hasło +home.removePassword.desc=Usuń ochronę hasłem z dokumentu PDF. + +home.compressPdfs.title=Kompresuj +home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar. + +home.changeMetadata.title=Zmień metadane +home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF + +home.fileToPDF.title=Konwertuj plik do PDF +home.fileToPDF.desc=Konwertuj dowolny plik do dokumentu PDF (DOCX, PNG, XLS, PPT, TXT i więcej) + +home.ocr.title=OCR / Zamiana na tekst +home.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst. + +home.extractImages.title=Wyodrębnij obrazy +home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie + +home.pdfToPDFA.title=PDF na PDF/A +home.pdfToPDFA.desc=Konwertuj dokument PDF na PDF/A w celu długoterminowego przechowywania + +home.PDFToWord.title=PDF na Word +home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT) + +home.PDFToPresentation.title=PDF na Prezentację +home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP) + +home.PDFToText.title=PDF na Tekst/RTF +home.PDFToText.desc=Konwertuj dokument PDF na tekst lub format RTF + +home.PDFToHTML.title=PDF na HTML +home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML + +home.PDFToXML.title=PDF na XML +home.PDFToXML.desc=Konwertuj dokument PDF na format XML + +home.ScannerImageSplit.title=Wykryj/Podziel zeskanowane zdjęcia +home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF + +home.sign.title=Podpis +home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu + +home.flatten.title=Spłaszcz +home.flatten.desc=Usuń wszystkie interaktywne elementy i formularze z dokumentu PDF + +home.repair.title=Napraw +home.repair.desc=Spróbuj naprawić uszkodzony dokument PDF + +home.removeBlanks.title=Usuń puste strony +home.removeBlanks.desc=Wykrywa i usuwa puste strony z dokumentu PDF + +home.compare.title=Porównaj +home.compare.desc=Porównuje i pokazuje różnice między dwoma dokumentami PDF + +home.certSign.title=Podpisz certyfikatem +home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12) + +home.pageLayout.title=Układ wielu stron +home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę + +home.scalePages.title=Dopasuj rozmiar stron +home.scalePages.desc=Dopasuj rozmiar stron wybranego dokumentu PDF + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Układ wielu stron +pageLayout.header=Układ wielu stron +pageLayout.pagesPerSheet=Stron na jednym arkuszu: +pageLayout.submit=Wykonaj + + +#scalePages +scalePages.title=Dopasuj rozmiar stron +scalePages.header=Dopasuj rozmiar stron +scalePages.pageSize=Rozmiar stron dokumentu: +scalePages.scaleFactor=Poziom powiększenia (przycięcia) stron: +scalePages.submit=Wykonaj + + +#certSign +certSign.title=Podpisywanie certyfikatem +certSign.header=Podpisz dokument PDF certyfikatem prywatnym (moduł w budowie) +certSign.selectPDF=Wybierz dokument PDF do podpisania: +certSign.selectKey=Wybierz plik klucza prywatnego (format PKCS#8, może to być .pem lub .der): +certSign.selectCert=Wybierz plik certyfikatu (format X.509, może to być .pem lub .der): +certSign.selectP12=Wybierz plik magazynu kluczy PKCS#12 (.p12 lub .pfx) (opcjonalnie, jeśli jest podany, powinien zawierać klucz prywatny i certyfikat): +certSign.certType=Typ certyfikatu +certSign.password=Wprowadź hasło do magazynu kluczy lub klucza prywatnego (jeśli istnieje): +certSign.showSig=Wyświetl podpis +certSign.reason=Organizacja +certSign.location=Lokalizacja +certSign.name=Nazwa +certSign.submit=Podpisz PDF + + +#removeBlanks +removeBlanks.title=Usuń puste +removeBlanks.header=Usuń puste strony +removeBlanks.threshold=Próg: +removeBlanks.thresholdDesc=Próg określający, jak biały musi być biały piksel +removeBlanks.whitePercent=Procent białego (%): +removeBlanks.whitePercentDesc=Procent strony, która musi być biała, aby została usunięta +removeBlanks.submit=Usuń puste + + +#compare +compare.title=Porównaj +compare.header=Porównaj PDF(y) +compare.document.1=Dokument 1 +compare.document.2=Dokument 2 +compare.submit=Porównaj + + +#sign +sign.title=Podpis +sign.header=Dodaj podpis do dokumentu PDF +sign.upload=Wczytaj opbraz +sign.draw=Narysuj podpis +sign.text=Wprowadź tekst +sign.clear=Wyczyść +sign.add=Dodaj + + +#repair +repair.title=Napraw +repair.header=Napraw dokument(y) PDF +repair.submit=Napraw + + +#flatten +flatten.title=Spłaszcz +flatten.header=Spłaszcz dokument(y) PDF +flatten.submit=Spłaszcz + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Próg kąta: +ScannerImageSplit.selectText.2=Ustawia minimalny kąt bezwzględny wymagany do obrócenia obrazu (domyślnie: 10). +ScannerImageSplit.selectText.3=Tolerancja: +ScannerImageSplit.selectText.4=Określa zakres zmienności kolorów wokół szacowanego koloru tła (domyślnie: 30). +ScannerImageSplit.selectText.5=Minimalna powierzchnia: +ScannerImageSplit.selectText.6=Ustawia próg minimalnego obszaru dla zdjęcia (domyślnie: 10000). +ScannerImageSplit.selectText.7=Minimalny obszar konturu: +ScannerImageSplit.selectText.8=Ustawia próg minimalnego obszaru konturu dla zdjęcia +ScannerImageSplit.selectText.9=Rozmiar obramowania: +ScannerImageSplit.selectText.10=Ustawia rozmiar dodawanego i usuwanego obramowania, aby uniknąć białych obramowań na wyjściu (domyślnie: 1). + + +#OCR +ocr.title=OCR / Zamiana na tekst +ocr.header=OCR / Zamiana na tekst (optyczne rozpoznawanie znaków) +ocr.selectText.1=Wybierz języki, które mają zostać wykryte w dokumencie PDF (te z listy to języki, które są obecnie wykrywane): +ocr.selectText.2=Utwórz plik tekstowy zawierający tekst OCR oraz dokument PDF z OCR +ocr.selectText.3=Prawidłowe strony zostały zeskanowane pod przekrzywionym kątem przez obrócenie ich z powrotem na miejsce +ocr.selectText.4=Wyczyść stronę, więc jest mniej prawdopodobne że OCR znajdzie tekst w obrazie tła. (Brak zmiany wyjścia) +ocr.selectText.5=Wyczyść stronę, więc jest mniej prawdopodobne że OCR znajdzie tekst w obrazie tła, utrzymuje porządek na wyjściu. +ocr.selectText.6=Ignoruje strony zawierające interaktywny tekst, tylko strony OCR, które są obrazami +ocr.selectText.7=Wymuś OCR, każda strona usunie wszystkie oryginalne elementy tekstowe +ocr.selectText.8=Normalny (wystąpi błąd, jeśli plik PDF zawiera tekst) +ocr.selectText.9=Dodatkowe ustawienia +ocr.selectText.10=Tryb OCR +ocr.selectText.11=Usuń obrazy po OCR (usuwa wszystkie obrazy, przydatne tylko, jeśli jest częścią etapu konwersji) +ocr.selectText.12=Typ renderowania (zaawansowany) +ocr.help=Przeczytaj tę dokumentację, aby dowiedzieć się, jak używać tego w innych językach i/lub nie używać docker +ocr.credit=Ta usługa używa OCRmyPDF i Tesseract do OCR. +ocr.submit=Przetwarzaj PDF za pomocą OCR + + +#extractImages +extractImages.title=Wyodrębnij obrazy +extractImages.header=Wyodrębnij obrazy +extractImages.selectText=Wybierz format obrazu, na który chcesz przekonwertować wyodrębniony obraz. +extractImages.submit=Wyodrębnij + + +#File to PDF +fileToPDF.title=Plik na PDF +fileToPDF.header=Konwertuj dowolny plik na dokument PDF +fileToPDF.credit=Ta usługa używa LibreOffice i Unoconv do konwersji plików. +fileToPDF.supportedFileTypes=Obsługiwane typy plików powinny być zgodne z poniższymi, jednak pełną zaktualizowaną listę obsługiwanych formatów można znaleźć w dokumentacji LibreOffice +fileToPDF.submit=Konwertuj na PDF + + +#compress +compress.title=Kompresuj +compress.header=Kompresuj PDF +compress.credit=Ta usługa używa Ghostscript do kompresji/optymalizacji PDF. +compress.selectText.1=Tryb ręczny - Od 1 do 4 +compress.selectText.2=Poziom optymalizacji: +compress.selectText.3=4 (Straszne dla obrazów tekstowych) +compress.selectText.4=Tryb automatyczny - Automatycznie dostosowuje jakość, aby uzyskać dokładny rozmiar pliku PDF +compress.selectText.5=Oczekiwany rozmiar pliku PDF (np. 25 MB, 10,8 MB, 25 KB) +compress.submit=Kompresuj + + +#Add image +addImage.title=Dodaj obraz +addImage.header=Dodaj obraz do PDF +addImage.everyPage=Każda strona? +addImage.upload=Dodaj obraz +addImage.submit=Dodaj obraz + + +#merge +merge.title=Połącz +merge.header=Połącz wiele dokumentów PDF (2+) +merge.submit=Połącz + + +#pdfOrganiser +pdfOrganiser.title=Kolejność stron +pdfOrganiser.header=Kolejność stron PDF +pdfOrganiser.submit=Zmień kolejność stron + + +#multiTool +multiTool.title=Multi narzędzie PDF +multiTool.header=Multi narzędzie PDF + + +#pageRemover +pageRemover.title=Narzędzie do usuwania stron +pageRemover.header=Narzędzie do usuwania stron w dokumentach PDF +pageRemover.pagesToDelete=Strony do usunięcia (wprowadź listę numerów stron oddzielonych przecinkami): +pageRemover.submit=Usuń strony + + +#rotate +rotate.title=Obróć dokument PDF +rotate.header=Obróć dokument PDF +rotate.selectAngle=Wybierz kąt obrotu (domyślnie 90 stopni): +rotate.submit=Obróć + + +#merge +split.title=Podziel dokument PDF +split.header=Podziel dokument PDF +split.desc.1=Wybrane numery to numery stron, na których chcesz dokonać podziału +split.desc.2=Np. taki wybór 1,3,7-8 podzieliłby 10-stronicowy dokument na 6 oddzielnych plików PDF z: +split.desc.3=Dokument #1: Strona 1 +split.desc.4=Dokument #2: Strona 2 i 3 +split.desc.5=Dokument #3: Strona 4, 5 i 6 +split.desc.6=Dokument #4: Strona 7 +split.desc.7=Dokument #5: Strona 8 +split.desc.8=Dokument #6: Strona 9 i 10 +split.splitPages=Wprowadź strony do podziału na: +split.submit=Podziel + + +#merge +imageToPDF.title=Obraz na PDF +imageToPDF.header=Obraz na PDF +imageToPDF.submit=Konwertuj +imageToPDF.selectText.1=Rozciągnij, aby dopasować +imageToPDF.selectText.2=Automatyczne obracanie PDF +imageToPDF.selectText.3=Logika wielu plików (dostępna tylko w przypadku pracy z wieloma obrazami) +imageToPDF.selectText.4=Połącz w jeden dokument PDF +imageToPDF.selectText.5=Konwertuj na osobne dokumenty PDF + + +#pdfToImage +pdfToImage.title=PDF na Obraz +pdfToImage.header=PDF na Obraz +pdfToImage.selectText=Format obrazu +pdfToImage.singleOrMultiple=Typ pliku obrazu +pdfToImage.single=Pojedynczy duży obraz +pdfToImage.multi=Wiele obrazów +pdfToImage.colorType=Rodzaj koloru +pdfToImage.color=Kolor +pdfToImage.grey=Odcień szarości +pdfToImage.blackwhite=Czarno-biały (może spowodować utratę danych!) +pdfToImage.submit=Konwertuj + + +#addPassword +addPassword.title=Dodaj hasło +addPassword.header=Dodaj hasło (zaszyfruj) +addPassword.selectText.1=Wybierz plik PDF do zaszyfrowania +addPassword.selectText.2=Hasło +addPassword.selectText.3=Długość hasła +addPassword.selectText.4=Wyższe wartości są silniejsze, ale niższe wartości zapewniają lepszą kompatybilność. +addPassword.selectText.5=Uprawnienia do zmian +addPassword.selectText.6=Zablokuj zmiany w dokumencie +addPassword.selectText.7=Zablokuj zmiany w treści +addPassword.selectText.8=Zablokuj zmiany w celu ułatwienia dostępu +addPassword.selectText.9=Zablokuj wypełnianie formularzy +addPassword.selectText.10=Zablokuj modyfikacje +addPassword.selectText.11=Zablokuj modyfikacje adnotacji +addPassword.selectText.12=Zablokuj drukowanie +addPassword.selectText.13=Zablokuj drukowanie różnych formatów +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Zablokuj + + +#watermark +watermark.title=Dodaj znak wodny +watermark.header=Dodaj znak wodny +watermark.selectText.1=Wybierz dokument PDF, do którego chcesz dodać znak wodny: +watermark.selectText.2=Treść znaku wodnego: +watermark.selectText.3=Rozmiar czcionki: +watermark.selectText.4=Obrót (0-360): +watermark.selectText.5=Odstęp w poziomie (odstęp między każdym znakiem wodnym w poziomie): +watermark.selectText.6=Odstęp w pionie (odstęp między każdym znakiem wodnym w pionie): +watermark.selectText.7=Nieprzezroczystość (0% - 100%): +watermark.submit=Dodaj znak wodny + + +#remove-watermark +remove-watermark.title=Usuń znak wodny +remove-watermark.header=Usuń znak wodny +remove-watermark.selectText.1=Wybierz dokument PDF, aby usunąć znak wodny z: +remove-watermark.selectText.2=Treść zanku wodnego: +remove-watermark.submit=Usuń znak wodny + + +#Change permissions +permissions.title=Zmień uprawnienia +permissions.header=Zmień uprawnienia +permissions.warning=Ostrzeżenie, aby te uprawnienia były zablokowane, zaleca się ustawienie hasła na stronie dodawania hasła +permissions.selectText.1=Wybierz dokument PDF, aby zmienić uprawnienia +permissions.selectText.2=Uprawnienia do zmian +permissions.selectText.3=Zablokuj zmiany w dokumencie +permissions.selectText.4=Zablokuj zmiany w treści +permissions.selectText.5=Zablokuj zmiany w celu ułatwienia dostępu +permissions.selectText.6=Zablokuj wypełnianie formularzy +permissions.selectText.7=Zablokuj modyfikacje +permissions.selectText.8=Zablokuj modyfikacje adnotacji +permissions.selectText.9=Zablokuj drukowanie +permissions.selectText.10=Zablokuj drukowanie różnych formatów +permissions.submit=Zmień + + +#remove password +removePassword.title=Usuń hasło +removePassword.header=Usuń hasło (odszyfruj) +removePassword.selectText.1=Wybierz dokument PDF do odszyfrowania +removePassword.selectText.2=Hasło +removePassword.submit=Usuń + + +#changeMetadata +changeMetadata.title=Tytuł: +changeMetadata.header=Zmień metadane +changeMetadata.selectText.1=Edytuj zmienne, które chcesz zmienić +changeMetadata.selectText.2=Usuń wszystkie metadane +changeMetadata.selectText.3=Pokaż niestandardowe metadane: +changeMetadata.author=Autor: +changeMetadata.creationDate=Data utworzenia (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Twórca: +changeMetadata.keywords=Słowa kluczowe: +changeMetadata.modDate=Data modyfikacji (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Producent: +changeMetadata.subject=Temat: +changeMetadata.title=Tytuł: +changeMetadata.trapped=Zablokowany: +changeMetadata.selectText.4=Inne metadane: +changeMetadata.selectText.5=Dodaj niestandardowy wpis w metadanych +changeMetadata.submit=Zmień + + +#xlsToPdf +xlsToPdf.title=Excel na PDF +xlsToPdf.header=Excel na PDF +xlsToPdf.selectText.1=Wybierz arkusz Microsoft Excel XLS lub XLSX do konwersji +xlsToPdf.convert=Konwertuj + + +#pdfToPDFA +pdfToPDFA.title=PDF na PDF/A +pdfToPDFA.header=PDF na PDF/A +pdfToPDFA.credit=Ta usługa używa OCRmyPDF do konwersji PDF/A +pdfToPDFA.submit=Konwertuj + + +#PDFToWord +PDFToWord.title=PDF na Word +PDFToWord.header=PDF na Word +PDFToWord.selectText.1=Format pliku wyjściowego +PDFToWord.credit=Ta usługa używa LibreOffice do konwersji plików. +PDFToWord.submit=Konwertuj + + +#PDFToPresentation +PDFToPresentation.title=PDF na Prezentację +PDFToPresentation.header=PDF na Prezentację +PDFToPresentation.selectText.1=Format pliku wyjściowego +PDFToPresentation.credit=Ta usługa używa LibreOffice do konwersji plików. +PDFToPresentation.submit=Konwertuj + + +#PDFToText +PDFToText.title=PDF na Tekst/RTF +PDFToText.header=PDF na Tekst/RTF +PDFToText.selectText.1=Format pliku wyjściowego +PDFToText.credit=Ta usługa używa LibreOffice do konwersji plików. +PDFToText.submit=Konwertuj + + +#PDFToHTML +PDFToHTML.title=PDF na HTML +PDFToHTML.header=PDF na HTML +PDFToHTML.credit=Ta usługa używa LibreOffice do konwersji plików. +PDFToHTML.submit=Konwertuj + + +#PDFToXML +PDFToXML.title=PDF na XML +PDFToXML.header=PDF na XML +PDFToXML.credit=Ta usługa używa LibreOffice do konwersji plików. +PDFToXML.submit=Konwertuj diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index f0d3e6c1..c8326622 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -1,488 +1,614 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr =esquerda para a direita, rtl = direita para a esquerda) -language.direction=ltr - -pdfPrompt=Selecione PDF(s) -multiPdfPrompt=Selecione PDFs (2+) -multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários -imgPrompt=Selecione a(s) imagem(ns) -genericSubmit=Enviar -processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo -pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página): -goToPage=Ir -true=Verdadeiro -false=Falso -unknown=Desconhecido -save=Salvar -close=Fechar -filesSelected=arquivos selecionados -noFavourites=Nenhum favorito adicionado -bored=Entediado esperando? -alphabet=Alfabeto -############# -# HOME-PAGE # -############# -home.desc=Seu melhor utilitário para as necessidades de PDF. - - -navbar.convert=Converter -navbar.security=Segurança -navbar.other=Outro -navbar.darkmode=Modo Escuro -navbar.pageOps=Operações de página - -home.multiTool.title=Multiferramenta de PDF -home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas - -home.merge.title=mesclar -home.merge.desc=Mescle facilmente vários PDFs em um. - -home.split.title=Dividir -home.split.desc=Dividir PDFs em vários documentos - -home.rotate.title=Girar -home.rotate.desc=Gire facilmente seus PDFs. - -home.imageToPdf.title=Imagem para PDF -home.imageToPdf.desc=Converta uma imagem (PNG, JPEG, GIF) em PDF. - -home.pdfToImage.title=PDF para imagem -home.pdfToImage.desc=Converta um PDF em uma imagem. (PNG, JPG, GIF) - -home.pdfOrganiser.title=Organizar -home.pdfOrganiser.desc=Remova/reorganize as páginas em qualquer ordem - -home.addImage.title=Adicionar imagem -home.addImage.desc=Adiciona uma imagem em um local definido no PDF (trabalho em andamento) - -home.watermark.title=Adicione uma Marca d'água -home.watermark.desc=Adicione uma marca d'água personalizada ao seu documento PDF. - -home.remove-watermark.title=Remover marca d'água -home.remove-watermark.desc=Remova marcas d'água do seu documento PDF. - -home.permissions.title=Alterar permissões -home.permissions.desc=Altere as permissões do seu documento PDF - -home.removePages.title=Remover -home.removePages.desc=Exclua as páginas indesejadas do seu documento PDF. - -home.addPassword.title=Adicionar senha -home.addPassword.desc=Criptografe seu documento PDF com uma senha. - -home.removePassword.title=Remover senha -home.removePassword.desc=Remova a proteção por senha do seu documento PDF. - -home.compressPdfs.title=Comprimir -home.compressPdfs.desc=Comprima PDFs para reduzir o tamanho do arquivo. - -home.changeMetadata.title=Alterar metadados -home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF - -home.fileToPDF.title=Converter arquivo para PDF -home.fileToPDF.desc=Converta praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) - -home.ocr.title=OCR / Varreduras de limpeza -home.ocr.desc=A limpeza verifica e detecta texto de imagens em um PDF e o adiciona novamente como texto. - -home.extractImages.title=Extrair imagens -home.extractImages.desc=Extrai todas as imagens de um PDF e as salva em zip - -home.pdfToPDFA.title=PDF para PDF/A -home.pdfToPDFA.desc=Converta PDF para PDF/A para armazenamento de longo prazo - -home.PDFToWord.title=PDF para Word -home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) - -home.PDFToPresentation.title=PDF para apresentação -home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP) - -home.PDFToText.title=PDF para Texto/RTF -home.PDFToText.desc=Converter PDF em formato de texto ou RTF - -home.PDFToHTML.title=PDF para HTML -home.PDFToHTML.desc=Converter PDF para o formato HTML - -home.PDFToXML.title=PDF para XML -home.PDFToXML.desc=Converter PDF para o formato XML - -home.ScannerImageSplit.title=Detectar/dividir fotos digitalizadas -home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma foto/PDF - -home.sign.title=Sinal -home.sign.desc=Adiciona assinatura ao PDF por desenho, texto ou imagem - -home.flatten.title=achatar -home.flatten.desc=Remova todos os elementos e formulários interativos de um PDF - -home.repair.title=Reparar -home.repair.desc=Tenta reparar um PDF corrompido/quebrado - -home.removeBlanks.title=Remover páginas em branco -home.removeBlanks.desc=Detecta e remove páginas em branco de um documento - -home.compare.title=Comparar -home.compare.desc=Compara e mostra as diferenças entre 2 documentos PDF - -home.certSign.title=Assinar com certificado -home.certSign.desc=Assina um PDF com um Certificado/Chave (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=baixar PDF -text=Texto -font=Fonte -selectFillter=-- Selecione -- -pageNum=Número de página - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Assinatura de certificado -certSign.header=Assine um PDF com seu certificado (Trabalho em andamento) -certSign.selectPDF=Selecione um arquivo PDF para assinatura: -certSign.selectKey=Selecione seu arquivo de chave privada (formato PKCS#8, pode ser .pem ou .der): -certSign.selectCert=Selecione seu arquivo de certificado (formato X.509, pode ser .pem ou .der): -certSign.selectP12=Selecione seu arquivo de armazenamento de chave PKCS#12 (.p12 ou .pfx) (opcional, se fornecido, deve conter sua chave privada e certificado): -certSign.certType=tipo de certificado -certSign.password=Digite seu armazenamento de chave ou senha de chave privada (se houver): -certSign.showSig=Mostrar assinatura -certSign.reason=Razão -certSign.location=Localização -certSign.name=Nome - -certSign.submit=Assinar PDF - - - -removeBlanks.title=Remover espaços em branco -removeBlanks.header=Remover páginas em branco -removeBlanks.threshold=Limite: -removeBlanks.thresholdDesc=Limiar para determinar quão branco um pixel branco deve ser -removeBlanks.whitePercent=Porcentagem branca (%): -removeBlanks.whitePercentDesc=Porcentagem da página que deve ser branca para ser removida -removeBlanks.submit=Remover espaços em branco - -compare.title=Comparar -compare.header=Comparar PDFs -compare.document.1=Documento 1 -compare.document.2=Documento 2 -compare.submit=Comparar - -sign.title=Sinal -sign.header=Assinar PDFs -sign.upload=Enviar Imagem -sign.draw=Desenhar Assinatura -sign.text=Entrada de texto -sign.clear=Claro -sign.add=Adicionar - -repair.title=Reparar -repair.header=Reparar PDFs -repair.submit=Reparar - -flatten.title=achatar -flatten.header=Achatar PDFs -flatten.submit=achatar - -ScannerImageSplit.selectText.1=Limite de Ângulo: -ScannerImageSplit.selectText.2=Define o ângulo absoluto mínimo necessário para que a imagem seja girada (padrão: 10). -ScannerImageSplit.selectText.3=Tolerância: -ScannerImageSplit.selectText.4=Determina o intervalo de variação de cor em torno da cor de fundo estimada (padrão: 30). -ScannerImageSplit.selectText.5=Área Mínima: -ScannerImageSplit.selectText.6=Define o limite mínimo de área para uma foto (padrão: 10000). -ScannerImageSplit.selectText.7=Área mínima de contorno: -ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para uma foto -ScannerImageSplit.selectText.9=Tamanho da Borda: -ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1). - -navbar.settings=Configurações -settings.title=Configurações -settings.update=Atualização disponível -settings.appVersion=Versão do aplicativo: -settings.downloadOption.title=Escolha a opção de download (para downloads não compactados de arquivo único): -settings.downloadOption.1=Abrir na mesma janela -settings.downloadOption.2=Abrir em nova janela -settings.downloadOption.3=⇬ Fazer download do arquivo -settings.zipThreshold=Compactar arquivos quando o número de arquivos baixados exceder - - - - - -#OCR -ocr.title=OCR / Limpeza de digitalização -ocr.header=Varreduras de limpeza / OCR (reconhecimento óptico de caracteres) -ocr.selectText.1=Selecione os idiomas que devem ser detectados no PDF (os listados são os atualmente detectados): -ocr.selectText.2=Produzir arquivo de texto contendo texto OCR ao lado do PDF com OCR -ocr.selectText.3=As páginas corretas foram digitalizadas em um ângulo inclinado girando-as de volta ao lugar -ocr.selectText.4=Limpe a página para que seja menos provável que o OCR encontre o texto no ruído de fundo. (Sem mudança de saída) -ocr.selectText.5=Limpe a página para que seja menos provável que o OCR encontre texto no ruído de fundo, mantendo a limpeza na saída. -ocr.selectText.6=Ignora as páginas que contêm texto interativo, apenas as páginas de OCR que são imagens -ocr.selectText.7=Forçar OCR, irá OCR Todas as páginas removendo todos os elementos de texto originais -ocr.selectText.8=Normal (será um erro se o PDF contiver texto) -ocr.selectText.9=Configurações adicionais -ocr.selectText.10=Modo OCR -ocr.selectText.11=Remova as imagens após o OCR (remove TODAS as imagens, útil apenas se fizer parte da etapa de conversão) -ocr.selectText.12=Tipo de renderização (avançado) -ocr.help=Por favor, leia esta documentação sobre como usar isso para outros idiomas e/ou não usar no docker -ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. -ocr.submit=Processar PDF com OCR - - - -extractImages.title=Extrair Imagens -extractImages.header=Extrair Imagens -extractImages.selectText=Selecione o formato de imagem para converter as imagens extraídas em -extractImages.submit=Extrair - - -#File to PDF -fileToPDF.title=Arquivo para PDF -fileToPDF.header=Converta qualquer arquivo para PDF -fileToPDF.credit=Este serviço usa LibreOffice e Unoconv para conversão de arquivos. -fileToPDF.supportedFileTypes=Os tipos de arquivo suportados devem incluir o abaixo, no entanto, para obter uma lista atualizada completa de formatos suportados, consulte a documentação do LibreOffice -fileToPDF.submit=Converter para PDF - - -#compress -compress.title=Comprimir -compress.header=Comprimir PDF -compress.credit=Este serviço usa o Ghostscript para compressão/otimização de PDF. -compress.selectText.1=Modo Manual - De 1 a 4 -compress.selectText.2=Nível de otimização: -compress.selectText.3=4 (Péssimo para imagens de texto) -compress.selectText.4=Modo automático - Auto ajusta a qualidade para obter o tamanho exato do PDF -compress.selectText.5=Tamanho esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB) -compress.submit=Comprimir - - -#Add image -addImage.title=Adicionar imagem -addImage.header=Adicionar imagem ao PDF -addImage.everyPage=Cada página? -addImage.upload=Adicionar imagem -addImage.submit=Adicionar imagem - - -#merge -merge.title=mesclar -merge.header=Mesclar vários PDFs (2+) -merge.submit=mesclar - -#pdfOrganiser -pdfOrganiser.title=Organizador de página -pdfOrganiser.header=Organizador de páginas PDF -pdfOrganiser.submit=Reorganizar páginas - -#multiTool -multiTool.title=Multiferramenta de PDF -multiTool.header=Multiferramenta de PDF - - -#pageRemover -pageRemover.title=Removedor de página -pageRemover.header=Removedor de página PDF -pageRemover.pagesToDelete=Páginas a serem excluídas (digite uma lista separada por vírgulas de números de página): -pageRemover.submit=Excluir páginas - -#rotate -rotate.title=Girar PDF -rotate.header=Girar PDF -rotate.selectAngle=Selecione o ângulo de rotação (em múltiplos de 90 graus): -rotate.submit=Girar - - - - -#merge -split.title=PDF dividido -split.header=PDF dividido -split.desc.1=Os números que você selecionar são o número da página na qual você deseja fazer uma divisão -split.desc.2=Assim, selecionar 1,3,7-8 dividiria um documento de 10 páginas em 6 PDFS separados com: -split.desc.3=Documento nº 1: página 1 -split.desc.4=Documento nº 2: páginas 2 e 3 -split.desc.5=Documento nº 3: Página 4, 5 e 6 -split.desc.6=Documento nº 4: página 7 -split.desc.7=Documento nº 5: página 8 -split.desc.8=Documento nº 6: páginas 9 e 10 -split.splitPages=Digite as páginas para dividir: -split.submit=Dividir - - -#merge -imageToPDF.title=Imagem para PDF -imageToPDF.header=Imagem para PDF -imageToPDF.submit=Converter -imageToPDF.selectText.1=Esticar para caber -imageToPDF.selectText.2=Girar PDF automaticamente -imageToPDF.selectText.3=Lógica de vários arquivos (Ativado apenas se estiver trabalhando com várias imagens) -imageToPDF.selectText.4=Mesclar em um único PDF -imageToPDF.selectText.5=Converter em PDFs separados - -#pdfToImage -pdfToImage.title=PDF para imagem -pdfToImage.header=PDF para imagem -pdfToImage.selectText=Formato de imagem -pdfToImage.singleOrMultiple=Tipo de resultado de imagem -pdfToImage.single=Imagem grande única -pdfToImage.multi=Imagens múltiplas -pdfToImage.colorType=tipo de cor -pdfToImage.color=Cor -pdfToImage.grey=Escala de cinza -pdfToImage.blackwhite=Preto e branco (pode perder dados!) -pdfToImage.submit=Converter - -#addPassword -addPassword.title=Adicionar senha -addPassword.header=Adicionar senha (Criptografar) -addPassword.selectText.1=Selecione PDF para criptografar -addPassword.selectText.2=Senha -addPassword.selectText.3=Comprimento da chave de criptografia -addPassword.selectText.4=Valores mais altos são mais fortes, mas valores mais baixos têm melhor compatibilidade. -addPassword.selectText.5=Permissões para definir -addPassword.selectText.6=Impedir a montagem do documento -addPassword.selectText.7=Impedir a extração de conteúdo -addPassword.selectText.8=Impedir a extração para acessibilidade -addPassword.selectText.9=Impedir o preenchimento do formulário -addPassword.selectText.10=Impedir modificação -addPassword.selectText.11=Impedir a modificação da anotação -addPassword.selectText.12=Impedir a impressão -addPassword.selectText.13=Impedir a impressão de formatos diferentes -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=criptografar - -#watermark -watermark.title=Adicione uma Marca d'água -watermark.header=Adicione uma Marca d'água -watermark.selectText.1=Selecione PDF para adicionar marca d'água a: -watermark.selectText.2=Texto da marca d'água: -watermark.selectText.3=Tamanho da fonte: -watermark.selectText.4=Rotação (0-360): -watermark.selectText.5=widthSpacer (espaço entre cada marca d'água horizontalmente): -watermark.selectText.6=heightSpacer (espaço entre cada marca d'água verticalmente): -watermark.selectText.7=Opacidade (0% - 100%): -watermark.submit=Adicione uma Marca d'água - -#remove-watermark -remove-watermark.title=Remover marca d'água -remove-watermark.header=Remover marca d'água -remove-watermark.selectText.1=Selecione PDF para remover a marca d'água de: -remove-watermark.selectText.2=Texto da marca d'água: -remove-watermark.submit=Remover marca d'água - -#Change permissions -permissions.title=Alterar permissões -permissions.header=Alterar permissões -permissions.warning=Aviso para que essas permissões sejam inalteráveis, é recomendável defini-las com uma senha por meio da página adicionar senha -permissions.selectText.1=Selecione o PDF para alterar as permissões -permissions.selectText.2=Permissões para definir -permissions.selectText.3=Impedir a montagem do documento -permissions.selectText.4=Impedir a extração de conteúdo -permissions.selectText.5=Impedir extração para acessibilidade -permissions.selectText.6=Impedir o preenchimento do formulário -permissions.selectText.7=Impedir modificações -permissions.selectText.8=Impedir a modificação da anotação -permissions.selectText.9=Impedir a impressão -permissions.selectText.10=Impedir a impressão de formatos diferentes -permissions.submit=Mudar - -#remove password -removePassword.title=Remover senha -removePassword.header=Remover senha (Descriptografar) -removePassword.selectText.1=Selecione PDF para descriptografar -removePassword.selectText.2=Senha -removePassword.submit=Remover - -changeMetadata.title=Alterar metadados -changeMetadata.header=Alterar metadados -changeMetadata.selectText.1=Edite as variáveis que deseja alterar -changeMetadata.selectText.2=Excluir todos os metadados -changeMetadata.selectText.3=Mostrar metadados personalizados: -changeMetadata.author=Autor: -changeMetadata.creationDate=Data de Criação (aaaa/MM/dd HH:mm:ss): -changeMetadata.creator=O Criador: -changeMetadata.keywords=Palavras-chave: -changeMetadata.modDate=Data de modificação (aaaa/MM/dd HH:mm:ss): -changeMetadata.producer=Produtor: -changeMetadata.subject=Assunto: -changeMetadata.title=Título: -changeMetadata.trapped=Encurralado: -changeMetadata.selectText.4=Outros metadados: -changeMetadata.selectText.5=Adicionar entrada de metadados personalizados -changeMetadata.submit=Mudar - -xlsToPdf.title=Excel para PDF -xlsToPdf.header=Excel para PDF -xlsToPdf.selectText.1=Selecione planilha Excel XLS ou XLSX para converter -xlsToPdf.convert=converter - - - - -pdfToPDFA.title=PDF para PDF/A -pdfToPDFA.header=PDF para PDF/A -pdfToPDFA.credit=Este serviço usa OCRmyPDF para conversão de PDF/A -pdfToPDFA.submit=Converter - - - -PDFToWord.title=PDF para Word -PDFToWord.header=PDF para Word -PDFToWord.selectText.1=Formato do arquivo de saída -PDFToWord.credit=Este serviço usa o LibreOffice para conversão de arquivos. -PDFToWord.submit=Converter - -PDFToPresentation.title=PDF para apresentação -PDFToPresentation.header=PDF para apresentação -PDFToPresentation.selectText.1=Formato do arquivo de saída -PDFToPresentation.credit=Este serviço usa o LibreOffice para conversão de arquivos. -PDFToPresentation.submit=Converter - - -PDFToText.title=PDF para Texto/RTF -PDFToText.header=PDF para Texto/RTF -PDFToText.selectText.1=Formato do arquivo de saída -PDFToText.credit=Este serviço usa o LibreOffice para conversão de arquivos. -PDFToText.submit=Converter - - -PDFToHTML.title=PDF para HTML -PDFToHTML.header=PDF para HTML -PDFToHTML.credit=Este serviço usa o LibreOffice para conversão de arquivos. -PDFToHTML.submit=Converter - -PDFToXML.title=PDF para XML -PDFToXML.header=PDF para XML -PDFToXML.credit=Este serviço usa o LibreOffice para conversão de arquivos. -PDFToXML.submit=Converter - - - - - - - - - - - - +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Selecione PDF(s) +multiPdfPrompt=Selecione PDFs (2+) +multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários +imgPrompt=Selecione a(s) imagem(ns) +genericSubmit=Enviar +processTimeWarning=Aviso: esse processo pode levar até um minuto, dependendo do tamanho do arquivo +pageOrderPrompt=Ordem das páginas (digite uma lista separada por vírgulas de números de página): +goToPage=Ir +true=Verdadeiro +false=Falso +unknown=Desconhecido +save=Salvar +close=Fechar +filesSelected=arquivos selecionados +noFavourites=Nenhum favorito adicionado +bored=Entediado esperando? +alphabet=Alfabeto +downloadPdf=baixar PDF +text=Texto +font=Fonte +selectFillter=-- Selecione -- +pageNum=Número de página +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Converter +navbar.security=Segurança +navbar.other=Outro +navbar.darkmode=Modo Escuro +navbar.pageOps=Operações de página +navbar.settings=Configurações + +############# +# SETTINGS # +############# +settings.title=Configurações +settings.update=Atualização disponível +settings.appVersion=Versão do aplicativo: +settings.downloadOption.title=Escolha a opção de download (para downloads não compactados de arquivo único): +settings.downloadOption.1=Abrir na mesma janela +settings.downloadOption.2=Abrir em nova janela +settings.downloadOption.3=⇬ Fazer download do arquivo +settings.zipThreshold=Compactar arquivos quando o número de arquivos baixados exceder + +############# +# HOME-PAGE # +############# +home.desc=Seu melhor utilitário para as necessidades de PDF. + + +home.multiTool.title=Multiferramenta de PDF +home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=mesclar +home.merge.desc=Mescle facilmente vários PDFs em um. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Dividir +home.split.desc=Dividir PDFs em vários documentos + +home.rotate.title=Girar +home.rotate.desc=Gire facilmente seus PDFs. + +home.imageToPdf.title=Imagem para PDF +home.imageToPdf.desc=Converta uma imagem (PNG, JPEG, GIF) em PDF. + +home.pdfToImage.title=PDF para imagem +home.pdfToImage.desc=Converta um PDF em uma imagem. (PNG, JPG, GIF) + +home.pdfOrganiser.title=Organizar +home.pdfOrganiser.desc=Remova/reorganize as páginas em qualquer ordem + +home.addImage.title=Adicionar imagem +home.addImage.desc=Adiciona uma imagem em um local definido no PDF (trabalho em andamento) + +home.watermark.title=Adicione uma Marca d'água +home.watermark.desc=Adicione uma marca d'água personalizada ao seu documento PDF. + +home.permissions.title=Alterar permissões +home.permissions.desc=Altere as permissões do seu documento PDF + +home.removePages.title=Remover +home.removePages.desc=Exclua as páginas indesejadas do seu documento PDF. + +home.addPassword.title=Adicionar senha +home.addPassword.desc=Criptografe seu documento PDF com uma senha. + +home.removePassword.title=Remover senha +home.removePassword.desc=Remova a proteção por senha do seu documento PDF. + +home.compressPdfs.title=Comprimir +home.compressPdfs.desc=Comprima PDFs para reduzir o tamanho do arquivo. + +home.changeMetadata.title=Alterar metadados +home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF + +home.fileToPDF.title=Converter arquivo para PDF +home.fileToPDF.desc=Converta praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) + +home.ocr.title=OCR / Varreduras de limpeza +home.ocr.desc=A limpeza verifica e detecta texto de imagens em um PDF e o adiciona novamente como texto. + +home.extractImages.title=Extrair imagens +home.extractImages.desc=Extrai todas as imagens de um PDF e as salva em zip + +home.pdfToPDFA.title=PDF para PDF/A +home.pdfToPDFA.desc=Converta PDF para PDF/A para armazenamento de longo prazo + +home.PDFToWord.title=PDF para Word +home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) + +home.PDFToPresentation.title=PDF para apresentação +home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP) + +home.PDFToText.title=PDF para Texto/RTF +home.PDFToText.desc=Converter PDF em formato de texto ou RTF + +home.PDFToHTML.title=PDF para HTML +home.PDFToHTML.desc=Converter PDF para o formato HTML + +home.PDFToXML.title=PDF para XML +home.PDFToXML.desc=Converter PDF para o formato XML + +home.ScannerImageSplit.title=Detectar/dividir fotos digitalizadas +home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma foto/PDF + +home.sign.title=Sinal +home.sign.desc=Adiciona assinatura ao PDF por desenho, texto ou imagem + +home.flatten.title=achatar +home.flatten.desc=Remova todos os elementos e formulários interativos de um PDF + +home.repair.title=Reparar +home.repair.desc=Tenta reparar um PDF corrompido/quebrado + +home.removeBlanks.title=Remover páginas em branco +home.removeBlanks.desc=Detecta e remove páginas em branco de um documento + +home.compare.title=Comparar +home.compare.desc=Compara e mostra as diferenças entre 2 documentos PDF + +home.certSign.title=Assinar com certificado +home.certSign.desc=Assina um PDF com um Certificado/Chave (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Assinatura de certificado +certSign.header=Assine um PDF com seu certificado (Trabalho em andamento) +certSign.selectPDF=Selecione um arquivo PDF para assinatura: +certSign.selectKey=Selecione seu arquivo de chave privada (formato PKCS#8, pode ser .pem ou .der): +certSign.selectCert=Selecione seu arquivo de certificado (formato X.509, pode ser .pem ou .der): +certSign.selectP12=Selecione seu arquivo de armazenamento de chave PKCS#12 (.p12 ou .pfx) (opcional, se fornecido, deve conter sua chave privada e certificado): +certSign.certType=tipo de certificado +certSign.password=Digite seu armazenamento de chave ou senha de chave privada (se houver): +certSign.showSig=Mostrar assinatura +certSign.reason=Razão +certSign.location=Localização +certSign.name=Nome +certSign.submit=Assinar PDF + + +#removeBlanks +removeBlanks.title=Remover espaços em branco +removeBlanks.header=Remover páginas em branco +removeBlanks.threshold=Limite: +removeBlanks.thresholdDesc=Limiar para determinar quão branco um pixel branco deve ser +removeBlanks.whitePercent=Porcentagem branca (%): +removeBlanks.whitePercentDesc=Porcentagem da página que deve ser branca para ser removida +removeBlanks.submit=Remover espaços em branco + + +#compare +compare.title=Comparar +compare.header=Comparar PDFs +compare.document.1=Documento 1 +compare.document.2=Documento 2 +compare.submit=Comparar + + +#sign +sign.title=Sinal +sign.header=Assinar PDFs +sign.upload=Enviar Imagem +sign.draw=Desenhar Assinatura +sign.text=Entrada de texto +sign.clear=Claro +sign.add=Adicionar + + +#repair +repair.title=Reparar +repair.header=Reparar PDFs +repair.submit=Reparar + + +#flatten +flatten.title=achatar +flatten.header=Achatar PDFs +flatten.submit=achatar + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Limite de Ângulo: +ScannerImageSplit.selectText.2=Define o ângulo absoluto mínimo necessário para que a imagem seja girada (padrão: 10). +ScannerImageSplit.selectText.3=Tolerância: +ScannerImageSplit.selectText.4=Determina o intervalo de variação de cor em torno da cor de fundo estimada (padrão: 30). +ScannerImageSplit.selectText.5=Área Mínima: +ScannerImageSplit.selectText.6=Define o limite mínimo de área para uma foto (padrão: 10000). +ScannerImageSplit.selectText.7=Área mínima de contorno: +ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para uma foto +ScannerImageSplit.selectText.9=Tamanho da Borda: +ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1). + + +#OCR +ocr.title=OCR / Limpeza de digitalização +ocr.header=Varreduras de limpeza / OCR (reconhecimento óptico de caracteres) +ocr.selectText.1=Selecione os idiomas que devem ser detectados no PDF (os listados são os atualmente detectados): +ocr.selectText.2=Produzir arquivo de texto contendo texto OCR ao lado do PDF com OCR +ocr.selectText.3=As páginas corretas foram digitalizadas em um ângulo inclinado girando-as de volta ao lugar +ocr.selectText.4=Limpe a página para que seja menos provável que o OCR encontre o texto no ruído de fundo. (Sem mudança de saída) +ocr.selectText.5=Limpe a página para que seja menos provável que o OCR encontre texto no ruído de fundo, mantendo a limpeza na saída. +ocr.selectText.6=Ignora as páginas que contêm texto interativo, apenas as páginas de OCR que são imagens +ocr.selectText.7=Forçar OCR, irá OCR Todas as páginas removendo todos os elementos de texto originais +ocr.selectText.8=Normal (será um erro se o PDF contiver texto) +ocr.selectText.9=Configurações adicionais +ocr.selectText.10=Modo OCR +ocr.selectText.11=Remova as imagens após o OCR (remove TODAS as imagens, útil apenas se fizer parte da etapa de conversão) +ocr.selectText.12=Tipo de renderização (avançado) +ocr.help=Por favor, leia esta documentação sobre como usar isso para outros idiomas e/ou não usar no docker +ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. +ocr.submit=Processar PDF com OCR + + +#extractImages +extractImages.title=Extrair Imagens +extractImages.header=Extrair Imagens +extractImages.selectText=Selecione o formato de imagem para converter as imagens extraídas em +extractImages.submit=Extrair + + +#File to PDF +fileToPDF.title=Arquivo para PDF +fileToPDF.header=Converta qualquer arquivo para PDF +fileToPDF.credit=Este serviço usa LibreOffice e Unoconv para conversão de arquivos. +fileToPDF.supportedFileTypes=Os tipos de arquivo suportados devem incluir o abaixo, no entanto, para obter uma lista atualizada completa de formatos suportados, consulte a documentação do LibreOffice +fileToPDF.submit=Converter para PDF + + +#compress +compress.title=Comprimir +compress.header=Comprimir PDF +compress.credit=Este serviço usa o Ghostscript para compressão/otimização de PDF. +compress.selectText.1=Modo Manual - De 1 a 4 +compress.selectText.2=Nível de otimização: +compress.selectText.3=4 (Péssimo para imagens de texto) +compress.selectText.4=Modo automático - Auto ajusta a qualidade para obter o tamanho exato do PDF +compress.selectText.5=Tamanho esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB) +compress.submit=Comprimir + + +#Add image +addImage.title=Adicionar imagem +addImage.header=Adicionar imagem ao PDF +addImage.everyPage=Cada página? +addImage.upload=Adicionar imagem +addImage.submit=Adicionar imagem + + +#merge +merge.title=mesclar +merge.header=Mesclar vários PDFs (2+) +merge.submit=mesclar + + +#pdfOrganiser +pdfOrganiser.title=Organizador de página +pdfOrganiser.header=Organizador de páginas PDF +pdfOrganiser.submit=Reorganizar páginas + + +#multiTool +multiTool.title=Multiferramenta de PDF +multiTool.header=Multiferramenta de PDF + + +#pageRemover +pageRemover.title=Removedor de página +pageRemover.header=Removedor de página PDF +pageRemover.pagesToDelete=Páginas a serem excluídas (digite uma lista separada por vírgulas de números de página): +pageRemover.submit=Excluir páginas + + +#rotate +rotate.title=Girar PDF +rotate.header=Girar PDF +rotate.selectAngle=Selecione o ângulo de rotação (em múltiplos de 90 graus): +rotate.submit=Girar + + +#merge +split.title=PDF dividido +split.header=PDF dividido +split.desc.1=Os números que você selecionar são o número da página na qual você deseja fazer uma divisão +split.desc.2=Assim, selecionar 1,3,7-8 dividiria um documento de 10 páginas em 6 PDFS separados com: +split.desc.3=Documento nº 1: página 1 +split.desc.4=Documento nº 2: páginas 2 e 3 +split.desc.5=Documento nº 3: Página 4, 5 e 6 +split.desc.6=Documento nº 4: página 7 +split.desc.7=Documento nº 5: página 8 +split.desc.8=Documento nº 6: páginas 9 e 10 +split.splitPages=Digite as páginas para dividir: +split.submit=Dividir + + +#merge +imageToPDF.title=Imagem para PDF +imageToPDF.header=Imagem para PDF +imageToPDF.submit=Converter +imageToPDF.selectText.1=Esticar para caber +imageToPDF.selectText.2=Girar PDF automaticamente +imageToPDF.selectText.3=Lógica de vários arquivos (Ativado apenas se estiver trabalhando com várias imagens) +imageToPDF.selectText.4=Mesclar em um único PDF +imageToPDF.selectText.5=Converter em PDFs separados + + +#pdfToImage +pdfToImage.title=PDF para imagem +pdfToImage.header=PDF para imagem +pdfToImage.selectText=Formato de imagem +pdfToImage.singleOrMultiple=Tipo de resultado de imagem +pdfToImage.single=Imagem grande única +pdfToImage.multi=Imagens múltiplas +pdfToImage.colorType=tipo de cor +pdfToImage.color=Cor +pdfToImage.grey=Escala de cinza +pdfToImage.blackwhite=Preto e branco (pode perder dados!) +pdfToImage.submit=Converter + + +#addPassword +addPassword.title=Adicionar senha +addPassword.header=Adicionar senha (Criptografar) +addPassword.selectText.1=Selecione PDF para criptografar +addPassword.selectText.2=Senha +addPassword.selectText.3=Comprimento da chave de criptografia +addPassword.selectText.4=Valores mais altos são mais fortes, mas valores mais baixos têm melhor compatibilidade. +addPassword.selectText.5=Permissões para definir +addPassword.selectText.6=Impedir a montagem do documento +addPassword.selectText.7=Impedir a extração de conteúdo +addPassword.selectText.8=Impedir a extração para acessibilidade +addPassword.selectText.9=Impedir o preenchimento do formulário +addPassword.selectText.10=Impedir modificação +addPassword.selectText.11=Impedir a modificação da anotação +addPassword.selectText.12=Impedir a impressão +addPassword.selectText.13=Impedir a impressão de formatos diferentes +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=criptografar + + +#watermark +watermark.title=Adicione uma Marca d'água +watermark.header=Adicione uma Marca d'água +watermark.selectText.1=Selecione PDF para adicionar marca d'água a: +watermark.selectText.2=Texto da marca d'água: +watermark.selectText.3=Tamanho da fonte: +watermark.selectText.4=Rotação (0-360): +watermark.selectText.5=widthSpacer (espaço entre cada marca d'água horizontalmente): +watermark.selectText.6=heightSpacer (espaço entre cada marca d'água verticalmente): +watermark.selectText.7=Opacidade (0% - 100%): +watermark.submit=Adicione uma Marca d'água + + +#remove-watermark +remove-watermark.title=Remover marca d'água +remove-watermark.header=Remover marca d'água +remove-watermark.selectText.1=Selecione PDF para remover a marca d'água de: +remove-watermark.selectText.2=Texto da marca d'água: +remove-watermark.submit=Remover marca d'água + + +#Change permissions +permissions.title=Alterar permissões +permissions.header=Alterar permissões +permissions.warning=Aviso para que essas permissões sejam inalteráveis, é recomendável defini-las com uma senha por meio da página adicionar senha +permissions.selectText.1=Selecione o PDF para alterar as permissões +permissions.selectText.2=Permissões para definir +permissions.selectText.3=Impedir a montagem do documento +permissions.selectText.4=Impedir a extração de conteúdo +permissions.selectText.5=Impedir extração para acessibilidade +permissions.selectText.6=Impedir o preenchimento do formulário +permissions.selectText.7=Impedir modificações +permissions.selectText.8=Impedir a modificação da anotação +permissions.selectText.9=Impedir a impressão +permissions.selectText.10=Impedir a impressão de formatos diferentes +permissions.submit=Mudar + + +#remove password +removePassword.title=Remover senha +removePassword.header=Remover senha (Descriptografar) +removePassword.selectText.1=Selecione PDF para descriptografar +removePassword.selectText.2=Senha +removePassword.submit=Remover + + +#changeMetadata +changeMetadata.title=Título: +changeMetadata.header=Alterar metadados +changeMetadata.selectText.1=Edite as variáveis que deseja alterar +changeMetadata.selectText.2=Excluir todos os metadados +changeMetadata.selectText.3=Mostrar metadados personalizados: +changeMetadata.author=Autor: +changeMetadata.creationDate=Data de Criação (aaaa/MM/dd HH:mm:ss): +changeMetadata.creator=O Criador: +changeMetadata.keywords=Palavras-chave: +changeMetadata.modDate=Data de modificação (aaaa/MM/dd HH:mm:ss): +changeMetadata.producer=Produtor: +changeMetadata.subject=Assunto: +changeMetadata.title=Título: +changeMetadata.trapped=Encurralado: +changeMetadata.selectText.4=Outros metadados: +changeMetadata.selectText.5=Adicionar entrada de metadados personalizados +changeMetadata.submit=Mudar + + +#xlsToPdf +xlsToPdf.title=Excel para PDF +xlsToPdf.header=Excel para PDF +xlsToPdf.selectText.1=Selecione planilha Excel XLS ou XLSX para converter +xlsToPdf.convert=converter + + +#pdfToPDFA +pdfToPDFA.title=PDF para PDF/A +pdfToPDFA.header=PDF para PDF/A +pdfToPDFA.credit=Este serviço usa OCRmyPDF para conversão de PDF/A +pdfToPDFA.submit=Converter + + +#PDFToWord +PDFToWord.title=PDF para Word +PDFToWord.header=PDF para Word +PDFToWord.selectText.1=Formato do arquivo de saída +PDFToWord.credit=Este serviço usa o LibreOffice para conversão de arquivos. +PDFToWord.submit=Converter + + +#PDFToPresentation +PDFToPresentation.title=PDF para apresentação +PDFToPresentation.header=PDF para apresentação +PDFToPresentation.selectText.1=Formato do arquivo de saída +PDFToPresentation.credit=Este serviço usa o LibreOffice para conversão de arquivos. +PDFToPresentation.submit=Converter + + +#PDFToText +PDFToText.title=PDF para Texto/RTF +PDFToText.header=PDF para Texto/RTF +PDFToText.selectText.1=Formato do arquivo de saída +PDFToText.credit=Este serviço usa o LibreOffice para conversão de arquivos. +PDFToText.submit=Converter + + +#PDFToHTML +PDFToHTML.title=PDF para HTML +PDFToHTML.header=PDF para HTML +PDFToHTML.credit=Este serviço usa o LibreOffice para conversão de arquivos. +PDFToHTML.submit=Converter + + +#PDFToXML +PDFToXML.title=PDF para XML +PDFToXML.header=PDF para XML +PDFToXML.credit=Este serviço usa o LibreOffice para conversão de arquivos. +PDFToXML.submit=Converter diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index a82a8d5c..ba2e534f 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -1,441 +1,615 @@ -########### -# Generic # -########### -# the direction that the language is written (ltr = left to right, rtl = right to left) -language.direction=ltr - -pdfPrompt=Selectează fișiere PDF -multiPdfPrompt=Selectează mai multe fișiere PDF (2+) -multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie -imgPrompt=Selectează imagini -genericSubmit=Trimite -processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului -pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină): -goToPage=Mergi la pagină -true=Adevărat -false=Fals -unknown=Necunoscut -save=Salvează -close=Închide -filesSelected=fișiere selectate -noFavourites=Niciun favorit adăugat -bored=Plictisit așteptând? -alphabet=Alfabet -############# -# HOME-PAGE # -############# -home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF. - -navbar.convert=Converteste -navbar.security=Securitate -navbar.other=Altele -navbar.darkmode=Mod întunecat -navbar.pageOps=Operații pe pagină - -home.multiTool.title=Instrument multiplu PDF -home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini - -home.merge.title=Unifică -home.merge.desc=Unifică cu ușurință mai multe fișiere PDF într-unul singur. - -home.split.title=Desparte -home.split.desc=Desparte fișierele PDF în mai multe documente. - -home.rotate.title=Rotește -home.rotate.desc=Rotește cu ușurință fișierele PDF. - -home.imageToPdf.title=Imagine în PDF -home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF. - -home.pdfToImage.title=PDF în Imagine -home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF). - -home.pdfOrganiser.title=Organizează -home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine - -home.addImage.title=Adaugă imagine -home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare) - -home.watermark.title=Adaugă Filigran -home.watermark.desc=Adaugă un filigran personalizat la documentul PDF. - -home.remove-watermark.title=Elimină Filigran -home.remove-watermark.desc=Elimină filigranele din documentul PDF. - -home.permissions.title=Schimbă permisiuni -home.permissions.desc=Schimbă permisiunile documentului PDF - -home.removePages.title=Elimină -home.removePages.desc=Șterge paginile nedorite din documentul PDF. - -home.addPassword.title=Adaugă Parolă -home.addPassword.desc=Criptează documentul PDF cu o parolă. -home.removePassword.title=Elimină Parola -home.removePassword.desc=Elimină protecția cu parolă din documentul PDF. -home.compressPdfs.title=Comprimă -home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor. -home.changeMetadata.title=Schimbă Metadatele -home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF. -home.fileToPDF.title=Convertește fișierul în PDF -home.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele). -home.ocr.title=OCR / Curățare scanări -home.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text. -home.extractImages.title=Extrage Imagini -home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip. -home.pdfToPDFA.title=PDF în PDF/A -home.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung. -home.PDFToWord.title=PDF în Word -home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT). -home.PDFToPresentation.title=PDF în Prezentare -home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP). -home.PDFToText.title=PDF în Text/RTF -home.PDFToText.desc=Convertește un document PDF în format Text sau RTF. -home.PDFToHTML.title=PDF în HTML -home.PDFToHTML.desc=Convertește un document PDF în format HTML. -home.PDFToXML.title=PDF în XML -home.PDFToXML.desc=Convertește un document PDF în format XML. -home.ScannerImageSplit.title=Detectează/Împarte poze scanate -home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF. -home.sign.title=Semnează -home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine. -home.flatten.title=Nivelare -home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF. -home.repair.title=Repară -home.repair.desc=Încearcă să repare un document PDF corupt/defect. -home.removeBlanks.title=Elimină pagini goale -home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document. -home.compare.title=Compară -home.compare.desc=Compară și arată diferențele dintre 2 documente PDF. - -home.certSign.title=Semnare cu certificat -home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Descarcă PDF -text=Text -font=Font -selectFillter=-- Selectează -- -pageNum=Numărul paginii - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title = Semnare certificat -certSign.header = Semnează un fișier PDF cu certificatul tău (În curs de desfășurare) -certSign.selectPDF = Selectează un fișier PDF pentru semnare: -certSign.selectKey = Selectează fișierul cheie privată (format PKCS#8, poate fi .pem sau .der): -certSign.selectCert = Selectează fișierul de certificat (format X.509, poate fi .pem sau .der): -certSign.selectP12 = Selectează fișierul de stocare cheie PKCS#12 (.p12 sau .pfx) (Opțional, dacă este furnizat, ar trebui să conțină cheia privată și certificatul tău): -certSign.certType = Tipul certificatului -certSign.password = Introdu parola pentru stocarea cheie sau cheia privată (dacă există): -certSign.showSig = Afișează semnătura -certSign.reason = Motivul -certSign.location = Locația -certSign.name = Numele - -certSign.submit = Semnează PDF - -removeBlanks.title=Elimină pagini goale -removeBlanks.header=Elimină pagini goale -removeBlanks.threshold=Prag: -removeBlanks.thresholdDesc=Prag pentru determinarea cât de alb trebuie să fie un pixel alb -removeBlanks.whitePercent=Procent alb (%): -removeBlanks.whitePercentDesc=Procentul paginii care trebuie să fie alb pentru a fi eliminată -removeBlanks.submit=Elimină pagini goale -compare.title=Compară -compare.header=Compară PDF-uri -compare.document.1=Document 1 -compare.document.2=Document 2 -compare.submit=Compară - -sign.title=Semnează -sign.header=Semnează documente PDF -sign.upload=Încarcă Imaginea -sign.draw=Desenează Semnătura -sign.text=Introdu Textul -sign.clear=Curăță -sign.add=Adaugă - -repair.title=Repară -repair.header=Repară documente PDF -repair.submit=Repară - -flatten.title=Nivelare -flatten.header=Nivelează documente PDF -flatten.submit=Nivelează - -ScannerImageSplit.selectText.1=Prag unghi: -ScannerImageSplit.selectText.2=Stabilește unghiul absolut minim necesar pentru ca imaginea să fie rotită (implicit: 5). -ScannerImageSplit.selectText.3=Toleranță: -ScannerImageSplit.selectText.4=Determină intervalul de variație a culorii în jurul culorii de fundal estimate (implicit: 20). -ScannerImageSplit.selectText.5=Arie minimă: -ScannerImageSplit.selectText.6=Stabilește pragul minim de arie pentru o fotografie (implicit: 8000). -ScannerImageSplit.selectText.7=Arie minimă a conturului: -ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pentru o fotografie. -ScannerImageSplit.selectText.9=Mărimea marginii: -ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1). - -navbar.settings=Setări -settings.title=Setări -settings.update=Actualizare disponibilă -settings.appVersion=Versiune aplicație: -settings.downloadOption.title=Alege opțiunea de descărcare (pentru descărcarea unui singur fișier non-zip): -settings.downloadOption.1=Deschide în aceeași fereastră -settings.downloadOption.2=Deschide într-o fereastră nouă -settings.downloadOption.3=Descarcă fișierul -settings.zipThreshold=Împachetează fișierele când numărul de fișiere descărcate depășește - - - - - -#OCR -ocr.title=OCR / Curățare scanare -ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor) -ocr.selectText.1=Selectați limbile care trebuie detectate în PDF (Cele listate sunt cele detectate în prezent): -ocr.selectText.2=Produceți un fișier text care conține textul OCR împreună cu PDF-ul OCR -ocr.selectText.3=Corectați paginile care au fost scanate în unghi înclinat prin rotirea lor în poziție corectă -ocr.selectText.4=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal. (Nu se schimbă rezultatul) -ocr.selectText.5=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal, menține curățarea în rezultat. -ocr.selectText.6=Ignorați paginile care conțin text interactiv, OCR-ul se aplică doar paginilor care sunt imagini -ocr.selectText.7=Forțează OCR-ul, va aplica OCR pe fiecare pagină, înlăturând toate elementele de text originale -ocr.selectText.8=Normal (Va genera eroare dacă PDF-ul conține text) -ocr.selectText.9=Setări suplimentare -ocr.selectText.10=Mod OCR -ocr.selectText.11=Elimină imaginile după OCR (Elimină TOATE imaginile, util doar în etapa de conversie) -ocr.selectText.12=Tip de redare (Avansat) -ocr.help=Citiți documentația pentru a afla cum să utilizați acest serviciu pentru alte limbi și/sau în afara mediului Docker -ocr.credit=Acest serviciu utilizează OCRmyPDF și Tesseract pentru OCR. -ocr.submit=Procesează PDF-ul cu OCR - -extractImages.title=Extrage Imagini -extractImages.header=Extrage Imagini -extractImages.selectText=Selectați formatul imaginii în care să se convertească imaginile extrase -extractImages.submit=Extrage - - -#File to PDF -fileToPDF.title=Fișier în PDF -fileToPDF.header=Convertiți orice fișier în PDF -fileToPDF.credit=Acest serviciu utilizează LibreOffice și Unoconv pentru conversia fișierelor. -fileToPDF.supportedFileTypes=Tipurile de fișiere suportate ar trebui să includă cele de mai jos. Pentru o listă completă și actualizată a formatelor suportate, consultați documentația LibreOffice. -fileToPDF.submit=Convertiți în PDF - - -#compress -compress.title=Comprimare -compress.header=Comprimare PDF -compress.credit=Acest serviciu utilizează OCRmyPDF pentru comprimarea/optimalizarea PDF-urilor. -compress.selectText.1=Nivel de optimizare: -compress.selectText.2=0 (Fără optimizare) -compress.selectText.3=1 (Implicit, optimizare fără pierdere) -compress.selectText.4=2 (Optimizare cu pierdere) -compress.selectText.5=3 (Optimizare cu pierdere, mai agresivă) -compress.selectText.6=Activare vizualizare rapidă pe web (linearizare PDF) -compress.selectText.7=Activare codificare JBIG2 cu pierdere -compress.submit=Comprimare - -#Add image -addImage.title=Adăugare imagine -addImage.header=Adăugare imagine în PDF -addImage.everyPage=Pe fiecare pagină? -addImage.upload=Adăugare imagine -addImage.submit=Adăugare imagine - -#merge -merge.title=Unire -merge.header=Unirea mai multor PDF-uri (2+) -merge.submit=Unire - -#pdfOrganiser -pdfOrganiser.title=Organizator de pagini -pdfOrganiser.header=Organizator de pagini PDF -pdfOrganiser.submit=Rearanjați paginile - -#multiTool -multiTool.title=Instrument PDF multiplu -multiTool.header=Instrument PDF multiplu - -#pageRemover -pageRemover.title=Înlăturare pagini -pageRemover.header=Înlăturare pagini din PDF -pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă): -pageRemover.submit=Ștergere pagini - -#rotate -rotate.title=Rotește PDF -rotate.header=Rotește PDF -rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de grade): -rotate.submit=Rotește - -#merge -split.title=Împarte PDF -split.header=Împarte PDF -split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți -split.desc.2=Prin urmare, selectând 1,3,7-8, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel: -split.desc.3=Documentul #1: Pagina 1 -split.desc.4=Documentul #2: Paginile 2 și 3 -split.desc.5=Documentul #3: Paginile 4, 5 și 6 -split.desc.6=Documentul #4: Pagina 7 -split.desc.7=Documentul #5: Pagina 8 -split.desc.8=Documentul #6: Paginile 9 și 10 -split.splitPages=Introduceți paginile pe care să le împărțiți: -split.submit=Împarte - - -#merge -imageToPDF.title=Imagine în PDF -imageToPDF.header=Imagine în PDF -imageToPDF.submit=Convertă -imageToPDF.selectText.1=Redimensionare pentru a se potrivi -imageToPDF.selectText.2=Rotire automată a PDF-ului -imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini) -imageToPDF.selectText.4=Unifică într-un singur PDF -imageToPDF.selectText.5=Convertă în PDF-uri separate - -#pdfToImage -pdfToImage.title=PDF în Imagine -pdfToImage.header=PDF în Imagine -pdfToImage.selectText=Format imagine -pdfToImage.singleOrMultiple=Tip rezultat imagine -pdfToImage.single=O singură imagine mare -pdfToImage.multi=Mai multe imagini -pdfToImage.colorType=Tip culoare -pdfToImage.color=Culoare -pdfToImage.grey=Scală de gri -pdfToImage.blackwhite=Alb și negru (Poate pierde date!) -pdfToImage.submit=Convertă - -#addPassword -addPassword.title=Adăugați parolă -addPassword.header=Adăugați o parolă (Criptare) -addPassword.selectText.1=Selectați PDF-ul pentru criptare -addPassword.selectText.2=Parolă -addPassword.selectText.3=Lungime cheie de criptare -addPassword.selectText.4=Valori mai mari sunt mai puternice, dar valorile mai mici au o compatibilitate mai bună. -addPassword.selectText.5=Permisiuni de setare -addPassword.selectText.6=Preveniți asamblarea documentului -addPassword.selectText.7=Preveniți extragerea conținutului -addPassword.selectText.8=Preveniți extragerea pentru accesibilitate -addPassword.selectText.9=Preveniți completarea formularului -addPassword.selectText.10=Preveniți modificarea -addPassword.selectText.11=Preveniți modificarea adnotărilor -addPassword.selectText.12=Preveniți tipărirea -addPassword.selectText.13=Preveniți tipărirea în formate diferite -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Criptare - -#watermark -watermark.title=Adăugați Filigran -watermark.header=Adăugați Filigran -watermark.selectText.1=Selectați PDF-ul la care să adăugați filigranul: -watermark.selectText.2=Textul Filigranului: -watermark.selectText.3=Mărimea fontului: -watermark.selectText.4=Rotire (0-360): -watermark.selectText.5=widthSpacer (Spațiu între fiecare filigran pe orizontală): -watermark.selectText.6=heightSpacer (Spațiu între fiecare filigran pe verticală): -watermark.selectText.7=Opacitate (0% - 100%): -watermark.submit=Adăugați Filigran - -#remove-watermark -remove-watermark.title=Eliminați Filigran -remove-watermark.header=Eliminați Filigran -remove-watermark.selectText.1=Selectați PDF-ul de la care să eliminați filigranul: -remove-watermark.selectText.2=Textul Filigranului: -remove-watermark.submit=Eliminați Filigran - -#Change permissions -permissions.title=Schimbați Permisiunile -permissions.header=Schimbați Permisiunile -permissions.warning=Pentru a face aceste permisiuni neschimbabile, se recomandă să le setați cu o parolă prin intermediul paginii de adăugare a parolei -permissions.selectText.1=Selectați PDF-ul pentru a schimba permisiunile -permissions.selectText.2=Permisiunile de setat -permissions.selectText.3=Preveniți asamblarea documentului -permissions.selectText.4=Preveniți extragerea conținutului -permissions.selectText.5=Preveniți extragerea pentru accesibilitate -permissions.selectText.6=Preveniți completarea formularului -permissions.selectText.7=Preveniți modificarea -permissions.selectText.8=Preveniți modificarea adnotărilor -permissions.selectText.9=Preveniți tipărirea -permissions.selectText.10=Preveniți tipărirea în formate diferite -permissions.submit=Schimbare - -#remove password -removePassword.title=Eliminați parola -removePassword.header=Eliminați parola (Decodificați) -removePassword.selectText.1=Selectați PDF-ul pentru decodificare -removePassword.selectText.2=Parolă -removePassword.submit=Eliminați - -changeMetadata.title=Schimbați Metadatele -changeMetadata.header=Schimbați Metadatele -changeMetadata.selectText.1=Vă rugăm să editați variabilele pe care doriți să le schimbați -changeMetadata.selectText.2=Ștergeți toate metadatele -changeMetadata.selectText.3=Afișați Metadatele Personalizate: -changeMetadata.author=Autor: -changeMetadata.creationDate=Data creării (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Creator: -changeMetadata.keywords=Cuvinte cheie: -changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Producător: -changeMetadata.subject=Subiect: -changeMetadata.title=Titlu: -changeMetadata.trapped=Blocat: -changeMetadata.selectText.4=Alte Metadate: -changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate -changeMetadata.submit=Schimbare - -xlsToPdf.title=Excel to PDF -xlsToPdf.header=Excel to PDF -xlsToPdf.selectText.1=Selectați fișierul Excel XLS sau XLSX pentru a converti -xlsToPdf.convert=convert - -pdfToPDFA.title=PDF către PDF/A -pdfToPDFA.header=PDF către PDF/A -pdfToPDFA.credit=Acest serviciu utilizează OCRmyPDF pentru conversia în PDF/A -pdfToPDFA.submit=Convert - -PDFToWord.title=PDF către Word -PDFToWord.header=PDF către Word -PDFToWord.selectText.1=Format fișier de ieșire -PDFToWord.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToWord.submit=Convert - -PDFToPresentation.title=PDF către Prezentare -PDFToPresentation.header=PDF către Prezentare -PDFToPresentation.selectText.1=Format fișier de ieșire -PDFToPresentation.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToPresentation.submit=Convert - -PDFToText.title=PDF către Text/RTF -PDFToText.header=PDF către Text/RTF -PDFToText.selectText.1=Format fișier de ieșire -PDFToText.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToText.submit=Convert - -PDFToHTML.title=PDF către HTML -PDFToHTML.header=PDF către HTML -PDFToHTML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToHTML.submit=Convert - -PDFToXML.title=PDF către XML -PDFToXML.header=PDF către XML -PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. -PDFToXML.submit=Convert \ No newline at end of file +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Selectează fișiere PDF +multiPdfPrompt=Selectează mai multe fișiere PDF (2+) +multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie +imgPrompt=Selectează imagini +genericSubmit=Trimite +processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului +pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină): +goToPage=Mergi la pagină +true=Adevărat +false=Fals +unknown=Necunoscut +save=Salvează +close=Închide +filesSelected=fișiere selectate +noFavourites=Niciun favorit adăugat +bored=Plictisit așteptând? +alphabet=Alfabet +downloadPdf=Descarcă PDF +text=Text +font=Font +selectFillter=-- Selectează -- +pageNum=Numărul paginii +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Converteste +navbar.security=Securitate +navbar.other=Altele +navbar.darkmode=Mod întunecat +navbar.pageOps=Operații pe pagină +navbar.settings=Setări + +############# +# SETTINGS # +############# +settings.title=Setări +settings.update=Actualizare disponibilă +settings.appVersion=Versiune aplicație: +settings.downloadOption.title=Alege opțiunea de descărcare (pentru descărcarea unui singur fișier non-zip): +settings.downloadOption.1=Deschide în aceeași fereastră +settings.downloadOption.2=Deschide într-o fereastră nouă +settings.downloadOption.3=Descarcă fișierul +settings.zipThreshold=Împachetează fișierele când numărul de fișiere descărcate depășește + +############# +# HOME-PAGE # +############# +home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale legate de fișiere PDF. + + +home.multiTool.title=Instrument multiplu PDF +home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Unifică +home.merge.desc=Unifică cu ușurință mai multe fișiere PDF într-unul singur. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Desparte +home.split.desc=Desparte fișierele PDF în mai multe documente. + +home.rotate.title=Rotește +home.rotate.desc=Rotește cu ușurință fișierele PDF. + +home.imageToPdf.title=Imagine în PDF +home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF. + +home.pdfToImage.title=PDF în Imagine +home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF). + +home.pdfOrganiser.title=Organizează +home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine + +home.addImage.title=Adaugă imagine +home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare) + +home.watermark.title=Adaugă Filigran +home.watermark.desc=Adaugă un filigran personalizat la documentul PDF. + +home.permissions.title=Schimbă permisiuni +home.permissions.desc=Schimbă permisiunile documentului PDF + +home.removePages.title=Elimină +home.removePages.desc=Șterge paginile nedorite din documentul PDF. + +home.addPassword.title=Adaugă Parolă +home.addPassword.desc=Criptează documentul PDF cu o parolă. + +home.removePassword.title=Elimină Parola +home.removePassword.desc=Elimină protecția cu parolă din documentul PDF. + +home.compressPdfs.title=Comprimă +home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor. + +home.changeMetadata.title=Schimbă Metadatele +home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF. + +home.fileToPDF.title=Convertește fișierul în PDF +home.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele). + +home.ocr.title=OCR / Curățare scanări +home.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text. + +home.extractImages.title=Extrage Imagini +home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip. + +home.pdfToPDFA.title=PDF în PDF/A +home.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung. + +home.PDFToWord.title=PDF în Word +home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT). + +home.PDFToPresentation.title=PDF în Prezentare +home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP). + +home.PDFToText.title=PDF în Text/RTF +home.PDFToText.desc=Convertește un document PDF în format Text sau RTF. + +home.PDFToHTML.title=PDF în HTML +home.PDFToHTML.desc=Convertește un document PDF în format HTML. + +home.PDFToXML.title=PDF în XML +home.PDFToXML.desc=Convertește un document PDF în format XML. + +home.ScannerImageSplit.title=Detectează/Împarte poze scanate +home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF. + +home.sign.title=Semnează +home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine. + +home.flatten.title=Nivelare +home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF. + +home.repair.title=Repară +home.repair.desc=Încearcă să repare un document PDF corupt/defect. + +home.removeBlanks.title=Elimină pagini goale +home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document. + +home.compare.title=Compară +home.compare.desc=Compară și arată diferențele dintre 2 documente PDF. + +home.certSign.title=Semnare cu certificat +home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Semnare certificat +certSign.header=Semnează un fișier PDF cu certificatul tău (În curs de desfășurare) +certSign.selectPDF=Selectează un fișier PDF pentru semnare: +certSign.selectKey=Selectează fișierul cheie privată (format PKCS#8, poate fi .pem sau .der): +certSign.selectCert=Selectează fișierul de certificat (format X.509, poate fi .pem sau .der): +certSign.selectP12=Selectează fișierul de stocare cheie PKCS#12 (.p12 sau .pfx) (Opțional, dacă este furnizat, ar trebui să conțină cheia privată și certificatul tău): +certSign.certType=Tipul certificatului +certSign.password=Introdu parola pentru stocarea cheie sau cheia privată (dacă există): +certSign.showSig=Afișează semnătura +certSign.reason=Motivul +certSign.location=Locația +certSign.name=Numele +certSign.submit=Semnează PDF + + +#removeBlanks +removeBlanks.title=Elimină pagini goale +removeBlanks.header=Elimină pagini goale +removeBlanks.threshold=Prag: +removeBlanks.thresholdDesc=Prag pentru determinarea cât de alb trebuie să fie un pixel alb +removeBlanks.whitePercent=Procent alb (%): +removeBlanks.whitePercentDesc=Procentul paginii care trebuie să fie alb pentru a fi eliminată +removeBlanks.submit=Elimină pagini goale + + +#compare +compare.title=Compară +compare.header=Compară PDF-uri +compare.document.1=Document 1 +compare.document.2=Document 2 +compare.submit=Compară + + +#sign +sign.title=Semnează +sign.header=Semnează documente PDF +sign.upload=Încarcă Imaginea +sign.draw=Desenează Semnătura +sign.text=Introdu Textul +sign.clear=Curăță +sign.add=Adaugă + + +#repair +repair.title=Repară +repair.header=Repară documente PDF +repair.submit=Repară + + +#flatten +flatten.title=Nivelare +flatten.header=Nivelează documente PDF +flatten.submit=Nivelează + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Prag unghi: +ScannerImageSplit.selectText.2=Stabilește unghiul absolut minim necesar pentru ca imaginea să fie rotită (implicit: 5). +ScannerImageSplit.selectText.3=Toleranță: +ScannerImageSplit.selectText.4=Determină intervalul de variație a culorii în jurul culorii de fundal estimate (implicit: 20). +ScannerImageSplit.selectText.5=Arie minimă: +ScannerImageSplit.selectText.6=Stabilește pragul minim de arie pentru o fotografie (implicit: 8000). +ScannerImageSplit.selectText.7=Arie minimă a conturului: +ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pentru o fotografie. +ScannerImageSplit.selectText.9=Mărimea marginii: +ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1). + + +#OCR +ocr.title=OCR / Curățare scanare +ocr.header=Curățare scanări / OCR (Recunoaștere optică a caracterelor) +ocr.selectText.1=Selectați limbile care trebuie detectate în PDF (Cele listate sunt cele detectate în prezent): +ocr.selectText.2=Produceți un fișier text care conține textul OCR împreună cu PDF-ul OCR +ocr.selectText.3=Corectați paginile care au fost scanate în unghi înclinat prin rotirea lor în poziție corectă +ocr.selectText.4=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal. (Nu se schimbă rezultatul) +ocr.selectText.5=Curățați pagina astfel încât să fie mai puțin probabil ca OCR-ul să găsească text în zgomotul de fundal, menține curățarea în rezultat. +ocr.selectText.6=Ignorați paginile care conțin text interactiv, OCR-ul se aplică doar paginilor care sunt imagini +ocr.selectText.7=Forțează OCR-ul, va aplica OCR pe fiecare pagină, înlăturând toate elementele de text originale +ocr.selectText.8=Normal (Va genera eroare dacă PDF-ul conține text) +ocr.selectText.9=Setări suplimentare +ocr.selectText.10=Mod OCR +ocr.selectText.11=Elimină imaginile după OCR (Elimină TOATE imaginile, util doar în etapa de conversie) +ocr.selectText.12=Tip de redare (Avansat) +ocr.help=Citiți documentația pentru a afla cum să utilizați acest serviciu pentru alte limbi și/sau în afara mediului Docker +ocr.credit=Acest serviciu utilizează OCRmyPDF și Tesseract pentru OCR. +ocr.submit=Procesează PDF-ul cu OCR + + +#extractImages +extractImages.title=Extrage Imagini +extractImages.header=Extrage Imagini +extractImages.selectText=Selectați formatul imaginii în care să se convertească imaginile extrase +extractImages.submit=Extrage + + +#File to PDF +fileToPDF.title=Fișier în PDF +fileToPDF.header=Convertiți orice fișier în PDF +fileToPDF.credit=Acest serviciu utilizează LibreOffice și Unoconv pentru conversia fișierelor. +fileToPDF.supportedFileTypes=Tipurile de fișiere suportate ar trebui să includă cele de mai jos. Pentru o listă completă și actualizată a formatelor suportate, consultați documentația LibreOffice. +fileToPDF.submit=Convertiți în PDF + + +#compress +compress.title=Comprimare +compress.header=Comprimare PDF +compress.credit=Acest serviciu utilizează OCRmyPDF pentru comprimarea/optimalizarea PDF-urilor. +compress.selectText.1=Nivel de optimizare: +compress.selectText.2=0 (Fără optimizare) +compress.selectText.3=1 (Implicit, optimizare fără pierdere) +compress.selectText.4=2 (Optimizare cu pierdere) +compress.selectText.5=3 (Optimizare cu pierdere, mai agresivă) +compress.submit=Comprimare + + +#Add image +addImage.title=Adăugare imagine +addImage.header=Adăugare imagine în PDF +addImage.everyPage=Pe fiecare pagină? +addImage.upload=Adăugare imagine +addImage.submit=Adăugare imagine + + +#merge +merge.title=Unire +merge.header=Unirea mai multor PDF-uri (2+) +merge.submit=Unire + + +#pdfOrganiser +pdfOrganiser.title=Organizator de pagini +pdfOrganiser.header=Organizator de pagini PDF +pdfOrganiser.submit=Rearanjați paginile + + +#multiTool +multiTool.title=Instrument PDF multiplu +multiTool.header=Instrument PDF multiplu + + +#pageRemover +pageRemover.title=Înlăturare pagini +pageRemover.header=Înlăturare pagini din PDF +pageRemover.pagesToDelete=Pagini de șters (Introduceți o listă de numere de pagini separate prin virgulă): +pageRemover.submit=Ștergere pagini + + +#rotate +rotate.title=Rotește PDF +rotate.header=Rotește PDF +rotate.selectAngle=Selectați un unghi de rotație (în multiplicate de 90 de grade): +rotate.submit=Rotește + + +#merge +split.title=Împarte PDF +split.header=Împarte PDF +split.desc.1=Numerele pe care le selectați reprezintă numărul paginii pe care doriți să o împărțiți +split.desc.2=Prin urmare, selectând 1,3,7-8, un document cu 10 pagini va fi împărțit în 6 PDF-uri separate, astfel: +split.desc.3=Documentul #1: Pagina 1 +split.desc.4=Documentul #2: Paginile 2 și 3 +split.desc.5=Documentul #3: Paginile 4, 5 și 6 +split.desc.6=Documentul #4: Pagina 7 +split.desc.7=Documentul #5: Pagina 8 +split.desc.8=Documentul #6: Paginile 9 și 10 +split.splitPages=Introduceți paginile pe care să le împărțiți: +split.submit=Împarte + + +#merge +imageToPDF.title=Imagine în PDF +imageToPDF.header=Imagine în PDF +imageToPDF.submit=Convertă +imageToPDF.selectText.1=Redimensionare pentru a se potrivi +imageToPDF.selectText.2=Rotire automată a PDF-ului +imageToPDF.selectText.3=Logica pentru mai multe fișiere (activată numai dacă se lucrează cu mai multe imagini) +imageToPDF.selectText.4=Unifică într-un singur PDF +imageToPDF.selectText.5=Convertă în PDF-uri separate + + +#pdfToImage +pdfToImage.title=PDF în Imagine +pdfToImage.header=PDF în Imagine +pdfToImage.selectText=Format imagine +pdfToImage.singleOrMultiple=Tip rezultat imagine +pdfToImage.single=O singură imagine mare +pdfToImage.multi=Mai multe imagini +pdfToImage.colorType=Tip culoare +pdfToImage.color=Culoare +pdfToImage.grey=Scală de gri +pdfToImage.blackwhite=Alb și negru (Poate pierde date!) +pdfToImage.submit=Convertă + + +#addPassword +addPassword.title=Adăugați parolă +addPassword.header=Adăugați o parolă (Criptare) +addPassword.selectText.1=Selectați PDF-ul pentru criptare +addPassword.selectText.2=Parolă +addPassword.selectText.3=Lungime cheie de criptare +addPassword.selectText.4=Valori mai mari sunt mai puternice, dar valorile mai mici au o compatibilitate mai bună. +addPassword.selectText.5=Permisiuni de setare +addPassword.selectText.6=Preveniți asamblarea documentului +addPassword.selectText.7=Preveniți extragerea conținutului +addPassword.selectText.8=Preveniți extragerea pentru accesibilitate +addPassword.selectText.9=Preveniți completarea formularului +addPassword.selectText.10=Preveniți modificarea +addPassword.selectText.11=Preveniți modificarea adnotărilor +addPassword.selectText.12=Preveniți tipărirea +addPassword.selectText.13=Preveniți tipărirea în formate diferite +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Criptare + + +#watermark +watermark.title=Adăugați Filigran +watermark.header=Adăugați Filigran +watermark.selectText.1=Selectați PDF-ul la care să adăugați filigranul: +watermark.selectText.2=Textul Filigranului: +watermark.selectText.3=Mărimea fontului: +watermark.selectText.4=Rotire (0-360): +watermark.selectText.5=widthSpacer (Spațiu între fiecare filigran pe orizontală): +watermark.selectText.6=heightSpacer (Spațiu între fiecare filigran pe verticală): +watermark.selectText.7=Opacitate (0% - 100%): +watermark.submit=Adăugați Filigran + + +#remove-watermark +remove-watermark.title=Eliminați Filigran +remove-watermark.header=Eliminați Filigran +remove-watermark.selectText.1=Selectați PDF-ul de la care să eliminați filigranul: +remove-watermark.selectText.2=Textul Filigranului: +remove-watermark.submit=Eliminați Filigran + + +#Change permissions +permissions.title=Schimbați Permisiunile +permissions.header=Schimbați Permisiunile +permissions.warning=Pentru a face aceste permisiuni neschimbabile, se recomandă să le setați cu o parolă prin intermediul paginii de adăugare a parolei +permissions.selectText.1=Selectați PDF-ul pentru a schimba permisiunile +permissions.selectText.2=Permisiunile de setat +permissions.selectText.3=Preveniți asamblarea documentului +permissions.selectText.4=Preveniți extragerea conținutului +permissions.selectText.5=Preveniți extragerea pentru accesibilitate +permissions.selectText.6=Preveniți completarea formularului +permissions.selectText.7=Preveniți modificarea +permissions.selectText.8=Preveniți modificarea adnotărilor +permissions.selectText.9=Preveniți tipărirea +permissions.selectText.10=Preveniți tipărirea în formate diferite +permissions.submit=Schimbare + + +#remove password +removePassword.title=Eliminați parola +removePassword.header=Eliminați parola (Decodificați) +removePassword.selectText.1=Selectați PDF-ul pentru decodificare +removePassword.selectText.2=Parolă +removePassword.submit=Eliminați + + +#changeMetadata +changeMetadata.title=Titlu: +changeMetadata.header=Schimbați Metadatele +changeMetadata.selectText.1=Vă rugăm să editați variabilele pe care doriți să le schimbați +changeMetadata.selectText.2=Ștergeți toate metadatele +changeMetadata.selectText.3=Afișați Metadatele Personalizate: +changeMetadata.author=Autor: +changeMetadata.creationDate=Data creării (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Creator: +changeMetadata.keywords=Cuvinte cheie: +changeMetadata.modDate=Data modificării (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Producător: +changeMetadata.subject=Subiect: +changeMetadata.title=Titlu: +changeMetadata.trapped=Blocat: +changeMetadata.selectText.4=Alte Metadate: +changeMetadata.selectText.5=Adăugați Intrare Metadate Personalizate +changeMetadata.submit=Schimbare + + +#xlsToPdf +xlsToPdf.title=Excel to PDF +xlsToPdf.header=Excel to PDF +xlsToPdf.selectText.1=Selectați fișierul Excel XLS sau XLSX pentru a converti +xlsToPdf.convert=convert + + +#pdfToPDFA +pdfToPDFA.title=PDF către PDF/A +pdfToPDFA.header=PDF către PDF/A +pdfToPDFA.credit=Acest serviciu utilizează OCRmyPDF pentru conversia în PDF/A +pdfToPDFA.submit=Convert + + +#PDFToWord +PDFToWord.title=PDF către Word +PDFToWord.header=PDF către Word +PDFToWord.selectText.1=Format fișier de ieșire +PDFToWord.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToWord.submit=Convert + + +#PDFToPresentation +PDFToPresentation.title=PDF către Prezentare +PDFToPresentation.header=PDF către Prezentare +PDFToPresentation.selectText.1=Format fișier de ieșire +PDFToPresentation.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToPresentation.submit=Convert + + +#PDFToText +PDFToText.title=PDF către Text/RTF +PDFToText.header=PDF către Text/RTF +PDFToText.selectText.1=Format fișier de ieșire +PDFToText.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToText.submit=Convert + + +#PDFToHTML +PDFToHTML.title=PDF către HTML +PDFToHTML.header=PDF către HTML +PDFToHTML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToHTML.submit=Convert + + +#PDFToXML +PDFToXML.title=PDF către XML +PDFToXML.header=PDF către XML +PDFToXML.credit=Acest serviciu utilizează LibreOffice pentru conversia fișierului. +PDFToXML.submit=Convert diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 7eab40d2..dedae700 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -1,485 +1,615 @@ -########### -# 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=Порядок страниц (введите список номеров страниц через запятую): -goToPage=Вперед -true=Истина -false=Ложь -unknown=Неизвестно -save=Сохранить -close=Закрыть -filesSelected=файлов выбрано -noFavourites=Нет избранного -bored=Скучно ждать? -alphabet=\u0430\u043B\u0444\u0430\u0432\u0438\u0442 -############# -# HOME-PAGE # -############# -home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF. - - -navbar.convert=Конвертировать -navbar.security=Безопасность -navbar.other=Другое -navbar.darkmode=Темный режим -navbar.pageOps=Операции со страницей - -home.multiTool.title=Мультиинструмент PDF -home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц - -home.merge.title=Объединить -home.merge.desc=Легко объединяйте несколько PDF-файлов в один. - -home.split.title=Разделить -home.split.desc=Разделить PDF-файлы на несколько документов - -home.rotate.title=Повернуть -home.rotate.desc=Легко поворачивайте свои PDF-файлы. - -home.imageToPdf.title=Изображение в PDF -home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF. - -home.pdfToImage.title=PDF в изображение -home.pdfToImage.desc=Преобразование PDF в изображение. (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Реорганизация -home.pdfOrganiser.desc=Удалить/переставить страницы в любом порядке - -home.addImage.title=Добавить изображение -home.addImage.desc=Добавляет изображение в заданное место в PDF (в процессе) - -home.watermark.title=Добавить водяной знак -home.watermark.desc=Добавьте собственный водяной знак в документ PDF. - -home.remove-watermark.title=Удалить водяной знак -home.remove-watermark.desc=Удалите водяные знаки из документа PDF. - -home.permissions.title=Изменить разрешения -home.permissions.desc=Измените разрешения вашего PDF-документа - -home.removePages.title=Удаление -home.removePages.desc=Удалите ненужные страницы из документа PDF. - -home.addPassword.title=Добавить пароль -home.addPassword.desc=Зашифруйте PDF-документ паролем. - -home.removePassword.title=Удалить пароль -home.removePassword.desc=Снимите защиту паролем с вашего PDF-документа. - -home.compressPdfs.title=Сжать -home.compressPdfs.desc=Сжимайте PDF-файлы, чтобы уменьшить их размер. - -home.changeMetadata.title=Изменить метаданные -home.changeMetadata.desc=Изменить/удалить/добавить метаданные из документа PDF - -home.fileToPDF.title=Конвертировать файл в PDF -home.fileToPDF.desc=Конвертируйте практически любой файл в PDF (DOCX, PNG, XLS, PPT, TXT и другие) - -home.ocr.title=OCR / Очистка сканирования -home.ocr.desc=Очистка сканирования и обнаружение текста на изображениях в PDF-файле и повторно добавляет его как текст. - -home.extractImages.title=Извлечь изображения -home.extractImages.desc=Извлекает все изображения из PDF и сохраняет их в zip - -home.pdfToPDFA.title=PDF в PDF/A -home.pdfToPDFA.desc=Преобразование PDF в PDF/A для длительного хранения - -home.PDFToWord.title=PDF в Word -home.PDFToWord.desc=Преобразование PDF в форматы Word (DOC, DOCX и ODT) - -home.PDFToPresentation.title=PDF в презентацию -home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP) - -home.PDFToText.title=PDF в Text/RTF -home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат - -home.PDFToHTML.title=PDF в HTML -home.PDFToHTML.desc=Преобразование PDF в формат HTML - -home.PDFToXML.title=PDF в XML -home.PDFToXML.desc=Преобразование PDF в формат XML - -home.ScannerImageSplit.title=Обнаружение/разделение отсканированных фотографий -home.ScannerImageSplit.desc=Разделяет несколько фотографий из фото/PDF - -home.sign.title=Подпись -home.sign.desc=Добавляет подпись в PDF с помощью рисунка, текста или изображения - -home.flatten.title=Сглаживание -home.flatten.desc=Удалить все интерактивные элементы и формы из PDF - -home.repair.title=Ремонт -home.repair.desc=Пытается восстановить поврежденный/сломанный PDF - -home.removeBlanks.title=Удалить пустые страницы -home.removeBlanks.desc=Обнаруживает и удаляет пустые страницы из документа - -home.compare.title=Сравнение -home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Скачать PDF -text=Текст -font=Шрифт -selectFillter=-- Выбрать -- -pageNum=номер страницы - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Подписание сертификата -certSign.header=Подпишите PDF своим сертификатом (работа в процессе) -certSign.selectPDF=Выберите файл PDF для подписи: -certSign.selectKey=Выберите файл закрытого ключа (формат PKCS#8, может быть .pem или .der): -certSign.selectCert=Выберите файл сертификата (формат X.509, может быть .pem или .der): -certSign.selectP12=Выберите файл хранилища ключей PKCS#12 (.p12 или .pfx) (необязательно, если он предоставлен, он должен содержать ваш закрытый ключ и сертификат): -certSign.certType=Тип сертификата -certSign.password=Введите пароль от хранилища ключей или личного ключа (если есть): -certSign.showSig=Показать подпись -certSign.reason=Причина -certSign.location=Местоположение -certSign.name=Имя -certSign.submit=Подписать PDF - -removeBlanks.title=Удалить Пустые -removeBlanks.header=Удалить Пустые Страницы -removeBlanks.threshold=Порог: -removeBlanks.thresholdDesc=Порог для определения того, насколько белым должен быть белый пиксель -removeBlanks.whitePercent=Процент Белого (%): -removeBlanks.whitePercentDesc=Общий процент белого на странице, для удаления -removeBlanks.submit=Удалить Пустые - -compare.title=Сравнение -compare.header=Сравнение PDFы -compare.document.1=Документ 1 -compare.document.2=Документ 2 -compare.submit=Сравнить - -sign.title=Подпись -sign.header=Подписать PDFы -sign.upload=Загрузить изображение -sign.draw=Нарисовать подпись -sign.text=Ввод текста -sign.clear=Очистить -sign.add=Добавить - -repair.title=Ремонт -repair.header=Ремонт PDF ов -repair.submit=Ремонт - -flatten.title=Сглаживание -flatten.header=Сглаживание PDF ов -flatten.submit=Сгладить - -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). - -navbar.settings=Настройки -settings.title=Настройки -settings.update=Доступно обновление -settings.appVersion=Версия приложения: -settings.downloadOption.title=Выберите вариант загрузки (для загрузки одного файла без zip): -settings.downloadOption.1=Открыть в том же окне -settings.downloadOption.2=Открыть в новом окне -settings.downloadOption.3=Загрузить файл -settings.zipThreshold=Zip-файлы, когда количество загруженных файлов превышает - - - - - -#OCR -ocr.title=OCR / Очистка сканирования -ocr.header=Очистка сканирования / OCR (Optical Character Recognition) Распознавание текста -ocr.selectText.1=Выберите языки, которые должны быть обнаружены в PDF-файле (перечислены те, которые обнаружены в данный момент): -ocr.selectText.2=Создайте текстовый файл, содержащий текст OCR, вместе с PDF-файлом, обработанным OCR. -ocr.selectText.3=Правильные страницы были отсканированы под перекошенным углом путем поворота их на место -ocr.selectText.4=Очистите страницу, чтобы меньше шансов, что OCR найдет текст в фоновом шуме. (без изменения выхода) -ocr.selectText.5=Очистите страницу, чтобы меньше шансов, что OCR найдет текст в фоновом шуме, поддерживает очистку вывода. -ocr.selectText.6=Игнорирует страницы с интерактивным текстом, распознает только страницы с изображениями -ocr.selectText.7=Принудительное распознавание символов, будет распознавать каждую страницу, удаляя все элементы исходного текста -ocr.selectText.8=Обычный (будет ошибка, если PDF содержит текст) -ocr.selectText.9=Дополнительные настройки -ocr.selectText.10=OCR режим -ocr.selectText.11=Удалить изображения после OCR (удаляет ВСЕ изображения, полезно только в том случае, если они являются частью шага преобразования) -ocr.selectText.12=Тип рендера (расширенный) -ocr.help=Прочтите эту документацию о том, как использовать это для других языков и/или использовать не в докере. -ocr.credit=Этот сервис использует OCRmyPDF и Tesseract для OCR. -ocr.submit=Обработка PDF с OCR - - - -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 (например, 25 МБ, 10,8 МБ, 25 КБ) -compress.submit=Сжать - - -#Add image -addImage.title=Добавить изображение -addImage.header=Добавить изображение в PDF -addImage.everyPage=Каждая страница? -addImage.upload=Добавить изображение -addImage.submit=Добавить изображение - - -#merge -merge.title=Объединить -merge.header=Объединение нескольких PDF-файлов (2+) -merge.submit=Объединить - -#pdfOrganiser -pdfOrganiser.title=Организатор страниц -pdfOrganiser.header=Организатор PDF-страниц -pdfOrganiser.submit=Переупорядочить страницы - -#multiTool -multiTool.title=Мультиинструмент PDF -multiTool.header=Мультиинструмент 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: Page 1 -split.desc.4=Документ #2: Page 2 and 3 -split.desc.5=Документ #3: Page 4, 5 and 6 -split.desc.6=Документ #4: Page 7 -split.desc.7=Документ #5: Page 8 -split.desc.8=Документ #6: Page 9 and 10 -split.splitPages=Введите страницы для разделения: -split.submit=Разделить - - -#merge -imageToPDF.title=Изображение в PDF -imageToPDF.header=Изображение в PDF -imageToPDF.submit=Конвертировать -imageToPDF.selectText.1=Растянуть, чтобы соответствовать -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=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -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=widthSpacer (пробел между каждым водяным знаком по горизонтали): -watermark.selectText.6=heightSpacer (пробел между каждым водяным знаком по вертикали): -watermark.selectText.7=Непрозрачность (0% - 100%): -watermark.submit=Добавить водяной знак - -#remove-watermark -remove-watermark.title=Удалить водяной знак -remove-watermark.header=Удалить водяной знак -remove-watermark.selectText.1=Выберите PDF, чтобы удалить водяной знак из: -remove-watermark.selectText.2=Текст водяного знака: -remove-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.title=Изменить метаданные -changeMetadata.header=Изменить метаданные -changeMetadata.selectText.1=Пожалуйста, отредактируйте переменные, которые вы хотите изменить -changeMetadata.selectText.2=Удалить все метаданные -changeMetadata.selectText.3=Показать пользовательские метаданные: -changeMetadata.author=Автор: -changeMetadata.creationDate=Дата создания (yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=Создатель: -changeMetadata.keywords=Ключевые слова: -changeMetadata.modDate=Дата изменения (yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=Изготовитель: -changeMetadata.subject=Тема: -changeMetadata.title=Заголовок: -changeMetadata.trapped=Trapped: -changeMetadata.selectText.4=Другие метаданные: -changeMetadata.selectText.5=Добавить пользовательскую запись метаданных -changeMetadata.submit=Изменить - -xlsToPdf.title=Excel в PDF -xlsToPdf.header=Excel в PDF -xlsToPdf.selectText.1=Выберите книгу Excel XLS или XLSX для преобразования -xlsToPdf.convert=Конвертировать - - - - -pdfToPDFA.title=PDF в PDF/A -pdfToPDFA.header=PDF в PDF/A -pdfToPDFA.credit=Этот сервис использует OCRmyPDF для преобразования PDF/A -pdfToPDFA.submit=Конвертировать - - - -PDFToWord.title=PDF в Word -PDFToWord.header=PDF в Word -PDFToWord.selectText.1=Формат выходного файла -PDFToWord.credit=Этот сервис использует LibreOffice для преобразования файлов. -PDFToWord.submit=Конвертировать - -PDFToPresentation.title=PDF в Презентацию -PDFToPresentation.header=PDF в Презентацию -PDFToPresentation.selectText.1=Формат выходного файла -PDFToPresentation.credit=Этот сервис использует LibreOffice для преобразования файлов. -PDFToPresentation.submit=Конвертировать - - -PDFToText.title=PDF в Text/RTF -PDFToText.header=PDF в Text/RTF -PDFToText.selectText.1=Формат выходного файла -PDFToText.credit=Этот сервис использует LibreOffice для преобразования файлов. -PDFToText.submit=Конвертировать - - -PDFToHTML.title=PDF в HTML -PDFToHTML.header=PDF в HTML -PDFToHTML.credit=Этот сервис использует LibreOffice для преобразования файлов. -PDFToHTML.submit=Конвертировать - -PDFToXML.title=PDF в XML -PDFToXML.header=PDF в XML -PDFToXML.credit=Этот сервис использует LibreOffice для преобразования файлов. -PDFToXML.submit=Конвертировать - - - - - - - - - - - - +########### +# 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=Порядок страниц (введите список номеров страниц через запятую): +goToPage=Вперед +true=Истина +false=Ложь +unknown=Неизвестно +save=Сохранить +close=Закрыть +filesSelected=файлов выбрано +noFavourites=Нет избранного +bored=Скучно ждать? +alphabet=\u0430\u043B\u0444\u0430\u0432\u0438\u0442 +downloadPdf=Скачать PDF +text=Текст +font=Шрифт +selectFillter=-- Выбрать -- +pageNum=номер страницы +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Конвертировать +navbar.security=Безопасность +navbar.other=Другое +navbar.darkmode=Темный режим +navbar.pageOps=Операции со страницей +navbar.settings=Настройки + +############# +# SETTINGS # +############# +settings.title=Настройки +settings.update=Доступно обновление +settings.appVersion=Версия приложения: +settings.downloadOption.title=Выберите вариант загрузки (для загрузки одного файла без zip): +settings.downloadOption.1=Открыть в том же окне +settings.downloadOption.2=Открыть в новом окне +settings.downloadOption.3=Загрузить файл +settings.zipThreshold=Zip-файлы, когда количество загруженных файлов превышает + +############# +# HOME-PAGE # +############# +home.desc=Ваш локальный универсальный магазин для всех ваших потребностей в PDF. + + +home.multiTool.title=Мультиинструмент PDF +home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Объединить +home.merge.desc=Легко объединяйте несколько PDF-файлов в один. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Разделить +home.split.desc=Разделить PDF-файлы на несколько документов + +home.rotate.title=Повернуть +home.rotate.desc=Легко поворачивайте свои PDF-файлы. + +home.imageToPdf.title=Изображение в PDF +home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF. + +home.pdfToImage.title=PDF в изображение +home.pdfToImage.desc=Преобразование PDF в изображение. (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Реорганизация +home.pdfOrganiser.desc=Удалить/переставить страницы в любом порядке + +home.addImage.title=Добавить изображение +home.addImage.desc=Добавляет изображение в заданное место в PDF (в процессе) + +home.watermark.title=Добавить водяной знак +home.watermark.desc=Добавьте собственный водяной знак в документ PDF. + +home.permissions.title=Изменить разрешения +home.permissions.desc=Измените разрешения вашего PDF-документа + +home.removePages.title=Удаление +home.removePages.desc=Удалите ненужные страницы из документа PDF. + +home.addPassword.title=Добавить пароль +home.addPassword.desc=Зашифруйте PDF-документ паролем. + +home.removePassword.title=Удалить пароль +home.removePassword.desc=Снимите защиту паролем с вашего PDF-документа. + +home.compressPdfs.title=Сжать +home.compressPdfs.desc=Сжимайте PDF-файлы, чтобы уменьшить их размер. + +home.changeMetadata.title=Изменить метаданные +home.changeMetadata.desc=Изменить/удалить/добавить метаданные из документа PDF + +home.fileToPDF.title=Конвертировать файл в PDF +home.fileToPDF.desc=Конвертируйте практически любой файл в PDF (DOCX, PNG, XLS, PPT, TXT и другие) + +home.ocr.title=OCR / Очистка сканирования +home.ocr.desc=Очистка сканирования и обнаружение текста на изображениях в PDF-файле и повторно добавляет его как текст. + +home.extractImages.title=Извлечь изображения +home.extractImages.desc=Извлекает все изображения из PDF и сохраняет их в zip + +home.pdfToPDFA.title=PDF в PDF/A +home.pdfToPDFA.desc=Преобразование PDF в PDF/A для длительного хранения + +home.PDFToWord.title=PDF в Word +home.PDFToWord.desc=Преобразование PDF в форматы Word (DOC, DOCX и ODT) + +home.PDFToPresentation.title=PDF в презентацию +home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP) + +home.PDFToText.title=PDF в Text/RTF +home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат + +home.PDFToHTML.title=PDF в HTML +home.PDFToHTML.desc=Преобразование PDF в формат HTML + +home.PDFToXML.title=PDF в XML +home.PDFToXML.desc=Преобразование PDF в формат XML + +home.ScannerImageSplit.title=Обнаружение/разделение отсканированных фотографий +home.ScannerImageSplit.desc=Разделяет несколько фотографий из фото/PDF + +home.sign.title=Подпись +home.sign.desc=Добавляет подпись в PDF с помощью рисунка, текста или изображения + +home.flatten.title=Сглаживание +home.flatten.desc=Удалить все интерактивные элементы и формы из PDF + +home.repair.title=Ремонт +home.repair.desc=Пытается восстановить поврежденный/сломанный PDF + +home.removeBlanks.title=Удалить пустые страницы +home.removeBlanks.desc=Обнаруживает и удаляет пустые страницы из документа + +home.compare.title=Сравнение +home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Подписание сертификата +certSign.header=Подпишите PDF своим сертификатом (работа в процессе) +certSign.selectPDF=Выберите файл PDF для подписи: +certSign.selectKey=Выберите файл закрытого ключа (формат PKCS#8, может быть .pem или .der): +certSign.selectCert=Выберите файл сертификата (формат X.509, может быть .pem или .der): +certSign.selectP12=Выберите файл хранилища ключей PKCS#12 (.p12 или .pfx) (необязательно, если он предоставлен, он должен содержать ваш закрытый ключ и сертификат): +certSign.certType=Тип сертификата +certSign.password=Введите пароль от хранилища ключей или личного ключа (если есть): +certSign.showSig=Показать подпись +certSign.reason=Причина +certSign.location=Местоположение +certSign.name=Имя +certSign.submit=Подписать PDF + + +#removeBlanks +removeBlanks.title=Удалить Пустые +removeBlanks.header=Удалить Пустые Страницы +removeBlanks.threshold=Порог: +removeBlanks.thresholdDesc=Порог для определения того, насколько белым должен быть белый пиксель +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 (Optical Character Recognition) Распознавание текста +ocr.selectText.1=Выберите языки, которые должны быть обнаружены в PDF-файле (перечислены те, которые обнаружены в данный момент): +ocr.selectText.2=Создайте текстовый файл, содержащий текст OCR, вместе с PDF-файлом, обработанным OCR. +ocr.selectText.3=Правильные страницы были отсканированы под перекошенным углом путем поворота их на место +ocr.selectText.4=Очистите страницу, чтобы меньше шансов, что OCR найдет текст в фоновом шуме. (без изменения выхода) +ocr.selectText.5=Очистите страницу, чтобы меньше шансов, что OCR найдет текст в фоновом шуме, поддерживает очистку вывода. +ocr.selectText.6=Игнорирует страницы с интерактивным текстом, распознает только страницы с изображениями +ocr.selectText.7=Принудительное распознавание символов, будет распознавать каждую страницу, удаляя все элементы исходного текста +ocr.selectText.8=Обычный (будет ошибка, если PDF содержит текст) +ocr.selectText.9=Дополнительные настройки +ocr.selectText.10=OCR режим +ocr.selectText.11=Удалить изображения после OCR (удаляет ВСЕ изображения, полезно только в том случае, если они являются частью шага преобразования) +ocr.selectText.12=Тип рендера (расширенный) +ocr.help=Прочтите эту документацию о том, как использовать это для других языков и/или использовать не в докере. +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 (например, 25 МБ, 10,8 МБ, 25 КБ) +compress.submit=Сжать + + +#Add image +addImage.title=Добавить изображение +addImage.header=Добавить изображение в PDF +addImage.everyPage=Каждая страница? +addImage.upload=Добавить изображение +addImage.submit=Добавить изображение + + +#merge +merge.title=Объединить +merge.header=Объединение нескольких PDF-файлов (2+) +merge.submit=Объединить + + +#pdfOrganiser +pdfOrganiser.title=Организатор страниц +pdfOrganiser.header=Организатор PDF-страниц +pdfOrganiser.submit=Переупорядочить страницы + + +#multiTool +multiTool.title=Мультиинструмент PDF +multiTool.header=Мультиинструмент 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: Page 1 +split.desc.4=Документ #2: Page 2 and 3 +split.desc.5=Документ #3: Page 4, 5 and 6 +split.desc.6=Документ #4: Page 7 +split.desc.7=Документ #5: Page 8 +split.desc.8=Документ #6: Page 9 and 10 +split.splitPages=Введите страницы для разделения: +split.submit=Разделить + + +#merge +imageToPDF.title=Изображение в PDF +imageToPDF.header=Изображение в PDF +imageToPDF.submit=Конвертировать +imageToPDF.selectText.1=Растянуть, чтобы соответствовать +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=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +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=widthSpacer (пробел между каждым водяным знаком по горизонтали): +watermark.selectText.6=heightSpacer (пробел между каждым водяным знаком по вертикали): +watermark.selectText.7=Непрозрачность (0% - 100%): +watermark.submit=Добавить водяной знак + + +#remove-watermark +remove-watermark.title=Удалить водяной знак +remove-watermark.header=Удалить водяной знак +remove-watermark.selectText.1=Выберите PDF, чтобы удалить водяной знак из: +remove-watermark.selectText.2=Текст водяного знака: +remove-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=Дата создания (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=Создатель: +changeMetadata.keywords=Ключевые слова: +changeMetadata.modDate=Дата изменения (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=Изготовитель: +changeMetadata.subject=Тема: +changeMetadata.title=Заголовок: +changeMetadata.trapped=Trapped: +changeMetadata.selectText.4=Другие метаданные: +changeMetadata.selectText.5=Добавить пользовательскую запись метаданных +changeMetadata.submit=Изменить + + +#xlsToPdf +xlsToPdf.title=Excel в PDF +xlsToPdf.header=Excel в PDF +xlsToPdf.selectText.1=Выберите книгу Excel XLS или XLSX для преобразования +xlsToPdf.convert=Конвертировать + + +#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 в Text/RTF +PDFToText.header=PDF в Text/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=Конвертировать diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index 53293ff0..d67c2968 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -1,485 +1,618 @@ -########### -# Generisk # -########### -# riktningen som språket skrivs (ltr = vänster till höger, rtl = höger till vänster) -language.direction=ltr - -pdfPrompt=Välj PDF(er) -multiPdfPrompt=Välj PDF-filer (2+) -multiPdfDropPrompt=Välj (eller dra och släpp) alla PDF-filer du behöver -imgPrompt=Välj bild(er) -genericSubmit=Skicka -processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek -pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) : -goToPage=Gå till -sant=Sant -false=Falskt -unknown=Okänt -save=Spara -close=Stäng -filesSelected=filer valda -noFavourites=Inga favoriter har lagts till -bored=Utråkad att vänta? -alphabet=Alfabet -############# -# HEMSIDA # -############# -home.desc=Din lokala one-stop-shop för alla dina PDF-behov. - - -navbar.convert=Konvertera -navbar.security=Säkerhet -navbar.other=Annat -navbar.darkmode=Mörkt läge -navbar.pageOps=Sidoperationer - -home.multiTool.title=PDF Multi-verktyg -home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor - -home.merge.title=Sammanfoga -home.merge.desc=Sammanfoga enkelt flera PDF-filer till en. - -home.split.title=Dela -home.split.desc=Dela upp PDF-filer i flera dokument - -home.rotate.title=Rotera -home.rotate.desc=Rotera enkelt dina PDF-filer. - -home.imageToPdf.title=Bild till PDF -home.imageToPdf.desc=Konvertera en bild (PNG, JPEG, GIF) till PDF. - -home.pdfToImage.title=PDF till bild -home.pdfToImage.desc=Konvertera en PDF till en bild. (PNG, JPEG, GIF) - -home.pdfOrganiser.title=Ordna -home.pdfOrganiser.desc=Ta bort/ordna om sidor i valfri ordning - -home.addImage.title=Lägg till bild -home.addImage.desc=Lägger till en bild på en angiven plats i PDF:en (pågår arbete) - -home.watermark.title=Lägg till vattenstämpel -home.watermark.desc=Lägg till en anpassad vattenstämpel till ditt PDF-dokument. - -home.remove-watermark.title=Ta bort vattenstämpel -home.remove-watermark.desc=Ta bort vattenstämplar från ditt PDF-dokument. - -home.permissions.title=Ändra behörigheter -home.permissions.desc=Ändra behörigheterna för ditt PDF-dokument - -home.removePages.title=Ta bort -home.removePages.desc=Ta bort oönskade sidor från ditt PDF-dokument. - -home.addPassword.title=Lägg till lösenord -home.addPassword.desc=Kryptera ditt PDF-dokument med ett lösenord. - -home.removePassword.title=Ta bort lösenord -home.removePassword.desc=Ta bort lösenordsskydd från ditt PDF-dokument. - -home.compressPdfs.title=Komprimera -home.compressPdfs.desc=Komprimera PDF-filer för att minska deras filstorlek. - -home.changeMetadata.title=Ändra metadata -home.changeMetadata.desc=Ändra/ta bort/lägg till metadata från ett PDF-dokument - -home.fileToPDF.title=Konvertera fil till PDF -home.fileToPDF.desc=Konvertera nästan vilken fil som helst till PDF (DOCX, PNG, XLS, PPT, TXT och mer) - -home.ocr.title=OCR / Rensningsskanningar -home.ocr.desc=Cleanup skannar och upptäcker text från bilder i en PDF och lägger till den igen som text. - -home.extractImages.title=Extrahera bilder -home.extractImages.desc=Extraherar alla bilder från en PDF och sparar dem till zip - -home.pdfToPDFA.title=PDF till PDF/A -home.pdfToPDFA.desc=Konvertera PDF till PDF/A för långtidslagring - -home.PDFToWord.title=PDF till Word -home.PDFToWord.desc=Konvertera PDF till Word-format (DOC, DOCX och ODT) - -home.PDFToPresentation.title=PDF till presentation -home.PDFToPresentation.desc=Konvertera PDF till presentationsformat (PPT, PPTX och ODP) - -home.PDFToText.title=PDF till text/RTF -home.PDFToText.desc=Konvertera PDF till text- eller RTF-format - -home.PDFToHTML.title=PDF till HTML -home.PDFToHTML.desc=Konvertera PDF till HTML-format - -home.PDFToXML.title=PDF till XML -home.PDFToXML.desc=Konvertera PDF till XML-format - -home.ScannerImageSplit.title=Detektera/Dela skannade foton -home.ScannerImageSplit.desc=Delar flera foton från ett foto/PDF - -home.sign.title=Signera -home.sign.desc=Lägger till signatur till PDF genom ritning, text eller bild - -home.flatten.title=Platta till -home.flatten.desc=Ta bort alla interaktiva element och formulär från en PDF - -home.repair.title=Reparera -home.repair.desc=Försöker reparera en korrupt/trasig PDF - -home.removeBlanks.title=Ta bort tomma sidor -home.removeBlanks.desc=Känner av och tar bort tomma sidor från ett dokument - -home.compare.title=Jämför -home.compare.desc=Jämför och visar skillnaderna mellan 2 PDF-dokument - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=Ladda ner PDF -text=Text -font=Teckensnitt -selectFillter=-- Välj -- -pageNum=Sidnummer - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=Certifikatsignering -certSign.header=Skriv under en PDF med ditt certifikat (Pågående arbete) -certSign.selectPDF=Välj en PDF-fil för signering: -certSign.selectKey=Välj din privata nyckelfil (PKCS#8-format, kan vara .pem eller .der): -certSign.selectCert=Välj din certifikatfil (X.509-format, kan vara .pem eller .der): -certSign.selectP12=Välj din PKCS#12-nyckellagringsfil (.p12 eller .pfx) (Valfritt, om den tillhandahålls bör den innehålla din privata nyckel och certifikat): -certSign.certType=Certifikattyp -certSign.password=Ange ditt nyckellager eller privata nyckellösenord (om något): -certSign.showSig=Visa signatur -certSign.reason=Anledning -certSign.location=Plats -certSign.name=Namn -certSign.submit=Skriv under PDF - -removeBlanks.title=Ta bort tomrum -removeBlanks.header=Ta bort tomma sidor -removeBlanks.threshold=Tröskel: -removeBlanks.thresholdDesc=Tröskel för att bestämma hur vit en vit pixel måste vara -removeBlanks.whitePercent=Vit procent (%): -removeBlanks.whitePercentDesc=Procentandel av sidan som måste vara vit för att kunna tas bort -removeBlanks.submit=Ta bort tomrum - -compare.title=Jämför -compare.header=Jämför PDF-filer -compare.document.1=Dokument 1 -compare.document.2=Dokument 2 -compare.submit=Jämför - -sign.title=Signera -sign.header=Skriv under PDF-filer -sign.upload=Ladda upp bild -sign.draw=Rita signatur -sign.text=Textinmatning -sign.clear=Rensa -sign.add=Lägg till - -repair.title=Reparera -repair.header=Reparera PDF-filer -repair.submit=Reparera - -flatten.title=Platta till -flatten.header=Placera PDF-filer -flatten.submit=Platta till - -ScannerImageSplit.selectText.1=Vinkeltröskel: -ScannerImageSplit.selectText.2=Ställer in den minsta absoluta vinkeln som krävs för att bilden ska roteras (standard: 10). -ScannerImageSplit.selectText.3=Tolerans: -ScannerImageSplit.selectText.4=Bestämmer intervallet för färgvariation runt den uppskattade bakgrundsfärgen (standard: 30). -ScannerImageSplit.selectText.5=Minsta area: -ScannerImageSplit.selectText.6=Ställer in minsta areatröskel för ett foto (standard: 10000). -ScannerImageSplit.selectText.7=Minsta konturarea: -ScannerImageSplit.selectText.8=Ställer in minsta tröskelvärde för konturarea för ett foto -ScannerImageSplit.selectText.9=Kantstorlek: -ScannerImageSplit.selectText.10=Ställer in storleken på kanten som läggs till och tas bort för att förhindra vita kanter i utdata (standard: 1). - -navbar.settings=Inställningar -settings.title=Inställningar -settings.update=Uppdatering tillgänglig -settings.appVersion=Appversion: -settings.downloadOption.title=Välj nedladdningsalternativ (för nedladdning av en fil utan zip): -settings.downloadOption.1=Öppnas i samma fönster -settings.downloadOption.2=Öppna i nytt fönster -settings.downloadOption.3=Ladda ner fil -settings.zipThreshold=Zip-filer när antalet nedladdade filer överskrider - - - - - -#OCR -ocr.title=OCR / Scan Cleanup -ocr.header=Rengöringsskanningar / OCR (Optical Character Recognition) -ocr.selectText.1=Välj språk som ska upptäckas i PDF:en (de listade är de som för närvarande identifieras): -ocr.selectText.2=Producera en textfil som innehåller OCR-text tillsammans med den OCR-skrivna PDF-filen -ocr.selectText.3=Korrekta sidor skannades i en sned vinkel genom att rotera dem tillbaka på plats -ocr.selectText.4=Rensa sidan så det är mindre troligt att OCR hittar text i bakgrundsbrus. (Ingen utgångsändring) -ocr.selectText.5=Rensa sidan så det är mindre sannolikt att OCR kommer att hitta text i bakgrundsbrus, upprätthåller rensning i utdata. -ocr.selectText.6=Ignorerar sidor som har interaktiv text, endast OCR-sidor som är bilder -ocr.selectText.7=Tvinga OCR, kommer OCR att ta bort alla ursprungliga textelement -ocr.selectText.8=Normal (kommer fel om PDF innehåller text) -ocr.selectText.9=Ytterligare inställningar -ocr.selectText.10=OCR-läge -ocr.selectText.11=Ta bort bilder efter OCR (tar bort ALLA bilder, endast användbart om en del av konverteringssteget) -ocr.selectText.12=Rendertyp (avancerat) -ocr.help=Vänligen läs den här dokumentationen om hur du använder detta för andra språk och/eller använder inte i docker -ocr.credit=Denna tjänst använder OCRmyPDF och Tesseract för OCR. -ocr.submit=Bearbeta PDF med OCR - - - -extractImages.title=Extrahera bilder -extractImages.header=Extrahera bilder -extractImages.selectText=Välj bildformat att konvertera extraherade bilder till -extractImages.submit=Extrahera - - -#Fil till PDF -fileToPDF.title=Fil till PDF -fileToPDF.header=Konvertera valfri fil till PDF -fileToPDF.credit=Denna tjänst använder LibreOffice och Unoconv för filkonvertering. -fileToPDF.supportedFileTypes=Filtyper som stöds bör inkludera nedanstående men för en fullständig uppdaterad lista över format som stöds, se LibreOffice-dokumentationen -fileToPDF.submit=Konvertera till PDF - - -#komprimera -compress.title=Komprimera -compress.header=Komprimera PDF -compress.credit=Denna tjänst använder Ghostscript för PDF-komprimering/optimering. -compress.selectText.1=Manuellt läge - Från 1 till 4 -compress.selectText.2=Optimeringsnivå: -compress.selectText.3=4 (Fruktansvärt för textbilder) -compress.selectText.4=Autoläge - Autojusterar kvaliteten för att få PDF till exakt storlek -compress.selectText.5=Förväntad PDF-storlek (t.ex. 25MB, 10,8MB, 25KB) -compress.submit=Komprimera - - -#Lägg till bild -addImage.title=Lägg till bild -addImage.header=Lägg till bild till PDF -addImage.everyPage=Varje sida? -addImage.upload=Lägg till bild -addImage.submit=Lägg till bild - - -#sammanfoga -merge.title=Sammanfoga -merge.header=Slå samman flera PDF-filer (2+) -merge.submit=Slå samman - -#pdfArrangör -pdfOrganiser.title=Sidorganisatör -pdfOrganiser.header=PDF-sidorganisatör -pdfOrganiser.submit=Ordna om sidor - -#multiverktyg -multiTool.title=PDF-multiverktyg -multiTool.header=PDF Multi-verktyg - - -#pageRemover -pageRemover.title=Sidborttagare -pageRemover.header=PDF Sidborttagning -pageRemover.pagesToDelete=Sidor att radera (Ange en kommaseparerad lista med sidnummer) : -pageRemover.submit=Ta bort sidor - -#rotera -rotate.title=Rotera PDF -rotate.header=Rotera PDF -rotate.selectAngle=Välj rotationsvinkel (i multipler av 90 grader): -rotate.submit=Rotera - - - - -#sammanfoga -split.title=Dela upp PDF -split.header=Dela upp PDF -split.desc.1=Siffrorna du väljer är sidnumret du vill göra en split på -split.desc.2=Som sådan skulle ett val av 1,3,7-8 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med: -split.desc.3=Dokument #1: Sida 1 -split.desc.4=Dokument #2: Sida 2 och 3 -split.desc.5=Dokument #3: Sida 4, 5 och 6 -split.desc.6=Dokument #4: Sida 7 -split.desc.7=Dokument #5: Sida 8 -split.desc.8=Dokument #6: Sida 9 och 10 -split.splitPages=Ange sidor att dela på: -split.submit=Dela - - -#sammanfoga -imageToPDF.title=Bild till PDF -imageToPDF.header=Bild till PDF -imageToPDF.submit=Konvertera -imageToPDF.selectText.1=Sträck för att passa -imageToPDF.selectText.2=Rotera PDF automatiskt -imageToPDF.selectText.3=Multifillogik (Endast aktiverad om man arbetar med flera bilder) -imageToPDF.selectText.4=Slå samman till en enda PDF -imageToPDF.selectText.5=Konvertera till separata PDF-filer - -#pdfToImage -pdfToImage.title=PDF till bild -pdfToImage.header=PDF till bild -pdfToImage.selectText=Bildformat -pdfToImage.singleOrMultiple=Bildresultattyp -pdfToImage.single=Enstaka stor bild -pdfToImage.multi=Flera bilder -pdfToImage.colorType=Färgtyp -pdfToImage.color=Färg -pdfToImage.grey=Gråskala -pdfToImage.blackwhite=Svartvitt (kan förlora data!) -pdfToImage.submit=Konvertera - -#addPassword -addPassword.title=Lägg till lösenord -addPassword.header=Lägg till lösenord (kryptera) -addPassword.selectText.1=Välj PDF för att kryptera -addPassword.selectText.2=Lösenord -addPassword.selectText.3=Längd på krypteringsnyckeln -addPassword.selectText.4=Högre värden är starkare, men lägre värden har bättre kompatibilitet. -addPassword.selectText.5=Behörigheter att ställa in -addPassword.selectText.6=Förhindra sammansättning av dokument -addPassword.selectText.7=Förhindra innehållsextraktion -addPassword.selectText.8=Förhindra extraktion för tillgänglighet -addPassword.selectText.9=Förhindra att fylla i formulär -addPassword.selectText.10=Förhindra modifiering -addPassword.selectText.11=Förhindra anteckningsändring -addPassword.selectText.12=Förhindra utskrift -addPassword.selectText.13=Förhindra utskrift av olika format -addPassword.selectText.14=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself -addPassword.submit=Kryptera - -#vattenstämpel -watermark.title=Lägg till vattenstämpel -watermark.header=Lägg till vattenstämpel -watermark.selectText.1=Välj PDF för att lägga till vattenstämpel till: -watermark.selectText.2=Vattenmärkestext: -watermark.selectText.3=Teckenstorlek: -watermark.selectText.4=Rotation (0-360): -watermark.selectText.5=widthSpacer (mellanrum mellan varje vattenstämpel horisontellt): -watermark.selectText.6=heightSpacer (mellanrum mellan varje vattenstämpel vertikalt): -watermark.selectText.7=Opacitet (0% - 100%): -watermark.submit=Lägg till vattenstämpel - -#remove-watermark -remove-watermark.title=Ta bort vattenstämpel -remove-watermark.header=Ta bort vattenstämpel -remove-watermark.selectText.1=Välj PDF för att ta bort vattenstämpel från: -remove-watermark.selectText.2=Vattenstämpeltext: -remove-watermark.submit=Ta bort vattenstämpel - -#Ändra behörigheter -permissions.title=Ändra behörigheter -permissions.header=Ändra behörigheter -permissions.warning=Varning för att dessa behörigheter ska vara oföränderliga, det rekommenderas att ställa in dem med ett lösenord via sidan Lägg till lösenord -permissions.selectText.1=Välj PDF för att ändra behörigheter -permissions.selectText.2=Behörigheter att ställa in -permissions.selectText.3=Förhindra sammansättning av dokument -permissions.selectText.4=Förhindra innehållsextraktion -permissions.selectText.5=Förhindra extraktion för tillgänglighet -permissions.selectText.6=Förhindra att fylla i formulär -permissions.selectText.7=Förhindra ändring -permissions.selectText.8=Förhindra anteckningsändring -permissions.selectText.9=Förhindra utskrift -permissions.selectText.10=Förhindra utskrift av olika format -permissions.submit=Ändra - -#ta bort lösenord -removePassword.title=Ta bort lösenord -removePassword.header=Ta bort lösenord (Dekryptera) -removePassword.selectText.1=Välj PDF att dekryptera -removePassword.selectText.2=Lösenord -removePassword.submit=Ta bort - -changeMetadata.title=Ändra metadata -changeMetadata.header=Ändra metadata -changeMetadata.selectText.1=Redigera de variabler du vill ändra -changeMetadata.selectText.2=Ta bort all metadata -changeMetadata.selectText.3=Visa anpassade metadata: -changeMetadata.author=Författare: -changeMetadata.creationDate=Skapningsdatum (åååå/MM/dd HH:mm:ss): -changeMetadata.creator=Skapare: -changeMetadata.keywords=Sökord: -changeMetadata.modDate=Ändringsdatum (åååå/MM/dd HH:mm:ss): -changeMetadata.producer=Producent: -changeMetadata.subject=Ämne: -changeMetadata.title=Titel: -changeMetadata.trapped=Fångad: -changeMetadata.selectText.4=Andra metadata: -changeMetadata.selectText.5=Lägg till anpassad metadatapost -changeMetadata.submit=Ändra - -xlsToPdf.title=Excel till PDF -xlsToPdf.header=Excel till PDF -xlsToPdf.selectText.1=Välj XLS eller XLSX Excel-ark att konvertera -xlsToPdf.convert=konvertera - - - - -pdfToPDFA.title=PDF till PDF/A -pdfToPDFA.header=PDF till PDF/A -pdfToPDFA.credit=Denna tjänst använder OCRmyPDF för PDF/A-konvertering -pdfToPDFA.submit=Konvertera - - - -PDFToWord.title=PDF till Word -PDFToWord.header=PDF till Word -PDFToWord.selectText.1=Utdatafilformat -PDFToWord.credit=Denna tjänst använder LibreOffice för filkonvertering. -PDFToWord.submit=Konvertera - -PDFToPresentation.title=PDF till presentation -PDFToPresentation.header=PDF till presentation -PDFToPresentation.selectText.1=Utdatafilformat -PDFToPresentation.credit=Denna tjänst använder LibreOffice för filkonvertering. -PDFToPresentation.submit=Konvertera - - -PDFToText.title=PDF till text/RTF -PDFToText.header=PDF till text/RTF -PDFToText.selectText.1=Utdatafilformat -PDFToText.credit=Denna tjänst använder LibreOffice för filkonvertering. -PDFToText.submit=Konvertera - - -PDFToHTML.title=PDF till HTML -PDFToHTML.header=PDF till HTML -PDFToHTML.credit=Denna tjänst använder LibreOffice för filkonvertering. -PDFToHTML.submit=Konvertera - -PDFToXML.title=PDF till XML -PDFToXML.header=PDF till XML -PDFToXML.credit=Denna tjänst använder LibreOffice för filkonvertering. -PDFToXML.submit=Konvertera - - - - - - - - - - - - +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr + +pdfPrompt=Välj PDF(er) +multiPdfPrompt=Välj PDF-filer (2+) +multiPdfDropPrompt=Välj (eller dra och släpp) alla PDF-filer du behöver +imgPrompt=Välj bild(er) +genericSubmit=Skicka +processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek +pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) : +goToPage=Gå till +########################## +### TODO: Translate ### +########################## +true=True +false=Falskt +unknown=Okänt +save=Spara +close=Stäng +filesSelected=filer valda +noFavourites=Inga favoriter har lagts till +bored=Utråkad att vänta? +alphabet=Alfabet +downloadPdf=Ladda ner PDF +text=Text +font=Teckensnitt +selectFillter=-- Välj -- +pageNum=Sidnummer +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# NAVBAR # +############# +navbar.convert=Konvertera +navbar.security=Säkerhet +navbar.other=Annat +navbar.darkmode=Mörkt läge +navbar.pageOps=Sidoperationer +navbar.settings=Inställningar + +############# +# SETTINGS # +############# +settings.title=Inställningar +settings.update=Uppdatering tillgänglig +settings.appVersion=Appversion: +settings.downloadOption.title=Välj nedladdningsalternativ (för nedladdning av en fil utan zip): +settings.downloadOption.1=Öppnas i samma fönster +settings.downloadOption.2=Öppna i nytt fönster +settings.downloadOption.3=Ladda ner fil +settings.zipThreshold=Zip-filer när antalet nedladdade filer överskrider + +############# +# HOME-PAGE # +############# +home.desc=Din lokala one-stop-shop för alla dina PDF-behov. + + +home.multiTool.title=PDF Multi-verktyg +home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=Sammanfoga +home.merge.desc=Sammanfoga enkelt flera PDF-filer till en. +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=Dela +home.split.desc=Dela upp PDF-filer i flera dokument + +home.rotate.title=Rotera +home.rotate.desc=Rotera enkelt dina PDF-filer. + +home.imageToPdf.title=Bild till PDF +home.imageToPdf.desc=Konvertera en bild (PNG, JPEG, GIF) till PDF. + +home.pdfToImage.title=PDF till bild +home.pdfToImage.desc=Konvertera en PDF till en bild. (PNG, JPEG, GIF) + +home.pdfOrganiser.title=Ordna +home.pdfOrganiser.desc=Ta bort/ordna om sidor i valfri ordning + +home.addImage.title=Lägg till bild +home.addImage.desc=Lägger till en bild på en angiven plats i PDF:en (pågår arbete) + +home.watermark.title=Lägg till vattenstämpel +home.watermark.desc=Lägg till en anpassad vattenstämpel till ditt PDF-dokument. + +home.permissions.title=Ändra behörigheter +home.permissions.desc=Ändra behörigheterna för ditt PDF-dokument + +home.removePages.title=Ta bort +home.removePages.desc=Ta bort oönskade sidor från ditt PDF-dokument. + +home.addPassword.title=Lägg till lösenord +home.addPassword.desc=Kryptera ditt PDF-dokument med ett lösenord. + +home.removePassword.title=Ta bort lösenord +home.removePassword.desc=Ta bort lösenordsskydd från ditt PDF-dokument. + +home.compressPdfs.title=Komprimera +home.compressPdfs.desc=Komprimera PDF-filer för att minska deras filstorlek. + +home.changeMetadata.title=Ändra metadata +home.changeMetadata.desc=Ändra/ta bort/lägg till metadata från ett PDF-dokument + +home.fileToPDF.title=Konvertera fil till PDF +home.fileToPDF.desc=Konvertera nästan vilken fil som helst till PDF (DOCX, PNG, XLS, PPT, TXT och mer) + +home.ocr.title=OCR / Rensningsskanningar +home.ocr.desc=Cleanup skannar och upptäcker text från bilder i en PDF och lägger till den igen som text. + +home.extractImages.title=Extrahera bilder +home.extractImages.desc=Extraherar alla bilder från en PDF och sparar dem till zip + +home.pdfToPDFA.title=PDF till PDF/A +home.pdfToPDFA.desc=Konvertera PDF till PDF/A för långtidslagring + +home.PDFToWord.title=PDF till Word +home.PDFToWord.desc=Konvertera PDF till Word-format (DOC, DOCX och ODT) + +home.PDFToPresentation.title=PDF till presentation +home.PDFToPresentation.desc=Konvertera PDF till presentationsformat (PPT, PPTX och ODP) + +home.PDFToText.title=PDF till text/RTF +home.PDFToText.desc=Konvertera PDF till text- eller RTF-format + +home.PDFToHTML.title=PDF till HTML +home.PDFToHTML.desc=Konvertera PDF till HTML-format + +home.PDFToXML.title=PDF till XML +home.PDFToXML.desc=Konvertera PDF till XML-format + +home.ScannerImageSplit.title=Detektera/Dela skannade foton +home.ScannerImageSplit.desc=Delar flera foton från ett foto/PDF + +home.sign.title=Signera +home.sign.desc=Lägger till signatur till PDF genom ritning, text eller bild + +home.flatten.title=Platta till +home.flatten.desc=Ta bort alla interaktiva element och formulär från en PDF + +home.repair.title=Reparera +home.repair.desc=Försöker reparera en korrupt/trasig PDF + +home.removeBlanks.title=Ta bort tomma sidor +home.removeBlanks.desc=Känner av och tar bort tomma sidor från ett dokument + +home.compare.title=Jämför +home.compare.desc=Jämför och visar skillnaderna mellan 2 PDF-dokument + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=Certifikatsignering +certSign.header=Skriv under en PDF med ditt certifikat (Pågående arbete) +certSign.selectPDF=Välj en PDF-fil för signering: +certSign.selectKey=Välj din privata nyckelfil (PKCS#8-format, kan vara .pem eller .der): +certSign.selectCert=Välj din certifikatfil (X.509-format, kan vara .pem eller .der): +certSign.selectP12=Välj din PKCS#12-nyckellagringsfil (.p12 eller .pfx) (Valfritt, om den tillhandahålls bör den innehålla din privata nyckel och certifikat): +certSign.certType=Certifikattyp +certSign.password=Ange ditt nyckellager eller privata nyckellösenord (om något): +certSign.showSig=Visa signatur +certSign.reason=Anledning +certSign.location=Plats +certSign.name=Namn +certSign.submit=Skriv under PDF + + +#removeBlanks +removeBlanks.title=Ta bort tomrum +removeBlanks.header=Ta bort tomma sidor +removeBlanks.threshold=Tröskel: +removeBlanks.thresholdDesc=Tröskel för att bestämma hur vit en vit pixel måste vara +removeBlanks.whitePercent=Vit procent (%): +removeBlanks.whitePercentDesc=Procentandel av sidan som måste vara vit för att kunna tas bort +removeBlanks.submit=Ta bort tomrum + + +#compare +compare.title=Jämför +compare.header=Jämför PDF-filer +compare.document.1=Dokument 1 +compare.document.2=Dokument 2 +compare.submit=Jämför + + +#sign +sign.title=Signera +sign.header=Skriv under PDF-filer +sign.upload=Ladda upp bild +sign.draw=Rita signatur +sign.text=Textinmatning +sign.clear=Rensa +sign.add=Lägg till + + +#repair +repair.title=Reparera +repair.header=Reparera PDF-filer +repair.submit=Reparera + + +#flatten +flatten.title=Platta till +flatten.header=Placera PDF-filer +flatten.submit=Platta till + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Vinkeltröskel: +ScannerImageSplit.selectText.2=Ställer in den minsta absoluta vinkeln som krävs för att bilden ska roteras (standard: 10). +ScannerImageSplit.selectText.3=Tolerans: +ScannerImageSplit.selectText.4=Bestämmer intervallet för färgvariation runt den uppskattade bakgrundsfärgen (standard: 30). +ScannerImageSplit.selectText.5=Minsta area: +ScannerImageSplit.selectText.6=Ställer in minsta areatröskel för ett foto (standard: 10000). +ScannerImageSplit.selectText.7=Minsta konturarea: +ScannerImageSplit.selectText.8=Ställer in minsta tröskelvärde för konturarea för ett foto +ScannerImageSplit.selectText.9=Kantstorlek: +ScannerImageSplit.selectText.10=Ställer in storleken på kanten som läggs till och tas bort för att förhindra vita kanter i utdata (standard: 1). + + +#OCR +ocr.title=OCR / Scan Cleanup +ocr.header=Rengöringsskanningar / OCR (Optical Character Recognition) +ocr.selectText.1=Välj språk som ska upptäckas i PDF:en (de listade är de som för närvarande identifieras): +ocr.selectText.2=Producera en textfil som innehåller OCR-text tillsammans med den OCR-skrivna PDF-filen +ocr.selectText.3=Korrekta sidor skannades i en sned vinkel genom att rotera dem tillbaka på plats +ocr.selectText.4=Rensa sidan så det är mindre troligt att OCR hittar text i bakgrundsbrus. (Ingen utgångsändring) +ocr.selectText.5=Rensa sidan så det är mindre sannolikt att OCR kommer att hitta text i bakgrundsbrus, upprätthåller rensning i utdata. +ocr.selectText.6=Ignorerar sidor som har interaktiv text, endast OCR-sidor som är bilder +ocr.selectText.7=Tvinga OCR, kommer OCR att ta bort alla ursprungliga textelement +ocr.selectText.8=Normal (kommer fel om PDF innehåller text) +ocr.selectText.9=Ytterligare inställningar +ocr.selectText.10=OCR-läge +ocr.selectText.11=Ta bort bilder efter OCR (tar bort ALLA bilder, endast användbart om en del av konverteringssteget) +ocr.selectText.12=Rendertyp (avancerat) +ocr.help=Vänligen läs den här dokumentationen om hur du använder detta för andra språk och/eller använder inte i docker +ocr.credit=Denna tjänst använder OCRmyPDF och Tesseract för OCR. +ocr.submit=Bearbeta PDF med OCR + + +#extractImages +extractImages.title=Extrahera bilder +extractImages.header=Extrahera bilder +extractImages.selectText=Välj bildformat att konvertera extraherade bilder till +extractImages.submit=Extrahera + + +#File to PDF +fileToPDF.title=Fil till PDF +fileToPDF.header=Konvertera valfri fil till PDF +fileToPDF.credit=Denna tjänst använder LibreOffice och Unoconv för filkonvertering. +fileToPDF.supportedFileTypes=Filtyper som stöds bör inkludera nedanstående men för en fullständig uppdaterad lista över format som stöds, se LibreOffice-dokumentationen +fileToPDF.submit=Konvertera till PDF + + +#compress +compress.title=Komprimera +compress.header=Komprimera PDF +compress.credit=Denna tjänst använder Ghostscript för PDF-komprimering/optimering. +compress.selectText.1=Manuellt läge - Från 1 till 4 +compress.selectText.2=Optimeringsnivå: +compress.selectText.3=4 (Fruktansvärt för textbilder) +compress.selectText.4=Autoläge - Autojusterar kvaliteten för att få PDF till exakt storlek +compress.selectText.5=Förväntad PDF-storlek (t.ex. 25MB, 10,8MB, 25KB) +compress.submit=Komprimera + + +#Add image +addImage.title=Lägg till bild +addImage.header=Lägg till bild till PDF +addImage.everyPage=Varje sida? +addImage.upload=Lägg till bild +addImage.submit=Lägg till bild + + +#merge +merge.title=Sammanfoga +merge.header=Slå samman flera PDF-filer (2+) +merge.submit=Slå samman + + +#pdfOrganiser +pdfOrganiser.title=Sidorganisatör +pdfOrganiser.header=PDF-sidorganisatör +pdfOrganiser.submit=Ordna om sidor + + +#multiTool +multiTool.title=PDF-multiverktyg +multiTool.header=PDF Multi-verktyg + + +#pageRemover +pageRemover.title=Sidborttagare +pageRemover.header=PDF Sidborttagning +pageRemover.pagesToDelete=Sidor att radera (Ange en kommaseparerad lista med sidnummer) : +pageRemover.submit=Ta bort sidor + + +#rotate +rotate.title=Rotera PDF +rotate.header=Rotera PDF +rotate.selectAngle=Välj rotationsvinkel (i multipler av 90 grader): +rotate.submit=Rotera + + +#merge +split.title=Dela upp PDF +split.header=Dela upp PDF +split.desc.1=Siffrorna du väljer är sidnumret du vill göra en split på +split.desc.2=Som sådan skulle ett val av 1,3,7-8 dela upp ett 10-sidigt dokument i 6 separata PDF-filer med: +split.desc.3=Dokument #1: Sida 1 +split.desc.4=Dokument #2: Sida 2 och 3 +split.desc.5=Dokument #3: Sida 4, 5 och 6 +split.desc.6=Dokument #4: Sida 7 +split.desc.7=Dokument #5: Sida 8 +split.desc.8=Dokument #6: Sida 9 och 10 +split.splitPages=Ange sidor att dela på: +split.submit=Dela + + +#merge +imageToPDF.title=Bild till PDF +imageToPDF.header=Bild till PDF +imageToPDF.submit=Konvertera +imageToPDF.selectText.1=Sträck för att passa +imageToPDF.selectText.2=Rotera PDF automatiskt +imageToPDF.selectText.3=Multifillogik (Endast aktiverad om man arbetar med flera bilder) +imageToPDF.selectText.4=Slå samman till en enda PDF +imageToPDF.selectText.5=Konvertera till separata PDF-filer + + +#pdfToImage +pdfToImage.title=PDF till bild +pdfToImage.header=PDF till bild +pdfToImage.selectText=Bildformat +pdfToImage.singleOrMultiple=Bildresultattyp +pdfToImage.single=Enstaka stor bild +pdfToImage.multi=Flera bilder +pdfToImage.colorType=Färgtyp +pdfToImage.color=Färg +pdfToImage.grey=Gråskala +pdfToImage.blackwhite=Svartvitt (kan förlora data!) +pdfToImage.submit=Konvertera + + +#addPassword +addPassword.title=Lägg till lösenord +addPassword.header=Lägg till lösenord (kryptera) +addPassword.selectText.1=Välj PDF för att kryptera +addPassword.selectText.2=Lösenord +addPassword.selectText.3=Längd på krypteringsnyckeln +addPassword.selectText.4=Högre värden är starkare, men lägre värden har bättre kompatibilitet. +addPassword.selectText.5=Behörigheter att ställa in +addPassword.selectText.6=Förhindra sammansättning av dokument +addPassword.selectText.7=Förhindra innehållsextraktion +addPassword.selectText.8=Förhindra extraktion för tillgänglighet +addPassword.selectText.9=Förhindra att fylla i formulär +addPassword.selectText.10=Förhindra modifiering +addPassword.selectText.11=Förhindra anteckningsändring +addPassword.selectText.12=Förhindra utskrift +addPassword.selectText.13=Förhindra utskrift av olika format +addPassword.selectText.14=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself +addPassword.submit=Kryptera + + +#watermark +watermark.title=Lägg till vattenstämpel +watermark.header=Lägg till vattenstämpel +watermark.selectText.1=Välj PDF för att lägga till vattenstämpel till: +watermark.selectText.2=Vattenmärkestext: +watermark.selectText.3=Teckenstorlek: +watermark.selectText.4=Rotation (0-360): +watermark.selectText.5=widthSpacer (mellanrum mellan varje vattenstämpel horisontellt): +watermark.selectText.6=heightSpacer (mellanrum mellan varje vattenstämpel vertikalt): +watermark.selectText.7=Opacitet (0% - 100%): +watermark.submit=Lägg till vattenstämpel + + +#remove-watermark +remove-watermark.title=Ta bort vattenstämpel +remove-watermark.header=Ta bort vattenstämpel +remove-watermark.selectText.1=Välj PDF för att ta bort vattenstämpel från: +remove-watermark.selectText.2=Vattenstämpeltext: +remove-watermark.submit=Ta bort vattenstämpel + + +#Change permissions +permissions.title=Ändra behörigheter +permissions.header=Ändra behörigheter +permissions.warning=Varning för att dessa behörigheter ska vara oföränderliga, det rekommenderas att ställa in dem med ett lösenord via sidan Lägg till lösenord +permissions.selectText.1=Välj PDF för att ändra behörigheter +permissions.selectText.2=Behörigheter att ställa in +permissions.selectText.3=Förhindra sammansättning av dokument +permissions.selectText.4=Förhindra innehållsextraktion +permissions.selectText.5=Förhindra extraktion för tillgänglighet +permissions.selectText.6=Förhindra att fylla i formulär +permissions.selectText.7=Förhindra ändring +permissions.selectText.8=Förhindra anteckningsändring +permissions.selectText.9=Förhindra utskrift +permissions.selectText.10=Förhindra utskrift av olika format +permissions.submit=Ändra + + +#remove password +removePassword.title=Ta bort lösenord +removePassword.header=Ta bort lösenord (Dekryptera) +removePassword.selectText.1=Välj PDF att dekryptera +removePassword.selectText.2=Lösenord +removePassword.submit=Ta bort + + +#changeMetadata +changeMetadata.title=Titel: +changeMetadata.header=Ändra metadata +changeMetadata.selectText.1=Redigera de variabler du vill ändra +changeMetadata.selectText.2=Ta bort all metadata +changeMetadata.selectText.3=Visa anpassade metadata: +changeMetadata.author=Författare: +changeMetadata.creationDate=Skapningsdatum (åååå/MM/dd HH:mm:ss): +changeMetadata.creator=Skapare: +changeMetadata.keywords=Sökord: +changeMetadata.modDate=Ändringsdatum (åååå/MM/dd HH:mm:ss): +changeMetadata.producer=Producent: +changeMetadata.subject=Ämne: +changeMetadata.title=Titel: +changeMetadata.trapped=Fångad: +changeMetadata.selectText.4=Andra metadata: +changeMetadata.selectText.5=Lägg till anpassad metadatapost +changeMetadata.submit=Ändra + + +#xlsToPdf +xlsToPdf.title=Excel till PDF +xlsToPdf.header=Excel till PDF +xlsToPdf.selectText.1=Välj XLS eller XLSX Excel-ark att konvertera +xlsToPdf.convert=konvertera + + +#pdfToPDFA +pdfToPDFA.title=PDF till PDF/A +pdfToPDFA.header=PDF till PDF/A +pdfToPDFA.credit=Denna tjänst använder OCRmyPDF för PDF/A-konvertering +pdfToPDFA.submit=Konvertera + + +#PDFToWord +PDFToWord.title=PDF till Word +PDFToWord.header=PDF till Word +PDFToWord.selectText.1=Utdatafilformat +PDFToWord.credit=Denna tjänst använder LibreOffice för filkonvertering. +PDFToWord.submit=Konvertera + + +#PDFToPresentation +PDFToPresentation.title=PDF till presentation +PDFToPresentation.header=PDF till presentation +PDFToPresentation.selectText.1=Utdatafilformat +PDFToPresentation.credit=Denna tjänst använder LibreOffice för filkonvertering. +PDFToPresentation.submit=Konvertera + + +#PDFToText +PDFToText.title=PDF till text/RTF +PDFToText.header=PDF till text/RTF +PDFToText.selectText.1=Utdatafilformat +PDFToText.credit=Denna tjänst använder LibreOffice för filkonvertering. +PDFToText.submit=Konvertera + + +#PDFToHTML +PDFToHTML.title=PDF till HTML +PDFToHTML.header=PDF till HTML +PDFToHTML.credit=Denna tjänst använder LibreOffice för filkonvertering. +PDFToHTML.submit=Konvertera + + +#PDFToXML +PDFToXML.title=PDF till XML +PDFToXML.header=PDF till XML +PDFToXML.credit=Denna tjänst använder LibreOffice för filkonvertering. +PDFToXML.submit=Konvertera diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index a6564c07..dde5854c 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -1,472 +1,615 @@ -########### -# 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=页面顺序(输入逗号分隔的页码列表): -goToPage=到 -true=True -false=False -unknown=未知 -save=保存 -close=关闭 -filesSelected=\u9009\u62E9\u7684\u6587\u4EF6 -noFavourites=\u6CA1\u6709\u6DFB\u52A0\u6536\u85CF\u5939 -bored=\u65E0\u804A\u7B49\u5F85\uFF1F -alphabet=\u5B57\u6BCD\u8868 -############# -# HOME-PAGE # -############# -home.desc=您的本地托管一站式服务,满足您的所有PDF需求。 - - -navbar.convert=转换 -navbar.security=安全 -navbar.other=其他 -navbar.darkmode=暗模式 -navbar.pageOps=页面操作 - -home.multiTool.title=PDF多功能工具 -home.multiTool.desc=合并、旋转、重新排列和删除PDF页面 - -home.merge.title=合并 -home.merge.desc=轻松合并多个PDF为一个。 - -home.split.title=拆分 -home.split.desc=将 PDF 拆分为多个文档。 - -home.rotate.title=旋转 -home.rotate.desc=旋转PDF。 - -home.imageToPdf.title=转换图像到PDF -home.imageToPdf.desc=转换图像(PNG, JPEG, GIF)到 PDF。 - -home.pdfToImage.title=转换PDF到图像 -home.pdfToImage.desc=转换PDF到图像(PNG, JPEG, GIF) - -home.pdfOrganiser.title=整理 -home.pdfOrganiser.desc=按任何顺序删除/重新排列页面。 - -home.addImage.title=在PDF中添加图片 -home.addImage.desc=将图像添加到PDF的设定位置上 - -home.watermark.title=添加水印 -home.watermark.desc=在PDF中添加一个自定义的水印。 - -home.remove-watermark.title=去除水印 -home.remove-watermark.desc=从你的PDF文档中去除水印。 - -home.permissions.title=更改权限 -home.permissions.desc=改变你的PDF文档的权限。 - -home.removePages.title=删除 -home.removePages.desc=从你的PDF文档中删除不需要的页面。 - -home.addPassword.title=添加密码 -home.addPassword.desc=用密码来加密你的PDF文档。 - -home.removePassword.title=删除密码 -home.removePassword.desc=从你的PDF文档中移除密码保护。 - -home.compressPdfs.title=压缩 -home.compressPdfs.desc=压缩PDF文件以减少其文件大小。 - -home.changeMetadata.title=更改元数据 -home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。 - -home.fileToPDF.title=将文件转换为PDF文件 -home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等) - -home.ocr.title=运行OCR/清理扫描 -home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。 - -home.extractImages.title=提取图像 -home.extractImages.desc=从PDF中提取所有的图像并将其保存到压缩包中。 - -home.pdfToPDFA.title=PDF To PDF/A -home.pdfToPDFA.desc=将PDF转换为PDF/A以便长期保存 - -home.PDFToWord.title=PDF to Word -home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。 - -home.PDFToPresentation.title=PDF To Presentation -home.PDFToPresentation.desc=将PDF转换成演示文稿格式(PPT、PPTX和ODP)。 - -home.PDFToText.title=PDF To Text/RTF -home.PDFToText.desc=将PDF转换为文本或RTF格式 - -home.PDFToHTML.title=PDF To HTML -home.PDFToHTML.desc=将PDF转换为HTML格式 - -home.PDFToXML.title=PDF To XML -home.PDFToXML.desc=将PDF转换为XML格式 - -home.ScannerImageSplit.title=检测/分割扫描的照片 -home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片 - -home.sign.title=\u6807\u5FD7 -home.sign.desc=\u901A\u8FC7\u7ED8\u56FE\u3001\u6587\u672C\u6216\u56FE\u50CF\u5411 PDF \u6DFB\u52A0\u7B7E\u540D - -home.flatten.title=\u5C55\u5E73 -home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355 - -home.repair.title=\u4FEE\u590D -home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF - -home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875 -home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875 - -home.compare.title=\u6BD4\u8F83 -home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02 - -home.certSign.title=Sign with Certificate -home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) - -home.pageLayout.title=Multi-Page Layout -home.pageLayout.desc=Merge multiple pages of a PDF document into a single page - -home.scalePages.title=Adjust page size/scale -home.scalePages.desc=Change the size/scale of page and/or its contents. - -error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect - -downloadPdf=\u4E0B\u8F7DPDF -text=\u6587\u672C -font=\u5B57\u4F53 -selectFillter=-- 选择-- -pageNum=页码 - -pageLayout.title=Multi Page Layout -pageLayout.header=Multi Page Layout -pageLayout.pagesPerSheet=Pages per sheet: -pageLayout.submit=Submit - -scalePages.title=Adjust page-scale -scalePages.header=Adjust page-scale -scalePages.pageSize=Size of a page of the document. -scalePages.scaleFactor=Zoom level (crop) of a page. -scalePages.submit=Submit - -certSign.title=证书签名 -certSign.header=使用您的证书签署 PDF(进行中) -certSign.selectPDF=选择要签名的 PDF 文件: -certSign.selectKey=选择您的私钥文件(PKCS#8 格式,可以是 .pem 或 .der): -certSign.selectCert=选择您的证书文件(X.509 格式,可以是 .pem 或 .der): -certSign.selectP12=选择您的 PKCS#12 密钥库文件(.p12 或 .pfx)(可选,如果提供,它应该包含您的私钥和证书): -certSign.certType=证书类型 -certSign.password=输入您的密钥库或私钥密码(如果有): -certSign.showSig=显示签名 -certSign.reason=原因 -certSign.location=位置 -certSign.name=名称 -certSign.submit=签署 PDF - -removeBlanks.title=\u5220\u9664\u7A7A\u767D -removeBlanks.header=\u5220\u9664\u7A7A\u767D\u9875 -removeBlanks.threshold=\u9608\u503C\uFF1A -removeBlanks.thresholdDesc=\u786E\u5B9A\u767D\u8272\u50CF\u7D20\u5FC5\u987B\u6709\u591A\u767D\u7684\u9608\u503C -removeBlanks.whitePercent=\u767D\u8272\u767E\u5206\u6BD4\uFF08%\uFF09\uFF1A -removeBlanks.whitePercentDesc=\u5FC5\u987B\u4E3A\u767D\u8272\u624D\u80FD\u5220\u9664\u7684\u9875\u9762\u767E\u5206\u6BD4 -removeBlanks.submit=\u5220\u9664\u7A7A\u767D - -compare.title=\u6BD4\u8F83 -compare.header=\u6BD4\u8F83 PDF -compare.document.1=\u6587\u6863 1 -compare.document.2=\u6587\u6863 2 -compare.submit=\u6BD4\u8F83 - -sign.title=\u7B7E\u540D -sign.header=\u7B7E\u7F72 PDF -sign.upload=\u4E0A\u4F20\u56FE\u7247 -sign.draw=\u7ED8\u5236\u7B7E\u540D -sign.text=\u6587\u672C\u8F93\u5165 -sign.clear=\u6E05\u9664 -sign.add=\u6DFB\u52A0 - -repair.title=\u4FEE\u590D -repair.header=\u4FEE\u590D PDF -repair.submit=\u4FEE\u590D - -flatten.title=\u5C55\u5E73 -flatten.header=\u5C55\u5E73 PDF -flatten.submit=\u5C55\u5E73 - -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)。 - -navbar.settings=设置 -settings.title=设置 -settings.update=可更新 -settings.appVersion=应用程序版本: -settings.downloadOption.title=选择下载选项(单个文件非压缩文件): -settings.downloadOption.1=在同一窗口打开 -settings.downloadOption.2=在新窗口中打开 -settings.downloadOption.3=下载文件 -settings.zipThreshold=当下载的文件数量超过限制时,将文件压缩。 - - - - -#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=Normal (如果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=用OCR处理PDF - - - -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 (Work in progress) -addImage.everyPage=每一页? -addImage.upload=添加图片 -addImage.submit=添加图片 - - -#merge -merge.title=合并 -merge.header=合并多个PDF(2个以上)。 -merge.submit=合并 - -#pdfOrganiser -pdfOrganiser.title=页面排序 -pdfOrganiser.header=PDF页面排序 -pdfOrganiser.submit=重新排列页面 - -#multiTool -multiTool.title=PDF多功能工具 -multiTool.header=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=Document #1: Page 1 -split.desc.4=Document #2: Page 2 and 3 -split.desc.5=Document #3: Page 4, 5 and 6 -split.desc.6=Document #4: Page 7 -split.desc.7=Document #5: Page 8 -split.desc.8=Document #6: Page 9 and 10 -split.splitPages=输入要分割的页面: -split.submit=拆分 - - -#merge -imageToPDF.title=图片转PDF -imageToPDF.header=图像转为PDF -imageToPDF.submit=转换 -imageToPDF.selectText.1=拉伸至适合的尺寸 -imageToPDF.selectText.2=自动旋转PDF -imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用) -imageToPDF.selectText.4=合并成一个PDF文件 -imageToPDF.selectText.5=转换为独立的PDF文件 - -#pdfToImage -pdfToImage.title=PDF to Image -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=Owner Password -addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) -addPassword.selectText.16=Restricts the opening of the document itself� -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=widthSpacer(水平方向上每个水印之间的空间): -watermark.selectText.6=heightSpacer(每个水印之间的垂直空间): -watermark.selectText.7=透明度(0% - 100%): -watermark.submit=添加水印 - -#remove-watermark -remove-watermark.title=去除水印 -remove-watermark.header=去除水印 -remove-watermark.selectText.1=选择要去除水印的PDF: -remove-watermark.selectText.2=水印文本: -remove-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.title=更改元数据 -changeMetadata.header=更改元数据 -changeMetadata.selectText.1=请编辑你想要改变的变量。 -changeMetadata.selectText.2=删除所有元数据 -changeMetadata.selectText.3=显示自定义元数据: -changeMetadata.author=作者: -changeMetadata.creationDate=创建日期(yyyy/MM/dd HH:mm:ss): -changeMetadata.creator=创建者: -changeMetadata.keywords=关键词: -changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss): -changeMetadata.producer=生产者: -changeMetadata.subject=主题: -changeMetadata.title=标题: -changeMetadata.trapped=被困: -changeMetadata.selectText.4=其他元数据: -changeMetadata.selectText.5=添加自定义元数据条目 -changeMetadata.submit=更改 - -xlsToPdf.title=Excel转PDF -xlsToPdf.header=Excel转PDF -xlsToPdf.selectText.1=选择要转换的XLS或XLSX Excel表格 -xlsToPdf.convert=转换 - - - - -pdfToPDFA.title=PDF To PDF/A -pdfToPDFA.header=PDF to PDF/A -pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换 -pdfToPDFA.submit=转换 - - - -PDFToWord.title=PDF to Word -PDFToWord.header=将PDF转换成Word -PDFToWord.selectText.1=输出文件格式 -PDFToWord.credit=此服务使用LibreOffice进行文件转换。 -PDFToWord.submit=转换 - -PDFToPresentation.title=PDF To Presentation -PDFToPresentation.header=将PDF转为演示文稿 -PDFToPresentation.selectText.1=输出文件格式 -PDFToPresentation.credit=该服务使用LibreOffice进行文件转换。 -PDFToPresentation.submit=转换 - - -PDFToText.title=PDF To Text/RTF -PDFToText.header=将PDF转换成文本/RTF -PDFToText.selectText.1=输出文件格式 -PDFToText.credit=该服务使用LibreOffice进行文件转换。 -PDFToText.submit=转换 - - -PDFToHTML.title=PDF To HTML -PDFToHTML.header=将PDF转换成HTML -PDFToHTML.credit=此服务使用LibreOffice进行文件转换。 -PDFToHTML.submit=转换 - -PDFToXML.title=PDF To XML -PDFToXML.header=将PDF转换为XML -PDFToXML.credit=此服务使用LibreOffice进行文件转换。 -PDFToXML.submit=转换 +########### +# 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=页面顺序(输入逗号分隔的页码列表): +goToPage=到 +true=True +false=False +unknown=未知 +save=保存 +close=关闭 +filesSelected=\u9009\u62E9\u7684\u6587\u4EF6 +noFavourites=\u6CA1\u6709\u6DFB\u52A0\u6536\u85CF\u5939 +bored=\u65E0\u804A\u7B49\u5F85\uFF1F +alphabet=\u5B57\u6BCD\u8868 +downloadPdf=\u4E0B\u8F7DPDF +text=\u6587\u672C +font=\u5B57\u4F53 +selectFillter=-- 选择-- +pageNum=页码 +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect + + +############# +# 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=当下载的文件数量超过限制时,将文件压缩。 + +############# +# HOME-PAGE # +############# +home.desc=您的本地托管一站式服务,满足您的所有PDF需求。 + + +home.multiTool.title=PDF多功能工具 +home.multiTool.desc=合并、旋转、重新排列和删除PDF页面 +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side + +home.merge.title=合并 +home.merge.desc=轻松合并多个PDF为一个。 +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side + +home.split.title=拆分 +home.split.desc=将 PDF 拆分为多个文档。 + +home.rotate.title=旋转 +home.rotate.desc=旋转PDF。 + +home.imageToPdf.title=转换图像到PDF +home.imageToPdf.desc=转换图像(PNG, JPEG, GIF)到 PDF。 + +home.pdfToImage.title=转换PDF到图像 +home.pdfToImage.desc=转换PDF到图像(PNG, JPEG, GIF) + +home.pdfOrganiser.title=整理 +home.pdfOrganiser.desc=按任何顺序删除/重新排列页面。 + +home.addImage.title=在PDF中添加图片 +home.addImage.desc=将图像添加到PDF的设定位置上 + +home.watermark.title=添加水印 +home.watermark.desc=在PDF中添加一个自定义的水印。 + +home.permissions.title=更改权限 +home.permissions.desc=改变你的PDF文档的权限。 + +home.removePages.title=删除 +home.removePages.desc=从你的PDF文档中删除不需要的页面。 + +home.addPassword.title=添加密码 +home.addPassword.desc=用密码来加密你的PDF文档。 + +home.removePassword.title=删除密码 +home.removePassword.desc=从你的PDF文档中移除密码保护。 + +home.compressPdfs.title=压缩 +home.compressPdfs.desc=压缩PDF文件以减少其文件大小。 + +home.changeMetadata.title=更改元数据 +home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。 + +home.fileToPDF.title=将文件转换为PDF文件 +home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等) + +home.ocr.title=运行OCR/清理扫描 +home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。 + +home.extractImages.title=提取图像 +home.extractImages.desc=从PDF中提取所有的图像并将其保存到压缩包中。 + +home.pdfToPDFA.title=PDF To PDF/A +home.pdfToPDFA.desc=将PDF转换为PDF/A以便长期保存 + +home.PDFToWord.title=PDF to Word +home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。 + +home.PDFToPresentation.title=PDF To Presentation +home.PDFToPresentation.desc=将PDF转换成演示文稿格式(PPT、PPTX和ODP)。 + +home.PDFToText.title=PDF To Text/RTF +home.PDFToText.desc=将PDF转换为文本或RTF格式 + +home.PDFToHTML.title=PDF To HTML +home.PDFToHTML.desc=将PDF转换为HTML格式 + +home.PDFToXML.title=PDF To XML +home.PDFToXML.desc=将PDF转换为XML格式 + +home.ScannerImageSplit.title=检测/分割扫描的照片 +home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片 + +home.sign.title=\u6807\u5FD7 +home.sign.desc=\u901A\u8FC7\u7ED8\u56FE\u3001\u6587\u672C\u6216\u56FE\u50CF\u5411 PDF \u6DFB\u52A0\u7B7E\u540D + +home.flatten.title=\u5C55\u5E73 +home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355 + +home.repair.title=\u4FEE\u590D +home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF + +home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875 +home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875 + +home.compare.title=\u6BD4\u8F83 +home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02 + +home.certSign.title=Sign with Certificate +home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) + +home.pageLayout.title=Multi-Page Layout +home.pageLayout.desc=Merge multiple pages of a PDF document into a single page + +home.scalePages.title=Adjust page size/scale +home.scalePages.desc=Change the size/scale of page and/or its contents. + +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts + +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location + +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header + +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF + +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) + +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code + +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files + + +########################### +# # +# WEB PAGES # +# # +########################### + + +#sanitizePDF +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Multi Page Layout +pageLayout.header=Multi Page Layout +pageLayout.pagesPerSheet=Pages per sheet: +pageLayout.submit=Submit + + +#scalePages +scalePages.title=Adjust page-scale +scalePages.header=Adjust page-scale +scalePages.pageSize=Size of a page of the document. +scalePages.scaleFactor=Zoom level (crop) of a page. +scalePages.submit=Submit + + +#certSign +certSign.title=证书签名 +certSign.header=使用您的证书签署 PDF(进行中) +certSign.selectPDF=选择要签名的 PDF 文件: +certSign.selectKey=选择您的私钥文件(PKCS#8 格式,可以是 .pem 或 .der): +certSign.selectCert=选择您的证书文件(X.509 格式,可以是 .pem 或 .der): +certSign.selectP12=选择您的 PKCS#12 密钥库文件(.p12 或 .pfx)(可选,如果提供,它应该包含您的私钥和证书): +certSign.certType=证书类型 +certSign.password=输入您的密钥库或私钥密码(如果有): +certSign.showSig=显示签名 +certSign.reason=原因 +certSign.location=位置 +certSign.name=名称 +certSign.submit=签署 PDF + + +#removeBlanks +removeBlanks.title=\u5220\u9664\u7A7A\u767D +removeBlanks.header=\u5220\u9664\u7A7A\u767D\u9875 +removeBlanks.threshold=\u9608\u503C\uFF1A +removeBlanks.thresholdDesc=\u786E\u5B9A\u767D\u8272\u50CF\u7D20\u5FC5\u987B\u6709\u591A\u767D\u7684\u9608\u503C +removeBlanks.whitePercent=\u767D\u8272\u767E\u5206\u6BD4\uFF08%\uFF09\uFF1A +removeBlanks.whitePercentDesc=\u5FC5\u987B\u4E3A\u767D\u8272\u624D\u80FD\u5220\u9664\u7684\u9875\u9762\u767E\u5206\u6BD4 +removeBlanks.submit=\u5220\u9664\u7A7A\u767D + + +#compare +compare.title=\u6BD4\u8F83 +compare.header=\u6BD4\u8F83 PDF +compare.document.1=\u6587\u6863 1 +compare.document.2=\u6587\u6863 2 +compare.submit=\u6BD4\u8F83 + + +#sign +sign.title=\u7B7E\u540D +sign.header=\u7B7E\u7F72 PDF +sign.upload=\u4E0A\u4F20\u56FE\u7247 +sign.draw=\u7ED8\u5236\u7B7E\u540D +sign.text=\u6587\u672C\u8F93\u5165 +sign.clear=\u6E05\u9664 +sign.add=\u6DFB\u52A0 + + +#repair +repair.title=\u4FEE\u590D +repair.header=\u4FEE\u590D PDF +repair.submit=\u4FEE\u590D + + +#flatten +flatten.title=\u5C55\u5E73 +flatten.header=\u5C55\u5E73 PDF +flatten.submit=\u5C55\u5E73 + + +#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=Normal (如果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=用OCR处理PDF + + +#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 (Work in progress) +addImage.everyPage=每一页? +addImage.upload=添加图片 +addImage.submit=添加图片 + + +#merge +merge.title=合并 +merge.header=合并多个PDF(2个以上)。 +merge.submit=合并 + + +#pdfOrganiser +pdfOrganiser.title=页面排序 +pdfOrganiser.header=PDF页面排序 +pdfOrganiser.submit=重新排列页面 + + +#multiTool +multiTool.title=PDF多功能工具 +multiTool.header=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=Document #1: Page 1 +split.desc.4=Document #2: Page 2 and 3 +split.desc.5=Document #3: Page 4, 5 and 6 +split.desc.6=Document #4: Page 7 +split.desc.7=Document #5: Page 8 +split.desc.8=Document #6: Page 9 and 10 +split.splitPages=输入要分割的页面: +split.submit=拆分 + + +#merge +imageToPDF.title=图片转PDF +imageToPDF.header=图像转为PDF +imageToPDF.submit=转换 +imageToPDF.selectText.1=拉伸至适合的尺寸 +imageToPDF.selectText.2=自动旋转PDF +imageToPDF.selectText.3=多文件逻辑(仅在处理多个图像时启用) +imageToPDF.selectText.4=合并成一个PDF文件 +imageToPDF.selectText.5=转换为独立的PDF文件 + + +#pdfToImage +pdfToImage.title=PDF to Image +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=Owner Password +addPassword.selectText.15=Restricts what can be done with the document once it is opened (Not supported by all readers) +addPassword.selectText.16=Restricts the opening of the document itself� +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=widthSpacer(水平方向上每个水印之间的空间): +watermark.selectText.6=heightSpacer(每个水印之间的垂直空间): +watermark.selectText.7=透明度(0% - 100%): +watermark.submit=添加水印 + + +#remove-watermark +remove-watermark.title=去除水印 +remove-watermark.header=去除水印 +remove-watermark.selectText.1=选择要去除水印的PDF: +remove-watermark.selectText.2=水印文本: +remove-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=创建日期(yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=创建者: +changeMetadata.keywords=关键词: +changeMetadata.modDate=修改日期(yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=生产者: +changeMetadata.subject=主题: +changeMetadata.title=标题: +changeMetadata.trapped=被困: +changeMetadata.selectText.4=其他元数据: +changeMetadata.selectText.5=添加自定义元数据条目 +changeMetadata.submit=更改 + + +#xlsToPdf +xlsToPdf.title=Excel转PDF +xlsToPdf.header=Excel转PDF +xlsToPdf.selectText.1=选择要转换的XLS或XLSX Excel表格 +xlsToPdf.convert=转换 + + +#pdfToPDFA +pdfToPDFA.title=PDF To PDF/A +pdfToPDFA.header=PDF to PDF/A +pdfToPDFA.credit=此服务使用OCRmyPDF进行PDF/A转换 +pdfToPDFA.submit=转换 + + +#PDFToWord +PDFToWord.title=PDF to Word +PDFToWord.header=将PDF转换成Word +PDFToWord.selectText.1=输出文件格式 +PDFToWord.credit=此服务使用LibreOffice进行文件转换。 +PDFToWord.submit=转换 + + +#PDFToPresentation +PDFToPresentation.title=PDF To Presentation +PDFToPresentation.header=将PDF转为演示文稿 +PDFToPresentation.selectText.1=输出文件格式 +PDFToPresentation.credit=该服务使用LibreOffice进行文件转换。 +PDFToPresentation.submit=转换 + + +#PDFToText +PDFToText.title=PDF To Text/RTF +PDFToText.header=将PDF转换成文本/RTF +PDFToText.selectText.1=输出文件格式 +PDFToText.credit=该服务使用LibreOffice进行文件转换。 +PDFToText.submit=转换 + + +#PDFToHTML +PDFToHTML.title=PDF To HTML +PDFToHTML.header=将PDF转换成HTML +PDFToHTML.credit=此服务使用LibreOffice进行文件转换。 +PDFToHTML.submit=转换 + + +#PDFToXML +PDFToXML.title=PDF To XML +PDFToXML.header=将PDF转换为XML +PDFToXML.credit=此服务使用LibreOffice进行文件转换。 +PDFToXML.submit=转换 diff --git a/src/main/resources/static/css/general.css b/src/main/resources/static/css/general.css index 2d53c5cc..b3861577 100644 --- a/src/main/resources/static/css/general.css +++ b/src/main/resources/static/css/general.css @@ -1,68 +1,72 @@ -#page-container { - min-height: 100vh; - display: flex; - flex-direction: column; -} - -#content-wrap { - flex: 1; -} - -#footer { - bottom: 0; - width: 100%; -} - -html[lang-direction=ltr] * { - direction: ltr; -} -html[lang-direction=rtl] * { - direction: rtl; - text-align: right; -} -.ignore-rtl { - direction: ltr !important; - text-align: left !important; -} - -.align-top { - position: absolute; - top: 0; -} -.align-center-right { - position: absolute; - right: 0; - top: 50%; -} - -.align-center-left { - position: absolute; - left: 0; - top: 50%; -} - -.align-bottom { - position: absolute; - bottom: 0; -} - -.btn-group > label:first-of-type { - border-top-left-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -html[lang-direction="rtl"] input.form-check-input { - position: relative; - margin-left: 0px; -} -html[lang-direction="rtl"] label.form-check-label { - display: inline; -} - -.margin-auto-parent { - width: 100%; - display: flex; -} -.margin-center { - margin: 0 auto; +#page-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +#content-wrap { + flex: 1; +} + +#footer { + bottom: 0; + width: 100%; +} + +html[lang-direction=ltr] * { + direction: ltr; +} +html[lang-direction=rtl] * { + direction: rtl; + text-align: right; +} +.ignore-rtl { + direction: ltr !important; + text-align: left !important; +} + +.align-top { + position: absolute; + top: 0; +} +.align-center-right { + position: absolute; + right: 0; + top: 50%; +} + +.align-center-left { + position: absolute; + left: 0; + top: 50%; +} + +.align-bottom { + position: absolute; + bottom: 0; +} + +.btn-group > label:first-of-type { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +html[lang-direction="rtl"] input.form-check-input { + position: relative; + margin-left: 0px; +} +html[lang-direction="rtl"] label.form-check-label { + display: inline; +} + +.margin-auto-parent { + width: 100%; + display: flex; +} +.margin-center { + margin: 0 auto; +} +#pdf-canvas { + box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384); + width: 100%; } \ No newline at end of file diff --git a/src/main/resources/static/css/home.css b/src/main/resources/static/css/home.css index 94414be9..998278e1 100644 --- a/src/main/resources/static/css/home.css +++ b/src/main/resources/static/css/home.css @@ -1,3 +1,17 @@ +#searchBar { + background-image: url('/images/search.svg'); + background-position: 16px 16px; + background-repeat: no-repeat; + width: 100%; + font-size: 16px; + margin-bottom: 12px; + padding: 12px 20px 12px 40px; + border: 1px solid #ddd; + + +} + + .features-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(21rem, 3fr)); diff --git a/src/main/resources/static/css/merge.css b/src/main/resources/static/css/merge.css index 349ae19e..5196baad 100644 --- a/src/main/resources/static/css/merge.css +++ b/src/main/resources/static/css/merge.css @@ -1,25 +1,29 @@ - .list-group-item { - display: flex; - justify-content: space-between; - align-items: center; -} - -.filename { - flex-grow: 1; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - margin-right: 10px; -} - -.arrows { - flex-shrink: 0; - display: flex; - justify-content: flex-end; -} - -.move-up span, -.move-down span { - font-weight: bold; - font-size: 1.2em; -} + .list-group-item { + display: flex; + justify-content: space-between; + align-items: center; +} + +.filename { + flex-grow: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: 10px; +} + +.arrows { + flex-shrink: 0; + display: flex; + justify-content: flex-end; +} +.arrows .btn { + margin: 0 3px; +} + +.move-up span, +.move-down span { + font-weight: bold; + font-size: 1.2em; + +} diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index 60b612c5..5bb99a5e 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -1,3 +1,41 @@ + + +#navbarSearch { + top: 100%; + right: 0; +} + +#searchForm { + width: 200px; /* Adjust this value as needed */ +} + +/* Style the search results to match the navbar */ +#searchResults { + max-height: 200px; /* Adjust this value as needed */ + overflow-y: auto; + width: 100%; +} + +#searchResults .dropdown-item { + display: flex; + align-items: center; + white-space: nowrap; + height: 50px; /* Fixed height */ + overflow: hidden; /* Hide overflow */ +} + +#searchResults .icon { + margin-right: 10px; +} + +#searchResults .icon-text { + display: inline; + overflow: hidden; /* Hide overflow */ + text-overflow: ellipsis; /* Add ellipsis for long text */ +} + + + .main-icon { width: 36px; height: 36px; diff --git a/src/main/resources/static/files/Auto Splitter Divider (minimal).pdf b/src/main/resources/static/files/Auto Splitter Divider (minimal).pdf new file mode 100644 index 00000000..0859af0f Binary files /dev/null and b/src/main/resources/static/files/Auto Splitter Divider (minimal).pdf differ diff --git a/src/main/resources/static/files/Auto Splitter Divider (with instructions).pdf b/src/main/resources/static/files/Auto Splitter Divider (with instructions).pdf new file mode 100644 index 00000000..6aed127e Binary files /dev/null and b/src/main/resources/static/files/Auto Splitter Divider (with instructions).pdf differ diff --git a/src/main/resources/static/fonts/DancingScript-Regular.woff2 b/src/main/resources/static/fonts/DancingScript-Regular.woff2 new file mode 100644 index 00000000..17c598ae Binary files /dev/null and b/src/main/resources/static/fonts/DancingScript-Regular.woff2 differ diff --git a/src/main/resources/static/fonts/IndieFlower-Regular.woff2 b/src/main/resources/static/fonts/IndieFlower-Regular.woff2 new file mode 100644 index 00000000..f799fdd7 Binary files /dev/null and b/src/main/resources/static/fonts/IndieFlower-Regular.woff2 differ diff --git a/src/main/resources/static/images/add-page-numbers.svg b/src/main/resources/static/images/add-page-numbers.svg new file mode 100644 index 00000000..3ee3396c --- /dev/null +++ b/src/main/resources/static/images/add-page-numbers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/images/adjust-contrast.svg b/src/main/resources/static/images/adjust-contrast.svg new file mode 100644 index 00000000..fea76d92 --- /dev/null +++ b/src/main/resources/static/images/adjust-contrast.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/static/images/crop.svg b/src/main/resources/static/images/crop.svg new file mode 100644 index 00000000..b7e17490 --- /dev/null +++ b/src/main/resources/static/images/crop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/images/fonts.svg b/src/main/resources/static/images/fonts.svg new file mode 100644 index 00000000..3afc7d2e --- /dev/null +++ b/src/main/resources/static/images/fonts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/images/sanitize.svg b/src/main/resources/static/images/sanitize.svg new file mode 100644 index 00000000..fc4dd2f9 --- /dev/null +++ b/src/main/resources/static/images/sanitize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/js/fileInput.js b/src/main/resources/static/js/fileInput.js index 87454277..94b5294f 100644 --- a/src/main/resources/static/js/fileInput.js +++ b/src/main/resources/static/js/fileInput.js @@ -1,30 +1,84 @@ document.addEventListener('DOMContentLoaded', function() { - const fileInput = document.getElementById(elementID); - // Prevent default behavior for drag events - ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { - fileInput.addEventListener(eventName, preventDefaults, false); - }); - function preventDefaults(e) { - e.preventDefault(); - e.stopPropagation(); - } + let overlay; + let dragCounter = 0; - // Add drop event listener - fileInput.addEventListener('drop', handleDrop, false); + const dragenterListener = function() { + dragCounter++; + if (!overlay) { + // Create and show the overlay + overlay = document.createElement('div'); + overlay.style.position = 'fixed'; + overlay.style.top = 0; + overlay.style.left = 0; + overlay.style.width = '100%'; + overlay.style.height = '100%'; + overlay.style.background = 'rgba(0, 0, 0, 0.5)'; + overlay.style.color = '#fff'; + overlay.style.zIndex = '1000'; + overlay.style.display = 'flex'; + overlay.style.alignItems = 'center'; + overlay.style.justifyContent = 'center'; + overlay.style.pointerEvents = 'none'; + overlay.innerHTML = '

Drop files anywhere to upload

'; + document.getElementById('content-wrap').appendChild(overlay); + } + }; + + const dragleaveListener = function() { + dragCounter--; + if (dragCounter === 0) { + // Hide and remove the overlay + if (overlay) { + overlay.remove(); + overlay = null; + } + } + }; + + const dropListener = function(e) { + const dt = e.dataTransfer; + const files = dt.files; + + // Access the file input element and assign dropped files + const fileInput = document.getElementById(elementID); + fileInput.files = files; + + // Hide and remove the overlay + if (overlay) { + overlay.remove(); + overlay = null; + } + + // Reset drag counter + dragCounter = 0; + + //handleFileInputChange(fileInput); + fileInput.dispatchEvent(new Event('change', { bubbles: true })); + }; + + // Prevent default behavior for drag events + ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { + document.body.addEventListener(eventName, preventDefaults, false); + }); + + function preventDefaults(e) { + e.preventDefault(); + e.stopPropagation(); + } + + document.body.addEventListener('dragenter', dragenterListener); + document.body.addEventListener('dragleave', dragleaveListener); + // Add drop event listener + document.body.addEventListener('drop', dropListener); - function handleDrop(e) { - const dt = e.dataTransfer; - const files = dt.files; - fileInput.files = files; - handleFileInputChange(fileInput) - } }); $("#"+elementID).on("change", function() { - handleFileInputChange(this); + handleFileInputChange(this); }); + function handleFileInputChange(inputElement) { const files = $(inputElement).get(0).files; const fileNames = Array.from(files).map(f => f.name); diff --git a/src/main/resources/static/js/homecard.js b/src/main/resources/static/js/homecard.js index f3d3de35..fb962a12 100644 --- a/src/main/resources/static/js/homecard.js +++ b/src/main/resources/static/js/homecard.js @@ -1,3 +1,24 @@ +function filterCards() { + var input = document.getElementById('searchBar'); + var filter = input.value.toUpperCase(); + var cards = document.querySelectorAll('.feature-card'); + + for (var i = 0; i < cards.length; i++) { + var card = cards[i]; + var title = card.querySelector('h5.card-title').innerText; + var text = card.querySelector('p.card-text').innerText; + var tags = card.getAttribute('data-tags'); + var content = title + ' ' + text + ' ' + tags; + + if (content.toUpperCase().indexOf(filter) > -1) { + card.style.display = ""; + } else { + card.style.display = "none"; + } + } +} + + function toggleFavorite(element) { var img = element.querySelector('img'); var card = element.closest('.feature-card'); @@ -13,6 +34,7 @@ function toggleFavorite(element) { } reorderCards(); updateFavoritesDropdown(); + filterCards(); } function reorderCards() { @@ -45,5 +67,7 @@ function initializeCards() { }); reorderCards(); updateFavoritesDropdown(); + filterCards(); } + window.onload = initializeCards; \ No newline at end of file diff --git a/src/main/resources/static/js/pipeline.js b/src/main/resources/static/js/pipeline.js index d92fd220..8b2c263d 100644 --- a/src/main/resources/static/js/pipeline.js +++ b/src/main/resources/static/js/pipeline.js @@ -1,419 +1,494 @@ -document.getElementById('validateButton').addEventListener('click', function(event) { - event.preventDefault(); - validatePipeline(); -}); -function validatePipeline() { - let pipelineListItems = document.getElementById('pipelineList').children; - let isValid = true; - let containsAddPassword = false; - for (let i = 0; i < pipelineListItems.length - 1; i++) { - let currentOperation = pipelineListItems[i].querySelector('.operationName').textContent; - let nextOperation = pipelineListItems[i + 1].querySelector('.operationName').textContent; - if (currentOperation === '/add-password') { - containsAddPassword = true; - } - console.log(currentOperation); - console.log(apiDocs[currentOperation]); - let currentOperationDescription = apiDocs[currentOperation]?.post?.description || ""; - let nextOperationDescription = apiDocs[nextOperation]?.post?.description || ""; - - console.log("currentOperationDescription", currentOperationDescription); - console.log("nextOperationDescription", nextOperationDescription); - - let currentOperationOutput = currentOperationDescription.match(/Output:([A-Z\/]*)/)?.[1] || ""; - let nextOperationInput = nextOperationDescription.match(/Input:([A-Z\/]*)/)?.[1] || ""; - - console.log("Operation " + currentOperation + " Output: " + currentOperationOutput); - console.log("Operation " + nextOperation + " Input: " + nextOperationInput); - - // Splitting in case of multiple possible output/input - let currentOperationOutputArr = currentOperationOutput.split('/'); - let nextOperationInputArr = nextOperationInput.split('/'); - - if (currentOperationOutput !== 'ANY' && nextOperationInput !== 'ANY') { - let intersection = currentOperationOutputArr.filter(value => nextOperationInputArr.includes(value)); - console.log(`Intersection: ${intersection}`); - - if (intersection.length === 0) { - isValid = false; - console.log(`Incompatible operations: The output of operation '${currentOperation}' (${currentOperationOutput}) is not compatible with the input of the following operation '${nextOperation}' (${nextOperationInput}).`); - alert(`Incompatible operations: The output of operation '${currentOperation}' (${currentOperationOutput}) is not compatible with the input of the following operation '${nextOperation}' (${nextOperationInput}).`); - break; - } - } - } - if (containsAddPassword && pipelineListItems[pipelineListItems.length - 1].querySelector('.operationName').textContent !== '/add-password') { - alert('The "add-password" operation should be at the end of the operations sequence. Please adjust the operations order.'); - return false; - } - if (isValid) { - console.log('Pipeline is valid'); - // Continue with the pipeline operation - } else { - console.error('Pipeline is not valid'); - // Stop operation, maybe display an error to the user - } - - return isValid; -} - - - - - -document.getElementById('submitConfigBtn').addEventListener('click', function() { - - if (validatePipeline() === false) { - return; - } - let selectedOperation = document.getElementById('operationsDropdown').value; - let parameters = operationSettings[selectedOperation] || {}; - - let pipelineConfig = { - "name": "uniquePipelineName", - "pipeline": [{ - "operation": selectedOperation, - "parameters": parameters - }] - }; - - let pipelineConfigJson = JSON.stringify(pipelineConfig, null, 2); - - let formData = new FormData(); - - let fileInput = document.getElementById('fileInput'); - let files = fileInput.files; - - for (let i = 0; i < files.length; i++) { - console.log("files[i]", files[i].name); - formData.append('fileInput', files[i], files[i].name); - } - - console.log("pipelineConfigJson", pipelineConfigJson); - formData.append('json', pipelineConfigJson); - console.log("formData", formData); - - fetch('/handleData', { - method: 'POST', - body: formData - }) - .then(response => response.blob()) - .then(blob => { - - let url = window.URL.createObjectURL(blob); - let a = document.createElement('a'); - a.href = url; - a.download = 'outputfile'; - document.body.appendChild(a); - a.click(); - a.remove(); - }) - .catch((error) => { - console.error('Error:', error); - }); -}); - -let apiDocs = {}; - -let operationSettings = {}; - -fetch('v3/api-docs') - .then(response => response.json()) - .then(data => { - - apiDocs = data.paths; - let operationsDropdown = document.getElementById('operationsDropdown'); - const ignoreOperations = ["/handleData", "operationToIgnore"]; // Add the operations you want to ignore here - - operationsDropdown.innerHTML = ''; - - let operationsByTag = {}; - - // Group operations by tags - Object.keys(data.paths).forEach(operationPath => { - let operation = data.paths[operationPath].post; - if (operation && !ignoreOperations.includes(operationPath) && !operation.description.includes("Type:MISO")) { - let operationTag = operation.tags[0]; // This assumes each operation has exactly one tag - if (!operationsByTag[operationTag]) { - operationsByTag[operationTag] = []; - } - operationsByTag[operationTag].push(operationPath); - } - }); - - // Specify the order of tags - let tagOrder = ["General", "Security", "Convert", "Other", "Filter"]; - - // Create dropdown options - tagOrder.forEach(tag => { - if (operationsByTag[tag]) { - let group = document.createElement('optgroup'); - group.label = tag; - - operationsByTag[tag].forEach(operationPath => { - let option = document.createElement('option'); - let operationWithoutSlash = operationPath.replace(/\//g, ''); // Remove slashes - option.textContent = operationWithoutSlash; - option.value = operationPath; // Keep the value with slashes for querying - group.appendChild(option); - }); - - operationsDropdown.appendChild(group); - } - }); - }); - - -document.getElementById('addOperationBtn').addEventListener('click', function() { - let selectedOperation = document.getElementById('operationsDropdown').value; - let pipelineList = document.getElementById('pipelineList'); - - let listItem = document.createElement('li'); - listItem.className = "list-group-item"; - let hasSettings = (apiDocs[selectedOperation] && apiDocs[selectedOperation].post && - apiDocs[selectedOperation].post.parameters && apiDocs[selectedOperation].post.parameters.length > 0); - - - listItem.innerHTML = ` -
-
${selectedOperation}
-
- - - - -
-
- `; - - pipelineList.appendChild(listItem); - - listItem.querySelector('.move-up').addEventListener('click', function(event) { - event.preventDefault(); - if (listItem.previousElementSibling) { - pipelineList.insertBefore(listItem, listItem.previousElementSibling); - } - }); - - listItem.querySelector('.move-down').addEventListener('click', function(event) { - event.preventDefault(); - if (listItem.nextElementSibling) { - pipelineList.insertBefore(listItem.nextElementSibling, listItem); - } - }); - - listItem.querySelector('.remove').addEventListener('click', function(event) { - event.preventDefault(); - pipelineList.removeChild(listItem); - }); - - listItem.querySelector('.pipelineSettings').addEventListener('click', function(event) { - event.preventDefault(); - showpipelineSettingsModal(selectedOperation); - }); - - function showpipelineSettingsModal(operation) { - let pipelineSettingsModal = document.getElementById('pipelineSettingsModal'); - let pipelineSettingsContent = document.getElementById('pipelineSettingsContent'); - let operationData = apiDocs[operation].post.parameters || []; - - pipelineSettingsContent.innerHTML = ''; - - operationData.forEach(parameter => { - let parameterDiv = document.createElement('div'); - parameterDiv.className = "form-group"; - - let parameterLabel = document.createElement('label'); - parameterLabel.textContent = `${parameter.name} (${parameter.schema.type}): `; - parameterLabel.title = parameter.description; - parameterDiv.appendChild(parameterLabel); - - let parameterInput; - switch (parameter.schema.type) { - case 'string': - case 'number': - case 'integer': - parameterInput = document.createElement('input'); - parameterInput.type = parameter.schema.type === 'string' ? 'text' : 'number'; - parameterInput.className = "form-control"; - break; - case 'boolean': - parameterInput = document.createElement('input'); - parameterInput.type = 'checkbox'; - break; - case 'array': - case 'object': - parameterInput = document.createElement('textarea'); - parameterInput.placeholder = `Enter a JSON formatted ${parameter.schema.type}`; - parameterInput.className = "form-control"; - break; - case 'enum': - parameterInput = document.createElement('select'); - parameterInput.className = "form-control"; - parameter.schema.enum.forEach(option => { - let optionElement = document.createElement('option'); - optionElement.value = option; - optionElement.text = option; - parameterInput.appendChild(optionElement); - }); - break; - default: - parameterInput = document.createElement('input'); - parameterInput.type = 'text'; - parameterInput.className = "form-control"; - } - parameterInput.id = parameter.name; - - if (operationSettings[operation] && operationSettings[operation][parameter.name] !== undefined) { - let savedValue = operationSettings[operation][parameter.name]; - - switch (parameter.schema.type) { - case 'number': - case 'integer': - parameterInput.value = savedValue.toString(); - break; - case 'boolean': - parameterInput.checked = savedValue; - break; - case 'array': - case 'object': - parameterInput.value = JSON.stringify(savedValue); - break; - default: - parameterInput.value = savedValue; - } - } - - parameterDiv.appendChild(parameterInput); - - pipelineSettingsContent.appendChild(parameterDiv); - }); - - let saveButton = document.createElement('button'); - saveButton.textContent = "Save Settings"; - saveButton.className = "btn btn-primary"; - saveButton.addEventListener('click', function(event) { - event.preventDefault(); - let settings = {}; - operationData.forEach(parameter => { - let value = document.getElementById(parameter.name).value; - switch (parameter.schema.type) { - case 'number': - case 'integer': - settings[parameter.name] = Number(value); - break; - case 'boolean': - settings[parameter.name] = document.getElementById(parameter.name).checked; - break; - case 'array': - case 'object': - try { - settings[parameter.name] = JSON.parse(value); - } catch (err) { - console.error(`Invalid JSON format for ${parameter.name}`); - } - break; - default: - settings[parameter.name] = value; - } - }); - operationSettings[operation] = settings; - console.log(settings); - pipelineSettingsModal.style.display = "none"; - }); - pipelineSettingsContent.appendChild(saveButton); - - pipelineSettingsModal.style.display = "block"; - - pipelineSettingsModal.getElementsByClassName("close")[0].onclick = function() { - pipelineSettingsModal.style.display = "none"; - } - - window.onclick = function(event) { - if (event.target == pipelineSettingsModal) { - pipelineSettingsModal.style.display = "none"; - } - } - } - - document.getElementById('savePipelineBtn').addEventListener('click', function() { - if (validatePipeline() === false) { - return; - } - let pipelineList = document.getElementById('pipelineList').children; - let pipelineConfig = { - "name": "uniquePipelineName", - "pipeline": [] - }; - - for (let i = 0; i < pipelineList.length; i++) { - let operationName = pipelineList[i].querySelector('.operationName').textContent; - let parameters = operationSettings[operationName] || {}; - - pipelineConfig.pipeline.push({ - "operation": operationName, - "parameters": parameters - }); - } - - let a = document.createElement('a'); - a.href = URL.createObjectURL(new Blob([JSON.stringify(pipelineConfig, null, 2)], { - type: 'application/json' - })); - a.download = 'pipelineConfig.json'; - a.style.display = 'none'; - - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - }); - - document.getElementById('uploadPipelineBtn').addEventListener('click', function() { - document.getElementById('uploadPipelineInput').click(); - }); - - document.getElementById('uploadPipelineInput').addEventListener('change', function(e) { - let reader = new FileReader(); - reader.onload = function(event) { - let pipelineConfig = JSON.parse(event.target.result); - let pipelineList = document.getElementById('pipelineList'); - - while (pipelineList.firstChild) { - pipelineList.removeChild(pipelineList.firstChild); - } - - pipelineConfig.pipeline.forEach(operationConfig => { - let operationsDropdown = document.getElementById('operationsDropdown'); - operationsDropdown.value = operationConfig.operation; - operationSettings[operationConfig.operation] = operationConfig.parameters; - document.getElementById('addOperationBtn').click(); - - let lastOperation = pipelineList.lastChild; - - lastOperation.querySelector('.pipelineSettings').click(); - - Object.keys(operationConfig.parameters).forEach(parameterName => { - let input = document.getElementById(parameterName); - if (input) { - switch (input.type) { - case 'checkbox': - input.checked = operationConfig.parameters[parameterName]; - break; - case 'number': - input.value = operationConfig.parameters[parameterName].toString(); - break; - case 'text': - case 'textarea': - default: - input.value = JSON.stringify(operationConfig.parameters[parameterName]); - } - } - }); - - document.querySelector('#pipelineSettingsModal .btn-primary').click(); - }); - }; - reader.readAsText(e.target.files[0]); - }); - +document.getElementById('validateButton').addEventListener('click', function(event) { + event.preventDefault(); + validatePipeline(); +}); +function validatePipeline() { + let pipelineListItems = document.getElementById('pipelineList').children; + let isValid = true; + let containsAddPassword = false; + for (let i = 0; i < pipelineListItems.length - 1; i++) { + let currentOperation = pipelineListItems[i].querySelector('.operationName').textContent; + let nextOperation = pipelineListItems[i + 1].querySelector('.operationName').textContent; + if (currentOperation === '/add-password') { + containsAddPassword = true; + } + console.log(currentOperation); + console.log(apiDocs[currentOperation]); + let currentOperationDescription = apiDocs[currentOperation]?.post?.description || ""; + let nextOperationDescription = apiDocs[nextOperation]?.post?.description || ""; + + console.log("currentOperationDescription", currentOperationDescription); + console.log("nextOperationDescription", nextOperationDescription); + + let currentOperationOutput = currentOperationDescription.match(/Output:([A-Z\/]*)/)?.[1] || ""; + let nextOperationInput = nextOperationDescription.match(/Input:([A-Z\/]*)/)?.[1] || ""; + + console.log("Operation " + currentOperation + " Output: " + currentOperationOutput); + console.log("Operation " + nextOperation + " Input: " + nextOperationInput); + + // Splitting in case of multiple possible output/input + let currentOperationOutputArr = currentOperationOutput.split('/'); + let nextOperationInputArr = nextOperationInput.split('/'); + + if (currentOperationOutput !== 'ANY' && nextOperationInput !== 'ANY') { + let intersection = currentOperationOutputArr.filter(value => nextOperationInputArr.includes(value)); + console.log(`Intersection: ${intersection}`); + + if (intersection.length === 0) { + isValid = false; + console.log(`Incompatible operations: The output of operation '${currentOperation}' (${currentOperationOutput}) is not compatible with the input of the following operation '${nextOperation}' (${nextOperationInput}).`); + alert(`Incompatible operations: The output of operation '${currentOperation}' (${currentOperationOutput}) is not compatible with the input of the following operation '${nextOperation}' (${nextOperationInput}).`); + break; + } + } + } + if (containsAddPassword && pipelineListItems[pipelineListItems.length - 1].querySelector('.operationName').textContent !== '/add-password') { + alert('The "add-password" operation should be at the end of the operations sequence. Please adjust the operations order.'); + return false; + } + if (isValid) { + console.log('Pipeline is valid'); + // Continue with the pipeline operation + } else { + console.error('Pipeline is not valid'); + // Stop operation, maybe display an error to the user + } + + return isValid; +} + + + + + +document.getElementById('submitConfigBtn').addEventListener('click', function() { + + if (validatePipeline() === false) { + return; + } + let selectedOperation = document.getElementById('operationsDropdown').value; + let parameters = operationSettings[selectedOperation] || {}; + + let pipelineConfig = { + "name": "uniquePipelineName", + "pipeline": [{ + "operation": selectedOperation, + "parameters": parameters + }], + "_examples": { + "outputDir": "{outputFolder}/{folderName}", + "outputFileName": "{filename}-{pipelineName}-{date}-{time}" + }, + "outputDir": "httpWebRequest", + "outputFileName": "{filename}" + }; + + let pipelineConfigJson = JSON.stringify(pipelineConfig, null, 2); + + let formData = new FormData(); + + let fileInput = document.getElementById('fileInput-input'); + let files = fileInput.files; + + for (let i = 0; i < files.length; i++) { + console.log("files[i]", files[i].name); + formData.append('fileInput', files[i], files[i].name); + } + + console.log("pipelineConfigJson", pipelineConfigJson); + formData.append('json', pipelineConfigJson); + console.log("formData", formData); + + fetch('/handleData', { + method: 'POST', + body: formData + }) + .then(response => response.blob()) + .then(blob => { + + let url = window.URL.createObjectURL(blob); + let a = document.createElement('a'); + a.href = url; + a.download = 'outputfile'; + document.body.appendChild(a); + a.click(); + a.remove(); + }) + .catch((error) => { + console.error('Error:', error); + }); +}); + +let apiDocs = {}; + +let operationSettings = {}; + +fetch('v3/api-docs') + .then(response => response.json()) + .then(data => { + + apiDocs = data.paths; + let operationsDropdown = document.getElementById('operationsDropdown'); + const ignoreOperations = ["/handleData", "operationToIgnore"]; // Add the operations you want to ignore here + + operationsDropdown.innerHTML = ''; + + let operationsByTag = {}; + + // Group operations by tags + Object.keys(data.paths).forEach(operationPath => { + let operation = data.paths[operationPath].post; + if (operation && !ignoreOperations.includes(operationPath) && !operation.description.includes("Type:MISO")) { + let operationTag = operation.tags[0]; // This assumes each operation has exactly one tag + if (!operationsByTag[operationTag]) { + operationsByTag[operationTag] = []; + } + operationsByTag[operationTag].push(operationPath); + } + }); + + // Specify the order of tags + let tagOrder = ["General", "Security", "Convert", "Other", "Filter"]; + + // Create dropdown options + tagOrder.forEach(tag => { + if (operationsByTag[tag]) { + let group = document.createElement('optgroup'); + group.label = tag; + + operationsByTag[tag].forEach(operationPath => { + let option = document.createElement('option'); + let operationWithoutSlash = operationPath.replace(/\//g, ''); // Remove slashes + option.textContent = operationWithoutSlash; + option.value = operationPath; // Keep the value with slashes for querying + group.appendChild(option); + }); + + operationsDropdown.appendChild(group); + } + }); + }); + + +document.getElementById('addOperationBtn').addEventListener('click', function() { + let selectedOperation = document.getElementById('operationsDropdown').value; + let pipelineList = document.getElementById('pipelineList'); + + let listItem = document.createElement('li'); + listItem.className = "list-group-item"; + let hasSettings = (apiDocs[selectedOperation] && apiDocs[selectedOperation].post && + ((apiDocs[selectedOperation].post.parameters && apiDocs[selectedOperation].post.parameters.length > 0) || + (apiDocs[selectedOperation].post.requestBody && + apiDocs[selectedOperation].post.requestBody.content['multipart/form-data'].schema.properties))); + + + + + listItem.innerHTML = ` +
+
${selectedOperation}
+
+ + + + +
+
+ `; + + pipelineList.appendChild(listItem); + + listItem.querySelector('.move-up').addEventListener('click', function(event) { + event.preventDefault(); + if (listItem.previousElementSibling) { + pipelineList.insertBefore(listItem, listItem.previousElementSibling); + } + }); + + listItem.querySelector('.move-down').addEventListener('click', function(event) { + event.preventDefault(); + if (listItem.nextElementSibling) { + pipelineList.insertBefore(listItem.nextElementSibling, listItem); + } + }); + + listItem.querySelector('.remove').addEventListener('click', function(event) { + event.preventDefault(); + pipelineList.removeChild(listItem); + }); + + listItem.querySelector('.pipelineSettings').addEventListener('click', function(event) { + event.preventDefault(); + showpipelineSettingsModal(selectedOperation); + }); + + function showpipelineSettingsModal(operation) { + let pipelineSettingsModal = document.getElementById('pipelineSettingsModal'); + let pipelineSettingsContent = document.getElementById('pipelineSettingsContent'); + let operationData = apiDocs[operation].post.parameters || []; + let requestBodyData = apiDocs[operation].post.requestBody.content['multipart/form-data'].schema.properties || {}; + + // Combine operationData and requestBodyData into a single array + operationData = operationData.concat(Object.keys(requestBodyData).map(key => ({ + name: key, + schema: requestBodyData[key] + }))); + + pipelineSettingsContent.innerHTML = ''; + + operationData.forEach(parameter => { + // If the parameter name is 'fileInput', return early to skip the rest of this iteration + if (parameter.name === 'fileInput') return; + + let parameterDiv = document.createElement('div'); + parameterDiv.className = "form-group"; + + let parameterLabel = document.createElement('label'); + parameterLabel.textContent = `${parameter.name} (${parameter.schema.type}): `; + parameterLabel.title = parameter.description; + parameterDiv.appendChild(parameterLabel); + + let parameterInput; + + // check if enum exists in schema + if (parameter.schema.enum) { + // if enum exists, create a select element + parameterInput = document.createElement('select'); + parameterInput.className = "form-control"; + + // iterate over each enum value and create an option for it + parameter.schema.enum.forEach(value => { + let option = document.createElement('option'); + option.value = value; + option.text = value; + parameterInput.appendChild(option); + }); + } else { + // switch-case statement for handling non-enum types + switch (parameter.schema.type) { + case 'string': + if (parameter.schema.format === 'binary') { + // This is a file input + + //parameterInput = document.createElement('input'); + //parameterInput.type = 'file'; + //parameterInput.className = "form-control"; + + parameterInput = document.createElement('input'); + parameterInput.type = 'text'; + parameterInput.className = "form-control"; + parameterInput.value = "automatedFileInput"; + } else { + parameterInput = document.createElement('input'); + parameterInput.type = 'text'; + parameterInput.className = "form-control"; + } + break; + case 'number': + case 'integer': + parameterInput = document.createElement('input'); + parameterInput.type = 'number'; + parameterInput.className = "form-control"; + break; + case 'boolean': + parameterInput = document.createElement('input'); + parameterInput.type = 'checkbox'; + break; + case 'array': + case 'object': + parameterInput = document.createElement('textarea'); + parameterInput.placeholder = `Enter a JSON formatted ${parameter.schema.type}`; + parameterInput.className = "form-control"; + break; + default: + parameterInput = document.createElement('input'); + parameterInput.type = 'text'; + parameterInput.className = "form-control"; + } + } + parameterInput.id = parameter.name; + + if (operationSettings[operation] && operationSettings[operation][parameter.name] !== undefined) { + let savedValue = operationSettings[operation][parameter.name]; + + switch (parameter.schema.type) { + case 'number': + case 'integer': + parameterInput.value = savedValue.toString(); + break; + case 'boolean': + parameterInput.checked = savedValue; + break; + case 'array': + case 'object': + parameterInput.value = JSON.stringify(savedValue); + break; + default: + parameterInput.value = savedValue; + } + } + + parameterDiv.appendChild(parameterInput); + + pipelineSettingsContent.appendChild(parameterDiv); + }); + + let saveButton = document.createElement('button'); + saveButton.textContent = "Save Settings"; + saveButton.className = "btn btn-primary"; + saveButton.addEventListener('click', function(event) { + event.preventDefault(); + let settings = {}; + operationData.forEach(parameter => { + let value = document.getElementById(parameter.name).value; + switch (parameter.schema.type) { + case 'number': + case 'integer': + settings[parameter.name] = Number(value); + break; + case 'boolean': + settings[parameter.name] = document.getElementById(parameter.name).checked; + break; + case 'array': + case 'object': + try { + settings[parameter.name] = JSON.parse(value); + } catch (err) { + console.error(`Invalid JSON format for ${parameter.name}`); + } + break; + default: + settings[parameter.name] = value; + } + }); + operationSettings[operation] = settings; + console.log(settings); + pipelineSettingsModal.style.display = "none"; + }); + pipelineSettingsContent.appendChild(saveButton); + + pipelineSettingsModal.style.display = "block"; + + pipelineSettingsModal.getElementsByClassName("close")[0].onclick = function() { + pipelineSettingsModal.style.display = "none"; + } + + window.onclick = function(event) { + if (event.target == pipelineSettingsModal) { + pipelineSettingsModal.style.display = "none"; + } + } + } + + document.getElementById('savePipelineBtn').addEventListener('click', function() { + if (validatePipeline() === false) { + return; + } + var pipelineName = document.getElementById('pipelineName').value; + let pipelineList = document.getElementById('pipelineList').children; + let pipelineConfig = { + "name": pipelineName, + "pipeline": [], + "_examples": { + "outputDir": "{outputFolder}/{folderName}", + "outputFileName": "{filename}-{pipelineName}-{date}-{time}" + }, + "outputDir": "httpWebRequest", + "outputFileName": "{filename}" + }; + + for (let i = 0; i < pipelineList.length; i++) { + let operationName = pipelineList[i].querySelector('.operationName').textContent; + let parameters = operationSettings[operationName] || {}; + + pipelineConfig.pipeline.push({ + "operation": operationName, + "parameters": parameters + }); + } + + let a = document.createElement('a'); + a.href = URL.createObjectURL(new Blob([JSON.stringify(pipelineConfig, null, 2)], { + type: 'application/json' + })); + a.download = 'pipelineConfig.json'; + a.style.display = 'none'; + + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }); + + async function processPipelineConfig(configString) { + let pipelineConfig = JSON.parse(configString); + let pipelineList = document.getElementById('pipelineList'); + + while (pipelineList.firstChild) { + pipelineList.removeChild(pipelineList.firstChild); + } + document.getElementById('pipelineName').value = pipelineConfig.name + for (const operationConfig of pipelineConfig.pipeline) { + let operationsDropdown = document.getElementById('operationsDropdown'); + operationsDropdown.value = operationConfig.operation; + operationSettings[operationConfig.operation] = operationConfig.parameters; + + // assuming addOperation is async + await new Promise((resolve) => { + document.getElementById('addOperationBtn').addEventListener('click', resolve, { once: true }); + document.getElementById('addOperationBtn').click(); + }); + + let lastOperation = pipelineList.lastChild; + + Object.keys(operationConfig.parameters).forEach(parameterName => { + let input = document.getElementById(parameterName); + if (input) { + switch (input.type) { + case 'checkbox': + input.checked = operationConfig.parameters[parameterName]; + break; + case 'number': + input.value = operationConfig.parameters[parameterName].toString(); + break; + case 'file': + if (parameterName !== 'fileInput') { + // Create a new file input element + let newInput = document.createElement('input'); + newInput.type = 'file'; + newInput.id = parameterName; + + // Add the new file input to the main page (change the selector according to your needs) + document.querySelector('#main').appendChild(newInput); + } + break; + case 'text': + case 'textarea': + default: + input.value = JSON.stringify(operationConfig.parameters[parameterName]); + } + } + }); + + } + } + + + document.getElementById('uploadPipelineBtn').addEventListener('click', function() { + document.getElementById('uploadPipelineInput').click(); + }); + + document.getElementById('uploadPipelineInput').addEventListener('change', function(e) { + let reader = new FileReader(); + reader.onload = function(event) { + processPipelineConfig(event.target.result); + }; + reader.readAsText(e.target.files[0]); + }); + + document.getElementById('pipelineSelect').addEventListener('change', function(e) { + let selectedPipelineJson = e.target.value; // assuming the selected value is the JSON string of the pipeline config + processPipelineConfig(selectedPipelineJson); + }); + + }); \ No newline at end of file diff --git a/src/main/resources/static/js/search.js b/src/main/resources/static/js/search.js new file mode 100644 index 00000000..e8c9bf9e --- /dev/null +++ b/src/main/resources/static/js/search.js @@ -0,0 +1,72 @@ +// Toggle search bar when the search icon is clicked +document.querySelector('#search-icon').addEventListener('click', function(e) { + e.preventDefault(); + var searchBar = document.querySelector('#navbarSearch'); + searchBar.classList.toggle('show'); +}); +window.onload = function() { + var items = document.querySelectorAll('.dropdown-item, .nav-link'); + var dummyContainer = document.createElement('div'); + dummyContainer.style.position = 'absolute'; + dummyContainer.style.visibility = 'hidden'; + dummyContainer.style.whiteSpace = 'nowrap'; // Ensure we measure full width + document.body.appendChild(dummyContainer); + + var maxWidth = 0; + + items.forEach(function(item) { + var clone = item.cloneNode(true); + dummyContainer.appendChild(clone); + var width = clone.offsetWidth; + if (width > maxWidth) { + maxWidth = width; + } + dummyContainer.removeChild(clone); + }); + + document.body.removeChild(dummyContainer); + + // Store max width for later use + window.navItemMaxWidth = maxWidth; +}; + +// Show search results as user types in search box +document.querySelector('#navbarSearchInput').addEventListener('input', function(e) { + var searchText = e.target.value.toLowerCase(); + var items = document.querySelectorAll('.dropdown-item, .nav-link'); + var resultsBox = document.querySelector('#searchResults'); + + // Clear any previous results + resultsBox.innerHTML = ''; + + items.forEach(function(item) { + var titleElement = item.querySelector('.icon-text'); + var iconElement = item.querySelector('.icon'); + var itemHref = item.getAttribute('href'); + if (titleElement && iconElement && itemHref !== '#') { + var title = titleElement.innerText; + if (title.toLowerCase().indexOf(searchText) !== -1 && !resultsBox.querySelector(`a[href="${item.getAttribute('href')}"]`)) { + var result = document.createElement('a'); + result.href = itemHref; + result.classList.add('dropdown-item'); + + var resultIcon = document.createElement('img'); + resultIcon.src = iconElement.src; + resultIcon.alt = 'icon'; + resultIcon.classList.add('icon'); + result.appendChild(resultIcon); + + var resultText = document.createElement('span'); + resultText.textContent = title; + resultText.classList.add('icon-text'); + result.appendChild(resultText); + + resultsBox.appendChild(result); + } + } + }); + + // Set the width of the search results box to the maximum width + resultsBox.style.width = window.navItemMaxWidth + 'px'; +}); + diff --git a/src/main/resources/templates/auto-split-pdf.html b/src/main/resources/templates/auto-split-pdf.html new file mode 100644 index 00000000..8085f4d0 --- /dev/null +++ b/src/main/resources/templates/auto-split-pdf.html @@ -0,0 +1,40 @@ + + + + + + + + +
+
+
+

+
+
+
+

+ +

+
    +
  • +
  • +
  • +
  • +
+
+

+
+

+

+ +
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/crop.html b/src/main/resources/templates/crop.html new file mode 100644 index 00000000..7d4725be --- /dev/null +++ b/src/main/resources/templates/crop.html @@ -0,0 +1,145 @@ + + + + + + + +
+
+
+

+
+
+
+

+
+
+ + + + + +
+
+ + +
+ + + +
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/fragments/card.html b/src/main/resources/templates/fragments/card.html index faa816a4..48142b03 100644 --- a/src/main/resources/templates/fragments/card.html +++ b/src/main/resources/templates/fragments/card.html @@ -1,4 +1,4 @@ -
+
@@ -203,6 +211,70 @@ + + + + + @@ -210,6 +282,7 @@
+
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 47fbb2f2..6d0d2fcf 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -20,9 +20,14 @@

-
- - + + +
+ +
+ + +
@@ -67,12 +72,16 @@
- - - +
+
+
+
+
+
+
-
+
diff --git a/src/main/resources/templates/other/add-page-numbers.html b/src/main/resources/templates/other/add-page-numbers.html new file mode 100644 index 00000000..b3baa55e --- /dev/null +++ b/src/main/resources/templates/other/add-page-numbers.html @@ -0,0 +1,154 @@ + + + + + + + + +
+
+
+

+
+
+
+

+
+
+
+
+ +
+ + + +
+ +
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
+
+ + +
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
+
+ + diff --git a/src/main/resources/templates/other/adjust-contrast.html b/src/main/resources/templates/other/adjust-contrast.html index 87496d4f..b1c0e692 100644 --- a/src/main/resources/templates/other/adjust-contrast.html +++ b/src/main/resources/templates/other/adjust-contrast.html @@ -1,32 +1,293 @@ - - - - - - - -
-
-
-

-
-
-
-

- -
-
-
- - -
- -
-
-
-
-
-
-
- - \ No newline at end of file + + + + + + + +
+
+
+

+
+
+
+

+
+

+ 100% +

+ + +

+ 100% +

+ + +

+ 100% +

+ + +
+ + + + + + + + +
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/other/auto-rename.html b/src/main/resources/templates/other/auto-rename.html new file mode 100644 index 00000000..5f3b9dba --- /dev/null +++ b/src/main/resources/templates/other/auto-rename.html @@ -0,0 +1,30 @@ + + + + + + + + +
+
+
+

+
+
+
+

+
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/src/main/resources/templates/pipeline.html b/src/main/resources/templates/pipeline.html index 7dd60c7f..1f61008d 100644 --- a/src/main/resources/templates/pipeline.html +++ b/src/main/resources/templates/pipeline.html @@ -1,111 +1,126 @@ - - - - - -
-
-
-

-
-
-
- -
- - - -
- - -
-
- -
- - -
-

Pipeline Configuration

-
- - -
-
- -
-
- -
-

Pipeline:

-
    - -
-
- - - - - - -
- - - -
-
-
-
- -
-
- - + + + + + + + +
+
+
+ +

+
+
+ +
+
+ + +
+ +
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + +
+
+
+ +
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/security/add-watermark.html b/src/main/resources/templates/security/add-watermark.html index 30091ea8..060805fa 100644 --- a/src/main/resources/templates/security/add-watermark.html +++ b/src/main/resources/templates/security/add-watermark.html @@ -3,7 +3,7 @@ - +
@@ -16,30 +16,36 @@
-
+
+ +
- +
- - + +
-
+ +
+ + +
- +
@@ -48,7 +54,7 @@ const opacityInput = document.getElementById('opacity'); const opacityRealInput = document.getElementById('opacityReal'); - const updateopacityValue = () => { + const updateOpacityValue = () => { let percentageValue = parseFloat(opacityInput.value.replace('%', '')); if (isNaN(percentageValue)) { percentageValue = 0; @@ -68,14 +74,15 @@ opacityInput.value = opacityInput.value.replace('%', ''); }); opacityInput.addEventListener('blur', () => { - updateopacityValue(); + updateOpacityValue(); appendPercentageSymbol(); }); // Set initial values - updateopacityValue(); + updateOpacityValue(); appendPercentageSymbol(); +
@@ -92,6 +99,29 @@
+ + +
diff --git a/src/main/resources/templates/security/sanitize-pdf.html b/src/main/resources/templates/security/sanitize-pdf.html new file mode 100644 index 00000000..f9838783 --- /dev/null +++ b/src/main/resources/templates/security/sanitize-pdf.html @@ -0,0 +1,53 @@ + + + + + + +
+
+
+

+
+
+
+

+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ +
+
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/sign.html b/src/main/resources/templates/sign.html index 667c3f99..8537ea40 100644 --- a/src/main/resources/templates/sign.html +++ b/src/main/resources/templates/sign.html @@ -7,16 +7,27 @@ + + + + +
@@ -169,9 +180,9 @@ + + +
@@ -196,20 +207,37 @@ DraggableUtils.createDraggableCanvasFromUrl(dataURL); } - + + + + + + +
@@ -240,10 +268,6 @@ position: relative; margin: 20px 0; } - #pdf-canvas { - box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384); - width: 100%; - } .draggable-buttons-box { position: absolute; top: 0; @@ -271,6 +295,7 @@
+