Merge branch 'main' into dependabot/gradle/org.apache.pdfbox-pdfbox-2.0.29
This commit is contained in:
commit
bb025dc2a1
72 changed files with 3392 additions and 2189 deletions
|
@ -10,12 +10,6 @@ RUN apt-get update && \
|
||||||
unoconv && \
|
unoconv && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
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 the application JAR file
|
||||||
COPY build/libs/*.jar app.jar
|
COPY build/libs/*.jar app.jar
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,11 @@
|
||||||
| adjust-contrast | ✔️ | | | | | | | | | | ✔️ |
|
| adjust-contrast | ✔️ | | | | | | | | | | ✔️ |
|
||||||
| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | |
|
| auto-split-pdf | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| crop | ✔️ | | | | | | | | | ✔️ | |
|
| crop | ✔️ | | | | | | | | | ✔️ | |
|
||||||
|
| extract-page | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| merge-pdfs | ✔️ | | | | | | | | | ✔️ | |
|
| merge-pdfs | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| multi-page-layout | ✔️ | | | | | | | | | ✔️ | |
|
| multi-page-layout | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ |
|
| pdf-organizer | ✔️ | | | | | | | | | ✔️ | ✔️ |
|
||||||
|
| pdf-to-single-page | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| remove-pages | ✔️ | | | | | | | | | ✔️ | |
|
| remove-pages | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| rotate-pdf | ✔️ | | | | | | | | | ✔️ | |
|
| rotate-pdf | ✔️ | | | | | | | | | ✔️ | |
|
||||||
| scale-pages | ✔️ | | | | | | | | | ✔️ | |
|
| scale-pages | ✔️ | | | | | | | | | ✔️ | |
|
||||||
|
@ -15,6 +17,7 @@
|
||||||
| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
| pdf-to-html | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
||||||
| pdf-to-img | | ✔️ | | | | | | | | ✔️ | |
|
| pdf-to-img | | ✔️ | | | | | | | | ✔️ | |
|
||||||
| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | |
|
| pdf-to-pdfa | | ✔️ | | | ✔️ | | | | ✔️ | | |
|
||||||
|
| pdf-to-markdown | | ✔️ | | | | | | | | ✔️ | |
|
||||||
| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
| pdf-to-presentation | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
||||||
| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
| pdf-to-text | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
||||||
| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
| pdf-to-word | | ✔️ | | | ✔️ | | | ✔️ | | | |
|
||||||
|
@ -34,8 +37,10 @@
|
||||||
| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | |
|
| compress-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | |
|
||||||
| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | |
|
| extract-image-scans | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | |
|
||||||
| extract-images | | | | ✔️ | | | | | | ✔️ | |
|
| extract-images | | | | ✔️ | | | | | | ✔️ | |
|
||||||
| flatten | | | | ✔️ | | | | | | | |
|
| flatten | | | | ✔️ | | | | | | | ✔️ |
|
||||||
|
| get-info-on-pdf | | | | ✔️ | | | | | | ✔️ | |
|
||||||
| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | |
|
| ocr-pdf | | | | ✔️ | ✔️ | | | | ✔️ | | |
|
||||||
| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | |
|
| remove-blanks | | | | ✔️ | ✔️ | ✔️ | ✔️ | | | | |
|
||||||
| repair | | | | ✔️ | ✔️ | | | ✔️ | | | |
|
| repair | | | | ✔️ | ✔️ | | | ✔️ | | | |
|
||||||
|
| show-javascript | | | | ✔️ | | | | | | | ✔️ |
|
||||||
| sign | | | | ✔️ | | | | | | | ✔️ |
|
| sign | | | | ✔️ | | | | | | | ✔️ |
|
|
@ -8,6 +8,8 @@
|
||||||
[![Paypal Donate](https://img.shields.io/badge/Paypal%20Donate-yellow?style=flat&logo=paypal)](https://www.paypal.com/paypalme/froodleplex)
|
[![Paypal Donate](https://img.shields.io/badge/Paypal%20Donate-yellow?style=flat&logo=paypal)](https://www.paypal.com/paypalme/froodleplex)
|
||||||
[![Github Sponser](https://img.shields.io/badge/Github%20Sponsor-yellow?style=flat&logo=github)](https://github.com/sponsors/Frooodle)
|
[![Github Sponser](https://img.shields.io/badge/Github%20Sponsor-yellow?style=flat&logo=github)](https://github.com/sponsors/Frooodle)
|
||||||
|
|
||||||
|
[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Frooodle/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af)
|
||||||
|
|
||||||
This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.
|
This is a powerful locally hosted web based PDF manipulation tool using docker that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application started as a 100% ChatGPT-made application and has evolved to include a wide range of features to handle all your PDF needs.
|
||||||
|
|
||||||
Stirling PDF makes no outbound calls for any record keeping or tracking.
|
Stirling PDF makes no outbound calls for any record keeping or tracking.
|
||||||
|
@ -176,6 +178,7 @@ Using the same method you can also change
|
||||||
- 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)
|
- 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
|
- 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
|
- 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
|
||||||
|
- Enable/Disable metric api endpoints with ENABLE_API_METRICS. Default enabled
|
||||||
|
|
||||||
## API
|
## 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
|
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
|
||||||
|
|
|
@ -15,6 +15,7 @@ Operation | Ultra-Lite | Lite | Full
|
||||||
--------------------|------------|------|-----
|
--------------------|------------|------|-----
|
||||||
add-page-numbers | ✔️ | ✔️ | ✔️
|
add-page-numbers | ✔️ | ✔️ | ✔️
|
||||||
add-password | ✔️ | ✔️ | ✔️
|
add-password | ✔️ | ✔️ | ✔️
|
||||||
|
add-image | ✔️ | ✔️ | ✔️
|
||||||
add-watermark | ✔️ | ✔️ | ✔️
|
add-watermark | ✔️ | ✔️ | ✔️
|
||||||
adjust-contrast | ✔️ | ✔️ | ✔️
|
adjust-contrast | ✔️ | ✔️ | ✔️
|
||||||
auto-split-pdf | ✔️ | ✔️ | ✔️
|
auto-split-pdf | ✔️ | ✔️ | ✔️
|
||||||
|
@ -24,21 +25,25 @@ crop | ✔️ | ✔️ | ✔️
|
||||||
change-metadata | ✔️ | ✔️ | ✔️
|
change-metadata | ✔️ | ✔️ | ✔️
|
||||||
change-permissions | ✔️ | ✔️ | ✔️
|
change-permissions | ✔️ | ✔️ | ✔️
|
||||||
compare | ✔️ | ✔️ | ✔️
|
compare | ✔️ | ✔️ | ✔️
|
||||||
|
extract-page | ✔️ | ✔️ | ✔️
|
||||||
extract-images | ✔️ | ✔️ | ✔️
|
extract-images | ✔️ | ✔️ | ✔️
|
||||||
flatten | ✔️ | ✔️ | ✔️
|
flatten | ✔️ | ✔️ | ✔️
|
||||||
|
get-info-on-pdf | ✔️ | ✔️ | ✔️
|
||||||
img-to-pdf | ✔️ | ✔️ | ✔️
|
img-to-pdf | ✔️ | ✔️ | ✔️
|
||||||
|
markdown-to-pdf | ✔️ | ✔️ | ✔️
|
||||||
merge-pdfs | ✔️ | ✔️ | ✔️
|
merge-pdfs | ✔️ | ✔️ | ✔️
|
||||||
multi-page-layout | ✔️ | ✔️ | ✔️
|
multi-page-layout | ✔️ | ✔️ | ✔️
|
||||||
pdf-organizer | ✔️ | ✔️ | ✔️
|
pdf-organizer | ✔️ | ✔️ | ✔️
|
||||||
pdf-to-img | ✔️ | ✔️ | ✔️
|
pdf-to-img | ✔️ | ✔️ | ✔️
|
||||||
|
pdf-to-single-page | ✔️ | ✔️ | ✔️
|
||||||
remove-pages | ✔️ | ✔️ | ✔️
|
remove-pages | ✔️ | ✔️ | ✔️
|
||||||
remove-password | ✔️ | ✔️ | ✔️
|
remove-password | ✔️ | ✔️ | ✔️
|
||||||
rotate-pdf | ✔️ | ✔️ | ✔️
|
rotate-pdf | ✔️ | ✔️ | ✔️
|
||||||
sanitize-pdf | ✔️ | ✔️ | ✔️
|
sanitize-pdf | ✔️ | ✔️ | ✔️
|
||||||
scale-pages | ✔️ | ✔️ | ✔️
|
scale-pages | ✔️ | ✔️ | ✔️
|
||||||
sign | ✔️ | ✔️ | ✔️
|
sign | ✔️ | ✔️ | ✔️
|
||||||
|
show-javascript | ✔️ | ✔️ | ✔️
|
||||||
split-pdfs | ✔️ | ✔️ | ✔️
|
split-pdfs | ✔️ | ✔️ | ✔️
|
||||||
add-image | ✔️ | ✔️ | ✔️
|
|
||||||
file-to-pdf | | ✔️ | ✔️
|
file-to-pdf | | ✔️ | ✔️
|
||||||
pdf-to-html | | ✔️ | ✔️
|
pdf-to-html | | ✔️ | ✔️
|
||||||
pdf-to-presentation | | ✔️ | ✔️
|
pdf-to-presentation | | ✔️ | ✔️
|
||||||
|
|
|
@ -8,7 +8,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group = 'stirling.software'
|
group = 'stirling.software'
|
||||||
version = '0.11.2'
|
version = '0.12.2'
|
||||||
sourceCompatibility = '17'
|
sourceCompatibility = '17'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
@ -61,8 +61,9 @@ dependencies {
|
||||||
implementation 'com.itextpdf:itext7-core:7.2.5'
|
implementation 'com.itextpdf:itext7-core:7.2.5'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
||||||
implementation 'io.micrometer:micrometer-core'
|
implementation 'io.micrometer:micrometer-core'
|
||||||
|
|
||||||
implementation group: 'com.google.zxing', name: 'core', version: '3.5.1'
|
implementation group: 'com.google.zxing', name: 'core', version: '3.5.1'
|
||||||
|
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
||||||
|
implementation 'org.commonmark:commonmark:0.21.0'
|
||||||
|
|
||||||
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,17 @@ echo "Copying original files without overwriting existing files"
|
||||||
mkdir -p /usr/share/tesseract-ocr
|
mkdir -p /usr/share/tesseract-ocr
|
||||||
cp -rn /usr/share/tesseract-ocr-original/* /usr/share/tesseract-ocr
|
cp -rn /usr/share/tesseract-ocr-original/* /usr/share/tesseract-ocr
|
||||||
|
|
||||||
|
# Check if TESSERACT_LANGS environment variable is set and is not empty
|
||||||
|
if [[ -n "$TESSERACT_LANGS" ]]; then
|
||||||
|
# Convert comma-separated values to a space-separated list
|
||||||
|
LANGS=$(echo $TESSERACT_LANGS | tr ',' ' ')
|
||||||
|
|
||||||
|
# Install each language pack
|
||||||
|
for LANG in $LANGS; do
|
||||||
|
apt-get install -y "tesseract-ocr-$LANG"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Run the main command
|
# Run the main command
|
||||||
exec "$@"
|
exec "$@"
|
|
@ -71,6 +71,8 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("PageOps", "adjust-contrast");
|
addEndpointToGroup("PageOps", "adjust-contrast");
|
||||||
addEndpointToGroup("PageOps", "crop");
|
addEndpointToGroup("PageOps", "crop");
|
||||||
addEndpointToGroup("PageOps", "auto-split-pdf");
|
addEndpointToGroup("PageOps", "auto-split-pdf");
|
||||||
|
addEndpointToGroup("PageOps", "extract-page");
|
||||||
|
addEndpointToGroup("PageOps", "pdf-to-single-page");
|
||||||
|
|
||||||
// Adding endpoints to "Convert" group
|
// Adding endpoints to "Convert" group
|
||||||
addEndpointToGroup("Convert", "pdf-to-img");
|
addEndpointToGroup("Convert", "pdf-to-img");
|
||||||
|
@ -85,6 +87,7 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("Convert", "pdf-to-xml");
|
addEndpointToGroup("Convert", "pdf-to-xml");
|
||||||
addEndpointToGroup("Convert", "html-to-pdf");
|
addEndpointToGroup("Convert", "html-to-pdf");
|
||||||
addEndpointToGroup("Convert", "url-to-pdf");
|
addEndpointToGroup("Convert", "url-to-pdf");
|
||||||
|
addEndpointToGroup("Convert", "markdown-to-pdf");
|
||||||
|
|
||||||
// Adding endpoints to "Security" group
|
// Adding endpoints to "Security" group
|
||||||
addEndpointToGroup("Security", "add-password");
|
addEndpointToGroup("Security", "add-password");
|
||||||
|
@ -109,7 +112,8 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("Other", "compare");
|
addEndpointToGroup("Other", "compare");
|
||||||
addEndpointToGroup("Other", "add-page-numbers");
|
addEndpointToGroup("Other", "add-page-numbers");
|
||||||
addEndpointToGroup("Other", "auto-rename");
|
addEndpointToGroup("Other", "auto-rename");
|
||||||
|
addEndpointToGroup("Other", "get-info-on-pdf");
|
||||||
|
addEndpointToGroup("Other", "show-javascript");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,6 +184,11 @@ public class EndpointConfiguration {
|
||||||
addEndpointToGroup("Java", "auto-split-pdf");
|
addEndpointToGroup("Java", "auto-split-pdf");
|
||||||
addEndpointToGroup("Java", "sanitize-pdf");
|
addEndpointToGroup("Java", "sanitize-pdf");
|
||||||
addEndpointToGroup("Java", "crop");
|
addEndpointToGroup("Java", "crop");
|
||||||
|
addEndpointToGroup("Java", "get-info-on-pdf");
|
||||||
|
addEndpointToGroup("Java", "extract-page");
|
||||||
|
addEndpointToGroup("Java", "pdf-to-single-page");
|
||||||
|
addEndpointToGroup("Java", "markdown-to-pdf");
|
||||||
|
addEndpointToGroup("Java", "show-javascript");
|
||||||
|
|
||||||
//Javascript
|
//Javascript
|
||||||
addEndpointToGroup("Javascript", "pdf-organizer");
|
addEndpointToGroup("Javascript", "pdf-organizer");
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
package stirling.software.SPDF.controller.api;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import com.itextpdf.kernel.pdf.*;
|
||||||
|
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
|
||||||
|
import com.itextpdf.kernel.geom.PageSize;
|
||||||
|
import com.itextpdf.kernel.geom.Rectangle;
|
||||||
|
import com.itextpdf.layout.Document;
|
||||||
|
import com.itextpdf.layout.element.Image;
|
||||||
|
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.PDPageTree;
|
||||||
|
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||||
|
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
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.WebResponseUtils;
|
||||||
|
import org.apache.pdfbox.pdmodel.*;
|
||||||
|
import org.apache.pdfbox.multipdf.PDFMergerUtility;
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "General", description = "General APIs")
|
||||||
|
public class ToSinglePageController {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ToSinglePageController.class);
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/pdf-to-single-page")
|
||||||
|
@Operation(
|
||||||
|
summary = "Convert a multi-page PDF into a single long page PDF",
|
||||||
|
description = "This endpoint converts a multi-page PDF document into a single paged PDF document. The width of the single page will be same as the input's width, but the height will be the sum of all the pages' heights. Input:PDF Output:PDF Type:SISO"
|
||||||
|
)
|
||||||
|
public ResponseEntity<byte[]> pdfToSinglePage(
|
||||||
|
@RequestPart(required = true, value = "fileInput")
|
||||||
|
@Parameter(description = "The input multi-page PDF file to be converted into a single page", required = true)
|
||||||
|
MultipartFile file) throws IOException {
|
||||||
|
|
||||||
|
PdfReader reader = new PdfReader(file.getInputStream());
|
||||||
|
PdfDocument sourceDocument = new PdfDocument(reader);
|
||||||
|
|
||||||
|
float totalHeight = 0;
|
||||||
|
float width = 0;
|
||||||
|
|
||||||
|
for (int i = 1; i <= sourceDocument.getNumberOfPages(); i++) {
|
||||||
|
Rectangle pageSize = sourceDocument.getPage(i).getPageSize();
|
||||||
|
totalHeight += pageSize.getHeight();
|
||||||
|
if(width < pageSize.getWidth())
|
||||||
|
width = pageSize.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
PdfWriter writer = new PdfWriter(baos);
|
||||||
|
PdfDocument newDocument = new PdfDocument(writer);
|
||||||
|
PageSize newPageSize = new PageSize(width, totalHeight);
|
||||||
|
newDocument.addNewPage(newPageSize);
|
||||||
|
|
||||||
|
Document layoutDoc = new Document(newDocument);
|
||||||
|
float yOffset = totalHeight;
|
||||||
|
|
||||||
|
for (int i = 1; i <= sourceDocument.getNumberOfPages(); i++) {
|
||||||
|
PdfFormXObject pageCopy = sourceDocument.getPage(i).copyAsFormXObject(newDocument);
|
||||||
|
Image copiedPage = new Image(pageCopy);
|
||||||
|
copiedPage.setFixedPosition(0, yOffset - sourceDocument.getPage(i).getPageSize().getHeight());
|
||||||
|
yOffset -= sourceDocument.getPage(i).getPageSize().getHeight();
|
||||||
|
layoutDoc.add(copiedPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
layoutDoc.close();
|
||||||
|
sourceDocument.close();
|
||||||
|
|
||||||
|
byte[] result = baos.toByteArray();
|
||||||
|
return WebResponseUtils.bytesToWebResponse(result, file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_singlePage.pdf");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,139 @@
|
||||||
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.commonmark.node.Node;
|
||||||
|
import org.commonmark.parser.Parser;
|
||||||
|
import org.commonmark.renderer.html.HtmlRenderer;
|
||||||
|
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.Hidden;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import stirling.software.SPDF.utils.FileToPdf;
|
||||||
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
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 org.springframework.http.ResponseEntity;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
import org.xml.sax.InputSource;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "Convert", description = "Convert APIs")
|
||||||
|
public class ConvertEpubToPdf {
|
||||||
|
//TODO
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/epub-to-single-pdf")
|
||||||
|
@Hidden
|
||||||
|
@Operation(
|
||||||
|
summary = "Convert an EPUB file to a single PDF",
|
||||||
|
description = "This endpoint takes an EPUB file input and converts it to a single PDF."
|
||||||
|
)
|
||||||
|
public ResponseEntity<byte[]> epubToSinglePdf(
|
||||||
|
@RequestPart(required = true, value = "fileInput") MultipartFile fileInput)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
if (fileInput == null) {
|
||||||
|
throw new IllegalArgumentException("Please provide an EPUB file for conversion.");
|
||||||
|
}
|
||||||
|
|
||||||
|
String originalFilename = fileInput.getOriginalFilename();
|
||||||
|
if (originalFilename == null || !originalFilename.endsWith(".epub")) {
|
||||||
|
throw new IllegalArgumentException("File must be in .epub format.");
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, byte[]> epubContents = extractEpubContent(fileInput);
|
||||||
|
List<String> htmlFilesOrder = getHtmlFilesOrderFromOpf(epubContents);
|
||||||
|
|
||||||
|
List<byte[]> individualPdfs = new ArrayList<>();
|
||||||
|
|
||||||
|
for (String htmlFile : htmlFilesOrder) {
|
||||||
|
byte[] htmlContent = epubContents.get(htmlFile);
|
||||||
|
byte[] pdfBytes = FileToPdf.convertHtmlToPdf(htmlContent, htmlFile.replace(".html", ".pdf"));
|
||||||
|
individualPdfs.add(pdfBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pseudo-code to merge individual PDFs into one.
|
||||||
|
byte[] mergedPdfBytes = mergeMultiplePdfsIntoOne(individualPdfs);
|
||||||
|
|
||||||
|
return WebResponseUtils.bytesToWebResponse(mergedPdfBytes, originalFilename.replace(".epub", ".pdf"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assuming a pseudo-code function that merges multiple PDFs into one.
|
||||||
|
private byte[] mergeMultiplePdfsIntoOne(List<byte[]> individualPdfs) {
|
||||||
|
// You can use a library such as iText or PDFBox to perform the merging here.
|
||||||
|
// Return the byte[] of the merged PDF.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, byte[]> extractEpubContent(MultipartFile fileInput) throws IOException {
|
||||||
|
Map<String, byte[]> contentMap = new HashMap<>();
|
||||||
|
|
||||||
|
try (ZipInputStream zis = new ZipInputStream(fileInput.getInputStream())) {
|
||||||
|
ZipEntry zipEntry = zis.getNextEntry();
|
||||||
|
while (zipEntry != null) {
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int read = 0;
|
||||||
|
while ((read = zis.read(buffer)) != -1) {
|
||||||
|
baos.write(buffer, 0, read);
|
||||||
|
}
|
||||||
|
contentMap.put(zipEntry.getName(), baos.toByteArray());
|
||||||
|
zipEntry = zis.getNextEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return contentMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> getHtmlFilesOrderFromOpf(Map<String, byte[]> epubContents) throws Exception {
|
||||||
|
String opfContent = new String(epubContents.get("OEBPS/content.opf")); // Adjusting for given path
|
||||||
|
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||||
|
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
|
||||||
|
InputSource is = new InputSource(new StringReader(opfContent));
|
||||||
|
Document doc = dBuilder.parse(is);
|
||||||
|
|
||||||
|
NodeList itemRefs = doc.getElementsByTagName("itemref");
|
||||||
|
List<String> htmlFilesOrder = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < itemRefs.getLength(); i++) {
|
||||||
|
Element itemRef = (Element) itemRefs.item(i);
|
||||||
|
String idref = itemRef.getAttribute("idref");
|
||||||
|
|
||||||
|
NodeList items = doc.getElementsByTagName("item");
|
||||||
|
for (int j = 0; j < items.getLength(); j++) {
|
||||||
|
Element item = (Element) items.item(j);
|
||||||
|
if (idref.equals(item.getAttribute("id"))) {
|
||||||
|
htmlFilesOrder.add(item.getAttribute("href")); // Fetching the actual href
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return htmlFilesOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -19,8 +19,10 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import stirling.software.SPDF.utils.FileToPdf;
|
||||||
import stirling.software.SPDF.utils.GeneralUtils;
|
import stirling.software.SPDF.utils.GeneralUtils;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -43,85 +45,15 @@ public class ConvertHtmlToPDF {
|
||||||
String originalFilename = fileInput.getOriginalFilename();
|
String originalFilename = fileInput.getOriginalFilename();
|
||||||
if (originalFilename == null || (!originalFilename.endsWith(".html") && !originalFilename.endsWith(".zip"))) {
|
if (originalFilename == null || (!originalFilename.endsWith(".html") && !originalFilename.endsWith(".zip"))) {
|
||||||
throw new IllegalArgumentException("File must be either .html or .zip format.");
|
throw new IllegalArgumentException("File must be either .html or .zip format.");
|
||||||
}
|
}byte[] pdfBytes = FileToPdf.convertHtmlToPdf( fileInput.getBytes(), originalFilename);
|
||||||
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
|
||||||
Path tempInputFile = null;
|
|
||||||
byte[] pdfBytes;
|
|
||||||
try {
|
|
||||||
if (originalFilename.endsWith(".html")) {
|
|
||||||
tempInputFile = Files.createTempFile("input_", ".html");
|
|
||||||
Files.write(tempInputFile, fileInput.getBytes());
|
|
||||||
} else {
|
|
||||||
tempInputFile = unzipAndGetMainHtml(fileInput);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> command = new ArrayList<>();
|
|
||||||
command.add("weasyprint");
|
|
||||||
command.add(tempInputFile.toString());
|
|
||||||
command.add(tempOutputFile.toString());
|
|
||||||
int returnCode = 0;
|
|
||||||
if (originalFilename.endsWith(".zip")) {
|
|
||||||
returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT)
|
|
||||||
.runCommandWithOutputHandling(command, tempInputFile.getParent().toFile());
|
|
||||||
} else {
|
|
||||||
|
|
||||||
returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT)
|
|
||||||
.runCommandWithOutputHandling(command);
|
|
||||||
}
|
|
||||||
|
|
||||||
pdfBytes = Files.readAllBytes(tempOutputFile);
|
|
||||||
} finally {
|
|
||||||
// Clean up temporary files
|
|
||||||
Files.delete(tempOutputFile);
|
|
||||||
Files.delete(tempInputFile);
|
|
||||||
|
|
||||||
if (originalFilename.endsWith(".zip")) {
|
|
||||||
GeneralUtils.deleteDirectory(tempInputFile.getParent());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String outputFilename = originalFilename.replaceFirst("[.][^.]+$", "") + ".pdf"; // Remove file extension and append .pdf
|
String outputFilename = originalFilename.replaceFirst("[.][^.]+$", "") + ".pdf"; // Remove file extension and append .pdf
|
||||||
|
|
||||||
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Path unzipAndGetMainHtml(MultipartFile zipFile) throws IOException {
|
|
||||||
Path tempDirectory = Files.createTempDirectory("unzipped_");
|
|
||||||
try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(zipFile.getBytes()))) {
|
|
||||||
ZipEntry entry = zipIn.getNextEntry();
|
|
||||||
while (entry != null) {
|
|
||||||
Path filePath = tempDirectory.resolve(entry.getName());
|
|
||||||
if (entry.isDirectory()) {
|
|
||||||
Files.createDirectories(filePath); // Explicitly create the directory structure
|
|
||||||
} else {
|
|
||||||
Files.createDirectories(filePath.getParent()); // Create parent directories if they don't exist
|
|
||||||
Files.copy(zipIn, filePath);
|
|
||||||
}
|
|
||||||
zipIn.closeEntry();
|
|
||||||
entry = zipIn.getNextEntry();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//search for the main HTML file.
|
|
||||||
try (Stream<Path> walk = Files.walk(tempDirectory)) {
|
|
||||||
List<Path> htmlFiles = walk.filter(file -> file.toString().endsWith(".html"))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
if (htmlFiles.isEmpty()) {
|
|
||||||
throw new IOException("No HTML files found in the unzipped directory.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prioritize 'index.html' if it exists, otherwise use the first .html file
|
|
||||||
for (Path htmlFile : htmlFiles) {
|
|
||||||
if (htmlFile.getFileName().toString().equals("index.html")) {
|
|
||||||
return htmlFile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return htmlFiles.get(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
package stirling.software.SPDF.controller.api.converters;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.commonmark.node.Node;
|
||||||
|
import org.commonmark.parser.Parser;
|
||||||
|
import org.commonmark.renderer.html.HtmlRenderer;
|
||||||
|
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.tags.Tag;
|
||||||
|
import stirling.software.SPDF.utils.FileToPdf;
|
||||||
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "Convert", description = "Convert APIs")
|
||||||
|
public class ConvertMarkdownToPdf {
|
||||||
|
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/markdown-to-pdf")
|
||||||
|
@Operation(
|
||||||
|
summary = "Convert a Markdown file to PDF",
|
||||||
|
description = "This endpoint takes a Markdown file input, converts it to HTML, and then to PDF format."
|
||||||
|
)
|
||||||
|
public ResponseEntity<byte[]> markdownToPdf(
|
||||||
|
@RequestPart(required = true, value = "fileInput") MultipartFile fileInput)
|
||||||
|
throws IOException, InterruptedException {
|
||||||
|
|
||||||
|
if (fileInput == null) {
|
||||||
|
throw new IllegalArgumentException("Please provide a Markdown file for conversion.");
|
||||||
|
}
|
||||||
|
|
||||||
|
String originalFilename = fileInput.getOriginalFilename();
|
||||||
|
if (originalFilename == null || !originalFilename.endsWith(".md")) {
|
||||||
|
throw new IllegalArgumentException("File must be in .md format.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert Markdown to HTML using CommonMark
|
||||||
|
Parser parser = Parser.builder().build();
|
||||||
|
Node document = parser.parse(new String(fileInput.getBytes()));
|
||||||
|
HtmlRenderer renderer = HtmlRenderer.builder().build();
|
||||||
|
String htmlContent = renderer.render(document);
|
||||||
|
|
||||||
|
byte[] pdfBytes = FileToPdf.convertHtmlToPdf(htmlContent.getBytes(), "converted.html");
|
||||||
|
|
||||||
|
String outputFilename = originalFilename.replaceFirst("[.][^.]+$", "") + ".pdf"; // Remove file extension and append .pdf
|
||||||
|
return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename);
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -41,7 +42,7 @@ public class ConvertOfficeController {
|
||||||
|
|
||||||
// Run the LibreOffice command
|
// Run the LibreOffice command
|
||||||
List<String> command = new ArrayList<>(Arrays.asList("unoconv", "-vvv", "-f", "pdf", "-o", tempOutputFile.toString(), tempInputFile.toString()));
|
List<String> command = new ArrayList<>(Arrays.asList("unoconv", "-vvv", "-f", "pdf", "-o", tempOutputFile.toString(), tempInputFile.toString()));
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the converted PDF file
|
// Read the converted PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
@ -62,10 +63,10 @@ public class ConvertOfficeController {
|
||||||
summary = "Convert a file to a PDF using LibreOffice",
|
summary = "Convert a file to a PDF using LibreOffice",
|
||||||
description = "This endpoint converts a given file to a PDF using LibreOffice API Input:Any Output:PDF Type:SISO"
|
description = "This endpoint converts a given file to a PDF using LibreOffice API Input:Any Output:PDF Type:SISO"
|
||||||
)
|
)
|
||||||
public ResponseEntity<byte[]> processPdfWithOCR(
|
public ResponseEntity<byte[]> processFileToPDF(
|
||||||
@RequestPart(required = true, value = "fileInput")
|
@RequestPart(required = true, value = "fileInput")
|
||||||
@Parameter(
|
@Parameter(
|
||||||
description = "The input file to be converted to a PDF file using OCR",
|
description = "The input file to be converted to a PDF file using LibreOffice",
|
||||||
required = true
|
required = true
|
||||||
)
|
)
|
||||||
MultipartFile inputFile
|
MultipartFile inputFile
|
||||||
|
|
|
@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -49,7 +50,7 @@ public class ConvertPDFToPDFA {
|
||||||
command.add(tempInputFile.toString());
|
command.add(tempInputFile.toString());
|
||||||
command.add(tempOutputFile.toString());
|
command.add(tempOutputFile.toString());
|
||||||
|
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
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.RequestPart;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
@ -17,6 +18,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.GeneralUtils;
|
import stirling.software.SPDF.utils.GeneralUtils;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -29,7 +31,7 @@ public class ConvertWebsiteToPDF {
|
||||||
description = "This endpoint fetches content from a URL and converts it to a PDF format."
|
description = "This endpoint fetches content from a URL and converts it to a PDF format."
|
||||||
)
|
)
|
||||||
public ResponseEntity<byte[]> urlToPdf(
|
public ResponseEntity<byte[]> urlToPdf(
|
||||||
@RequestPart(required = true, value = "urlInput")
|
@RequestParam(required = true, value = "urlInput")
|
||||||
@Parameter(description = "The input URL to be converted to a PDF file", required = true)
|
@Parameter(description = "The input URL to be converted to a PDF file", required = true)
|
||||||
String URL) throws IOException, InterruptedException {
|
String URL) throws IOException, InterruptedException {
|
||||||
|
|
||||||
|
@ -49,7 +51,7 @@ public class ConvertWebsiteToPDF {
|
||||||
command.add(URL);
|
command.add(URL);
|
||||||
command.add(tempOutputFile.toString());
|
command.add(tempOutputFile.toString());
|
||||||
|
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
pdfBytes = Files.readAllBytes(tempOutputFile);
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
|
@ -31,6 +31,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.PdfUtils;
|
import stirling.software.SPDF.utils.PdfUtils;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -86,10 +87,10 @@ public class BlankPageController {
|
||||||
List<String> command = new ArrayList<>(Arrays.asList("python3", System.getProperty("user.dir") + "/scripts/detect-blank-pages.py", tempFile.toString() ,"--threshold", String.valueOf(threshold), "--white_percent", String.valueOf(whitePercent)));
|
List<String> command = new ArrayList<>(Arrays.asList("python3", System.getProperty("user.dir") + "/scripts/detect-blank-pages.py", tempFile.toString() ,"--threshold", String.valueOf(threshold), "--white_percent", String.valueOf(whitePercent)));
|
||||||
|
|
||||||
// Run CLI command
|
// Run CLI command
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// does contain data
|
// does contain data
|
||||||
if (returnCode == 0) {
|
if (returnCode.getRc() == 0) {
|
||||||
System.out.println("page " + pageIndex + " has image which is not blank");
|
System.out.println("page " + pageIndex + " has image which is not blank");
|
||||||
pagesToKeepIndex.add(pageIndex);
|
pagesToKeepIndex.add(pageIndex);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -34,6 +34,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.GeneralUtils;
|
import stirling.software.SPDF.utils.GeneralUtils;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -116,7 +117,7 @@ public class CompressController {
|
||||||
command.add("-sOutputFile=" + tempOutputFile.toString());
|
command.add("-sOutputFile=" + tempOutputFile.toString());
|
||||||
command.add(tempInputFile.toString());
|
command.add(tempInputFile.toString());
|
||||||
|
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Check if file size is within expected size or not auto mode so instantly finish
|
// Check if file size is within expected size or not auto mode so instantly finish
|
||||||
long outputFileSize = Files.size(tempOutputFile);
|
long outputFileSize = Files.size(tempOutputFile);
|
||||||
|
|
|
@ -33,6 +33,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -117,7 +118,7 @@ public class ExtractImageScansController {
|
||||||
|
|
||||||
|
|
||||||
// Run CLI command
|
// Run CLI command
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the output photos in temp directory
|
// Read the output photos in temp directory
|
||||||
List<Path> tempOutputFiles = Files.list(tempDir).sorted().collect(Collectors.toList());
|
List<Path> tempOutputFiles = Files.list(tempDir).sorted().collect(Collectors.toList());
|
||||||
|
|
|
@ -29,6 +29,7 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -141,8 +142,12 @@ public class OCRController {
|
||||||
command.addAll(Arrays.asList("--language", languageOption, tempInputFile.toString(), tempOutputFile.toString()));
|
command.addAll(Arrays.asList("--language", languageOption, tempInputFile.toString(), tempOutputFile.toString()));
|
||||||
|
|
||||||
// Run CLI command
|
// Run CLI command
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF).runCommandWithOutputHandling(command);
|
ProcessExecutorResult result = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF).runCommandWithOutputHandling(command);
|
||||||
|
if(result.getRc() != 0 && result.getMessages().contains("multiprocessing/synchronize.py") && result.getMessages().contains("OSError: [Errno 38] Function not implemented")) {
|
||||||
|
command.add("--jobs");
|
||||||
|
command.add("1");
|
||||||
|
result = ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF).runCommandWithOutputHandling(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +158,7 @@ public class OCRController {
|
||||||
|
|
||||||
List<String> gsCommand = Arrays.asList("gs", "-sDEVICE=pdfwrite", "-dFILTERIMAGE", "-o", tempPdfWithoutImages.toString(), tempOutputFile.toString());
|
List<String> gsCommand = Arrays.asList("gs", "-sDEVICE=pdfwrite", "-dFILTERIMAGE", "-o", tempPdfWithoutImages.toString(), tempOutputFile.toString());
|
||||||
|
|
||||||
int gsReturnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(gsCommand);
|
ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(gsCommand);
|
||||||
tempOutputFile = tempPdfWithoutImages;
|
tempOutputFile = tempPdfWithoutImages;
|
||||||
}
|
}
|
||||||
// Read the OCR processed PDF file
|
// Read the OCR processed PDF file
|
||||||
|
|
|
@ -18,6 +18,7 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import stirling.software.SPDF.utils.ProcessExecutor;
|
import stirling.software.SPDF.utils.ProcessExecutor;
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -51,7 +52,7 @@ public class RepairController {
|
||||||
command.add(tempInputFile.toString());
|
command.add(tempInputFile.toString());
|
||||||
|
|
||||||
|
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Read the optimized PDF file
|
// Read the optimized PDF file
|
||||||
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
byte[] pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
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.nio.charset.StandardCharsets;
|
||||||
|
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.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
|
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.PdfStream;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfArray;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDictionary;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfName;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfObject;
|
||||||
|
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 ShowJavascript {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(ShowJavascript.class);
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/show-javascript")
|
||||||
|
@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<byte[]> extractHeader(
|
||||||
|
@RequestPart(value = "fileInput") @Parameter(description = "The input PDF file from which the javascript is to be extracted.", required = true) MultipartFile inputFile)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
try (
|
||||||
|
PdfDocument itextDoc = new PdfDocument(new PdfReader(inputFile.getInputStream()))
|
||||||
|
) {
|
||||||
|
|
||||||
|
String name = "";
|
||||||
|
String script = "";
|
||||||
|
String entryName = "File: "+inputFile.getOriginalFilename() + ", Script: ";
|
||||||
|
//Javascript
|
||||||
|
PdfDictionary namesDict = itextDoc.getCatalog().getPdfObject().getAsDictionary(PdfName.Names);
|
||||||
|
if (namesDict != null) {
|
||||||
|
PdfDictionary javascriptDict = namesDict.getAsDictionary(PdfName.JavaScript);
|
||||||
|
if (javascriptDict != null) {
|
||||||
|
|
||||||
|
PdfArray namesArray = javascriptDict.getAsArray(PdfName.Names);
|
||||||
|
for (int i = 0; i < namesArray.size(); i += 2) {
|
||||||
|
if(namesArray.getAsString(i) != null)
|
||||||
|
name = namesArray.getAsString(i).toString();
|
||||||
|
|
||||||
|
PdfObject jsCode = namesArray.get(i+1);
|
||||||
|
if (jsCode instanceof PdfStream) {
|
||||||
|
byte[] jsCodeBytes = ((PdfStream)jsCode).getBytes();
|
||||||
|
String jsCodeStr = new String(jsCodeBytes, StandardCharsets.UTF_8);
|
||||||
|
script = "//" + entryName + name + "\n" +jsCodeStr;
|
||||||
|
|
||||||
|
} else if (jsCode instanceof PdfDictionary) {
|
||||||
|
// If the JS code is in a dictionary, you'll need to know the key to use.
|
||||||
|
// Assuming the key is PdfName.JS:
|
||||||
|
PdfStream jsCodeStream = ((PdfDictionary)jsCode).getAsStream(PdfName.JS);
|
||||||
|
if (jsCodeStream != null) {
|
||||||
|
byte[] jsCodeBytes = jsCodeStream.getBytes();
|
||||||
|
String jsCodeStr = new String(jsCodeBytes, StandardCharsets.UTF_8);
|
||||||
|
script = "//" + entryName + name + "\n" +jsCodeStr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(script.equals("")) {
|
||||||
|
script = "PDF '" +inputFile.getOriginalFilename() + "' does not contain Javascript";
|
||||||
|
}
|
||||||
|
return WebResponseUtils.bytesToWebResponse(script.getBytes(), name + ".js");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,779 @@
|
||||||
|
package stirling.software.SPDF.controller.api.security;
|
||||||
|
|
||||||
|
import org.apache.pdfbox.cos.COSArray;
|
||||||
|
import org.apache.pdfbox.cos.COSBase;
|
||||||
|
import org.apache.pdfbox.cos.COSDictionary;
|
||||||
|
import org.apache.pdfbox.cos.COSName;
|
||||||
|
import org.apache.pdfbox.cos.COSString;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
|
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
||||||
|
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureElement;
|
||||||
|
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureNode;
|
||||||
|
import org.apache.pdfbox.pdmodel.documentinterchange.logicalstructure.PDStructureTreeRoot;
|
||||||
|
import org.apache.pdfbox.pdmodel.encryption.PDEncryption;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
|
||||||
|
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
|
||||||
|
|
||||||
|
import com.itextpdf.kernel.pdf.PdfObject;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfOutline;
|
||||||
|
import com.itextpdf.forms.PdfAcroForm;
|
||||||
|
import com.itextpdf.forms.fields.PdfFormField;
|
||||||
|
import com.itextpdf.kernel.geom.Rectangle;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfArray;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfCatalog;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDictionary;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDocumentInfo;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfEncryption;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfReader;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfResources;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfStream;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfString;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfName;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfViewerPreferences;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
||||||
|
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
|
||||||
|
import com.itextpdf.kernel.pdf.annot.PdfFileAttachmentAnnotation;
|
||||||
|
import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation;
|
||||||
|
import com.itextpdf.kernel.pdf.annot.PdfWidgetAnnotation;
|
||||||
|
import com.itextpdf.kernel.pdf.layer.PdfLayer;
|
||||||
|
import com.itextpdf.kernel.pdf.layer.PdfOCProperties;
|
||||||
|
import com.itextpdf.kernel.xmp.XMPException;
|
||||||
|
import com.itextpdf.kernel.xmp.XMPMeta;
|
||||||
|
import com.itextpdf.kernel.xmp.XMPMetaFactory;
|
||||||
|
import com.itextpdf.kernel.xmp.options.SerializeOptions;
|
||||||
|
|
||||||
|
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.WebResponseUtils;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
|
import org.apache.pdfbox.text.PDFTextStripper;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
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 java.io.File;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.HashSet;
|
||||||
|
@RestController
|
||||||
|
@Tag(name = "Security", description = "Security APIs")
|
||||||
|
public class GetInfoOnPDF {
|
||||||
|
|
||||||
|
static ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|
||||||
|
@PostMapping(consumes = "multipart/form-data", value = "/get-info-on-pdf")
|
||||||
|
@Operation(summary = "Summary here", description = "desc. Input:PDF Output:JSON Type:SISO")
|
||||||
|
public ResponseEntity<byte[]> getPdfInfo(
|
||||||
|
@RequestPart(required = true, value = "fileInput")
|
||||||
|
@Parameter(description = "The input PDF file to get info on", required = true) MultipartFile inputFile)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
try (
|
||||||
|
PDDocument pdfBoxDoc = PDDocument.load(inputFile.getInputStream());
|
||||||
|
PdfDocument itextDoc = new PdfDocument(new PdfReader(inputFile.getInputStream()))
|
||||||
|
) {
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
ObjectNode jsonOutput = objectMapper.createObjectNode();
|
||||||
|
|
||||||
|
// Metadata using PDFBox
|
||||||
|
PDDocumentInformation info = pdfBoxDoc.getDocumentInformation();
|
||||||
|
ObjectNode metadata = objectMapper.createObjectNode();
|
||||||
|
ObjectNode basicInfo = objectMapper.createObjectNode();
|
||||||
|
ObjectNode docInfoNode = objectMapper.createObjectNode();
|
||||||
|
ObjectNode compliancy = objectMapper.createObjectNode();
|
||||||
|
ObjectNode encryption = objectMapper.createObjectNode();
|
||||||
|
ObjectNode other = objectMapper.createObjectNode();
|
||||||
|
|
||||||
|
|
||||||
|
metadata.put("Title", info.getTitle());
|
||||||
|
metadata.put("Author", info.getAuthor());
|
||||||
|
metadata.put("Subject", info.getSubject());
|
||||||
|
metadata.put("Keywords", info.getKeywords());
|
||||||
|
metadata.put("Producer", info.getProducer());
|
||||||
|
metadata.put("Creator", info.getCreator());
|
||||||
|
metadata.put("CreationDate", formatDate(info.getCreationDate()));
|
||||||
|
metadata.put("ModificationDate", formatDate(info.getModificationDate()));
|
||||||
|
jsonOutput.set("Metadata", metadata);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Total file size of the PDF
|
||||||
|
long fileSizeInBytes = inputFile.getSize();
|
||||||
|
basicInfo.put("FileSizeInBytes", fileSizeInBytes);
|
||||||
|
|
||||||
|
// Number of words, paragraphs, and images in the entire document
|
||||||
|
String fullText = new PDFTextStripper().getText(pdfBoxDoc);
|
||||||
|
String[] words = fullText.split("\\s+");
|
||||||
|
int wordCount = words.length;
|
||||||
|
int paragraphCount = fullText.split("\r\n|\r|\n").length;
|
||||||
|
basicInfo.put("WordCount", wordCount);
|
||||||
|
basicInfo.put("ParagraphCount", paragraphCount);
|
||||||
|
// Number of characters in the entire document (including spaces and special characters)
|
||||||
|
int charCount = fullText.length();
|
||||||
|
basicInfo.put("CharacterCount", charCount);
|
||||||
|
|
||||||
|
|
||||||
|
// Initialize the flags and types
|
||||||
|
boolean hasCompression = false;
|
||||||
|
String compressionType = "None";
|
||||||
|
|
||||||
|
// Check for object streams
|
||||||
|
for (int i = 1; i <= itextDoc.getNumberOfPdfObjects(); i++) {
|
||||||
|
PdfObject obj = itextDoc.getPdfObject(i);
|
||||||
|
if (obj != null && obj.isStream() && ((PdfStream) obj).get(PdfName.Type) == PdfName.ObjStm) {
|
||||||
|
hasCompression = true;
|
||||||
|
compressionType = "Object Streams";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If not compressed using object streams, check for compressed Xref tables
|
||||||
|
if (!hasCompression && itextDoc.getReader().hasRebuiltXref()) {
|
||||||
|
hasCompression = true;
|
||||||
|
compressionType = "Compressed Xref or Rebuilt Xref";
|
||||||
|
}
|
||||||
|
basicInfo.put("Compression", hasCompression);
|
||||||
|
if(hasCompression)
|
||||||
|
basicInfo.put("CompressionType", compressionType);
|
||||||
|
|
||||||
|
String language = pdfBoxDoc.getDocumentCatalog().getLanguage();
|
||||||
|
basicInfo.put("Language", language);
|
||||||
|
basicInfo.put("Number of pages", pdfBoxDoc.getNumberOfPages());
|
||||||
|
|
||||||
|
|
||||||
|
// Page Mode using iText7
|
||||||
|
PdfCatalog catalog = itextDoc.getCatalog();
|
||||||
|
PdfName pageMode = catalog.getPdfObject().getAsName(PdfName.PageMode);
|
||||||
|
|
||||||
|
// Document Information using PDFBox
|
||||||
|
docInfoNode.put("PDF version", pdfBoxDoc.getVersion());
|
||||||
|
docInfoNode.put("Trapped", info.getTrapped());
|
||||||
|
docInfoNode.put("Page Mode", getPageModeDescription(pageMode));;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PdfAcroForm acroForm = PdfAcroForm.getAcroForm(itextDoc, false);
|
||||||
|
ObjectNode formFieldsNode = objectMapper.createObjectNode();
|
||||||
|
if (acroForm != null) {
|
||||||
|
for (Map.Entry<String, PdfFormField> entry : acroForm.getFormFields().entrySet()) {
|
||||||
|
formFieldsNode.put(entry.getKey(), entry.getValue().getValueAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jsonOutput.set("FormFields", formFieldsNode);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//embeed files TODO size
|
||||||
|
ArrayNode embeddedFilesArray = objectMapper.createArrayNode();
|
||||||
|
if(itextDoc.getCatalog().getPdfObject().getAsDictionary(PdfName.Names) != null)
|
||||||
|
{
|
||||||
|
PdfDictionary embeddedFiles = itextDoc.getCatalog().getPdfObject().getAsDictionary(PdfName.Names)
|
||||||
|
.getAsDictionary(PdfName.EmbeddedFiles);
|
||||||
|
if (embeddedFiles != null) {
|
||||||
|
|
||||||
|
PdfArray namesArray = embeddedFiles.getAsArray(PdfName.Names);
|
||||||
|
if(namesArray != null) {
|
||||||
|
for (int i = 0; i < namesArray.size(); i += 2) {
|
||||||
|
ObjectNode embeddedFileNode = objectMapper.createObjectNode();
|
||||||
|
embeddedFileNode.put("Name", namesArray.getAsString(i).toString());
|
||||||
|
// Add other details if required
|
||||||
|
embeddedFilesArray.add(embeddedFileNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
other.set("EmbeddedFiles", embeddedFilesArray);
|
||||||
|
|
||||||
|
//attachments TODO size
|
||||||
|
ArrayNode attachmentsArray = objectMapper.createArrayNode();
|
||||||
|
for (int pageNum = 1; pageNum <= itextDoc.getNumberOfPages(); pageNum++) {
|
||||||
|
for (PdfAnnotation annotation : itextDoc.getPage(pageNum).getAnnotations()) {
|
||||||
|
if (annotation instanceof PdfFileAttachmentAnnotation) {
|
||||||
|
ObjectNode attachmentNode = objectMapper.createObjectNode();
|
||||||
|
attachmentNode.put("Name", ((PdfFileAttachmentAnnotation) annotation).getName().toString());
|
||||||
|
attachmentNode.put("Description", annotation.getContents().getValue());
|
||||||
|
attachmentsArray.add(attachmentNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
other.set("Attachments", attachmentsArray);
|
||||||
|
|
||||||
|
//Javascript
|
||||||
|
PdfDictionary namesDict = itextDoc.getCatalog().getPdfObject().getAsDictionary(PdfName.Names);
|
||||||
|
ArrayNode javascriptArray = objectMapper.createArrayNode();
|
||||||
|
if (namesDict != null) {
|
||||||
|
PdfDictionary javascriptDict = namesDict.getAsDictionary(PdfName.JavaScript);
|
||||||
|
if (javascriptDict != null) {
|
||||||
|
|
||||||
|
PdfArray namesArray = javascriptDict.getAsArray(PdfName.Names);
|
||||||
|
for (int i = 0; i < namesArray.size(); i += 2) {
|
||||||
|
ObjectNode jsNode = objectMapper.createObjectNode();
|
||||||
|
if(namesArray.getAsString(i) != null)
|
||||||
|
jsNode.put("JS Name", namesArray.getAsString(i).toString());
|
||||||
|
|
||||||
|
// Here we check for a PdfStream object and retrieve the JS code from it
|
||||||
|
PdfObject jsCode = namesArray.get(i+1);
|
||||||
|
if (jsCode instanceof PdfStream) {
|
||||||
|
byte[] jsCodeBytes = ((PdfStream)jsCode).getBytes();
|
||||||
|
String jsCodeStr = new String(jsCodeBytes, StandardCharsets.UTF_8);
|
||||||
|
jsNode.put("JS Script Length", jsCodeStr.length());
|
||||||
|
} else if (jsCode instanceof PdfDictionary) {
|
||||||
|
// If the JS code is in a dictionary, you'll need to know the key to use.
|
||||||
|
// Assuming the key is PdfName.JS:
|
||||||
|
PdfStream jsCodeStream = ((PdfDictionary)jsCode).getAsStream(PdfName.JS);
|
||||||
|
if (jsCodeStream != null) {
|
||||||
|
byte[] jsCodeBytes = jsCodeStream.getBytes();
|
||||||
|
String jsCodeStr = new String(jsCodeBytes, StandardCharsets.UTF_8);
|
||||||
|
jsNode.put("JS Script Character Length", jsCodeStr.length());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
javascriptArray.add(jsNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
other.set("JavaScript", javascriptArray);
|
||||||
|
|
||||||
|
//TODO size
|
||||||
|
PdfOCProperties ocProperties = itextDoc.getCatalog().getOCProperties(false);
|
||||||
|
ArrayNode layersArray = objectMapper.createArrayNode();
|
||||||
|
if (ocProperties != null) {
|
||||||
|
|
||||||
|
for (PdfLayer layer : ocProperties.getLayers()) {
|
||||||
|
ObjectNode layerNode = objectMapper.createObjectNode();
|
||||||
|
layerNode.put("Name", layer.getPdfObject().getAsString(PdfName.Name).toString());
|
||||||
|
layersArray.add(layerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
other.set("Layers", layersArray);
|
||||||
|
|
||||||
|
//TODO Security
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Digital Signatures using iText7 TODO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PDStructureTreeRoot structureTreeRoot = pdfBoxDoc.getDocumentCatalog().getStructureTreeRoot();
|
||||||
|
ArrayNode structureTreeArray;
|
||||||
|
try {
|
||||||
|
if(structureTreeRoot != null) {
|
||||||
|
structureTreeArray = exploreStructureTree(structureTreeRoot.getKids());
|
||||||
|
other.set("StructureTree", structureTreeArray);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
boolean isPdfACompliant = checkOutputIntent(itextDoc, "PDF/A");
|
||||||
|
boolean isPdfXCompliant = checkOutputIntent(itextDoc, "PDF/X");
|
||||||
|
boolean isPdfECompliant = checkForStandard(itextDoc, "PDF/E");
|
||||||
|
boolean isPdfVTCompliant = checkForStandard(itextDoc, "PDF/VT");
|
||||||
|
boolean isPdfUACompliant = checkForStandard(itextDoc, "PDF/UA");
|
||||||
|
boolean isPdfBCompliant = checkForStandard(itextDoc, "PDF/B"); // If you want to check for PDF/Broadcast, though this isn't an official ISO standard.
|
||||||
|
boolean isPdfSECCompliant = checkForStandard(itextDoc, "PDF/SEC"); // This might not be effective since PDF/SEC was under development in 2021.
|
||||||
|
|
||||||
|
compliancy.put("IsPDF/ACompliant", isPdfACompliant);
|
||||||
|
compliancy.put("IsPDF/XCompliant", isPdfXCompliant);
|
||||||
|
compliancy.put("IsPDF/ECompliant", isPdfECompliant);
|
||||||
|
compliancy.put("IsPDF/VTCompliant", isPdfVTCompliant);
|
||||||
|
compliancy.put("IsPDF/UACompliant", isPdfUACompliant);
|
||||||
|
compliancy.put("IsPDF/BCompliant", isPdfBCompliant);
|
||||||
|
compliancy.put("IsPDF/SECCompliant", isPdfSECCompliant);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ArrayNode bookmarksArray = objectMapper.createArrayNode();
|
||||||
|
PdfOutline root = itextDoc.getOutlines(false);
|
||||||
|
if (root != null) {
|
||||||
|
for (PdfOutline child : root.getAllChildren()) {
|
||||||
|
addOutlinesToArray(child, bookmarksArray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
other.set("Bookmarks/Outline/TOC", bookmarksArray);
|
||||||
|
|
||||||
|
byte[] xmpBytes = itextDoc.getXmpMetadata();
|
||||||
|
String xmpString = null;
|
||||||
|
if (xmpBytes != null) {
|
||||||
|
try {
|
||||||
|
XMPMeta xmpMeta = XMPMetaFactory.parseFromBuffer(xmpBytes);
|
||||||
|
xmpString = new String(XMPMetaFactory.serializeToBuffer(xmpMeta, new SerializeOptions()));
|
||||||
|
} catch (XMPException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
other.put("XMPMetadata", xmpString);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (pdfBoxDoc.isEncrypted()) {
|
||||||
|
encryption.put("IsEncrypted", true);
|
||||||
|
|
||||||
|
// Retrieve encryption details using getEncryption()
|
||||||
|
PDEncryption pdfEncryption = pdfBoxDoc.getEncryption();
|
||||||
|
encryption.put("EncryptionAlgorithm", pdfEncryption.getFilter());
|
||||||
|
encryption.put("KeyLength", pdfEncryption.getLength());
|
||||||
|
encryption.put("Permissions", pdfBoxDoc.getCurrentAccessPermission().toString());
|
||||||
|
|
||||||
|
// Add other encryption-related properties as needed
|
||||||
|
} else {
|
||||||
|
encryption.put("IsEncrypted", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ObjectNode pageInfoParent = objectMapper.createObjectNode();
|
||||||
|
for (int pageNum = 1; pageNum <= itextDoc.getNumberOfPages(); pageNum++) {
|
||||||
|
ObjectNode pageInfo = objectMapper.createObjectNode();
|
||||||
|
|
||||||
|
// Page-level Information
|
||||||
|
Rectangle pageSize = itextDoc.getPage(pageNum).getPageSize();
|
||||||
|
pageInfo.put("Width", pageSize.getWidth());
|
||||||
|
pageInfo.put("Height", pageSize.getHeight());
|
||||||
|
pageInfo.put("Rotation", itextDoc.getPage(pageNum).getRotation());
|
||||||
|
pageInfo.put("Page Orientation", getPageOrientation(pageSize.getWidth(),pageSize.getHeight()));
|
||||||
|
pageInfo.put("Standard Size", getPageSize(pageSize.getWidth(),pageSize.getHeight()));
|
||||||
|
|
||||||
|
// Boxes
|
||||||
|
pageInfo.put("MediaBox", itextDoc.getPage(pageNum).getMediaBox().toString());
|
||||||
|
pageInfo.put("CropBox", itextDoc.getPage(pageNum).getCropBox().toString());
|
||||||
|
pageInfo.put("BleedBox", itextDoc.getPage(pageNum).getBleedBox().toString());
|
||||||
|
pageInfo.put("TrimBox", itextDoc.getPage(pageNum).getTrimBox().toString());
|
||||||
|
pageInfo.put("ArtBox", itextDoc.getPage(pageNum).getArtBox().toString());
|
||||||
|
|
||||||
|
// Content Extraction
|
||||||
|
PDFTextStripper textStripper = new PDFTextStripper();
|
||||||
|
textStripper.setStartPage(pageNum -1);
|
||||||
|
textStripper.setEndPage(pageNum - 1);
|
||||||
|
String pageText = textStripper.getText(pdfBoxDoc);
|
||||||
|
|
||||||
|
pageInfo.put("Text Characters Count", pageText.length()); //
|
||||||
|
|
||||||
|
// Annotations
|
||||||
|
List<PdfAnnotation> annotations = itextDoc.getPage(pageNum).getAnnotations();
|
||||||
|
|
||||||
|
int subtypeCount = 0;
|
||||||
|
int contentsCount = 0;
|
||||||
|
|
||||||
|
for (PdfAnnotation annotation : annotations) {
|
||||||
|
if(annotation.getSubtype() != null) {
|
||||||
|
subtypeCount++; // Increase subtype count
|
||||||
|
}
|
||||||
|
if(annotation.getContents() != null) {
|
||||||
|
contentsCount++; // Increase contents count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectNode annotationsObject = objectMapper.createObjectNode();
|
||||||
|
annotationsObject.put("AnnotationsCount", annotations.size());
|
||||||
|
annotationsObject.put("SubtypeCount", subtypeCount);
|
||||||
|
annotationsObject.put("ContentsCount", contentsCount);
|
||||||
|
pageInfo.set("Annotations", annotationsObject);
|
||||||
|
|
||||||
|
// Images (simplified)
|
||||||
|
// This part is non-trivial as images can be embedded in multiple ways in a PDF.
|
||||||
|
// Here is a basic structure to recognize image XObjects on a page.
|
||||||
|
ArrayNode imagesArray = objectMapper.createArrayNode();
|
||||||
|
PdfResources resources = itextDoc.getPage(pageNum).getResources();
|
||||||
|
for (PdfName name : resources.getResourceNames()) {
|
||||||
|
PdfObject obj = resources.getResource(name);
|
||||||
|
if (obj instanceof PdfStream) {
|
||||||
|
PdfStream stream = (PdfStream) obj;
|
||||||
|
if (PdfName.Image.equals(stream.getAsName(PdfName.Subtype))) {
|
||||||
|
ObjectNode imageNode = objectMapper.createObjectNode();
|
||||||
|
imageNode.put("Width", stream.getAsNumber(PdfName.Width).intValue());
|
||||||
|
imageNode.put("Height", stream.getAsNumber(PdfName.Height).intValue());
|
||||||
|
PdfObject colorSpace = stream.get(PdfName.ColorSpace);
|
||||||
|
if (colorSpace != null) {
|
||||||
|
imageNode.put("ColorSpace", colorSpace.toString());
|
||||||
|
}
|
||||||
|
imagesArray.add(imageNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pageInfo.set("Images", imagesArray);
|
||||||
|
|
||||||
|
|
||||||
|
// Links
|
||||||
|
ArrayNode linksArray = objectMapper.createArrayNode();
|
||||||
|
Set<String> uniqueURIs = new HashSet<>(); // To store unique URIs
|
||||||
|
|
||||||
|
for (PdfAnnotation annotation : annotations) {
|
||||||
|
if (annotation instanceof PdfLinkAnnotation) {
|
||||||
|
PdfLinkAnnotation linkAnnotation = (PdfLinkAnnotation) annotation;
|
||||||
|
if(linkAnnotation != null && linkAnnotation.getAction() != null) {
|
||||||
|
String uri = linkAnnotation.getAction().toString();
|
||||||
|
uniqueURIs.add(uri); // Add to set to ensure uniqueness
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add unique URIs to linksArray
|
||||||
|
for (String uri : uniqueURIs) {
|
||||||
|
ObjectNode linkNode = objectMapper.createObjectNode();
|
||||||
|
linkNode.put("URI", uri);
|
||||||
|
linksArray.add(linkNode);
|
||||||
|
}
|
||||||
|
pageInfo.set("Links", linksArray);
|
||||||
|
|
||||||
|
// Fonts
|
||||||
|
ArrayNode fontsArray = objectMapper.createArrayNode();
|
||||||
|
PdfDictionary fontDicts = resources.getResource(PdfName.Font);
|
||||||
|
Set<String> uniqueSubtypes = new HashSet<>(); // To store unique subtypes
|
||||||
|
|
||||||
|
// Map to store unique fonts and their counts
|
||||||
|
Map<String, ObjectNode> uniqueFontsMap = new HashMap<>();
|
||||||
|
|
||||||
|
if (fontDicts != null) {
|
||||||
|
for (PdfName key : fontDicts.keySet()) {
|
||||||
|
ObjectNode fontNode = objectMapper.createObjectNode(); // Create a new font node for each font
|
||||||
|
PdfDictionary font = fontDicts.getAsDictionary(key);
|
||||||
|
|
||||||
|
boolean isEmbedded = font.containsKey(PdfName.FontFile) ||
|
||||||
|
font.containsKey(PdfName.FontFile2) ||
|
||||||
|
font.containsKey(PdfName.FontFile3);
|
||||||
|
fontNode.put("IsEmbedded", isEmbedded);
|
||||||
|
|
||||||
|
if (font.containsKey(PdfName.Encoding)) {
|
||||||
|
String encoding = font.getAsName(PdfName.Encoding).toString();
|
||||||
|
fontNode.put("Encoding", encoding);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (font.getAsString(PdfName.BaseFont) != null) {
|
||||||
|
fontNode.put("Name", font.getAsString(PdfName.BaseFont).toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
String subtype = null;
|
||||||
|
if (font.containsKey(PdfName.Subtype)) {
|
||||||
|
subtype = font.getAsName(PdfName.Subtype).toString();
|
||||||
|
uniqueSubtypes.add(subtype); // Add to set to ensure uniqueness
|
||||||
|
}
|
||||||
|
fontNode.put("Subtype", subtype);
|
||||||
|
|
||||||
|
PdfDictionary fontDescriptor = font.getAsDictionary(PdfName.FontDescriptor);
|
||||||
|
if (fontDescriptor != null) {
|
||||||
|
if (fontDescriptor.containsKey(PdfName.ItalicAngle)) {
|
||||||
|
fontNode.put("ItalicAngle", fontDescriptor.getAsNumber(PdfName.ItalicAngle).floatValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontDescriptor.containsKey(PdfName.Flags)) {
|
||||||
|
int flags = fontDescriptor.getAsNumber(PdfName.Flags).intValue();
|
||||||
|
fontNode.put("IsItalic", (flags & 64) != 0);
|
||||||
|
fontNode.put("IsBold", (flags & 1 << 16) != 0);
|
||||||
|
fontNode.put("IsFixedPitch", (flags & 1) != 0);
|
||||||
|
fontNode.put("IsSerif", (flags & 2) != 0);
|
||||||
|
fontNode.put("IsSymbolic", (flags & 4) != 0);
|
||||||
|
fontNode.put("IsScript", (flags & 8) != 0);
|
||||||
|
fontNode.put("IsNonsymbolic", (flags & 16) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontDescriptor.containsKey(PdfName.FontFamily)) {
|
||||||
|
String fontFamily = fontDescriptor.getAsString(PdfName.FontFamily).toString();
|
||||||
|
fontNode.put("FontFamily", fontFamily);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontDescriptor.containsKey(PdfName.FontStretch)) {
|
||||||
|
String fontStretch = fontDescriptor.getAsName(PdfName.FontStretch).toString();
|
||||||
|
fontNode.put("FontStretch", fontStretch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontDescriptor.containsKey(PdfName.FontBBox)) {
|
||||||
|
PdfArray bbox = fontDescriptor.getAsArray(PdfName.FontBBox);
|
||||||
|
fontNode.put("FontBoundingBox", bbox.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontDescriptor.containsKey(PdfName.FontWeight)) {
|
||||||
|
float fontWeight = fontDescriptor.getAsNumber(PdfName.FontWeight).floatValue();
|
||||||
|
fontNode.put("FontWeight", fontWeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (font.containsKey(PdfName.ToUnicode)) {
|
||||||
|
fontNode.put("HasToUnicodeMap", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontNode.size() > 0) {
|
||||||
|
// Create a unique key for this font node based on its attributes
|
||||||
|
String uniqueKey = fontNode.toString();
|
||||||
|
|
||||||
|
// Increment count if this font exists, or initialize it if new
|
||||||
|
if (uniqueFontsMap.containsKey(uniqueKey)) {
|
||||||
|
ObjectNode existingFontNode = uniqueFontsMap.get(uniqueKey);
|
||||||
|
int count = existingFontNode.get("Count").asInt() + 1;
|
||||||
|
existingFontNode.put("Count", count);
|
||||||
|
} else {
|
||||||
|
fontNode.put("Count", 1);
|
||||||
|
uniqueFontsMap.put(uniqueKey, fontNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add unique font entries to fontsArray
|
||||||
|
for (ObjectNode uniqueFontNode : uniqueFontsMap.values()) {
|
||||||
|
fontsArray.add(uniqueFontNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
pageInfo.set("Fonts", fontsArray);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Access resources dictionary
|
||||||
|
PdfDictionary resourcesDict = itextDoc.getPage(pageNum).getResources().getPdfObject();
|
||||||
|
|
||||||
|
// Color Spaces & ICC Profiles
|
||||||
|
ArrayNode colorSpacesArray = objectMapper.createArrayNode();
|
||||||
|
PdfDictionary colorSpaces = resourcesDict.getAsDictionary(PdfName.ColorSpace);
|
||||||
|
if (colorSpaces != null) {
|
||||||
|
for (PdfName name : colorSpaces.keySet()) {
|
||||||
|
PdfObject colorSpaceObject = colorSpaces.get(name);
|
||||||
|
if (colorSpaceObject instanceof PdfArray) {
|
||||||
|
PdfArray colorSpaceArray = (PdfArray) colorSpaceObject;
|
||||||
|
if (colorSpaceArray.size() > 1 && colorSpaceArray.get(0) instanceof PdfName && PdfName.ICCBased.equals(colorSpaceArray.get(0))) {
|
||||||
|
ObjectNode iccProfileNode = objectMapper.createObjectNode();
|
||||||
|
PdfStream iccStream = (PdfStream) colorSpaceArray.get(1);
|
||||||
|
byte[] iccData = iccStream.getBytes();
|
||||||
|
// TODO: Further decode and analyze the ICC data if needed
|
||||||
|
iccProfileNode.put("ICC Profile Length", iccData.length);
|
||||||
|
colorSpacesArray.add(iccProfileNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pageInfo.set("Color Spaces & ICC Profiles", colorSpacesArray);
|
||||||
|
|
||||||
|
// Other XObjects
|
||||||
|
Map<String, Integer> xObjectCountMap = new HashMap<>(); // To store the count for each type
|
||||||
|
PdfDictionary xObjects = resourcesDict.getAsDictionary(PdfName.XObject);
|
||||||
|
if (xObjects != null) {
|
||||||
|
for (PdfName name : xObjects.keySet()) {
|
||||||
|
PdfStream xObjectStream = xObjects.getAsStream(name);
|
||||||
|
String xObjectType = xObjectStream.getAsName(PdfName.Subtype).toString();
|
||||||
|
|
||||||
|
// Increment the count for this type in the map
|
||||||
|
xObjectCountMap.put(xObjectType, xObjectCountMap.getOrDefault(xObjectType, 0) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the count map to pageInfo (or wherever you want to store it)
|
||||||
|
ObjectNode xObjectCountNode = objectMapper.createObjectNode();
|
||||||
|
for (Map.Entry<String, Integer> entry : xObjectCountMap.entrySet()) {
|
||||||
|
xObjectCountNode.put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
pageInfo.set("XObjectCounts", xObjectCountNode);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ArrayNode multimediaArray = objectMapper.createArrayNode();
|
||||||
|
for (PdfAnnotation annotation : annotations) {
|
||||||
|
if (PdfName.RichMedia.equals(annotation.getSubtype())) {
|
||||||
|
ObjectNode multimediaNode = objectMapper.createObjectNode();
|
||||||
|
// Extract details from the dictionary as needed
|
||||||
|
multimediaArray.add(multimediaNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pageInfo.set("Multimedia", multimediaArray);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pageInfoParent.set("Page " + pageNum, pageInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
jsonOutput.set("BasicInfo", basicInfo);
|
||||||
|
jsonOutput.set("DocumentInfo", docInfoNode);
|
||||||
|
jsonOutput.set("Compliancy", compliancy);
|
||||||
|
jsonOutput.set("Encryption", encryption);
|
||||||
|
jsonOutput.set("Other", other);
|
||||||
|
jsonOutput.set("PerPageInfo", pageInfoParent);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Save JSON to file
|
||||||
|
String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonOutput);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return WebResponseUtils.bytesToWebResponse(jsonString.getBytes(StandardCharsets.UTF_8), "response.json", MediaType.APPLICATION_JSON);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addOutlinesToArray(PdfOutline outline, ArrayNode arrayNode) {
|
||||||
|
if (outline == null) return;
|
||||||
|
ObjectNode outlineNode = objectMapper.createObjectNode();
|
||||||
|
outlineNode.put("Title", outline.getTitle());
|
||||||
|
// You can add other properties if needed
|
||||||
|
arrayNode.add(outlineNode);
|
||||||
|
|
||||||
|
for (PdfOutline child : outline.getAllChildren()) {
|
||||||
|
addOutlinesToArray(child, arrayNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public String getPageOrientation(double width, double height) {
|
||||||
|
if (width > height) {
|
||||||
|
return "Landscape";
|
||||||
|
} else if (height > width) {
|
||||||
|
return "Portrait";
|
||||||
|
} else {
|
||||||
|
return "Square";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public String getPageSize(double width, double height) {
|
||||||
|
// Common aspect ratios used for standard paper sizes
|
||||||
|
double[] aspectRatios = {4.0 / 3.0, 3.0 / 2.0, Math.sqrt(2.0), 16.0 / 9.0};
|
||||||
|
|
||||||
|
// Check if the page matches any common aspect ratio
|
||||||
|
for (double aspectRatio : aspectRatios) {
|
||||||
|
if (isCloseToAspectRatio(width, height, aspectRatio)) {
|
||||||
|
return "Standard";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If not a standard aspect ratio, consider it as a custom size
|
||||||
|
return "Custom";
|
||||||
|
}
|
||||||
|
private boolean isCloseToAspectRatio(double width, double height, double aspectRatio) {
|
||||||
|
// Calculate the aspect ratio of the page
|
||||||
|
double pageAspectRatio = width / height;
|
||||||
|
|
||||||
|
// Compare the page aspect ratio with the common aspect ratio within a threshold
|
||||||
|
return Math.abs(pageAspectRatio - aspectRatio) <= 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkForStandard(PdfDocument document, String standardKeyword) {
|
||||||
|
// Check Output Intents
|
||||||
|
boolean foundInOutputIntents = checkOutputIntent(document, standardKeyword);
|
||||||
|
if (foundInOutputIntents) return true;
|
||||||
|
|
||||||
|
// Check XMP Metadata (rudimentary)
|
||||||
|
try {
|
||||||
|
byte[] metadataBytes = document.getXmpMetadata();
|
||||||
|
if (metadataBytes != null) {
|
||||||
|
XMPMeta xmpMeta = XMPMetaFactory.parseFromBuffer(metadataBytes);
|
||||||
|
String xmpString = xmpMeta.dumpObject();
|
||||||
|
if (xmpString.contains(standardKeyword)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (XMPException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean checkOutputIntent(PdfDocument document, String standard) {
|
||||||
|
PdfArray outputIntents = document.getCatalog().getPdfObject().getAsArray(PdfName.OutputIntents);
|
||||||
|
if (outputIntents != null && !outputIntents.isEmpty()) {
|
||||||
|
for (int i = 0; i < outputIntents.size(); i++) {
|
||||||
|
PdfDictionary outputIntentDict = outputIntents.getAsDictionary(i);
|
||||||
|
if (outputIntentDict != null) {
|
||||||
|
PdfString s = outputIntentDict.getAsString(PdfName.S);
|
||||||
|
if (s != null && s.toString().contains(standard)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayNode exploreStructureTree(List<Object> nodes) {
|
||||||
|
ArrayNode elementsArray = objectMapper.createArrayNode();
|
||||||
|
if (nodes != null) {
|
||||||
|
for (Object obj : nodes) {
|
||||||
|
if (obj instanceof PDStructureNode) {
|
||||||
|
PDStructureNode node = (PDStructureNode) obj;
|
||||||
|
ObjectNode elementNode = objectMapper.createObjectNode();
|
||||||
|
|
||||||
|
if (node instanceof PDStructureElement) {
|
||||||
|
PDStructureElement structureElement = (PDStructureElement) node;
|
||||||
|
elementNode.put("Type", structureElement.getStructureType());
|
||||||
|
elementNode.put("Content", getContent(structureElement));
|
||||||
|
|
||||||
|
// Recursively explore child elements
|
||||||
|
ArrayNode childElements = exploreStructureTree(structureElement.getKids());
|
||||||
|
if (childElements.size() > 0) {
|
||||||
|
elementNode.set("Children", childElements);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elementsArray.add(elementNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return elementsArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getContent(PDStructureElement structureElement) {
|
||||||
|
StringBuilder contentBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
for (Object item : structureElement.getKids()) {
|
||||||
|
if (item instanceof COSString) {
|
||||||
|
COSString cosString = (COSString) item;
|
||||||
|
contentBuilder.append(cosString.getString());
|
||||||
|
} else if (item instanceof PDStructureElement) {
|
||||||
|
// For simplicity, we're handling only COSString and PDStructureElement here
|
||||||
|
// but a more comprehensive method would handle other types too
|
||||||
|
contentBuilder.append(getContent((PDStructureElement) item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return contentBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String formatDate(Calendar calendar) {
|
||||||
|
if (calendar != null) {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
return sdf.format(calendar.getTime());
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getPageModeDescription(PdfName pageMode) {
|
||||||
|
return pageMode != null ? pageMode.toString().replaceFirst("/", "") : "Unknown";
|
||||||
|
}
|
||||||
|
}
|
|
@ -52,37 +52,37 @@ public class PasswordController {
|
||||||
@RequestPart(required = true, value = "fileInput")
|
@RequestPart(required = true, value = "fileInput")
|
||||||
@Parameter(description = "The input PDF file to which the password should be added", required = true)
|
@Parameter(description = "The input PDF file to which the password should be added", required = true)
|
||||||
MultipartFile fileInput,
|
MultipartFile fileInput,
|
||||||
@RequestParam(defaultValue = "", name = "ownerPassword")
|
@RequestParam(value = "", name = "ownerPassword")
|
||||||
@Parameter(description = "The owner password to be added to the PDF file (Restricts what can be done with the document once it is opened)")
|
@Parameter(description = "The owner password to be added to the PDF file (Restricts what can be done with the document once it is opened)")
|
||||||
String ownerPassword,
|
String ownerPassword,
|
||||||
@RequestParam(defaultValue = "", name = "password")
|
@RequestParam( name = "password", required = false)
|
||||||
@Parameter(description = "The password to be added to the PDF file (Restricts the opening of the document itself.)")
|
@Parameter(description = "The password to be added to the PDF file (Restricts the opening of the document itself.)")
|
||||||
String password,
|
String password,
|
||||||
@RequestParam(defaultValue = "128", name = "keyLength")
|
@RequestParam( name = "keyLength", required = false)
|
||||||
@Parameter(description = "The length of the encryption key", schema = @Schema(allowableValues = {"40", "128", "256"}))
|
@Parameter(description = "The length of the encryption key", schema = @Schema(allowableValues = {"40", "128", "256"}))
|
||||||
int keyLength,
|
int keyLength,
|
||||||
@RequestParam(defaultValue = "false", name = "canAssembleDocument")
|
@RequestParam( name = "canAssembleDocument", required = false)
|
||||||
@Parameter(description = "Whether the document assembly is allowed", example = "false")
|
@Parameter(description = "Whether the document assembly is allowed", example = "false")
|
||||||
boolean canAssembleDocument,
|
boolean canAssembleDocument,
|
||||||
@RequestParam(defaultValue = "false", name = "canExtractContent")
|
@RequestParam( name = "canExtractContent", required = false)
|
||||||
@Parameter(description = "Whether content extraction for accessibility is allowed", example = "false")
|
@Parameter(description = "Whether content extraction for accessibility is allowed", example = "false")
|
||||||
boolean canExtractContent,
|
boolean canExtractContent,
|
||||||
@RequestParam(defaultValue = "false", name = "canExtractForAccessibility")
|
@RequestParam( name = "canExtractForAccessibility", required = false)
|
||||||
@Parameter(description = "Whether content extraction for accessibility is allowed", example = "false")
|
@Parameter(description = "Whether content extraction for accessibility is allowed", example = "false")
|
||||||
boolean canExtractForAccessibility,
|
boolean canExtractForAccessibility,
|
||||||
@RequestParam(defaultValue = "false", name = "canFillInForm")
|
@RequestParam( name = "canFillInForm", required = false)
|
||||||
@Parameter(description = "Whether form filling is allowed", example = "false")
|
@Parameter(description = "Whether form filling is allowed", example = "false")
|
||||||
boolean canFillInForm,
|
boolean canFillInForm,
|
||||||
@RequestParam(defaultValue = "false", name = "canModify")
|
@RequestParam( name = "canModify", required = false)
|
||||||
@Parameter(description = "Whether the document modification is allowed", example = "false")
|
@Parameter(description = "Whether the document modification is allowed", example = "false")
|
||||||
boolean canModify,
|
boolean canModify,
|
||||||
@RequestParam(defaultValue = "false", name = "canModifyAnnotations")
|
@RequestParam( name = "canModifyAnnotations", required = false)
|
||||||
@Parameter(description = "Whether modification of annotations is allowed", example = "false")
|
@Parameter(description = "Whether modification of annotations is allowed", example = "false")
|
||||||
boolean canModifyAnnotations,
|
boolean canModifyAnnotations,
|
||||||
@RequestParam(defaultValue = "false", name = "canPrint")
|
@RequestParam(name = "canPrint", required = false)
|
||||||
@Parameter(description = "Whether printing of the document is allowed", example = "false")
|
@Parameter(description = "Whether printing of the document is allowed", example = "false")
|
||||||
boolean canPrint,
|
boolean canPrint,
|
||||||
@RequestParam(defaultValue = "false", name = "canPrintFaithful")
|
@RequestParam( name = "canPrintFaithful", required = false)
|
||||||
@Parameter(description = "Whether faithful printing is allowed", example = "false")
|
@Parameter(description = "Whether faithful printing is allowed", example = "false")
|
||||||
boolean canPrintFaithful
|
boolean canPrintFaithful
|
||||||
) throws IOException {
|
) throws IOException {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package stirling.software.SPDF.controller.api.security;
|
package stirling.software.SPDF.controller.api.security;
|
||||||
import org.apache.pdfbox.cos.COSName;
|
import org.apache.pdfbox.cos.COSName;
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
|
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.pdmodel.PDResources;
|
import org.apache.pdfbox.pdmodel.PDResources;
|
||||||
import org.apache.pdfbox.pdmodel.PDPageTree;
|
import org.apache.pdfbox.pdmodel.PDPageTree;
|
||||||
|
@ -21,7 +22,9 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import stirling.software.SPDF.utils.WebResponseUtils;
|
import stirling.software.SPDF.utils.WebResponseUtils;
|
||||||
|
import org.apache.pdfbox.cos.COSDictionary;
|
||||||
|
import org.apache.pdfbox.cos.COSName;
|
||||||
|
import org.apache.pdfbox.cos.COSString;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
|
@ -75,8 +78,24 @@ public class SanitizeController {
|
||||||
return WebResponseUtils.pdfDocToWebResponse(document, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_sanitized.pdf");
|
return WebResponseUtils.pdfDocToWebResponse(document, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_sanitized.pdf");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
private void sanitizeJavaScript(PDDocument document) throws IOException {
|
||||||
for (PDPage page : document.getPages()) {
|
// Get the root dictionary (catalog) of the PDF
|
||||||
|
PDDocumentCatalog catalog = document.getDocumentCatalog();
|
||||||
|
|
||||||
|
// Get the Names dictionary
|
||||||
|
COSDictionary namesDict = (COSDictionary) catalog.getCOSObject().getDictionaryObject(COSName.NAMES);
|
||||||
|
|
||||||
|
if (namesDict != null) {
|
||||||
|
// Get the JavaScript dictionary
|
||||||
|
COSDictionary javaScriptDict = (COSDictionary) namesDict.getDictionaryObject(COSName.getPDFName("JavaScript"));
|
||||||
|
|
||||||
|
if (javaScriptDict != null) {
|
||||||
|
// Remove the JavaScript dictionary
|
||||||
|
namesDict.removeItem(COSName.getPDFName("JavaScript"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (PDPage page : document.getPages()) {
|
||||||
for (PDAnnotation annotation : page.getAnnotations()) {
|
for (PDAnnotation annotation : page.getAnnotations()) {
|
||||||
if (annotation instanceof PDAnnotationWidget) {
|
if (annotation instanceof PDAnnotationWidget) {
|
||||||
PDAnnotationWidget widget = (PDAnnotationWidget) annotation;
|
PDAnnotationWidget widget = (PDAnnotationWidget) annotation;
|
||||||
|
@ -89,13 +108,28 @@ public class SanitizeController {
|
||||||
PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
|
PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
|
||||||
if (acroForm != null) {
|
if (acroForm != null) {
|
||||||
for (PDField field : acroForm.getFields()) {
|
for (PDField field : acroForm.getFields()) {
|
||||||
if (field.getActions().getF() instanceof PDActionJavaScript) {
|
PDFormFieldAdditionalActions actions = field.getActions();
|
||||||
field.getActions().setF(null);
|
if(actions != null) {
|
||||||
}
|
if (actions.getC() instanceof PDActionJavaScript) {
|
||||||
|
actions.setC(null);
|
||||||
|
}
|
||||||
|
if (actions.getF() instanceof PDActionJavaScript) {
|
||||||
|
actions.setF(null);
|
||||||
|
}
|
||||||
|
if (actions.getK() instanceof PDActionJavaScript) {
|
||||||
|
actions.setK(null);
|
||||||
|
}
|
||||||
|
if (actions.getV() instanceof PDActionJavaScript) {
|
||||||
|
actions.setV(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void sanitizeEmbeddedFiles(PDDocument document) {
|
private void sanitizeEmbeddedFiles(PDDocument document) {
|
||||||
PDPageTree allPages = document.getPages();
|
PDPageTree allPages = document.getPages();
|
||||||
|
|
|
@ -44,8 +44,8 @@ public class WatermarkController {
|
||||||
@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")
|
@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<byte[]> addWatermark(
|
public ResponseEntity<byte[]> addWatermark(
|
||||||
@RequestPart(required = true, value = "fileInput") @Parameter(description = "The input PDF file to add a watermark") MultipartFile pdfFile,
|
@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,
|
@RequestParam(required = true) @Parameter(description = "The watermark type (text or image)") String watermarkType,
|
||||||
@RequestPart(required = false) @Parameter(description = "The watermark text") String watermarkText,
|
@RequestParam(required = false) @Parameter(description = "The watermark text") String watermarkText,
|
||||||
@RequestPart(required = false) @Parameter(description = "The watermark image") MultipartFile watermarkImage,
|
@RequestPart(required = false) @Parameter(description = "The watermark image") MultipartFile watermarkImage,
|
||||||
|
|
||||||
@RequestParam(defaultValue = "roman", name = "alphabet") @Parameter(description = "The selected alphabet",
|
@RequestParam(defaultValue = "roman", name = "alphabet") @Parameter(description = "The selected alphabet",
|
||||||
|
|
|
@ -25,6 +25,13 @@ public class ConverterWebController {
|
||||||
model.addAttribute("currentPage", "html-to-pdf");
|
model.addAttribute("currentPage", "html-to-pdf");
|
||||||
return "convert/html-to-pdf";
|
return "convert/html-to-pdf";
|
||||||
}
|
}
|
||||||
|
@GetMapping("/markdown-to-pdf")
|
||||||
|
@Hidden
|
||||||
|
public String convertMarkdownToPdfForm(Model model) {
|
||||||
|
model.addAttribute("currentPage", "markdown-to-pdf");
|
||||||
|
return "convert/markdown-to-pdf";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/url-to-pdf")
|
@GetMapping("/url-to-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
|
|
|
@ -97,6 +97,20 @@ public class GeneralWebController {
|
||||||
return "pdf-organizer";
|
return "pdf-organizer";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/extract-page")
|
||||||
|
@Hidden
|
||||||
|
public String extractPages(Model model) {
|
||||||
|
model.addAttribute("currentPage", "extract-page");
|
||||||
|
return "extract-page";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/pdf-to-single-page")
|
||||||
|
@Hidden
|
||||||
|
public String pdfToSinglePage(Model model) {
|
||||||
|
model.addAttribute("currentPage", "pdf-to-single-page");
|
||||||
|
return "pdf-to-single-page";
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/rotate-pdf")
|
@GetMapping("/rotate-pdf")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String rotatePdfForm(Model model) {
|
public String rotatePdfForm(Model model) {
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
package stirling.software.SPDF.controller.web;
|
package stirling.software.SPDF.controller.web;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
@ -14,6 +22,8 @@ import io.micrometer.core.instrument.MeterRegistry;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.PostConstruct;
|
||||||
|
import stirling.software.SPDF.config.StartupApplicationListener;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/v1")
|
@RequestMapping("/api/v1")
|
||||||
|
@ -22,6 +32,20 @@ public class MetricsController {
|
||||||
|
|
||||||
private final MeterRegistry meterRegistry;
|
private final MeterRegistry meterRegistry;
|
||||||
|
|
||||||
|
private boolean isEndpointEnabled;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
public void init() {
|
||||||
|
String isEndpointEnabled = System.getProperty("ENABLE_API_METRICS");
|
||||||
|
if (isEndpointEnabled == null) {
|
||||||
|
isEndpointEnabled = System.getenv("ENABLE_API_METRICS");
|
||||||
|
if (isEndpointEnabled == null) {
|
||||||
|
isEndpointEnabled = "true";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.isEndpointEnabled = "true".equalsIgnoreCase(isEndpointEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
public MetricsController(MeterRegistry meterRegistry) {
|
public MetricsController(MeterRegistry meterRegistry) {
|
||||||
this.meterRegistry = meterRegistry;
|
this.meterRegistry = meterRegistry;
|
||||||
}
|
}
|
||||||
|
@ -29,18 +53,25 @@ public class MetricsController {
|
||||||
@GetMapping("/status")
|
@GetMapping("/status")
|
||||||
@Operation(summary = "Application status and version",
|
@Operation(summary = "Application status and version",
|
||||||
description = "This endpoint returns the status of the application and its version number.")
|
description = "This endpoint returns the status of the application and its version number.")
|
||||||
public Map<String, String> getStatus() {
|
public ResponseEntity<?> getStatus() {
|
||||||
|
if (!isEndpointEnabled) {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, String> status = new HashMap<>();
|
Map<String, String> status = new HashMap<>();
|
||||||
status.put("status", "UP");
|
status.put("status", "UP");
|
||||||
status.put("version", getClass().getPackage().getImplementationVersion());
|
status.put("version", getClass().getPackage().getImplementationVersion());
|
||||||
return status;
|
return ResponseEntity.ok(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/loads")
|
@GetMapping("/loads")
|
||||||
@Operation(summary = "GET request count",
|
@Operation(summary = "GET request count",
|
||||||
description = "This endpoint returns the total count of GET requests or the count of GET requests for a specific endpoint.")
|
description = "This endpoint returns the total count of GET requests or the count of GET requests for a specific endpoint.")
|
||||||
public Double getPageLoads(@RequestParam(required = false, name = "endpoint") @Parameter(description = "endpoint") Optional<String> endpoint) {
|
public ResponseEntity<?> getPageLoads(@RequestParam(required = false, name = "endpoint") @Parameter(description = "endpoint") Optional<String> endpoint) {
|
||||||
try {
|
if (!isEndpointEnabled) {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
|
||||||
double count = 0.0;
|
double count = 0.0;
|
||||||
|
|
||||||
|
@ -68,36 +99,165 @@ public class MetricsController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return count;
|
return ResponseEntity.ok(count);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return -1.0;
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/loads/all")
|
||||||
|
@Operation(summary = "GET requests count for all endpoints",
|
||||||
|
description = "This endpoint returns the count of GET requests for each endpoint.")
|
||||||
|
public ResponseEntity<?> getAllEndpointLoads() {
|
||||||
|
if (!isEndpointEnabled) {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Map<String, Double> counts = new HashMap<>();
|
||||||
|
|
||||||
|
for (Meter meter : meterRegistry.getMeters()) {
|
||||||
|
if (meter.getId().getName().equals("http.requests")) {
|
||||||
|
String method = meter.getId().getTag("method");
|
||||||
|
if (method != null && method.equals("GET")) {
|
||||||
|
String uri = meter.getId().getTag("uri");
|
||||||
|
if (uri != null) {
|
||||||
|
double currentCount = counts.getOrDefault(uri, 0.0);
|
||||||
|
if (meter instanceof Counter) {
|
||||||
|
currentCount += ((Counter) meter).count();
|
||||||
|
}
|
||||||
|
counts.put(uri, currentCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<EndpointCount> results = counts.entrySet().stream()
|
||||||
|
.map(entry -> new EndpointCount(entry.getKey(), entry.getValue()))
|
||||||
|
.sorted(Comparator.comparing(EndpointCount::getCount).reversed())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
return ResponseEntity.ok(results);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EndpointCount {
|
||||||
|
private String endpoint;
|
||||||
|
private double count;
|
||||||
|
|
||||||
|
public EndpointCount(String endpoint, double count) {
|
||||||
|
this.endpoint = endpoint;
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
public String getEndpoint() {
|
||||||
|
return endpoint;
|
||||||
|
}
|
||||||
|
public void setEndpoint(String endpoint) {
|
||||||
|
this.endpoint = endpoint;
|
||||||
|
}
|
||||||
|
public double getCount() {
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
public void setCount(double count) {
|
||||||
|
this.count = count;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/requests")
|
@GetMapping("/requests")
|
||||||
@Operation(summary = "POST request count",
|
@Operation(summary = "POST request count",
|
||||||
description = "This endpoint returns the total count of POST requests or the count of POST requests for a specific endpoint.")
|
description = "This endpoint returns the total count of POST requests or the count of POST requests for a specific endpoint.")
|
||||||
public Double getTotalRequests(@RequestParam(required = false, name = "endpoint") @Parameter(description = "endpoint") Optional<String> endpoint) {
|
public ResponseEntity<?> getTotalRequests(@RequestParam(required = false, name = "endpoint") @Parameter(description = "endpoint") Optional<String> endpoint) {
|
||||||
try {
|
if (!isEndpointEnabled) {
|
||||||
Counter counter;
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
if (endpoint.isPresent() && !endpoint.get().isBlank()) {
|
|
||||||
if(!endpoint.get().startsWith("/")) {
|
|
||||||
endpoint = Optional.of("/" + endpoint.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("loads " + endpoint.get() + " vs " + meterRegistry.get("http.requests").tags("uri", endpoint.get()).toString());
|
|
||||||
counter = meterRegistry.get("http.requests")
|
|
||||||
.tags("method", "POST", "uri", endpoint.get()).counter();
|
|
||||||
} else {
|
|
||||||
counter = meterRegistry.get("http.requests")
|
|
||||||
.tags("method", "POST").counter();
|
|
||||||
}
|
|
||||||
return counter.count();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return 0.0;
|
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
double count = 0.0;
|
||||||
|
|
||||||
|
for (Meter meter : meterRegistry.getMeters()) {
|
||||||
|
if (meter.getId().getName().equals("http.requests")) {
|
||||||
|
String method = meter.getId().getTag("method");
|
||||||
|
if (method != null && method.equals("POST")) {
|
||||||
|
if (endpoint.isPresent() && !endpoint.get().isBlank()) {
|
||||||
|
if (!endpoint.get().startsWith("/")) {
|
||||||
|
endpoint = Optional.of("/" + endpoint.get());
|
||||||
|
}
|
||||||
|
if (endpoint.get().equals(meter.getId().getTag("uri"))) {
|
||||||
|
if (meter instanceof Counter) {
|
||||||
|
count += ((Counter) meter).count();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (meter instanceof Counter) {
|
||||||
|
count += ((Counter) meter).count();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResponseEntity.ok(count);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResponseEntity.ok(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/requests/all")
|
||||||
|
@Operation(summary = "POST requests count for all endpoints",
|
||||||
|
description = "This endpoint returns the count of POST requests for each endpoint.")
|
||||||
|
public ResponseEntity<?> getAllPostRequests() {
|
||||||
|
if (!isEndpointEnabled) {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Map<String, Double> counts = new HashMap<>();
|
||||||
|
|
||||||
|
for (Meter meter : meterRegistry.getMeters()) {
|
||||||
|
if (meter.getId().getName().equals("http.requests")) {
|
||||||
|
String method = meter.getId().getTag("method");
|
||||||
|
if (method != null && method.equals("POST")) {
|
||||||
|
String uri = meter.getId().getTag("uri");
|
||||||
|
if (uri != null) {
|
||||||
|
double currentCount = counts.getOrDefault(uri, 0.0);
|
||||||
|
if (meter instanceof Counter) {
|
||||||
|
currentCount += ((Counter) meter).count();
|
||||||
|
}
|
||||||
|
counts.put(uri, currentCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<EndpointCount> results = counts.entrySet().stream()
|
||||||
|
.map(entry -> new EndpointCount(entry.getKey(), entry.getValue()))
|
||||||
|
.sorted(Comparator.comparing(EndpointCount::getCount).reversed())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
return ResponseEntity.ok(results);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/uptime")
|
||||||
|
public ResponseEntity<?> getUptime() {
|
||||||
|
if (!isEndpointEnabled) {
|
||||||
|
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
Duration uptime = Duration.between(StartupApplicationListener.startTime, now);
|
||||||
|
return ResponseEntity.ok(formatDuration(uptime));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String formatDuration(Duration duration) {
|
||||||
|
long days = duration.toDays();
|
||||||
|
long hours = duration.toHoursPart();
|
||||||
|
long minutes = duration.toMinutesPart();
|
||||||
|
long seconds = duration.toSecondsPart();
|
||||||
|
return String.format("%dd %dh %dm %ds", days, hours, minutes, seconds);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,14 @@ public class OtherWebController {
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/show-javascript")
|
||||||
|
@Hidden
|
||||||
|
public String extractJavascriptForm(Model model) {
|
||||||
|
model.addAttribute("currentPage", "show-javascript");
|
||||||
|
return "other/show-javascript";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/add-page-numbers")
|
@GetMapping("/add-page-numbers")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addPageNumbersForm(Model model) {
|
public String addPageNumbersForm(Model model) {
|
||||||
|
|
|
@ -10,6 +10,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@Controller
|
@Controller
|
||||||
@Tag(name = "Security", description = "Security APIs")
|
@Tag(name = "Security", description = "Security APIs")
|
||||||
public class SecurityWebController {
|
public class SecurityWebController {
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/add-password")
|
@GetMapping("/add-password")
|
||||||
@Hidden
|
@Hidden
|
||||||
public String addPasswordForm(Model model) {
|
public String addPasswordForm(Model model) {
|
||||||
|
@ -50,4 +52,11 @@ public class SecurityWebController {
|
||||||
model.addAttribute("currentPage", "sanitize-pdf");
|
model.addAttribute("currentPage", "sanitize-pdf");
|
||||||
return "security/sanitize-pdf";
|
return "security/sanitize-pdf";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get-info-on-pdf")
|
||||||
|
@Hidden
|
||||||
|
public String getInfo(Model model) {
|
||||||
|
model.addAttribute("currentPage", "get-info-on-pdf");
|
||||||
|
return "security/get-info-on-pdf";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
95
src/main/java/stirling/software/SPDF/utils/FileToPdf.java
Normal file
95
src/main/java/stirling/software/SPDF/utils/FileToPdf.java
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
package stirling.software.SPDF.utils;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
|
|
||||||
|
public class FileToPdf {
|
||||||
|
public static byte[] convertHtmlToPdf(byte[] fileBytes, String fileName) throws IOException, InterruptedException {
|
||||||
|
|
||||||
|
Path tempOutputFile = Files.createTempFile("output_", ".pdf");
|
||||||
|
Path tempInputFile = null;
|
||||||
|
byte[] pdfBytes;
|
||||||
|
try {
|
||||||
|
if (fileName.endsWith(".html")) {
|
||||||
|
tempInputFile = Files.createTempFile("input_", ".html");
|
||||||
|
Files.write(tempInputFile, fileBytes);
|
||||||
|
} else {
|
||||||
|
tempInputFile = unzipAndGetMainHtml(fileBytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> command = new ArrayList<>();
|
||||||
|
command.add("weasyprint");
|
||||||
|
command.add(tempInputFile.toString());
|
||||||
|
command.add(tempOutputFile.toString());
|
||||||
|
ProcessExecutorResult returnCode;
|
||||||
|
if (fileName.endsWith(".zip")) {
|
||||||
|
returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT)
|
||||||
|
.runCommandWithOutputHandling(command, tempInputFile.getParent().toFile());
|
||||||
|
} else {
|
||||||
|
|
||||||
|
returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT)
|
||||||
|
.runCommandWithOutputHandling(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
pdfBytes = Files.readAllBytes(tempOutputFile);
|
||||||
|
} finally {
|
||||||
|
// Clean up temporary files
|
||||||
|
Files.delete(tempOutputFile);
|
||||||
|
Files.delete(tempInputFile);
|
||||||
|
|
||||||
|
if (fileName.endsWith(".zip")) {
|
||||||
|
GeneralUtils.deleteDirectory(tempInputFile.getParent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pdfBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static Path unzipAndGetMainHtml(byte[] fileBytes) throws IOException {
|
||||||
|
Path tempDirectory = Files.createTempDirectory("unzipped_");
|
||||||
|
try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(fileBytes))) {
|
||||||
|
ZipEntry entry = zipIn.getNextEntry();
|
||||||
|
while (entry != null) {
|
||||||
|
Path filePath = tempDirectory.resolve(entry.getName());
|
||||||
|
if (entry.isDirectory()) {
|
||||||
|
Files.createDirectories(filePath); // Explicitly create the directory structure
|
||||||
|
} else {
|
||||||
|
Files.createDirectories(filePath.getParent()); // Create parent directories if they don't exist
|
||||||
|
Files.copy(zipIn, filePath);
|
||||||
|
}
|
||||||
|
zipIn.closeEntry();
|
||||||
|
entry = zipIn.getNextEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//search for the main HTML file.
|
||||||
|
try (Stream<Path> walk = Files.walk(tempDirectory)) {
|
||||||
|
List<Path> htmlFiles = walk.filter(file -> file.toString().endsWith(".html"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (htmlFiles.isEmpty()) {
|
||||||
|
throw new IOException("No HTML files found in the unzipped directory.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prioritize 'index.html' if it exists, otherwise use the first .html file
|
||||||
|
for (Path htmlFile : htmlFiles) {
|
||||||
|
if (htmlFile.getFileName().toString().equals("index.html")) {
|
||||||
|
return htmlFile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return htmlFiles.get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,6 +20,8 @@ import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
|
||||||
|
|
||||||
public class PDFToFile {
|
public class PDFToFile {
|
||||||
public ResponseEntity<byte[]> processPdfToOfficeFormat(MultipartFile inputFile, String outputFormat, String libreOfficeFilter) throws IOException, InterruptedException {
|
public ResponseEntity<byte[]> processPdfToOfficeFormat(MultipartFile inputFile, String outputFormat, String libreOfficeFilter) throws IOException, InterruptedException {
|
||||||
|
|
||||||
|
@ -53,7 +55,7 @@ public class PDFToFile {
|
||||||
// Run the LibreOffice command
|
// Run the LibreOffice command
|
||||||
List<String> command = new ArrayList<>(
|
List<String> command = new ArrayList<>(
|
||||||
Arrays.asList("soffice", "--infilter=" + libreOfficeFilter, "--convert-to", outputFormat, "--outdir", tempOutputDir.toString(), tempInputFile.toString()));
|
Arrays.asList("soffice", "--infilter=" + libreOfficeFilter, "--convert-to", outputFormat, "--outdir", tempOutputDir.toString(), tempInputFile.toString()));
|
||||||
int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE).runCommandWithOutputHandling(command);
|
ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE).runCommandWithOutputHandling(command);
|
||||||
|
|
||||||
// Get output files
|
// Get output files
|
||||||
List<File> outputFiles = Arrays.asList(tempOutputDir.toFile().listFiles());
|
List<File> outputFiles = Arrays.asList(tempOutputDir.toFile().listFiles());
|
||||||
|
|
|
@ -37,11 +37,12 @@ public class ProcessExecutor {
|
||||||
private ProcessExecutor(int semaphoreLimit) {
|
private ProcessExecutor(int semaphoreLimit) {
|
||||||
this.semaphore = new Semaphore(semaphoreLimit);
|
this.semaphore = new Semaphore(semaphoreLimit);
|
||||||
}
|
}
|
||||||
public int runCommandWithOutputHandling(List<String> command) throws IOException, InterruptedException {
|
public ProcessExecutorResult runCommandWithOutputHandling(List<String> command) throws IOException, InterruptedException {
|
||||||
return runCommandWithOutputHandling(command, null);
|
return runCommandWithOutputHandling(command, null);
|
||||||
}
|
}
|
||||||
public int runCommandWithOutputHandling(List<String> command, File workingDirectory) throws IOException, InterruptedException {
|
public ProcessExecutorResult runCommandWithOutputHandling(List<String> command, File workingDirectory) throws IOException, InterruptedException {
|
||||||
int exitCode = 1;
|
int exitCode = 1;
|
||||||
|
String messages = "";
|
||||||
semaphore.acquire();
|
semaphore.acquire();
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -92,11 +93,13 @@ public class ProcessExecutor {
|
||||||
|
|
||||||
if (outputLines.size() > 0) {
|
if (outputLines.size() > 0) {
|
||||||
String outputMessage = String.join("\n", outputLines);
|
String outputMessage = String.join("\n", outputLines);
|
||||||
|
messages += outputMessage;
|
||||||
System.out.println("Command output:\n" + outputMessage);
|
System.out.println("Command output:\n" + outputMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorLines.size() > 0) {
|
if (errorLines.size() > 0) {
|
||||||
String errorMessage = String.join("\n", errorLines);
|
String errorMessage = String.join("\n", errorLines);
|
||||||
|
messages += errorMessage;
|
||||||
System.out.println("Command error output:\n" + errorMessage);
|
System.out.println("Command error output:\n" + errorMessage);
|
||||||
if (exitCode != 0) {
|
if (exitCode != 0) {
|
||||||
throw new IOException("Command process failed with exit code " + exitCode + ". Error message: " + errorMessage);
|
throw new IOException("Command process failed with exit code " + exitCode + ". Error message: " + errorMessage);
|
||||||
|
@ -105,7 +108,28 @@ public class ProcessExecutor {
|
||||||
} finally {
|
} finally {
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
}
|
}
|
||||||
return exitCode;
|
return new ProcessExecutorResult(exitCode, messages);
|
||||||
}
|
}
|
||||||
|
public class ProcessExecutorResult{
|
||||||
|
int rc;
|
||||||
|
String messages;
|
||||||
|
public ProcessExecutorResult(int rc, String messages) {
|
||||||
|
this.rc = rc;
|
||||||
|
this.messages = messages;
|
||||||
|
}
|
||||||
|
public int getRc() {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
public void setRc(int rc) {
|
||||||
|
this.rc = rc;
|
||||||
|
}
|
||||||
|
public String getMessages() {
|
||||||
|
return messages;
|
||||||
|
}
|
||||||
|
public void setMessages(String messages) {
|
||||||
|
this.messages = messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,9 @@ import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import com.itextpdf.kernel.pdf.PdfDocument;
|
||||||
|
import com.itextpdf.kernel.pdf.PdfWriter;
|
||||||
|
|
||||||
public class WebResponseUtils {
|
public class WebResponseUtils {
|
||||||
|
|
||||||
public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException {
|
public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException {
|
||||||
|
@ -58,4 +61,18 @@ public class WebResponseUtils {
|
||||||
return boasToWebResponse(baos, docName);
|
return boasToWebResponse(baos, docName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ResponseEntity<byte[]> pdfDocToWebResponse(PdfDocument document, String docName) throws IOException {
|
||||||
|
|
||||||
|
// Open Byte Array and save document to it
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
PdfWriter writer = new PdfWriter(baos);
|
||||||
|
PdfDocument newDocument = new PdfDocument(writer);
|
||||||
|
|
||||||
|
document.copyPagesTo(1, document.getNumberOfPages(), newDocument);
|
||||||
|
newDocument.close();
|
||||||
|
|
||||||
|
return boasToWebResponse(baos, docName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,10 @@ server.error.whitelabel.enabled=false
|
||||||
server.error.include-stacktrace=always
|
server.error.include-stacktrace=always
|
||||||
server.error.include-exception=true
|
server.error.include-exception=true
|
||||||
server.error.include-message=always
|
server.error.include-message=always
|
||||||
\
|
|
||||||
|
#logging.level.org.springframework.web=DEBUG
|
||||||
|
|
||||||
|
|
||||||
server.servlet.session.tracking-modes=cookie
|
server.servlet.session.tracking-modes=cookie
|
||||||
server.servlet.context-path=${APP_ROOT_PATH:/}
|
server.servlet.context-path=${APP_ROOT_PATH:/}
|
||||||
|
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=انقسام ملفات
|
home.split.title=انقسام ملفات
|
||||||
home.split.desc=تقسيم ملفات PDF إلى مستندات متعددة
|
home.split.desc=تقسيم ملفات PDF إلى مستندات متعددة
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=تدوير ملفات
|
home.rotate.title=تدوير ملفات
|
||||||
home.rotate.desc=قم بتدوير ملفات PDF الخاصة بك بسهولة.
|
home.rotate.desc=قم بتدوير ملفات PDF الخاصة بك بسهولة.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=صورة إلى PDF
|
home.imageToPdf.title=صورة إلى PDF
|
||||||
home.imageToPdf.desc=تحويل الصور (PNG ، JPEG ، GIF) إلى PDF.
|
home.imageToPdf.desc=تحويل الصور (PNG ، JPEG ، GIF) إلى PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=تحويل PDF إلى صورة
|
home.pdfToImage.title=تحويل PDF إلى صورة
|
||||||
home.pdfToImage.desc=تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF)
|
home.pdfToImage.desc=تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=منظم
|
home.pdfOrganiser.title=منظم
|
||||||
home.pdfOrganiser.desc=إزالة / إعادة ترتيب الصفحات بأي ترتيب
|
home.pdfOrganiser.desc=إزالة / إعادة ترتيب الصفحات بأي ترتيب
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=إضافة صورة إلى ملف PDF
|
home.addImage.title=إضافة صورة إلى ملف PDF
|
||||||
home.addImage.desc=إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم)
|
home.addImage.desc=إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=إضافة علامة مائية
|
home.watermark.title=إضافة علامة مائية
|
||||||
home.watermark.desc=أضف علامة مائية مخصصة إلى مستند PDF الخاص بك.
|
home.watermark.desc=أضف علامة مائية مخصصة إلى مستند PDF الخاص بك.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=تغيير الأذونات
|
home.permissions.title=تغيير الأذونات
|
||||||
home.permissions.desc=قم بتغيير أذونات مستند PDF الخاص بك
|
home.permissions.desc=قم بتغيير أذونات مستند PDF الخاص بك
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=إزالة الصفحات
|
home.removePages.title=إزالة الصفحات
|
||||||
home.removePages.desc=حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك.
|
home.removePages.desc=حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=إضافة كلمة مرور
|
home.addPassword.title=إضافة كلمة مرور
|
||||||
home.addPassword.desc=تشفير مستند PDF الخاص بك بكلمة مرور.
|
home.addPassword.desc=تشفير مستند PDF الخاص بك بكلمة مرور.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=إزالة كلمة المرور
|
home.removePassword.title=إزالة كلمة المرور
|
||||||
home.removePassword.desc=إزالة الحماية بكلمة مرور من مستند PDF الخاص بك.
|
home.removePassword.desc=إزالة الحماية بكلمة مرور من مستند PDF الخاص بك.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=ضغط ملفات
|
home.compressPdfs.title=ضغط ملفات
|
||||||
home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف.
|
home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
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.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.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
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 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.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)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A
|
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.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
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631
|
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.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
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A
|
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.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
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=تحويل PDF إلى Word
|
home.PDFToWord.title=تحويل PDF إلى Word
|
||||||
home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT)
|
home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF للعرض التقديمي
|
home.PDFToPresentation.title=PDF للعرض التقديمي
|
||||||
home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP)
|
home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=تحويل PDF إلى نص / RTF
|
home.PDFToText.title=تحويل PDF إلى نص / RTF
|
||||||
home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF
|
home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=تحويل PDF إلى HTML
|
home.PDFToHTML.title=تحويل PDF إلى HTML
|
||||||
home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML
|
home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=تحويل PDF إلى XML
|
home.PDFToXML.title=تحويل PDF إلى XML
|
||||||
home.PDFToXML.desc=تحويل PDF إلى تنسيق XML
|
home.PDFToXML.desc=تحويل PDF إلى تنسيق XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا
|
home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا
|
||||||
home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF
|
home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=تسجيل الدخول
|
home.sign.title=تسجيل الدخول
|
||||||
home.sign.desc=إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة
|
home.sign.desc=إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=تسطيح
|
home.flatten.title=تسطيح
|
||||||
home.flatten.desc=قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF
|
home.flatten.desc=قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=إصلاح
|
home.repair.title=إصلاح
|
||||||
home.repair.desc=يحاول إصلاح ملف PDF تالف / معطل
|
home.repair.desc=يحاول إصلاح ملف PDF تالف / معطل
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=إزالة الصفحات الفارغة
|
home.removeBlanks.title=إزالة الصفحات الفارغة
|
||||||
home.removeBlanks.desc=يكتشف ويزيل الصفحات الفارغة من المستند
|
home.removeBlanks.desc=يكتشف ويزيل الصفحات الفارغة من المستند
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=قارن
|
home.compare.title=قارن
|
||||||
home.compare.desc=يقارن ويظهر الاختلافات بين 2 من مستندات PDF
|
home.compare.desc=يقارن ويظهر الاختلافات بين 2 من مستندات PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Divideix
|
home.split.title=Divideix
|
||||||
home.split.desc=Divideix PDFs en múltiples documents
|
home.split.desc=Divideix PDFs en múltiples documents
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Rota
|
home.rotate.title=Rota
|
||||||
home.rotate.desc=Rota els PDFs.
|
home.rotate.desc=Rota els PDFs.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Imatge a PDF
|
home.imageToPdf.title=Imatge a PDF
|
||||||
home.imageToPdf.desc=Converteix imatge (PNG, JPEG, GIF) a PDF.
|
home.imageToPdf.desc=Converteix imatge (PNG, JPEG, GIF) a PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF a Imatge
|
home.pdfToImage.title=PDF a Imatge
|
||||||
home.pdfToImage.desc=Converteix PDF a imatge. (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Converteix PDF a imatge. (PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organitza
|
home.pdfOrganiser.title=Organitza
|
||||||
home.pdfOrganiser.desc=Elimina/Reorganitza pàgines en qualsevol ordre
|
home.pdfOrganiser.desc=Elimina/Reorganitza pàgines en qualsevol ordre
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Afegir imatge a PDF
|
home.addImage.title=Afegir imatge a PDF
|
||||||
home.addImage.desc=Afegeix imatge en un PDF (En progrés)
|
home.addImage.desc=Afegeix imatge en un PDF (En progrés)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Afegir Marca d'aigua
|
home.watermark.title=Afegir Marca d'aigua
|
||||||
home.watermark.desc=Afegir Marca d'aigua personalitzada en un PDF
|
home.watermark.desc=Afegir Marca d'aigua personalitzada en un PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Canvia permissos
|
home.permissions.title=Canvia permissos
|
||||||
home.permissions.desc=Canvia permisos del document PDF
|
home.permissions.desc=Canvia permisos del document PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Elimina
|
home.removePages.title=Elimina
|
||||||
home.removePages.desc=Elimina pàgines del document PDF.
|
home.removePages.desc=Elimina pàgines del document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Afegir Password
|
home.addPassword.title=Afegir Password
|
||||||
home.addPassword.desc=Xifra document PDF amb password.
|
home.addPassword.desc=Xifra document PDF amb password.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Elimina Password
|
home.removePassword.title=Elimina Password
|
||||||
home.removePassword.desc=Elimia Password de document PDF.
|
home.removePassword.desc=Elimia Password de document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Comprimeix
|
home.compressPdfs.title=Comprimeix
|
||||||
home.compressPdfs.desc=Comprimeix PDFs per reduir la mida.
|
home.compressPdfs.desc=Comprimeix PDFs per reduir la mida.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Canvia Metadades
|
home.changeMetadata.title=Canvia Metadades
|
||||||
home.changeMetadata.desc=Canvia/Treu/Afegeix matadades al document PDF.
|
home.changeMetadata.desc=Canvia/Treu/Afegeix matadades al document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Converteix arxiu a 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.fileToPDF.desc=Converteix qualsevol arxiu a PDF (DOCX, PNG, XLS, PPT, TXT i més)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=Executa exploracions OCR i/o neteja escanejos
|
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.ocr.desc=Neteja escanejats i detecta text d'imatges dins d'un PDF i el torna a afegir com a text.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extreu Imatges
|
home.extractImages.title=Extreu Imatges
|
||||||
home.extractImages.desc=Extreu les Imatges del PDF i les desa a zip
|
home.extractImages.desc=Extreu les Imatges del PDF i les desa a zip
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF a PDF/A
|
home.pdfToPDFA.title=PDF a PDF/A
|
||||||
home.pdfToPDFA.desc=Converteix PDF a PDF/A per desar a llarg termini.
|
home.pdfToPDFA.desc=Converteix PDF a PDF/A per desar a llarg termini.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF a Word
|
home.PDFToWord.title=PDF a Word
|
||||||
home.PDFToWord.desc=Converteix PDF a formats de Word (DOC, DOCX and ODT)
|
home.PDFToWord.desc=Converteix PDF a formats de Word (DOC, DOCX and ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF a Presentació
|
home.PDFToPresentation.title=PDF a Presentació
|
||||||
home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP)
|
home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF a Text/RTF
|
home.PDFToText.title=PDF a Text/RTF
|
||||||
home.PDFToText.desc=Converteix PDF a Text o format RTF
|
home.PDFToText.desc=Converteix PDF a Text o format RTF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF a HTML
|
home.PDFToHTML.title=PDF a HTML
|
||||||
home.PDFToHTML.desc=Converteix PDF a format HTML
|
home.PDFToHTML.desc=Converteix PDF a format HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF a XML
|
home.PDFToXML.title=PDF a XML
|
||||||
home.PDFToXML.desc=Converteix PDF a format XML
|
home.PDFToXML.desc=Converteix PDF a format XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detecta/Divideix fotos escanejades
|
home.ScannerImageSplit.title=Detecta/Divideix fotos escanejades
|
||||||
home.ScannerImageSplit.desc=Divideix múltiples fotos dins del PDF/foto
|
home.ScannerImageSplit.desc=Divideix múltiples fotos dins del PDF/foto
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Sign
|
home.sign.title=Sign
|
||||||
home.sign.desc=Afegeix signatura al PDF mitjançant dibuix, text o imatge
|
home.sign.desc=Afegeix signatura al PDF mitjançant dibuix, text o imatge
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Aplanar
|
home.flatten.title=Aplanar
|
||||||
home.flatten.desc=Elimineu tots els elements i formularis interactius d'un PDF
|
home.flatten.desc=Elimineu tots els elements i formularis interactius d'un PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Reparar
|
home.repair.title=Reparar
|
||||||
home.repair.desc=Intenta reparar un PDF danyat o trencat
|
home.repair.desc=Intenta reparar un PDF danyat o trencat
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Elimina les pàgines en blanc
|
home.removeBlanks.title=Elimina les pàgines en blanc
|
||||||
home.removeBlanks.desc=Detecta i elimina les pàgines en blanc d'un document
|
home.removeBlanks.desc=Detecta i elimina les pàgines en blanc d'un document
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Compara
|
home.compare.title=Compara
|
||||||
home.compare.desc=Compara i mostra les diferències entre 2 documents PDF
|
home.compare.desc=Compara i mostra les diferències entre 2 documents PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Aufteilen
|
home.split.title=Aufteilen
|
||||||
home.split.desc=PDFs in mehrere Dokumente aufteilen.
|
home.split.desc=PDFs in mehrere Dokumente aufteilen.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Drehen
|
home.rotate.title=Drehen
|
||||||
home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach.
|
home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Bild zu PDF
|
home.imageToPdf.title=Bild zu PDF
|
||||||
home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF.
|
home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF zu Bild
|
home.pdfToImage.title=PDF zu Bild
|
||||||
home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF).
|
home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organisieren
|
home.pdfOrganiser.title=Organisieren
|
||||||
home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern.
|
home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Bild einfügen
|
home.addImage.title=Bild einfügen
|
||||||
home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (Work in progress).
|
home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (Work in progress).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Wasserzeichen hinzufügen
|
home.watermark.title=Wasserzeichen hinzufügen
|
||||||
home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu.
|
home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Berechtigungen ändern
|
home.permissions.title=Berechtigungen ändern
|
||||||
home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern.
|
home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Entfernen
|
home.removePages.title=Entfernen
|
||||||
home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen.
|
home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Passwort hinzufügen
|
home.addPassword.title=Passwort hinzufügen
|
||||||
home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln.
|
home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Passwort entfernen
|
home.removePassword.title=Passwort entfernen
|
||||||
home.removePassword.desc=Den Passwortschutz eines PDFs entfernen.
|
home.removePassword.desc=Den Passwortschutz eines PDFs entfernen.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Komprimieren
|
home.compressPdfs.title=Komprimieren
|
||||||
home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren.
|
home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Metadaten ändern
|
home.changeMetadata.title=Metadaten ändern
|
||||||
home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument
|
home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Datei in PDF konvertieren
|
home.fileToPDF.title=Datei in PDF konvertieren
|
||||||
home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr)
|
home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=Führe OCR auf PDF- und/oder Cleanup-Scans aus
|
home.ocr.title=Führe OCR 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.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Bilder extrahieren
|
home.extractImages.title=Bilder extrahieren
|
||||||
home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Datei
|
home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Datei
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF zu PDF/A konvertieren
|
home.pdfToPDFA.title=PDF zu PDF/A konvertieren
|
||||||
home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren
|
home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF zu Word
|
home.PDFToWord.title=PDF zu Word
|
||||||
home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT)
|
home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF zu Präsentation
|
home.PDFToPresentation.title=PDF zu Präsentation
|
||||||
home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP)
|
home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF in Text/RTF
|
home.PDFToText.title=PDF in Text/RTF
|
||||||
home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren
|
home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF in HTML
|
home.PDFToHTML.title=PDF in HTML
|
||||||
home.PDFToHTML.desc=PDF in HTML-Format konvertieren
|
home.PDFToHTML.desc=PDF in HTML-Format konvertieren
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF in XML
|
home.PDFToXML.title=PDF in XML
|
||||||
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
home.PDFToXML.desc=PDF in XML-Format konvertieren
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen
|
home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen
|
||||||
home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF
|
home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Signieren
|
home.sign.title=Signieren
|
||||||
home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu
|
home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Abflachen
|
home.flatten.title=Abflachen
|
||||||
home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen
|
home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Reparatur
|
home.repair.title=Reparatur
|
||||||
home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren
|
home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Leere Seiten entfernen
|
home.removeBlanks.title=Leere Seiten entfernen
|
||||||
home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument
|
home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Vergleichen
|
home.compare.title=Vergleichen
|
||||||
home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an
|
home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -236,11 +236,70 @@ home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
@ -353,10 +412,10 @@ certSign.submit=Sign PDF
|
||||||
#removeBlanks
|
#removeBlanks
|
||||||
removeBlanks.title=Remove Blanks
|
removeBlanks.title=Remove Blanks
|
||||||
removeBlanks.header=Remove Blank Pages
|
removeBlanks.header=Remove Blank Pages
|
||||||
removeBlanks.threshold=Threshold:
|
removeBlanks.threshold=Pixel Whiteness Threshold:
|
||||||
removeBlanks.thresholdDesc=Threshold for determining how white a white pixel must be
|
removeBlanks.thresholdDesc=Threshold for determining how white a white pixel must be to be classed as 'White'. 0 = Black, 255 pure white.
|
||||||
removeBlanks.whitePercent=White Percent (%):
|
removeBlanks.whitePercent=White Percent (%):
|
||||||
removeBlanks.whitePercentDesc=Percent of page that must be white to be removed
|
removeBlanks.whitePercentDesc=Percent of page that must be 'white' pixels to be removed
|
||||||
removeBlanks.submit=Remove Blanks
|
removeBlanks.submit=Remove Blanks
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ language.direction=ltr
|
||||||
|
|
||||||
pdfPrompt=Seleccionar PDF(s)
|
pdfPrompt=Seleccionar PDF(s)
|
||||||
multiPdfPrompt=Seleccionar PDFs (2+)
|
multiPdfPrompt=Seleccionar PDFs (2+)
|
||||||
multiPdfDropPrompt=Selecciona (o arrastra y suelta) todos los PDFs que quieras
|
multiPdfDropPrompt=Seleccione (o arrastre y suelte) todos los PDFs que quiera
|
||||||
imgPrompt=Seleccionar Imagen(es)
|
imgPrompt=Seleccionar Imagen(es)
|
||||||
genericSubmit=Enviar
|
genericSubmit=Enviar
|
||||||
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
||||||
|
@ -19,17 +19,17 @@ save=Guardar
|
||||||
close=Cerrar
|
close=Cerrar
|
||||||
filesSelected=archivos seleccionados
|
filesSelected=archivos seleccionados
|
||||||
noFavourites=No se agregaron favoritos
|
noFavourites=No se agregaron favoritos
|
||||||
bored=¿Aburrido de esperar?
|
bored=¿Cansado de esperar?
|
||||||
alphabet=Alfabeto
|
alphabet=Alfabeto
|
||||||
downloadPdf=Descargar PDF
|
downloadPdf=Descargar PDF
|
||||||
text=Texto
|
text=Texto
|
||||||
font=Fuente
|
font=Fuente
|
||||||
selectFillter=-- Select --
|
selectFillter=-- Seleccionar --
|
||||||
pageNum=Número de página
|
pageNum=Número de página
|
||||||
sizes.small=Small
|
sizes.small=Paqueño
|
||||||
sizes.medium=Medium
|
sizes.medium=Mediano
|
||||||
sizes.large=Large
|
sizes.large=Grande
|
||||||
sizes.x-large=X-Large
|
sizes.x-large=Extra grande
|
||||||
error.pdfPassword=El documento PDF está protegido con contraseña y no se ha proporcionado o es incorrecta
|
error.pdfPassword=El documento PDF está protegido con contraseña y no se ha proporcionado o es incorrecta
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,381 +58,326 @@ settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descarga
|
||||||
#############
|
#############
|
||||||
# HOME-PAGE #
|
# HOME-PAGE #
|
||||||
#############
|
#############
|
||||||
home.desc=Tu ventanilla única autohospedada para todas tus necesidades PDF
|
home.desc=Su ventanilla única autohospedada para todas tus necesidades PDF
|
||||||
|
|
||||||
|
|
||||||
home.multiTool.title=Multi-herramienta PDF
|
home.multiTool.title=Multi-herramienta PDF
|
||||||
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas
|
||||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side
|
multiTool.tags=Multi-herramienta,Multi-operación,Interfaz de usuario,Arrastrar con un click,front end,lado del client
|
||||||
|
|
||||||
home.merge.title=Unir
|
home.merge.title=Unir
|
||||||
home.merge.desc=Unir fácilmente múltiples PDFs en uno
|
home.merge.desc=Unir fácilmente múltiples PDFs en uno
|
||||||
merge.tags=merge,Page operations,Back end,server side
|
merge.tags=Unir,Operaciones de página,Back end,lado del servidor
|
||||||
|
|
||||||
home.split.title=Dividir
|
home.split.title=Dividir
|
||||||
home.split.desc=Dividir PDFs en múltiples documentos
|
home.split.desc=Dividir PDFs en múltiples documentos
|
||||||
##########################
|
split.tags=Operaciones de página,dividir,Multi-página,cortar,lado del servidor
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
|
||||||
|
|
||||||
home.rotate.title=Rotar
|
home.rotate.title=Rotar
|
||||||
home.rotate.desc=Rotar fácilmente tus PDFs
|
home.rotate.desc=Rotar fácilmente sus PDFs
|
||||||
##########################
|
rotate.tags=lado del servidor
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Imagen a PDF
|
home.imageToPdf.title=Imagen a PDF
|
||||||
home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF
|
home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF
|
||||||
##########################
|
imageToPdf.tags=conversión,img,jpg,imagen,fotografía
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
|
||||||
|
|
||||||
home.pdfToImage.title=PDF a Imagen
|
home.pdfToImage.title=PDF a Imagen
|
||||||
home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF)
|
||||||
##########################
|
pdfToImage.tags=conversión,img,jpg,imagen,fotografía
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organizador
|
home.pdfOrganiser.title=Organizador
|
||||||
home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden
|
home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden
|
||||||
##########################
|
pdfOrganiser.tags=doble cara,pares,impares,ordenar,mover
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Agregar imagen al PDF
|
home.addImage.title=Agregar imagen al PDF
|
||||||
home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (trabajo en progreso)
|
home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (en desarrollo)
|
||||||
##########################
|
addImage.tags=img,jpg,imagen,fotografía
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
|
||||||
|
|
||||||
home.watermark.title=Añadir marca de agua
|
home.watermark.title=Añadir marca de agua
|
||||||
home.watermark.desc=Añadir una marca de agua predefinida al documento PDF
|
home.watermark.desc=Añadir una marca de agua predefinida al documento PDF
|
||||||
##########################
|
watermark.tags=Texto,repetir,etiquetar,propietario,copyight,marca comercial,img,jpg,imagen,fotografía
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
|
||||||
|
|
||||||
home.permissions.title=Cambiar permisos
|
home.permissions.title=Cambiar permisos
|
||||||
home.permissions.desc=Cambiar los permisos del documento PDF
|
home.permissions.desc=Cambiar los permisos del documento PDF
|
||||||
##########################
|
permissions.tags=leer,escribir,editar,imprimir
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Eliminar
|
home.removePages.title=Eliminar
|
||||||
home.removePages.desc=Eliminar páginas no deseadas del documento PDF
|
home.removePages.desc=Eliminar páginas no deseadas del documento PDF
|
||||||
##########################
|
removePages.tags=Borrar páginas,eliminar páginas
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
|
||||||
|
|
||||||
home.addPassword.title=Añadir contraseña
|
home.addPassword.title=Añadir contraseña
|
||||||
home.addPassword.desc=Encriptar el documento PDF con una contraseña
|
home.addPassword.desc=Encriptar el documento PDF con una contraseña
|
||||||
##########################
|
addPassword.tags=seguro,seguridad
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
|
||||||
|
|
||||||
home.removePassword.title=Eliminar contraseña
|
home.removePassword.title=Eliminar contraseña
|
||||||
home.removePassword.desc=Eliminar la contraseña del documento PDF
|
home.removePassword.desc=Eliminar la contraseña del documento PDF
|
||||||
##########################
|
removePassword.tags=seguro,Desencriptar,seguridad,quitar contraseña,eliminar contraseña
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
|
||||||
|
|
||||||
home.compressPdfs.title=Comprimir
|
home.compressPdfs.title=Comprimir
|
||||||
home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero
|
home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero
|
||||||
##########################
|
compressPdfs.tags=aplastar,pequeño,diminuto
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Cambiar metadatos
|
home.changeMetadata.title=Cambiar metadatos
|
||||||
home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF
|
home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF
|
||||||
##########################
|
changeMetadata.tags==Título,autor,fecha,creación,hora,editorial,productor,estadísticas
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
|
||||||
|
|
||||||
home.fileToPDF.title=Convertir fichero a 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.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más)
|
||||||
##########################
|
fileToPDF.tags=transformación,formato,documento,imagen,diapositiva,texto,conversión,office,docs,word,excel,powerpoint
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
|
||||||
|
|
||||||
home.ocr.title=Ejecutar OCR en PDF y/o escaneos de limpieza
|
home.ocr.title=Ejecutar OCR en PDF y/o tareas 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.ocr.desc=Tareas de limpieza y detectar texto en imágenes dentro de un PDF y volver a incrustarlo como texto
|
||||||
##########################
|
ocr.tags=reconocimiento,texto,imagen,escanear,leer,identificar,detección,editable
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extraer imágenes
|
home.extractImages.title=Extraer imágenes
|
||||||
home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZIP
|
home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZIP
|
||||||
##########################
|
extractImages.tags=imagen,fotografía,guardar,archivo,zip,capturar,coger
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
|
||||||
|
|
||||||
home.pdfToPDFA.title=Convertir PDF a PDF/A
|
home.pdfToPDFA.title=Convertir PDF a PDF/A
|
||||||
home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo
|
home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo
|
||||||
##########################
|
pdfToPDFA.tags=archivo,largo plazo,estándar,conversión,almacewnamiento,conservación
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
|
||||||
|
|
||||||
home.PDFToWord.title=PDF a Word
|
home.PDFToWord.title=PDF a Word
|
||||||
home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT)
|
home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT)
|
||||||
##########################
|
PDFToWord.tags=doc,docx,odt,word,transformación,formato,conversión,office,microsoft,archivo del documento
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF a presentación
|
home.PDFToPresentation.title=PDF a presentación
|
||||||
home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP)
|
home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP)
|
||||||
##########################
|
PDFToPresentation.tags=diapositivas,mostrar,office,microsoft
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
|
||||||
|
|
||||||
home.PDFToText.title=PDF a TXT o RTF
|
home.PDFToText.title=PDF a TXT o RTF
|
||||||
home.PDFToText.desc=Convertir PDF a formato TXT o RTF
|
home.PDFToText.desc=Convertir PDF a formato TXT o RTF
|
||||||
##########################
|
PDFToText.tags=formato enriquecido,formato de texto enriquecido,formato de texto enriquecido
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF a HTML
|
home.PDFToHTML.title=PDF a HTML
|
||||||
home.PDFToHTML.desc=Convertir PDF a formato HTML
|
home.PDFToHTML.desc=Convertir PDF a formato HTML
|
||||||
##########################
|
PDFToHTML.tags=contenido web,amigable para navegador
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF a XML
|
home.PDFToXML.title=PDF a XML
|
||||||
home.PDFToXML.desc=Convertir PDF a formato XML
|
home.PDFToXML.desc=Convertir PDF a formato XML
|
||||||
##########################
|
PDFToXML.tags=extracción de datos,contenido estructurado,interopersabilidad,transformación,convertir
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas
|
home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas
|
||||||
home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF
|
home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF
|
||||||
##########################
|
ScannerImageSplit.tags=separar,auto-detectar,escaneos,multi-foto,organizar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
|
||||||
|
|
||||||
home.sign.title=Firmar
|
home.sign.title=Firmar
|
||||||
home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen
|
home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen
|
||||||
##########################
|
sign.tags=autorizar,iniciales,firma manuscrita,texto de firma,imagen de firma
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
|
||||||
|
|
||||||
home.flatten.title=Aplanar
|
home.flatten.title=Aplanar
|
||||||
home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF
|
home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF
|
||||||
##########################
|
flatten.tags=estática,desactivar,no interactiva,etiqueta dinámica
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
|
||||||
|
|
||||||
home.repair.title=Reparar
|
home.repair.title=Reparar
|
||||||
home.repair.desc=Intentar reparar un PDF corrupto/roto
|
home.repair.desc=Intentar reparar un PDF corrupto/roto
|
||||||
##########################
|
repair.tags=reparar,restaurar,corregir,recuperar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
|
||||||
|
|
||||||
home.removeBlanks.title=Eliminar páginas en blanco
|
home.removeBlanks.title=Eliminar páginas en blanco
|
||||||
home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento
|
home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento
|
||||||
##########################
|
removeBlanks.tags=limpieza,dinámica,sin contenido,organizar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
|
||||||
|
|
||||||
home.compare.title=Comparar
|
home.compare.title=Comparar
|
||||||
home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF
|
home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF
|
||||||
##########################
|
compare.tags=diferenciar,contrastar,cambios,análisis
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
|
||||||
|
|
||||||
home.certSign.title=Firmar con certificado
|
home.certSign.title=Firmar con certificado
|
||||||
home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12)
|
home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12)
|
||||||
##########################
|
certSign.tags=autentificar,PEM,P12,oficial,encriptar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
|
||||||
|
|
||||||
home.pageLayout.title=Diseño de varias páginas
|
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.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página
|
||||||
##########################
|
pageLayout.tags=unir,compuesto,vista única,organizar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
|
||||||
|
|
||||||
home.scalePages.title=Escalar/ajustar tamaño de 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
|
home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido
|
||||||
##########################
|
scalePages.tags=cambiar tamaño,modificar,dimensionar,adaptar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Secuencia (Avanzado)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Ejecutar varias tareas a PDFs definiendo una secuencia de comandos
|
||||||
##########################
|
pipeline.tags=automatizar,secuencia,con script,proceso por lotes
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Aádir números de página
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Aádir números de página en un documento en una ubicación concreta
|
||||||
##########################
|
add-page-numbers.tags=paginar,etiquetar,organizar,indexar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto renombrar archivo PDF
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renormbrar un archivo PDF según su encabezamiento detecetado
|
||||||
##########################
|
auto-rename.tags=auto-detectar,basado en el encabezamiento,organizar,re-etiquetar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Ajustar Color/Contraste
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Ajustar Contraste, Saturación y Brillo de un PDF
|
||||||
##########################
|
adjust-contrast.tags=corrección de color,sintonizar color,modificar,mejorar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Recortar PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Recortar un PDF para reducir su tamaño (¡conservando el texto!)
|
||||||
##########################
|
crop.tags=recortar,contraer,editar,forma
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Dividir Páginas
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Dividir PDF escaneado con código QR divsor de página escaneada físicamente
|
||||||
##########################
|
autoSplitPDF.tags=Marcado por QR,separar,segmento de escaneo,organizar
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
home.sanitizePdf.title=Desinfectar
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
home.sanitizePdf.desc=Eliminar scripts y otros elementos de los archivos PDF
|
||||||
|
sanitizePdf.tags=limpiar,asegurar,seguro,quitar amenazas
|
||||||
|
|
||||||
|
home.URLToPDF.title=URL/Página web a PDF
|
||||||
|
home.URLToPDF.desc=Convierte cualquier dirección http(s) a PDF
|
||||||
|
URLToPDF.tags=captura web,guardar página,web-a-doc,archivo
|
||||||
|
|
||||||
|
home.HTMLToPDF.title=HTML a PDF
|
||||||
|
home.HTMLToPDF.desc=Convierte cualquier archivo HTML o ZIP a PDF
|
||||||
|
HTMLToPDF.tags=margen,contenido web,transformación,convertir
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
### TODO: Translate ###
|
### TODO: Translate ###
|
||||||
##########################
|
##########################
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.showJS.title=Show Javascript
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
showJS.tags=JS
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL a PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL a PDF
|
||||||
URLToPDF.submit=Convert
|
URLToPDF.submit=Convertir
|
||||||
URLToPDF.credit=Uses WeasyPrint
|
URLToPDF.credit=Utiliza WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
#html-to-pdf
|
#html-to-pdf
|
||||||
HTMLToPDF.title=HTML To PDF
|
HTMLToPDF.title=HTML a PDF
|
||||||
HTMLToPDF.header=HTML To PDF
|
HTMLToPDF.header=HTML a PDF
|
||||||
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required
|
HTMLToPDF.help=Acepta archivos HTML y ZIPs conteniendo los html/css/imágenes etc requeridas
|
||||||
HTMLToPDF.submit=Convert
|
HTMLToPDF.submit=Convertir
|
||||||
HTMLToPDF.credit=Uses WeasyPrint
|
HTMLToPDF.credit=Utiliza WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Desinfectar archivo PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Desinfectar un archivo PDF
|
||||||
sanitizePDF.selectText.1=Remove JavaScript actions
|
sanitizePDF.selectText.1=Eliminar acciones JavaScript
|
||||||
sanitizePDF.selectText.2=Remove embedded files
|
sanitizePDF.selectText.2=Eliminar archivos incrustados
|
||||||
sanitizePDF.selectText.3=Remove metadata
|
sanitizePDF.selectText.3=Eliminar metadatos
|
||||||
sanitizePDF.selectText.4=Remove links
|
sanitizePDF.selectText.4=Eliminar enlaces
|
||||||
sanitizePDF.selectText.5=Remove fonts
|
sanitizePDF.selectText.5=Eliminar fuentes
|
||||||
sanitizePDF.submit=Sanitize PDF
|
sanitizePDF.submit=Desinfectar PDF
|
||||||
|
|
||||||
|
|
||||||
#addPageNumbers
|
#addPageNumbers
|
||||||
addPageNumbers.title=Add Page Numbers
|
addPageNumbers.title=Añadir Números de Página
|
||||||
addPageNumbers.header=Add Page Numbers
|
addPageNumbers.header=Añadir Números de Página
|
||||||
addPageNumbers.selectText.1=Select PDF file:
|
addPageNumbers.selectText.1=Seleccionar archivo PDF:
|
||||||
addPageNumbers.selectText.2=Margin Size
|
addPageNumbers.selectText.2=Tamaño del margen
|
||||||
addPageNumbers.selectText.3=Position
|
addPageNumbers.selectText.3=Posición
|
||||||
addPageNumbers.selectText.4=Starting Number
|
addPageNumbers.selectText.4=Número de inicio
|
||||||
addPageNumbers.selectText.5=Pages to Number
|
addPageNumbers.selectText.5=Páginas a numerar
|
||||||
addPageNumbers.selectText.6=Custom Text
|
addPageNumbers.selectText.6=Texto personalizado
|
||||||
addPageNumbers.submit=Add Page Numbers
|
addPageNumbers.submit=Añadir Números de Página
|
||||||
|
|
||||||
|
|
||||||
#auto-rename
|
#auto-rename
|
||||||
auto-rename.title=Auto Rename
|
auto-rename.title=Auto Renombrar
|
||||||
auto-rename.header=Auto Rename PDF
|
auto-rename.header=Auto Renombrar PDF
|
||||||
auto-rename.submit=Auto Rename
|
auto-rename.submit=Auto Renombrar
|
||||||
|
|
||||||
|
|
||||||
#adjustContrast
|
#adjustContrast
|
||||||
adjustContrast.title=Adjust Contrast
|
adjustContrast.title=Ajustar Contraste
|
||||||
adjustContrast.header=Adjust Contrast
|
adjustContrast.header=Ajustar Contraste
|
||||||
adjustContrast.contrast=Contrast:
|
adjustContrast.contrast=Contraste:
|
||||||
adjustContrast.brightness=Brightness:
|
adjustContrast.brightness=Brillo:
|
||||||
adjustContrast.saturation=Saturation:
|
adjustContrast.saturation=Saturación:
|
||||||
adjustContrast.download=Download
|
adjustContrast.download=Descargar
|
||||||
|
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
crop.title=Crop
|
crop.title=Recortar
|
||||||
crop.header=Crop Image
|
crop.header=Recortar Imagen
|
||||||
crop.submit=Submit
|
crop.submit=Entregar
|
||||||
|
|
||||||
|
|
||||||
#autoSplitPDF
|
#autoSplitPDF
|
||||||
autoSplitPDF.title=Auto Split PDF
|
autoSplitPDF.title=Auto Dividir PDF
|
||||||
autoSplitPDF.header=Auto Split PDF
|
autoSplitPDF.header=Auto Dividir PDF
|
||||||
autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.
|
autoSplitPDF.description=Imprimir, Insertar, Escanear, cargar, y déjenos sepsrar automáticamente sus documentos. No se necesita clasificación manual.
|
||||||
autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine).
|
autoSplitPDF.selectText.1=Imprimir algunas hojas divisorias desde la parte inferior (Blanco y negro está bien).
|
||||||
autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them.
|
autoSplitPDF.selectText.2=Escanee todos sus documentos a la vez insertando la hoja divisoria entre ellos.
|
||||||
autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest.
|
autoSplitPDF.selectText.3=Cargue un único archivo PDF escaneado de gran tamaño y deje que Stirling PDF se encargue del resto.
|
||||||
autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document.
|
autoSplitPDF.selectText.4=Las páginas divisorias son automáticamente detectadas y eliminadas, garantizando un buen documento final.
|
||||||
autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers:
|
autoSplitPDF.formPrompt=Entregar PDF conteniendo divisores de página de Stirling-PDF:
|
||||||
autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning)
|
autoSplitPDF.duplexMode=Modo Dúplex (Escaneado de ambas caras)
|
||||||
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
|
autoSplitPDF.dividerDownload1=Descargar 'Auto Splitter Divider (mínima).pdf'
|
||||||
autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf'
|
autoSplitPDF.dividerDownload2=Descargar 'Auto Splitter Divider (con instrucciones).pdf'
|
||||||
autoSplitPDF.submit=Submit
|
autoSplitPDF.submit=Entregar
|
||||||
|
|
||||||
|
|
||||||
#pipeline
|
#pipeline
|
||||||
|
@ -456,13 +401,13 @@ scalePages.submit=Entregar
|
||||||
|
|
||||||
#certSign
|
#certSign
|
||||||
certSign.title=Firma de certificado
|
certSign.title=Firma de certificado
|
||||||
certSign.header=Firmar un PDF con su certificado (Trabajo en progreso)
|
certSign.header=Firmar un PDF con su certificado (en desarrollo)
|
||||||
certSign.selectPDF=Seleccione un archivo PDF para firmar:
|
certSign.selectPDF=Seleccione un archivo PDF para firmar:
|
||||||
certSign.selectKey=Seleccione su archivo de clave privada (formato PKCS#8, podría ser .pem o .der):
|
certSign.selectKey=Seleccione su archivo de clave privada (formato PKCS#8, podría ser .pem o .der):
|
||||||
certSign.selectCert=Seleccione su archivo de certificado (formato X.509, 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.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.certType=Tipo de certificado
|
||||||
certSign.password=Ingrese su almacén de claves o contraseña de clave privada (si corresponde):
|
certSign.password=Introduzca su almacén de claves o contraseña de clave privada (si corresponde):
|
||||||
certSign.showSig=Mostrar firma
|
certSign.showSig=Mostrar firma
|
||||||
certSign.reason=Razón
|
certSign.reason=Razón
|
||||||
certSign.location=Ubicación
|
certSign.location=Ubicación
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Zatitu
|
home.split.title=Zatitu
|
||||||
home.split.desc=Zatitu PDFak zenbait dokumentutan
|
home.split.desc=Zatitu PDFak zenbait dokumentutan
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Biratu
|
home.rotate.title=Biratu
|
||||||
home.rotate.desc=Biratu PDFak modu errazean
|
home.rotate.desc=Biratu PDFak modu errazean
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Irudia PDF bihurtu
|
home.imageToPdf.title=Irudia PDF bihurtu
|
||||||
home.imageToPdf.desc=Irudi bat(PNG, JPEG, GIF)PDF bihurtu
|
home.imageToPdf.desc=Irudi bat(PNG, JPEG, GIF)PDF bihurtu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDFa irudi bihurtu
|
home.pdfToImage.title=PDFa irudi bihurtu
|
||||||
home.pdfToImage.desc=PDF bat irudi (PNG, JPEG, GIF) bihurtu
|
home.pdfToImage.desc=PDF bat irudi (PNG, JPEG, GIF) bihurtu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Antolatzailea
|
home.pdfOrganiser.title=Antolatzailea
|
||||||
home.pdfOrganiser.desc=Ezabatu/Berrantolatu orrialdeak edozein ordenatan
|
home.pdfOrganiser.desc=Ezabatu/Berrantolatu orrialdeak edozein ordenatan
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Gehitu irudia PDFari
|
home.addImage.title=Gehitu irudia PDFari
|
||||||
home.addImage.desc=Gehitu irudi bat PDFan ezarritako kokaleku batean (lanean)
|
home.addImage.desc=Gehitu irudi bat PDFan ezarritako kokaleku batean (lanean)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Gehitu ur-marka
|
home.watermark.title=Gehitu ur-marka
|
||||||
home.watermark.desc=Gehitu aurrez zehaztutako ur-marka bat PFD dokumentuari
|
home.watermark.desc=Gehitu aurrez zehaztutako ur-marka bat PFD dokumentuari
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Aldatu baimenak
|
home.permissions.title=Aldatu baimenak
|
||||||
home.permissions.desc=Aldatu PDF dokumentuaren baimenak
|
home.permissions.desc=Aldatu PDF dokumentuaren baimenak
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Ezabatu
|
home.removePages.title=Ezabatu
|
||||||
home.removePages.desc=Ezabatu nahi ez dituzun orrialdeak PDF dokumentutik
|
home.removePages.desc=Ezabatu nahi ez dituzun orrialdeak PDF dokumentutik
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Gehitu pasahitza
|
home.addPassword.title=Gehitu pasahitza
|
||||||
home.addPassword.desc=Enkriptatu PDF dokumentua pasahitz batekin
|
home.addPassword.desc=Enkriptatu PDF dokumentua pasahitz batekin
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Ezabatu pasahitza
|
home.removePassword.title=Ezabatu pasahitza
|
||||||
home.removePassword.desc=Ezabatu pasahitza PDF dokumentutik
|
home.removePassword.desc=Ezabatu pasahitza PDF dokumentutik
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Konprimatu
|
home.compressPdfs.title=Konprimatu
|
||||||
home.compressPdfs.desc=Konprimatu PDFak fitxategiaren tamaina murrizteko
|
home.compressPdfs.desc=Konprimatu PDFak fitxategiaren tamaina murrizteko
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Aldatu metadatuak
|
home.changeMetadata.title=Aldatu metadatuak
|
||||||
home.changeMetadata.desc=Aldatu/Ezabatu/Gehitu metadatuak PDF dokumentuari
|
home.changeMetadata.desc=Aldatu/Ezabatu/Gehitu metadatuak PDF dokumentuari
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Fitxategia PDF bihurtu
|
home.fileToPDF.title=Fitxategia PDF bihurtu
|
||||||
home.fileToPDF.desc=PDF bihurtu ia edozein fitxategi (DOCX, PNG, XLS, PPT, TXT eta gehiago)
|
home.fileToPDF.desc=PDF bihurtu ia edozein fitxategi (DOCX, PNG, XLS, PPT, TXT eta gehiago)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR exekutatu PDFan eta/edo garbiketa-eskaneatzeak
|
home.ocr.title=OCR exekutatu PDFan eta/edo garbiketa-eskaneatzeak
|
||||||
home.ocr.desc=Garbiketa-eskaneatzeak eta irudi-testuak detektatu PDF baten barruan eta berriz ere gehitu testu gisa
|
home.ocr.desc=Garbiketa-eskaneatzeak eta irudi-testuak detektatu PDF baten barruan eta berriz ere gehitu testu gisa
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Atera irudiak
|
home.extractImages.title=Atera irudiak
|
||||||
home.extractImages.desc=Atera irudi guztiak PDF batetik eta ZIPen gorde
|
home.extractImages.desc=Atera irudi guztiak PDF batetik eta ZIPen gorde
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDFa PDF/A bihurtu
|
home.pdfToPDFA.title=PDFa PDF/A bihurtu
|
||||||
home.pdfToPDFA.desc=PDFa PDF/A bihurtu luzaro biltegiratzeko
|
home.pdfToPDFA.desc=PDFa PDF/A bihurtu luzaro biltegiratzeko
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDFa Word Bihurtu
|
home.PDFToWord.title=PDFa Word Bihurtu
|
||||||
home.PDFToWord.desc=PDF formatuak Word bihurtu (DOC, DOCX y ODT)
|
home.PDFToWord.desc=PDF formatuak Word bihurtu (DOC, DOCX y ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDFa aurkezpen bihurtu
|
home.PDFToPresentation.title=PDFa aurkezpen bihurtu
|
||||||
home.PDFToPresentation.desc=PDFa aurkezpen formatu bihurtu (PPT, PPTX y ODP)
|
home.PDFToPresentation.desc=PDFa aurkezpen formatu bihurtu (PPT, PPTX y ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDFa TXT edo RTF bihurtu
|
home.PDFToText.title=PDFa TXT edo RTF bihurtu
|
||||||
home.PDFToText.desc=PDFa TXT edo RTF formatu bihurtu
|
home.PDFToText.desc=PDFa TXT edo RTF formatu bihurtu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDFa HTML bihurtu
|
home.PDFToHTML.title=PDFa HTML bihurtu
|
||||||
home.PDFToHTML.desc=PDFa HTML formatu bihurtu
|
home.PDFToHTML.desc=PDFa HTML formatu bihurtu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDFa XML bihurtu
|
home.PDFToXML.title=PDFa XML bihurtu
|
||||||
home.PDFToXML.desc=PDFa XML formatu bihurtu
|
home.PDFToXML.desc=PDFa XML formatu bihurtu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detektatu/Zatitu argazki eskaneatuak
|
home.ScannerImageSplit.title=Detektatu/Zatitu argazki eskaneatuak
|
||||||
home.ScannerImageSplit.desc=Hainbat argazki zatitu argazki/PDF baten barruan
|
home.ScannerImageSplit.desc=Hainbat argazki zatitu argazki/PDF baten barruan
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Sinatu
|
home.sign.title=Sinatu
|
||||||
home.sign.desc=Gehitu sinadura PDFari marrazki, testu edo irudi bidez
|
home.sign.desc=Gehitu sinadura PDFari marrazki, testu edo irudi bidez
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Lautu
|
home.flatten.title=Lautu
|
||||||
home.flatten.desc=PDF batetik elementu eta inprimaki interaktibo guztiak ezabatu
|
home.flatten.desc=PDF batetik elementu eta inprimaki interaktibo guztiak ezabatu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Konpondu
|
home.repair.title=Konpondu
|
||||||
home.repair.desc=Saiatu PDF hondatu/kaltetu bat konpontzen
|
home.repair.desc=Saiatu PDF hondatu/kaltetu bat konpontzen
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Ezabatu orrialde zuriak
|
home.removeBlanks.title=Ezabatu orrialde zuriak
|
||||||
home.removeBlanks.desc=Detektatu orrialde zuriak eta dokumentutik ezabatu
|
home.removeBlanks.desc=Detektatu orrialde zuriak eta dokumentutik ezabatu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Konparatu
|
home.compare.title=Konparatu
|
||||||
home.compare.desc=Konparatu eta erakutsi 2 PDF dokumenturen aldeak
|
home.compare.desc=Konparatu eta erakutsi 2 PDF dokumenturen aldeak
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sinatu ziurtagiriarekin
|
home.certSign.title=Sinatu ziurtagiriarekin
|
||||||
home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12)
|
home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Zenbait orrialderen diseinua
|
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
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Eskalatu/Doitu orrialdearen tamaina
|
home.scalePages.title=Eskalatu/Doitu orrialdearen tamaina
|
||||||
home.scalePages.desc=Eskalatu/Aldatu orrialde baten tamaina eta/edo edukia
|
home.scalePages.desc=Eskalatu/Aldatu orrialde baten tamaina eta/edo edukia
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Fractionner
|
home.split.title=Fractionner
|
||||||
home.split.desc=Diviser les PDF en plusieurs documents
|
home.split.desc=Diviser les PDF en plusieurs documents
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Tourner
|
home.rotate.title=Tourner
|
||||||
home.rotate.desc=Faites pivoter facilement vos PDF.
|
home.rotate.desc=Faites pivoter facilement vos PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Image au format PDF
|
home.imageToPdf.title=Image au format PDF
|
||||||
home.imageToPdf.desc=Convertir une image (PNG, JPEG, GIF) en PDF.
|
home.imageToPdf.desc=Convertir une image (PNG, JPEG, GIF) en PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF vers image
|
home.pdfToImage.title=PDF vers image
|
||||||
home.pdfToImage.desc=Convertir un PDF en image. (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Convertir un PDF en image. (PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organisateur
|
home.pdfOrganiser.title=Organisateur
|
||||||
home.pdfOrganiser.desc=Supprimer/Réorganiser les pages dans n'importe quel ordre
|
home.pdfOrganiser.desc=Supprimer/Réorganiser les pages dans n'importe quel ordre
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Ajouter une image au PDF
|
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.addImage.desc=Ajoute une image à un emplacement défini sur le PDF (Travail en cours)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Ajouter un filigrane
|
home.watermark.title=Ajouter un filigrane
|
||||||
home.watermark.desc=Ajoutez un filigrane personnalisé à votre document PDF.
|
home.watermark.desc=Ajoutez un filigrane personnalisé à votre document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Modifier les autorisations
|
home.permissions.title=Modifier les autorisations
|
||||||
home.permissions.desc=Modifier les permissions de votre document PDF
|
home.permissions.desc=Modifier les permissions de votre document PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Supprimer
|
home.removePages.title=Supprimer
|
||||||
home.removePages.desc=Supprimez les pages inutiles de votre document PDF.
|
home.removePages.desc=Supprimez les pages inutiles de votre document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Ajouter un mot de passe
|
home.addPassword.title=Ajouter un mot de passe
|
||||||
home.addPassword.desc=Cryptez votre document PDF avec un mot de passe.
|
home.addPassword.desc=Cryptez votre document PDF avec un mot de passe.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Supprimer le 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.removePassword.desc=Supprimez la protection par mot de passe de votre document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Compresser
|
home.compressPdfs.title=Compresser
|
||||||
home.compressPdfs.desc=Compressez les PDF pour réduire leur taille de fichier.
|
home.compressPdfs.desc=Compressez les PDF pour réduire leur taille de fichier.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Modifier les métadonnées
|
home.changeMetadata.title=Modifier les métadonnées
|
||||||
home.changeMetadata.desc=Modifier/Supprimer/Ajouter des métadonnées d'un document PDF
|
home.changeMetadata.desc=Modifier/Supprimer/Ajouter des métadonnées d'un document PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Convertir un fichier en 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.fileToPDF.desc=Convertissez presque n\u2019importe quel fichier en PDF (DOCX, PNG, XLS, PPT, TXT et plus)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=Exécuter l'OCR sur les scans PDF et/ou de nettoyage
|
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.ocr.desc=Le nettoyage analyse et détecte le texte des images dans un PDF et le rajoute en tant que texte.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extraire les images
|
home.extractImages.title=Extraire les images
|
||||||
home.extractImages.desc=Extrait toutes les images d\u2019un PDF et les enregistre au format zip
|
home.extractImages.desc=Extrait toutes les images d\u2019un PDF et les enregistre au format zip
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=Convertir PDF en PDF/A
|
home.pdfToPDFA.title=Convertir PDF en PDF/A
|
||||||
home.pdfToPDFA.desc=Convertir un PDF en PDF/A pour un stockage à long terme
|
home.pdfToPDFA.desc=Convertir un PDF en PDF/A pour un stockage à long terme
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF vers Word
|
home.PDFToWord.title=PDF vers Word
|
||||||
home.PDFToWord.desc=Convertir les formats PDF en Word (DOC, DOCX et ODT)
|
home.PDFToWord.desc=Convertir les formats PDF en Word (DOC, DOCX et ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF vers présentation
|
home.PDFToPresentation.title=PDF vers présentation
|
||||||
home.PDFToPresentation.desc=Convertir des PDF en formats de présentation (PPT, PPTX et ODP)
|
home.PDFToPresentation.desc=Convertir des PDF en formats de présentation (PPT, PPTX et ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF vers texte/RTF
|
home.PDFToText.title=PDF vers texte/RTF
|
||||||
home.PDFToText.desc=Convertir un PDF au format Texte ou RTF
|
home.PDFToText.desc=Convertir un PDF au format Texte ou RTF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF vers HTML
|
home.PDFToHTML.title=PDF vers HTML
|
||||||
home.PDFToHTML.desc=Convertir le PDF au format HTML
|
home.PDFToHTML.desc=Convertir le PDF au format HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF vers XML
|
home.PDFToXML.title=PDF vers XML
|
||||||
home.PDFToXML.desc=Convertir le PDF au format XML
|
home.PDFToXML.desc=Convertir le PDF au format XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Détecter/diviser les photos numérisées
|
home.ScannerImageSplit.title=Détecter/diviser les photos numérisées
|
||||||
home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF
|
home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Signe
|
home.sign.title=Signe
|
||||||
home.sign.desc=Ajoute une signature au PDF par dessin, texte ou image
|
home.sign.desc=Ajoute une signature au PDF par dessin, texte ou image
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Aplatir
|
home.flatten.title=Aplatir
|
||||||
home.flatten.desc=Supprimer tous les éléments et formulaires interactifs d'un PDF
|
home.flatten.desc=Supprimer tous les éléments et formulaires interactifs d'un PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Réparer
|
home.repair.title=Réparer
|
||||||
home.repair.desc=Essaye de réparer un PDF corrompu/cassé
|
home.repair.desc=Essaye de réparer un PDF corrompu/cassé
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Supprimer les pages vierges
|
home.removeBlanks.title=Supprimer les pages vierges
|
||||||
home.removeBlanks.desc=Détecte et supprime les pages vierges d'un document
|
home.removeBlanks.desc=Détecte et supprime les pages vierges d'un document
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Comparer
|
home.compare.title=Comparer
|
||||||
home.compare.desc=Compare et affiche les différences entre 2 documents PDF
|
home.compare.desc=Compare et affiche les différences entre 2 documents PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Dividi
|
home.split.title=Dividi
|
||||||
home.split.desc=Dividi un singolo PDF in più documenti.
|
home.split.desc=Dividi un singolo PDF in più documenti.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Ruota
|
home.rotate.title=Ruota
|
||||||
home.rotate.desc=Ruota un PDF.
|
home.rotate.desc=Ruota un PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Da immagine a PDF
|
home.imageToPdf.title=Da immagine a PDF
|
||||||
home.imageToPdf.desc=Converti un'immagine (PNG, JPEG, GIF) in PDF.
|
home.imageToPdf.desc=Converti un'immagine (PNG, JPEG, GIF) in PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=Da PDF a immagine
|
home.pdfToImage.title=Da PDF a immagine
|
||||||
home.pdfToImage.desc=Converti un PDF in un'immagine. (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Converti un PDF in un'immagine. (PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organizza
|
home.pdfOrganiser.title=Organizza
|
||||||
home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine.
|
home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Aggiungi Immagine
|
home.addImage.title=Aggiungi Immagine
|
||||||
home.addImage.desc=Aggiungi un'immagine in un punto specifico del PDF (Work in progress)
|
home.addImage.desc=Aggiungi un'immagine in un punto specifico del PDF (Work in progress)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Aggiungi Filigrana
|
home.watermark.title=Aggiungi Filigrana
|
||||||
home.watermark.desc=Aggiungi una filigrana al tuo PDF.
|
home.watermark.desc=Aggiungi una filigrana al tuo PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Cambia Permessi
|
home.permissions.title=Cambia Permessi
|
||||||
home.permissions.desc=Cambia i permessi del tuo PDF.
|
home.permissions.desc=Cambia i permessi del tuo PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Rimuovi
|
home.removePages.title=Rimuovi
|
||||||
home.removePages.desc=Elimina alcune pagine dal PDF.
|
home.removePages.desc=Elimina alcune pagine dal PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Aggiungi Password
|
home.addPassword.title=Aggiungi Password
|
||||||
home.addPassword.desc=Crittografa il tuo PDF con una password.
|
home.addPassword.desc=Crittografa il tuo PDF con una password.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Rimuovi Password
|
home.removePassword.title=Rimuovi Password
|
||||||
home.removePassword.desc=Rimuovi la password dal tuo PDF.
|
home.removePassword.desc=Rimuovi la password dal tuo PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Comprimi
|
home.compressPdfs.title=Comprimi
|
||||||
home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni.
|
home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Modifica Proprietà
|
home.changeMetadata.title=Modifica Proprietà
|
||||||
home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento PDF.
|
home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Converti file in PDF
|
home.fileToPDF.title=Converti file in PDF
|
||||||
home.fileToPDF.desc=Converti quasi ogni file in PDF (DOCX, PNG, XLS, PPT, TXT e altro)
|
home.fileToPDF.desc=Converti quasi ogni file in PDF (DOCX, PNG, XLS, PPT, TXT e altro)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Pulisci scansioni
|
home.ocr.title=OCR / Pulisci scansioni
|
||||||
home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro.
|
home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Estrai immagini
|
home.extractImages.title=Estrai immagini
|
||||||
home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip.
|
home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=Converti in PDF/A
|
home.pdfToPDFA.title=Converti in PDF/A
|
||||||
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine.
|
home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=Da PDF a Word
|
home.PDFToWord.title=Da PDF a Word
|
||||||
home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT)
|
home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=Da PDF a presentazioni
|
home.PDFToPresentation.title=Da PDF a presentazioni
|
||||||
home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP)
|
home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=Da PDF a testo/RTF
|
home.PDFToText.title=Da PDF a testo/RTF
|
||||||
home.PDFToText.desc=Converti un PDF in testo o RTF.
|
home.PDFToText.desc=Converti un PDF in testo o RTF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=Da PDF ad HTML
|
home.PDFToHTML.title=Da PDF ad HTML
|
||||||
home.PDFToHTML.desc=Converti un PDF in HTML.
|
home.PDFToHTML.desc=Converti un PDF in HTML.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=Da PDF a XML
|
home.PDFToXML.title=Da PDF a XML
|
||||||
home.PDFToXML.desc=Converti un PDF in XML.
|
home.PDFToXML.desc=Converti un PDF in XML.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Trova/Dividi foto scansionate
|
home.ScannerImageSplit.title=Trova/Dividi foto scansionate
|
||||||
home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF.
|
home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Firma
|
home.sign.title=Firma
|
||||||
home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine.
|
home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Appiattisci
|
home.flatten.title=Appiattisci
|
||||||
home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF.
|
home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Ripara
|
home.repair.title=Ripara
|
||||||
home.repair.desc=Prova a riparare un PDF corrotto.
|
home.repair.desc=Prova a riparare un PDF corrotto.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Rimuovi pagine vuote
|
home.removeBlanks.title=Rimuovi pagine vuote
|
||||||
home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF.
|
home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Compara
|
home.compare.title=Compara
|
||||||
home.compare.desc=Vedi e compara le differenze tra due PDF.
|
home.compare.desc=Vedi e compara le differenze tra due PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -26,9 +26,6 @@ text=テキスト
|
||||||
font=フォント
|
font=フォント
|
||||||
selectFillter=-- 選択 --
|
selectFillter=-- 選択 --
|
||||||
pageNum=ページ番号
|
pageNum=ページ番号
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sizes.small=Small
|
sizes.small=Small
|
||||||
sizes.medium=Medium
|
sizes.medium=Medium
|
||||||
sizes.large=Large
|
sizes.large=Large
|
||||||
|
@ -66,314 +63,250 @@ home.desc=PDFのあらゆるニーズに対応するローカルホスティン
|
||||||
|
|
||||||
home.multiTool.title=PDFマルチツール
|
home.multiTool.title=PDFマルチツール
|
||||||
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
|
home.multiTool.desc=ページの結合、回転、並べ替え、削除します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move
|
||||||
|
|
||||||
home.merge.title=結合
|
home.merge.title=結合
|
||||||
home.merge.desc=複数のPDFを1つに結合します。
|
home.merge.desc=複数のPDFを1つに結合します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
merge.tags=merge,Page operations,Back end,server side
|
merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=分割
|
home.split.title=分割
|
||||||
home.split.desc=PDFを複数のドキュメントに分割します。
|
home.split.desc=PDFを複数のドキュメントに分割します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=回転
|
home.rotate.title=回転
|
||||||
home.rotate.desc=PDFを回転します。
|
home.rotate.desc=PDFを回転します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=画像をPDFに変換
|
home.imageToPdf.title=画像をPDFに変換
|
||||||
home.imageToPdf.desc=画像 (PNG, JPEG, GIF) をPDFに変換します。
|
home.imageToPdf.desc=画像 (PNG, JPEG, GIF) をPDFに変換します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDFを画像に変換
|
home.pdfToImage.title=PDFを画像に変換
|
||||||
home.pdfToImage.desc=PDFを画像 (PNG, JPEG, GIF) に変換します。
|
home.pdfToImage.desc=PDFを画像 (PNG, JPEG, GIF) に変換します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=整理
|
home.pdfOrganiser.title=整理
|
||||||
home.pdfOrganiser.desc=ページの削除/並べ替えします。
|
home.pdfOrganiser.desc=ページの削除/並べ替えします。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=画像の追加
|
home.addImage.title=画像の追加
|
||||||
home.addImage.desc=PDF上の任意の場所に画像を追加します。
|
home.addImage.desc=PDF上の任意の場所に画像を追加します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=透かしの追加
|
home.watermark.title=透かしの追加
|
||||||
home.watermark.desc=PDFに独自の透かしを追加します。
|
home.watermark.desc=PDFに独自の透かしを追加します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=権限の変更
|
home.permissions.title=権限の変更
|
||||||
home.permissions.desc=PDFの権限を変更します。
|
home.permissions.desc=PDFの権限を変更します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=削除
|
home.removePages.title=削除
|
||||||
home.removePages.desc=PDFから不要なページを削除します。
|
home.removePages.desc=PDFから不要なページを削除します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=パスワードの追加
|
home.addPassword.title=パスワードの追加
|
||||||
home.addPassword.desc=PDFをパスワードで暗号化します。
|
home.addPassword.desc=PDFをパスワードで暗号化します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=パスワードの削除
|
home.removePassword.title=パスワードの削除
|
||||||
home.removePassword.desc=PDFからパスワードの削除します。
|
home.removePassword.desc=PDFからパスワードの削除します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=圧縮
|
home.compressPdfs.title=圧縮
|
||||||
home.compressPdfs.desc=PDFを圧縮してファイルサイズを小さくします。
|
home.compressPdfs.desc=PDFを圧縮してファイルサイズを小さくします。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=メタデータの変更
|
home.changeMetadata.title=メタデータの変更
|
||||||
home.changeMetadata.desc=PDFのメタデータを変更/削除/追加します。
|
home.changeMetadata.desc=PDFのメタデータを変更/削除/追加します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=ファイルをPDFに変換
|
home.fileToPDF.title=ファイルをPDFに変換
|
||||||
home.fileToPDF.desc=ほぼすべてのファイルをPDFに変換します。 (DOCX, PNG, XLS, PPT, TXTなど)
|
home.fileToPDF.desc=ほぼすべてのファイルをPDFに変換します。 (DOCX, PNG, XLS, PPT, TXTなど)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / クリーンアップ
|
home.ocr.title=OCR / クリーンアップ
|
||||||
home.ocr.desc=クリーンアップはPDF内の画像からテキストを検出してテキストとして再追加します。
|
home.ocr.desc=クリーンアップはPDF内の画像からテキストを検出してテキストとして再追加します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=画像の抽出
|
home.extractImages.title=画像の抽出
|
||||||
home.extractImages.desc=PDFからすべての画像を抽出してzipで保存します。
|
home.extractImages.desc=PDFからすべての画像を抽出してzipで保存します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDFをPDF/Aに変換
|
home.pdfToPDFA.title=PDFをPDF/Aに変換
|
||||||
home.pdfToPDFA.desc=長期保存のためにPDFをPDF/Aに変換。
|
home.pdfToPDFA.desc=長期保存のためにPDFをPDF/Aに変換。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDFをWordに変換
|
home.PDFToWord.title=PDFをWordに変換
|
||||||
home.PDFToWord.desc=PDFをWord形式に変換します。 (DOC, DOCX および ODT)
|
home.PDFToWord.desc=PDFをWord形式に変換します。 (DOC, DOCX および ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDFをプレゼンテーションに変換
|
home.PDFToPresentation.title=PDFをプレゼンテーションに変換
|
||||||
home.PDFToPresentation.desc=PDFをプレゼンテーション形式に変換します。 (PPT, PPTX および ODP)
|
home.PDFToPresentation.desc=PDFをプレゼンテーション形式に変換します。 (PPT, PPTX および ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDFをText/RTFに変換
|
home.PDFToText.title=PDFをText/RTFに変換
|
||||||
home.PDFToText.desc=PDFをTextまたはRTF形式に変換します。
|
home.PDFToText.desc=PDFをTextまたはRTF形式に変換します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDFをHTMLに変換
|
home.PDFToHTML.title=PDFをHTMLに変換
|
||||||
home.PDFToHTML.desc=PDFをHTML形式に変換します。
|
home.PDFToHTML.desc=PDFをHTML形式に変換します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDFをXMLに変換
|
home.PDFToXML.title=PDFをXMLに変換
|
||||||
home.PDFToXML.desc=PDFをXML形式に変換します。
|
home.PDFToXML.desc=PDFをXML形式に変換します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=スキャンされた画像の検出/分割
|
home.ScannerImageSplit.title=スキャンされた画像の検出/分割
|
||||||
home.ScannerImageSplit.desc=1枚の画像/PDFから複数の写真を分割します。
|
home.ScannerImageSplit.desc=1枚の画像/PDFから複数の写真を分割します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=署名
|
home.sign.title=署名
|
||||||
home.sign.desc=手書き、テキストまたは画像によってPDFに署名を追加します。
|
home.sign.desc=手書き、テキストまたは画像によってPDFに署名を追加します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=平坦化
|
home.flatten.title=平坦化
|
||||||
home.flatten.desc=PDFからインタラクティブな要素とフォームをすべて削除します。
|
home.flatten.desc=PDFからインタラクティブな要素とフォームをすべて削除します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=修復
|
home.repair.title=修復
|
||||||
home.repair.desc=破損したPDFの修復を試みます。
|
home.repair.desc=破損したPDFの修復を試みます。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=空白ページの削除
|
home.removeBlanks.title=空白ページの削除
|
||||||
home.removeBlanks.desc=ドキュメントから空白ページを検出して削除します。
|
home.removeBlanks.desc=ドキュメントから空白ページを検出して削除します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=比較
|
home.compare.title=比較
|
||||||
home.compare.desc=2つのPDFを比較して表示します。
|
home.compare.desc=2つのPDFを比較して表示します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=証明書による署名
|
home.certSign.title=証明書による署名
|
||||||
home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12)
|
home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=マルチページレイアウト
|
home.pageLayout.title=マルチページレイアウト
|
||||||
home.pageLayout.desc=PDFの複数のページを1ページに結合します。
|
home.pageLayout.desc=PDFの複数のページを1ページに結合します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=ページの縮尺の調整
|
home.scalePages.title=ページの縮尺の調整
|
||||||
home.scalePages.desc=ページやコンテンツの縮尺を変更します。
|
home.scalePages.desc=ページやコンテンツの縮尺を変更します。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
#url-to-pdf
|
#showJS
|
||||||
##########################
|
##########################
|
||||||
### TODO: Translate ###
|
### TODO: Translate ###
|
||||||
##########################
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
URLToPDF.submit=Convert
|
URLToPDF.submit=Convert
|
||||||
|
@ -381,9 +314,6 @@ URLToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
#html-to-pdf
|
#html-to-pdf
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
HTMLToPDF.title=HTML To PDF
|
HTMLToPDF.title=HTML To PDF
|
||||||
HTMLToPDF.header=HTML To PDF
|
HTMLToPDF.header=HTML To PDF
|
||||||
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required
|
HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required
|
||||||
|
@ -392,9 +322,6 @@ HTMLToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
#sanitizePDF
|
#sanitizePDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePDF.title=Sanitize PDF
|
sanitizePDF.title=Sanitize PDF
|
||||||
sanitizePDF.header=Sanitize a PDF file
|
sanitizePDF.header=Sanitize a PDF file
|
||||||
sanitizePDF.selectText.1=Remove JavaScript actions
|
sanitizePDF.selectText.1=Remove JavaScript actions
|
||||||
|
@ -406,9 +333,6 @@ sanitizePDF.submit=Sanitize PDF
|
||||||
|
|
||||||
|
|
||||||
#addPageNumbers
|
#addPageNumbers
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPageNumbers.title=Add Page Numbers
|
addPageNumbers.title=Add Page Numbers
|
||||||
addPageNumbers.header=Add Page Numbers
|
addPageNumbers.header=Add Page Numbers
|
||||||
addPageNumbers.selectText.1=Select PDF file:
|
addPageNumbers.selectText.1=Select PDF file:
|
||||||
|
@ -421,18 +345,12 @@ addPageNumbers.submit=Add Page Numbers
|
||||||
|
|
||||||
|
|
||||||
#auto-rename
|
#auto-rename
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.title=Auto Rename
|
auto-rename.title=Auto Rename
|
||||||
auto-rename.header=Auto Rename PDF
|
auto-rename.header=Auto Rename PDF
|
||||||
auto-rename.submit=Auto Rename
|
auto-rename.submit=Auto Rename
|
||||||
|
|
||||||
|
|
||||||
#adjustContrast
|
#adjustContrast
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjustContrast.title=Adjust Contrast
|
adjustContrast.title=Adjust Contrast
|
||||||
adjustContrast.header=Adjust Contrast
|
adjustContrast.header=Adjust Contrast
|
||||||
adjustContrast.contrast=Contrast:
|
adjustContrast.contrast=Contrast:
|
||||||
|
@ -442,18 +360,12 @@ adjustContrast.download=Download
|
||||||
|
|
||||||
|
|
||||||
#crop
|
#crop
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.title=Crop
|
crop.title=Crop
|
||||||
crop.header=Crop Image
|
crop.header=Crop Image
|
||||||
crop.submit=Submit
|
crop.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#autoSplitPDF
|
#autoSplitPDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.title=Auto Split PDF
|
autoSplitPDF.title=Auto Split PDF
|
||||||
autoSplitPDF.header=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.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.
|
||||||
|
@ -469,9 +381,6 @@ autoSplitPDF.submit=Submit
|
||||||
|
|
||||||
|
|
||||||
#pipeline
|
#pipeline
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.title=Pipeline
|
pipeline.title=Pipeline
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=분할
|
home.split.title=분할
|
||||||
home.split.desc=PDF를 여러 개의 문서로 분할하세요.
|
home.split.desc=PDF를 여러 개의 문서로 분할하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=회전
|
home.rotate.title=회전
|
||||||
home.rotate.desc=PDF를 쉽게 회전하세요.
|
home.rotate.desc=PDF를 쉽게 회전하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Image to PDF
|
home.imageToPdf.title=Image to PDF
|
||||||
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요.
|
home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF to Image
|
home.pdfToImage.title=PDF to Image
|
||||||
home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요.
|
home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=정렬
|
home.pdfOrganiser.title=정렬
|
||||||
home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요.
|
home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=사진 추가
|
home.addImage.title=사진 추가
|
||||||
home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중)
|
home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=워터마크 추가
|
home.watermark.title=워터마크 추가
|
||||||
home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요.
|
home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=권한 변경
|
home.permissions.title=권한 변경
|
||||||
home.permissions.desc=PDF 문서의 권한을 변경하세요.
|
home.permissions.desc=PDF 문서의 권한을 변경하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=제거
|
home.removePages.title=제거
|
||||||
home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요.
|
home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=비밀번호 추가
|
home.addPassword.title=비밀번호 추가
|
||||||
home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요.
|
home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=비밀번호 제거
|
home.removePassword.title=비밀번호 제거
|
||||||
home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요.
|
home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=압축
|
home.compressPdfs.title=압축
|
||||||
home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요.
|
home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=메타데이터 변경
|
home.changeMetadata.title=메타데이터 변경
|
||||||
home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요.
|
home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=파일을 PDF로 변환
|
home.fileToPDF.title=파일을 PDF로 변환
|
||||||
home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등)
|
home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / 깔끔하게 스캔
|
home.ocr.title=OCR / 깔끔하게 스캔
|
||||||
home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다.
|
home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=이미지 추출
|
home.extractImages.title=이미지 추출
|
||||||
home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다.
|
home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF to PDF/A
|
home.pdfToPDFA.title=PDF to PDF/A
|
||||||
home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요.
|
home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF to Word
|
home.PDFToWord.title=PDF to Word
|
||||||
home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT)
|
home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF to 프리젠테이션
|
home.PDFToPresentation.title=PDF to 프리젠테이션
|
||||||
home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP)
|
home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF to 텍스트/RTF
|
home.PDFToText.title=PDF to 텍스트/RTF
|
||||||
home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요.
|
home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF to HTML
|
home.PDFToHTML.title=PDF to HTML
|
||||||
home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요.
|
home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF to XML
|
home.PDFToXML.title=PDF to XML
|
||||||
home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요.
|
home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=스캔한 사진 감지/분할
|
home.ScannerImageSplit.title=스캔한 사진 감지/분할
|
||||||
home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다.
|
home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=서명
|
home.sign.title=서명
|
||||||
home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다.
|
home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=합치기
|
home.flatten.title=합치기
|
||||||
home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요.
|
home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=복구
|
home.repair.title=복구
|
||||||
home.repair.desc=손상된 PDF의 복구를 시도합니다.
|
home.repair.desc=손상된 PDF의 복구를 시도합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=빈 페이지 제거
|
home.removeBlanks.title=빈 페이지 제거
|
||||||
home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다.
|
home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=비교
|
home.compare.title=비교
|
||||||
home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다.
|
home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=인증서로 서명
|
home.certSign.title=인증서로 서명
|
||||||
home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12)
|
home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Podziel
|
home.split.title=Podziel
|
||||||
home.split.desc=Podziel dokument PDF na wiele dokumentów
|
home.split.desc=Podziel dokument PDF na wiele dokumentów
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Obróć
|
home.rotate.title=Obróć
|
||||||
home.rotate.desc=Łatwo obracaj dokumenty PDF.
|
home.rotate.desc=Łatwo obracaj dokumenty PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Obraz na PDF
|
home.imageToPdf.title=Obraz na PDF
|
||||||
home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF.
|
home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF na Obraz
|
home.pdfToImage.title=PDF na Obraz
|
||||||
home.pdfToImage.desc=Konwertuj plik PDF na obraz (PNG, JPEG, GIF).
|
home.pdfToImage.desc=Konwertuj plik PDF na obraz (PNG, JPEG, GIF).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Uporządkuj
|
home.pdfOrganiser.title=Uporządkuj
|
||||||
home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności
|
home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Dodaj obraz
|
home.addImage.title=Dodaj obraz
|
||||||
home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie)
|
home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Dodaj znak wodny
|
home.watermark.title=Dodaj znak wodny
|
||||||
home.watermark.desc=Dodaj niestandardowy znak wodny do dokumentu PDF.
|
home.watermark.desc=Dodaj niestandardowy znak wodny do dokumentu PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Zmień uprawnienia
|
home.permissions.title=Zmień uprawnienia
|
||||||
home.permissions.desc=Zmień uprawnienia dokumentu PDF
|
home.permissions.desc=Zmień uprawnienia dokumentu PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Usuń
|
home.removePages.title=Usuń
|
||||||
home.removePages.desc=Usuń niechciane strony z dokumentu PDF.
|
home.removePages.desc=Usuń niechciane strony z dokumentu PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Dodaj hasło
|
home.addPassword.title=Dodaj hasło
|
||||||
home.addPassword.desc=Zaszyfruj dokument PDF za pomocą hasła.
|
home.addPassword.desc=Zaszyfruj dokument PDF za pomocą hasła.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Usuń hasło
|
home.removePassword.title=Usuń hasło
|
||||||
home.removePassword.desc=Usuń ochronę hasłem z dokumentu PDF.
|
home.removePassword.desc=Usuń ochronę hasłem z dokumentu PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Kompresuj
|
home.compressPdfs.title=Kompresuj
|
||||||
home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar.
|
home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Zmień metadane
|
home.changeMetadata.title=Zmień metadane
|
||||||
home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF
|
home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Konwertuj plik do 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.fileToPDF.desc=Konwertuj dowolny plik do dokumentu PDF (DOCX, PNG, XLS, PPT, TXT i więcej)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Zamiana na tekst
|
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.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Wyodrębnij obrazy
|
home.extractImages.title=Wyodrębnij obrazy
|
||||||
home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie
|
home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF na PDF/A
|
home.pdfToPDFA.title=PDF na PDF/A
|
||||||
home.pdfToPDFA.desc=Konwertuj dokument PDF na PDF/A w celu długoterminowego przechowywania
|
home.pdfToPDFA.desc=Konwertuj dokument PDF na PDF/A w celu długoterminowego przechowywania
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF na Word
|
home.PDFToWord.title=PDF na Word
|
||||||
home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT)
|
home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF na Prezentację
|
home.PDFToPresentation.title=PDF na Prezentację
|
||||||
home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP)
|
home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF na Tekst/RTF
|
home.PDFToText.title=PDF na Tekst/RTF
|
||||||
home.PDFToText.desc=Konwertuj dokument PDF na tekst lub format RTF
|
home.PDFToText.desc=Konwertuj dokument PDF na tekst lub format RTF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF na HTML
|
home.PDFToHTML.title=PDF na HTML
|
||||||
home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML
|
home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF na XML
|
home.PDFToXML.title=PDF na XML
|
||||||
home.PDFToXML.desc=Konwertuj dokument PDF na format XML
|
home.PDFToXML.desc=Konwertuj dokument PDF na format XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Wykryj/Podziel zeskanowane zdjęcia
|
home.ScannerImageSplit.title=Wykryj/Podziel zeskanowane zdjęcia
|
||||||
home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF
|
home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Podpis
|
home.sign.title=Podpis
|
||||||
home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu
|
home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Spłaszcz
|
home.flatten.title=Spłaszcz
|
||||||
home.flatten.desc=Usuń wszystkie interaktywne elementy i formularze z dokumentu PDF
|
home.flatten.desc=Usuń wszystkie interaktywne elementy i formularze z dokumentu PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Napraw
|
home.repair.title=Napraw
|
||||||
home.repair.desc=Spróbuj naprawić uszkodzony dokument PDF
|
home.repair.desc=Spróbuj naprawić uszkodzony dokument PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Usuń puste strony
|
home.removeBlanks.title=Usuń puste strony
|
||||||
home.removeBlanks.desc=Wykrywa i usuwa puste strony z dokumentu PDF
|
home.removeBlanks.desc=Wykrywa i usuwa puste strony z dokumentu PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Porównaj
|
home.compare.title=Porównaj
|
||||||
home.compare.desc=Porównuje i pokazuje różnice między dwoma dokumentami PDF
|
home.compare.desc=Porównuje i pokazuje różnice między dwoma dokumentami PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Podpisz certyfikatem
|
home.certSign.title=Podpisz certyfikatem
|
||||||
home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12)
|
home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Układ wielu stron
|
home.pageLayout.title=Układ wielu stron
|
||||||
home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę
|
home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Dopasuj rozmiar stron
|
home.scalePages.title=Dopasuj rozmiar stron
|
||||||
home.scalePages.desc=Dopasuj rozmiar stron wybranego dokumentu PDF
|
home.scalePages.desc=Dopasuj rozmiar stron wybranego dokumentu PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Dividir
|
home.split.title=Dividir
|
||||||
home.split.desc=Dividir PDFs em vários documentos
|
home.split.desc=Dividir PDFs em vários documentos
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Girar
|
home.rotate.title=Girar
|
||||||
home.rotate.desc=Gire facilmente seus PDFs.
|
home.rotate.desc=Gire facilmente seus PDFs.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Imagem para PDF
|
home.imageToPdf.title=Imagem para PDF
|
||||||
home.imageToPdf.desc=Converta uma imagem (PNG, JPEG, GIF) em PDF.
|
home.imageToPdf.desc=Converta uma imagem (PNG, JPEG, GIF) em PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF para imagem
|
home.pdfToImage.title=PDF para imagem
|
||||||
home.pdfToImage.desc=Converta um PDF em uma imagem. (PNG, JPG, GIF)
|
home.pdfToImage.desc=Converta um PDF em uma imagem. (PNG, JPG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organizar
|
home.pdfOrganiser.title=Organizar
|
||||||
home.pdfOrganiser.desc=Remova/reorganize as páginas em qualquer ordem
|
home.pdfOrganiser.desc=Remova/reorganize as páginas em qualquer ordem
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Adicionar imagem
|
home.addImage.title=Adicionar imagem
|
||||||
home.addImage.desc=Adiciona uma imagem em um local definido no PDF (trabalho em andamento)
|
home.addImage.desc=Adiciona uma imagem em um local definido no PDF (trabalho em andamento)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Adicione uma Marca d'água
|
home.watermark.title=Adicione uma Marca d'água
|
||||||
home.watermark.desc=Adicione uma marca d'água personalizada ao seu documento PDF.
|
home.watermark.desc=Adicione uma marca d'água personalizada ao seu documento PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Alterar permissões
|
home.permissions.title=Alterar permissões
|
||||||
home.permissions.desc=Altere as permissões do seu documento PDF
|
home.permissions.desc=Altere as permissões do seu documento PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Remover
|
home.removePages.title=Remover
|
||||||
home.removePages.desc=Exclua as páginas indesejadas do seu documento PDF.
|
home.removePages.desc=Exclua as páginas indesejadas do seu documento PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Adicionar senha
|
home.addPassword.title=Adicionar senha
|
||||||
home.addPassword.desc=Criptografe seu documento PDF com uma senha.
|
home.addPassword.desc=Criptografe seu documento PDF com uma senha.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Remover senha
|
home.removePassword.title=Remover senha
|
||||||
home.removePassword.desc=Remova a proteção por senha do seu documento PDF.
|
home.removePassword.desc=Remova a proteção por senha do seu documento PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Comprimir
|
home.compressPdfs.title=Comprimir
|
||||||
home.compressPdfs.desc=Comprima PDFs para reduzir o tamanho do arquivo.
|
home.compressPdfs.desc=Comprima PDFs para reduzir o tamanho do arquivo.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Alterar metadados
|
home.changeMetadata.title=Alterar metadados
|
||||||
home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF
|
home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Converter arquivo para 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.fileToPDF.desc=Converta praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Varreduras de limpeza
|
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.ocr.desc=A limpeza verifica e detecta texto de imagens em um PDF e o adiciona novamente como texto.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extrair imagens
|
home.extractImages.title=Extrair imagens
|
||||||
home.extractImages.desc=Extrai todas as imagens de um PDF e as salva em zip
|
home.extractImages.desc=Extrai todas as imagens de um PDF e as salva em zip
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF para PDF/A
|
home.pdfToPDFA.title=PDF para PDF/A
|
||||||
home.pdfToPDFA.desc=Converta PDF para PDF/A para armazenamento de longo prazo
|
home.pdfToPDFA.desc=Converta PDF para PDF/A para armazenamento de longo prazo
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF para Word
|
home.PDFToWord.title=PDF para Word
|
||||||
home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT)
|
home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF para apresentação
|
home.PDFToPresentation.title=PDF para apresentação
|
||||||
home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP)
|
home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF para Texto/RTF
|
home.PDFToText.title=PDF para Texto/RTF
|
||||||
home.PDFToText.desc=Converter PDF em formato de texto ou RTF
|
home.PDFToText.desc=Converter PDF em formato de texto ou RTF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF para HTML
|
home.PDFToHTML.title=PDF para HTML
|
||||||
home.PDFToHTML.desc=Converter PDF para o formato HTML
|
home.PDFToHTML.desc=Converter PDF para o formato HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF para XML
|
home.PDFToXML.title=PDF para XML
|
||||||
home.PDFToXML.desc=Converter PDF para o formato XML
|
home.PDFToXML.desc=Converter PDF para o formato XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detectar/dividir fotos digitalizadas
|
home.ScannerImageSplit.title=Detectar/dividir fotos digitalizadas
|
||||||
home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma foto/PDF
|
home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma foto/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Sinal
|
home.sign.title=Sinal
|
||||||
home.sign.desc=Adiciona assinatura ao PDF por desenho, texto ou imagem
|
home.sign.desc=Adiciona assinatura ao PDF por desenho, texto ou imagem
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=achatar
|
home.flatten.title=achatar
|
||||||
home.flatten.desc=Remova todos os elementos e formulários interativos de um PDF
|
home.flatten.desc=Remova todos os elementos e formulários interativos de um PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Reparar
|
home.repair.title=Reparar
|
||||||
home.repair.desc=Tenta reparar um PDF corrompido/quebrado
|
home.repair.desc=Tenta reparar um PDF corrompido/quebrado
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Remover páginas em branco
|
home.removeBlanks.title=Remover páginas em branco
|
||||||
home.removeBlanks.desc=Detecta e remove páginas em branco de um documento
|
home.removeBlanks.desc=Detecta e remove páginas em branco de um documento
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Comparar
|
home.compare.title=Comparar
|
||||||
home.compare.desc=Compara e mostra as diferenças entre 2 documentos PDF
|
home.compare.desc=Compara e mostra as diferenças entre 2 documentos PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Assinar com certificado
|
home.certSign.title=Assinar com certificado
|
||||||
home.certSign.desc=Assina um PDF com um Certificado/Chave (PEM/P12)
|
home.certSign.desc=Assina um PDF com um Certificado/Chave (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Desparte
|
home.split.title=Desparte
|
||||||
home.split.desc=Desparte fișierele PDF în mai multe documente.
|
home.split.desc=Desparte fișierele PDF în mai multe documente.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Rotește
|
home.rotate.title=Rotește
|
||||||
home.rotate.desc=Rotește cu ușurință fișierele PDF.
|
home.rotate.desc=Rotește cu ușurință fișierele PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Imagine în PDF
|
home.imageToPdf.title=Imagine în PDF
|
||||||
home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF.
|
home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF în Imagine
|
home.pdfToImage.title=PDF în Imagine
|
||||||
home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF).
|
home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Organizează
|
home.pdfOrganiser.title=Organizează
|
||||||
home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine
|
home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Adaugă imagine
|
home.addImage.title=Adaugă imagine
|
||||||
home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare)
|
home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Adaugă Filigran
|
home.watermark.title=Adaugă Filigran
|
||||||
home.watermark.desc=Adaugă un filigran personalizat la documentul PDF.
|
home.watermark.desc=Adaugă un filigran personalizat la documentul PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Schimbă permisiuni
|
home.permissions.title=Schimbă permisiuni
|
||||||
home.permissions.desc=Schimbă permisiunile documentului PDF
|
home.permissions.desc=Schimbă permisiunile documentului PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Elimină
|
home.removePages.title=Elimină
|
||||||
home.removePages.desc=Șterge paginile nedorite din documentul PDF.
|
home.removePages.desc=Șterge paginile nedorite din documentul PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Adaugă Parolă
|
home.addPassword.title=Adaugă Parolă
|
||||||
home.addPassword.desc=Criptează documentul PDF cu o parolă.
|
home.addPassword.desc=Criptează documentul PDF cu o parolă.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Elimină Parola
|
home.removePassword.title=Elimină Parola
|
||||||
home.removePassword.desc=Elimină protecția cu parolă din documentul PDF.
|
home.removePassword.desc=Elimină protecția cu parolă din documentul PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Comprimă
|
home.compressPdfs.title=Comprimă
|
||||||
home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor.
|
home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Schimbă Metadatele
|
home.changeMetadata.title=Schimbă Metadatele
|
||||||
home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF.
|
home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Convertește fișierul în 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.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Curățare scanări
|
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.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extrage Imagini
|
home.extractImages.title=Extrage Imagini
|
||||||
home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip.
|
home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF în PDF/A
|
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.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF în Word
|
home.PDFToWord.title=PDF în Word
|
||||||
home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT).
|
home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF în Prezentare
|
home.PDFToPresentation.title=PDF în Prezentare
|
||||||
home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP).
|
home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP).
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF în Text/RTF
|
home.PDFToText.title=PDF în Text/RTF
|
||||||
home.PDFToText.desc=Convertește un document PDF în format Text sau RTF.
|
home.PDFToText.desc=Convertește un document PDF în format Text sau RTF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF în HTML
|
home.PDFToHTML.title=PDF în HTML
|
||||||
home.PDFToHTML.desc=Convertește un document PDF în format HTML.
|
home.PDFToHTML.desc=Convertește un document PDF în format HTML.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF în XML
|
home.PDFToXML.title=PDF în XML
|
||||||
home.PDFToXML.desc=Convertește un document PDF în format XML.
|
home.PDFToXML.desc=Convertește un document PDF în format XML.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detectează/Împarte poze scanate
|
home.ScannerImageSplit.title=Detectează/Împarte poze scanate
|
||||||
home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF.
|
home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Semnează
|
home.sign.title=Semnează
|
||||||
home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine.
|
home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Nivelare
|
home.flatten.title=Nivelare
|
||||||
home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF.
|
home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Repară
|
home.repair.title=Repară
|
||||||
home.repair.desc=Încearcă să repare un document PDF corupt/defect.
|
home.repair.desc=Încearcă să repare un document PDF corupt/defect.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Elimină pagini goale
|
home.removeBlanks.title=Elimină pagini goale
|
||||||
home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document.
|
home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Compară
|
home.compare.title=Compară
|
||||||
home.compare.desc=Compară și arată diferențele dintre 2 documente PDF.
|
home.compare.desc=Compară și arată diferențele dintre 2 documente PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Semnare cu certificat
|
home.certSign.title=Semnare cu certificat
|
||||||
home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12)
|
home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Разделить
|
home.split.title=Разделить
|
||||||
home.split.desc=Разделить PDF-файлы на несколько документов
|
home.split.desc=Разделить PDF-файлы на несколько документов
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Повернуть
|
home.rotate.title=Повернуть
|
||||||
home.rotate.desc=Легко поворачивайте свои PDF-файлы.
|
home.rotate.desc=Легко поворачивайте свои PDF-файлы.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Изображение в PDF
|
home.imageToPdf.title=Изображение в PDF
|
||||||
home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF.
|
home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF в изображение
|
home.pdfToImage.title=PDF в изображение
|
||||||
home.pdfToImage.desc=Преобразование PDF в изображение. (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Преобразование PDF в изображение. (PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Реорганизация
|
home.pdfOrganiser.title=Реорганизация
|
||||||
home.pdfOrganiser.desc=Удалить/переставить страницы в любом порядке
|
home.pdfOrganiser.desc=Удалить/переставить страницы в любом порядке
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Добавить изображение
|
home.addImage.title=Добавить изображение
|
||||||
home.addImage.desc=Добавляет изображение в заданное место в PDF (в процессе)
|
home.addImage.desc=Добавляет изображение в заданное место в PDF (в процессе)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Добавить водяной знак
|
home.watermark.title=Добавить водяной знак
|
||||||
home.watermark.desc=Добавьте собственный водяной знак в документ PDF.
|
home.watermark.desc=Добавьте собственный водяной знак в документ PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Изменить разрешения
|
home.permissions.title=Изменить разрешения
|
||||||
home.permissions.desc=Измените разрешения вашего PDF-документа
|
home.permissions.desc=Измените разрешения вашего PDF-документа
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Удаление
|
home.removePages.title=Удаление
|
||||||
home.removePages.desc=Удалите ненужные страницы из документа PDF.
|
home.removePages.desc=Удалите ненужные страницы из документа PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Добавить пароль
|
home.addPassword.title=Добавить пароль
|
||||||
home.addPassword.desc=Зашифруйте PDF-документ паролем.
|
home.addPassword.desc=Зашифруйте PDF-документ паролем.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Удалить пароль
|
home.removePassword.title=Удалить пароль
|
||||||
home.removePassword.desc=Снимите защиту паролем с вашего PDF-документа.
|
home.removePassword.desc=Снимите защиту паролем с вашего PDF-документа.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Сжать
|
home.compressPdfs.title=Сжать
|
||||||
home.compressPdfs.desc=Сжимайте PDF-файлы, чтобы уменьшить их размер.
|
home.compressPdfs.desc=Сжимайте PDF-файлы, чтобы уменьшить их размер.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Изменить метаданные
|
home.changeMetadata.title=Изменить метаданные
|
||||||
home.changeMetadata.desc=Изменить/удалить/добавить метаданные из документа PDF
|
home.changeMetadata.desc=Изменить/удалить/добавить метаданные из документа PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Конвертировать файл в PDF
|
home.fileToPDF.title=Конвертировать файл в PDF
|
||||||
home.fileToPDF.desc=Конвертируйте практически любой файл в PDF (DOCX, PNG, XLS, PPT, TXT и другие)
|
home.fileToPDF.desc=Конвертируйте практически любой файл в PDF (DOCX, PNG, XLS, PPT, TXT и другие)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Очистка сканирования
|
home.ocr.title=OCR / Очистка сканирования
|
||||||
home.ocr.desc=Очистка сканирования и обнаружение текста на изображениях в PDF-файле и повторно добавляет его как текст.
|
home.ocr.desc=Очистка сканирования и обнаружение текста на изображениях в PDF-файле и повторно добавляет его как текст.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Извлечь изображения
|
home.extractImages.title=Извлечь изображения
|
||||||
home.extractImages.desc=Извлекает все изображения из PDF и сохраняет их в zip
|
home.extractImages.desc=Извлекает все изображения из PDF и сохраняет их в zip
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF в PDF/A
|
home.pdfToPDFA.title=PDF в PDF/A
|
||||||
home.pdfToPDFA.desc=Преобразование PDF в PDF/A для длительного хранения
|
home.pdfToPDFA.desc=Преобразование PDF в PDF/A для длительного хранения
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF в Word
|
home.PDFToWord.title=PDF в Word
|
||||||
home.PDFToWord.desc=Преобразование PDF в форматы Word (DOC, DOCX и ODT)
|
home.PDFToWord.desc=Преобразование PDF в форматы Word (DOC, DOCX и ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF в презентацию
|
home.PDFToPresentation.title=PDF в презентацию
|
||||||
home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP)
|
home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF в Text/RTF
|
home.PDFToText.title=PDF в Text/RTF
|
||||||
home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат
|
home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF в HTML
|
home.PDFToHTML.title=PDF в HTML
|
||||||
home.PDFToHTML.desc=Преобразование PDF в формат HTML
|
home.PDFToHTML.desc=Преобразование PDF в формат HTML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF в XML
|
home.PDFToXML.title=PDF в XML
|
||||||
home.PDFToXML.desc=Преобразование PDF в формат XML
|
home.PDFToXML.desc=Преобразование PDF в формат XML
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Обнаружение/разделение отсканированных фотографий
|
home.ScannerImageSplit.title=Обнаружение/разделение отсканированных фотографий
|
||||||
home.ScannerImageSplit.desc=Разделяет несколько фотографий из фото/PDF
|
home.ScannerImageSplit.desc=Разделяет несколько фотографий из фото/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Подпись
|
home.sign.title=Подпись
|
||||||
home.sign.desc=Добавляет подпись в PDF с помощью рисунка, текста или изображения
|
home.sign.desc=Добавляет подпись в PDF с помощью рисунка, текста или изображения
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Сглаживание
|
home.flatten.title=Сглаживание
|
||||||
home.flatten.desc=Удалить все интерактивные элементы и формы из PDF
|
home.flatten.desc=Удалить все интерактивные элементы и формы из PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Ремонт
|
home.repair.title=Ремонт
|
||||||
home.repair.desc=Пытается восстановить поврежденный/сломанный PDF
|
home.repair.desc=Пытается восстановить поврежденный/сломанный PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Удалить пустые страницы
|
home.removeBlanks.title=Удалить пустые страницы
|
||||||
home.removeBlanks.desc=Обнаруживает и удаляет пустые страницы из документа
|
home.removeBlanks.desc=Обнаруживает и удаляет пустые страницы из документа
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Сравнение
|
home.compare.title=Сравнение
|
||||||
home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами
|
home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=Dela
|
home.split.title=Dela
|
||||||
home.split.desc=Dela upp PDF-filer i flera dokument
|
home.split.desc=Dela upp PDF-filer i flera dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=Rotera
|
home.rotate.title=Rotera
|
||||||
home.rotate.desc=Rotera enkelt dina PDF-filer.
|
home.rotate.desc=Rotera enkelt dina PDF-filer.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=Bild till PDF
|
home.imageToPdf.title=Bild till PDF
|
||||||
home.imageToPdf.desc=Konvertera en bild (PNG, JPEG, GIF) till PDF.
|
home.imageToPdf.desc=Konvertera en bild (PNG, JPEG, GIF) till PDF.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=PDF till bild
|
home.pdfToImage.title=PDF till bild
|
||||||
home.pdfToImage.desc=Konvertera en PDF till en bild. (PNG, JPEG, GIF)
|
home.pdfToImage.desc=Konvertera en PDF till en bild. (PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=Ordna
|
home.pdfOrganiser.title=Ordna
|
||||||
home.pdfOrganiser.desc=Ta bort/ordna om sidor i valfri ordning
|
home.pdfOrganiser.desc=Ta bort/ordna om sidor i valfri ordning
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=Lägg till bild
|
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.addImage.desc=Lägger till en bild på en angiven plats i PDF:en (pågår arbete)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=Lägg till vattenstämpel
|
home.watermark.title=Lägg till vattenstämpel
|
||||||
home.watermark.desc=Lägg till en anpassad vattenstämpel till ditt PDF-dokument.
|
home.watermark.desc=Lägg till en anpassad vattenstämpel till ditt PDF-dokument.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=Ändra behörigheter
|
home.permissions.title=Ändra behörigheter
|
||||||
home.permissions.desc=Ändra behörigheterna för ditt PDF-dokument
|
home.permissions.desc=Ändra behörigheterna för ditt PDF-dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=Ta bort
|
home.removePages.title=Ta bort
|
||||||
home.removePages.desc=Ta bort oönskade sidor från ditt PDF-dokument.
|
home.removePages.desc=Ta bort oönskade sidor från ditt PDF-dokument.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=Lägg till lösenord
|
home.addPassword.title=Lägg till lösenord
|
||||||
home.addPassword.desc=Kryptera ditt PDF-dokument med ett lösenord.
|
home.addPassword.desc=Kryptera ditt PDF-dokument med ett lösenord.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=Ta bort lösenord
|
home.removePassword.title=Ta bort lösenord
|
||||||
home.removePassword.desc=Ta bort lösenordsskydd från ditt PDF-dokument.
|
home.removePassword.desc=Ta bort lösenordsskydd från ditt PDF-dokument.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=Komprimera
|
home.compressPdfs.title=Komprimera
|
||||||
home.compressPdfs.desc=Komprimera PDF-filer för att minska deras filstorlek.
|
home.compressPdfs.desc=Komprimera PDF-filer för att minska deras filstorlek.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=Ändra metadata
|
home.changeMetadata.title=Ändra metadata
|
||||||
home.changeMetadata.desc=Ändra/ta bort/lägg till metadata från ett PDF-dokument
|
home.changeMetadata.desc=Ändra/ta bort/lägg till metadata från ett PDF-dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=Konvertera fil till PDF
|
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.fileToPDF.desc=Konvertera nästan vilken fil som helst till PDF (DOCX, PNG, XLS, PPT, TXT och mer)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=OCR / Rensningsskanningar
|
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.ocr.desc=Cleanup skannar och upptäcker text från bilder i en PDF och lägger till den igen som text.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=Extrahera bilder
|
home.extractImages.title=Extrahera bilder
|
||||||
home.extractImages.desc=Extraherar alla bilder från en PDF och sparar dem till zip
|
home.extractImages.desc=Extraherar alla bilder från en PDF och sparar dem till zip
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF till PDF/A
|
home.pdfToPDFA.title=PDF till PDF/A
|
||||||
home.pdfToPDFA.desc=Konvertera PDF till PDF/A för långtidslagring
|
home.pdfToPDFA.desc=Konvertera PDF till PDF/A för långtidslagring
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF till Word
|
home.PDFToWord.title=PDF till Word
|
||||||
home.PDFToWord.desc=Konvertera PDF till Word-format (DOC, DOCX och ODT)
|
home.PDFToWord.desc=Konvertera PDF till Word-format (DOC, DOCX och ODT)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF till presentation
|
home.PDFToPresentation.title=PDF till presentation
|
||||||
home.PDFToPresentation.desc=Konvertera PDF till presentationsformat (PPT, PPTX och ODP)
|
home.PDFToPresentation.desc=Konvertera PDF till presentationsformat (PPT, PPTX och ODP)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF till text/RTF
|
home.PDFToText.title=PDF till text/RTF
|
||||||
home.PDFToText.desc=Konvertera PDF till text- eller RTF-format
|
home.PDFToText.desc=Konvertera PDF till text- eller RTF-format
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF till HTML
|
home.PDFToHTML.title=PDF till HTML
|
||||||
home.PDFToHTML.desc=Konvertera PDF till HTML-format
|
home.PDFToHTML.desc=Konvertera PDF till HTML-format
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF till XML
|
home.PDFToXML.title=PDF till XML
|
||||||
home.PDFToXML.desc=Konvertera PDF till XML-format
|
home.PDFToXML.desc=Konvertera PDF till XML-format
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=Detektera/Dela skannade foton
|
home.ScannerImageSplit.title=Detektera/Dela skannade foton
|
||||||
home.ScannerImageSplit.desc=Delar flera foton från ett foto/PDF
|
home.ScannerImageSplit.desc=Delar flera foton från ett foto/PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=Signera
|
home.sign.title=Signera
|
||||||
home.sign.desc=Lägger till signatur till PDF genom ritning, text eller bild
|
home.sign.desc=Lägger till signatur till PDF genom ritning, text eller bild
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=Platta till
|
home.flatten.title=Platta till
|
||||||
home.flatten.desc=Ta bort alla interaktiva element och formulär från en PDF
|
home.flatten.desc=Ta bort alla interaktiva element och formulär från en PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=Reparera
|
home.repair.title=Reparera
|
||||||
home.repair.desc=Försöker reparera en korrupt/trasig PDF
|
home.repair.desc=Försöker reparera en korrupt/trasig PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=Ta bort tomma sidor
|
home.removeBlanks.title=Ta bort tomma sidor
|
||||||
home.removeBlanks.desc=Känner av och tar bort tomma sidor från ett dokument
|
home.removeBlanks.desc=Känner av och tar bort tomma sidor från ett dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=Jämför
|
home.compare.title=Jämför
|
||||||
home.compare.desc=Jämför och visar skillnaderna mellan 2 PDF-dokument
|
home.compare.desc=Jämför och visar skillnaderna mellan 2 PDF-dokument
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
|
@ -71,296 +71,241 @@ merge.tags=merge,Page operations,Back end,server side
|
||||||
|
|
||||||
home.split.title=拆分
|
home.split.title=拆分
|
||||||
home.split.desc=将 PDF 拆分为多个文档。
|
home.split.desc=将 PDF 拆分为多个文档。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
split.tags=Page operations,divide,Multi Page,cut,server side
|
split.tags=Page operations,divide,Multi Page,cut,server side
|
||||||
|
|
||||||
home.rotate.title=旋转
|
home.rotate.title=旋转
|
||||||
home.rotate.desc=旋转PDF。
|
home.rotate.desc=旋转PDF。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
rotate.tags=server side
|
rotate.tags=server side
|
||||||
|
|
||||||
|
|
||||||
home.imageToPdf.title=转换图像到PDF
|
home.imageToPdf.title=转换图像到PDF
|
||||||
home.imageToPdf.desc=转换图像(PNG, JPEG, GIF)到 PDF。
|
home.imageToPdf.desc=转换图像(PNG, JPEG, GIF)到 PDF。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
imageToPdf.tags=conversion,img,jpg,picture,photo
|
imageToPdf.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfToImage.title=转换PDF到图像
|
home.pdfToImage.title=转换PDF到图像
|
||||||
home.pdfToImage.desc=转换PDF到图像(PNG, JPEG, GIF)
|
home.pdfToImage.desc=转换PDF到图像(PNG, JPEG, GIF)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToImage.tags=conversion,img,jpg,picture,photo
|
pdfToImage.tags=conversion,img,jpg,picture,photo
|
||||||
|
|
||||||
home.pdfOrganiser.title=整理
|
home.pdfOrganiser.title=整理
|
||||||
home.pdfOrganiser.desc=按任何顺序删除/重新排列页面。
|
home.pdfOrganiser.desc=按任何顺序删除/重新排列页面。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfOrganiser.tags=duplex,even,odd,sort,move
|
pdfOrganiser.tags=duplex,even,odd,sort,move
|
||||||
|
|
||||||
|
|
||||||
home.addImage.title=在PDF中添加图片
|
home.addImage.title=在PDF中添加图片
|
||||||
home.addImage.desc=将图像添加到PDF的设定位置上
|
home.addImage.desc=将图像添加到PDF的设定位置上
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addImage.tags=img,jpg,picture,photo
|
addImage.tags=img,jpg,picture,photo
|
||||||
|
|
||||||
home.watermark.title=添加水印
|
home.watermark.title=添加水印
|
||||||
home.watermark.desc=在PDF中添加一个自定义的水印。
|
home.watermark.desc=在PDF中添加一个自定义的水印。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo
|
||||||
|
|
||||||
home.permissions.title=更改权限
|
home.permissions.title=更改权限
|
||||||
home.permissions.desc=改变你的PDF文档的权限。
|
home.permissions.desc=改变你的PDF文档的权限。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
permissions.tags=read,write,edit,print
|
permissions.tags=read,write,edit,print
|
||||||
|
|
||||||
|
|
||||||
home.removePages.title=删除
|
home.removePages.title=删除
|
||||||
home.removePages.desc=从你的PDF文档中删除不需要的页面。
|
home.removePages.desc=从你的PDF文档中删除不需要的页面。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePages.tags=Remove pages,delete pages
|
removePages.tags=Remove pages,delete pages
|
||||||
|
|
||||||
home.addPassword.title=添加密码
|
home.addPassword.title=添加密码
|
||||||
home.addPassword.desc=用密码来加密你的PDF文档。
|
home.addPassword.desc=用密码来加密你的PDF文档。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
addPassword.tags=secure,security
|
addPassword.tags=secure,security
|
||||||
|
|
||||||
home.removePassword.title=删除密码
|
home.removePassword.title=删除密码
|
||||||
home.removePassword.desc=从你的PDF文档中移除密码保护。
|
home.removePassword.desc=从你的PDF文档中移除密码保护。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
removePassword.tags=secure,Decrypt,security,unpassword,delete password
|
||||||
|
|
||||||
home.compressPdfs.title=压缩
|
home.compressPdfs.title=压缩
|
||||||
home.compressPdfs.desc=压缩PDF文件以减少其文件大小。
|
home.compressPdfs.desc=压缩PDF文件以减少其文件大小。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compressPdfs.tags=squish,small,tiny
|
compressPdfs.tags=squish,small,tiny
|
||||||
|
|
||||||
|
|
||||||
home.changeMetadata.title=更改元数据
|
home.changeMetadata.title=更改元数据
|
||||||
home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。
|
home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats
|
||||||
|
|
||||||
home.fileToPDF.title=将文件转换为PDF文件
|
home.fileToPDF.title=将文件转换为PDF文件
|
||||||
home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等)
|
home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint
|
||||||
|
|
||||||
home.ocr.title=运行OCR/清理扫描
|
home.ocr.title=运行OCR/清理扫描
|
||||||
home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。
|
home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
ocr.tags=recognition,text,image,scan,read,identify,detection,editable
|
||||||
|
|
||||||
|
|
||||||
home.extractImages.title=提取图像
|
home.extractImages.title=提取图像
|
||||||
home.extractImages.desc=从PDF中提取所有的图像并将其保存到压缩包中。
|
home.extractImages.desc=从PDF中提取所有的图像并将其保存到压缩包中。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
extractImages.tags=picture,photo,save,archive,zip,capture,grab
|
||||||
|
|
||||||
home.pdfToPDFA.title=PDF To PDF/A
|
home.pdfToPDFA.title=PDF To PDF/A
|
||||||
home.pdfToPDFA.desc=将PDF转换为PDF/A以便长期保存
|
home.pdfToPDFA.desc=将PDF转换为PDF/A以便长期保存
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation
|
||||||
|
|
||||||
home.PDFToWord.title=PDF to Word
|
home.PDFToWord.title=PDF to Word
|
||||||
home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。
|
home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile
|
||||||
|
|
||||||
home.PDFToPresentation.title=PDF To Presentation
|
home.PDFToPresentation.title=PDF To Presentation
|
||||||
home.PDFToPresentation.desc=将PDF转换成演示文稿格式(PPT、PPTX和ODP)。
|
home.PDFToPresentation.desc=将PDF转换成演示文稿格式(PPT、PPTX和ODP)。
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToPresentation.tags=slides,show,office,microsoft
|
PDFToPresentation.tags=slides,show,office,microsoft
|
||||||
|
|
||||||
home.PDFToText.title=PDF to RTF (Text)
|
home.PDFToText.title=PDF to RTF (Text)
|
||||||
home.PDFToText.desc=将PDF转换为文本或RTF格式
|
home.PDFToText.desc=将PDF转换为文本或RTF格式
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToText.tags=richformat,richtextformat,rich text format
|
PDFToText.tags=richformat,richtextformat,rich text format
|
||||||
|
|
||||||
home.PDFToHTML.title=PDF To HTML
|
home.PDFToHTML.title=PDF To HTML
|
||||||
home.PDFToHTML.desc=将PDF转换为HTML格式
|
home.PDFToHTML.desc=将PDF转换为HTML格式
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToHTML.tags=web content,browser friendly
|
PDFToHTML.tags=web content,browser friendly
|
||||||
|
|
||||||
|
|
||||||
home.PDFToXML.title=PDF To XML
|
home.PDFToXML.title=PDF To XML
|
||||||
home.PDFToXML.desc=将PDF转换为XML格式
|
home.PDFToXML.desc=将PDF转换为XML格式
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert
|
||||||
|
|
||||||
home.ScannerImageSplit.title=检测/分割扫描的照片
|
home.ScannerImageSplit.title=检测/分割扫描的照片
|
||||||
home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片
|
home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize
|
||||||
|
|
||||||
home.sign.title=\u6807\u5FD7
|
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.sign.desc=\u901A\u8FC7\u7ED8\u56FE\u3001\u6587\u672C\u6216\u56FE\u50CF\u5411 PDF \u6DFB\u52A0\u7B7E\u540D
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
sign.tags=authorize,initials,drawn-signature,text-sign,image-signature
|
||||||
|
|
||||||
home.flatten.title=\u5C55\u5E73
|
home.flatten.title=\u5C55\u5E73
|
||||||
home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355
|
home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
flatten.tags=static,deactivate,non-interactive,streamline
|
flatten.tags=static,deactivate,non-interactive,streamline
|
||||||
|
|
||||||
home.repair.title=\u4FEE\u590D
|
home.repair.title=\u4FEE\u590D
|
||||||
home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF
|
home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
repair.tags=fix,restore,correction,recover
|
repair.tags=fix,restore,correction,recover
|
||||||
|
|
||||||
home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875
|
home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875
|
||||||
home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875
|
home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
removeBlanks.tags=cleanup,streamline,non-content,organize
|
removeBlanks.tags=cleanup,streamline,non-content,organize
|
||||||
|
|
||||||
home.compare.title=\u6BD4\u8F83
|
home.compare.title=\u6BD4\u8F83
|
||||||
home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02
|
home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
compare.tags=differentiate,contrast,changes,analysis
|
compare.tags=differentiate,contrast,changes,analysis
|
||||||
|
|
||||||
home.certSign.title=Sign with Certificate
|
home.certSign.title=Sign with Certificate
|
||||||
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
certSign.tags=authenticate,PEM,P12,official,encrypt
|
certSign.tags=authenticate,PEM,P12,official,encrypt
|
||||||
|
|
||||||
home.pageLayout.title=Multi-Page Layout
|
home.pageLayout.title=Multi-Page Layout
|
||||||
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
home.pageLayout.desc=Merge multiple pages of a PDF document into a single page
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pageLayout.tags=merge,composite,single-view,organize
|
pageLayout.tags=merge,composite,single-view,organize
|
||||||
|
|
||||||
home.scalePages.title=Adjust page size/scale
|
home.scalePages.title=Adjust page size/scale
|
||||||
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
home.scalePages.desc=Change the size/scale of page and/or its contents.
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
scalePages.tags=resize,modify,dimension,adapt
|
scalePages.tags=resize,modify,dimension,adapt
|
||||||
|
|
||||||
home.pipeline.title=Pipeline (Advanced)
|
home.pipeline.title=Pipeline (Advanced)
|
||||||
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
pipeline.tags=automate,sequence,scripted,batch-process
|
pipeline.tags=automate,sequence,scripted,batch-process
|
||||||
|
|
||||||
home.add-page-numbers.title=Add Page Numbers
|
home.add-page-numbers.title=Add Page Numbers
|
||||||
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
home.add-page-numbers.desc=Add Page numbers throughout a document in a set location
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
add-page-numbers.tags=paginate,label,organize,index
|
add-page-numbers.tags=paginate,label,organize,index
|
||||||
|
|
||||||
home.auto-rename.title=Auto Rename PDF File
|
home.auto-rename.title=Auto Rename PDF File
|
||||||
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
home.auto-rename.desc=Auto renames a PDF file based on its detected header
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
auto-rename.tags=auto-detect,header-based,organize,relabel
|
auto-rename.tags=auto-detect,header-based,organize,relabel
|
||||||
|
|
||||||
home.adjust-contrast.title=Adjust Colors/Contrast
|
home.adjust-contrast.title=Adjust Colors/Contrast
|
||||||
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
adjust-contrast.tags=color-correction,tune,modify,enhance
|
adjust-contrast.tags=color-correction,tune,modify,enhance
|
||||||
|
|
||||||
home.crop.title=Crop PDF
|
home.crop.title=Crop PDF
|
||||||
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
home.crop.desc=Crop a PDF to reduce its size (maintains text!)
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
crop.tags=trim,shrink,edit,shape
|
crop.tags=trim,shrink,edit,shape
|
||||||
|
|
||||||
home.autoSplitPDF.title=Auto Split Pages
|
home.autoSplitPDF.title=Auto Split Pages
|
||||||
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
autoSplitPDF.tags=QR-based,separate,scan-segment,organize
|
||||||
|
|
||||||
home.sanitizePdf.title=Sanitize
|
home.sanitizePdf.title=Sanitize
|
||||||
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
home.sanitizePdf.desc=Remove scripts and other elements from PDF files
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
sanitizePdf.tags=clean,secure,safe,remove-threats
|
sanitizePdf.tags=clean,secure,safe,remove-threats
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.URLToPDF.title=URL/Website To PDF
|
home.URLToPDF.title=URL/Website To PDF
|
||||||
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
home.URLToPDF.desc=Converts any http(s)URL to PDF
|
||||||
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
URLToPDF.tags=web-capture,save-page,web-to-doc,archive
|
||||||
|
|
||||||
##########################
|
|
||||||
### TODO: Translate ###
|
|
||||||
##########################
|
|
||||||
home.HTMLToPDF.title=HTML to PDF
|
home.HTMLToPDF.title=HTML to PDF
|
||||||
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
home.HTMLToPDF.desc=Converts any HTML file or zip to PDF
|
||||||
HTMLToPDF.tags=markup,web-content,transformation,convert
|
HTMLToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.MarkdownToPDF.title=Markdown to PDF
|
||||||
|
home.MarkdownToPDF.desc=Converts any Markdown file to PDF
|
||||||
|
MarkdownToPDF.tags=markup,web-content,transformation,convert
|
||||||
|
|
||||||
|
|
||||||
|
home.getPdfInfo.title=Get ALL Info on PDF
|
||||||
|
home.getPdfInfo.desc=Grabs any and all information possible on PDFs
|
||||||
|
getPdfInfo.tags=infomation,data,stats,statistics
|
||||||
|
|
||||||
|
|
||||||
|
home.extractPage.title=Extract page(s)
|
||||||
|
home.extractPage.desc=Extracts select pages from PDF
|
||||||
|
extractPage.tags=extract
|
||||||
|
|
||||||
|
|
||||||
|
home.PdfToSinglePage.title=PDF to Single Large Page
|
||||||
|
home.PdfToSinglePage.desc=Merges all PDF pages into one large single page
|
||||||
|
PdfToSinglePage.tags=single page
|
||||||
|
|
||||||
|
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
home.showJS.title=Show Javascript
|
||||||
|
home.showJS.desc=Searches and displays any JS injected into a PDF
|
||||||
|
showJS.tags=JS
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# #
|
# #
|
||||||
# WEB PAGES #
|
# WEB PAGES #
|
||||||
# #
|
# #
|
||||||
###########################
|
###########################
|
||||||
|
#showJS
|
||||||
|
##########################
|
||||||
|
### TODO: Translate ###
|
||||||
|
##########################
|
||||||
|
showJS.title=Show Javascript
|
||||||
|
showJS.header=Show Javascript
|
||||||
|
showJS.downloadJS=Download Javascript
|
||||||
|
showJS.submit=Show
|
||||||
|
|
||||||
|
|
||||||
|
#pdfToSinglePage
|
||||||
|
pdfToSinglePage.title=PDF To Single Page
|
||||||
|
pdfToSinglePage.header=PDF To Single Page
|
||||||
|
pdfToSinglePage.submit=Convert To Single Page
|
||||||
|
|
||||||
|
|
||||||
|
#pageExtracter
|
||||||
|
pageExtracter.title=Extract Pages
|
||||||
|
pageExtracter.header=Extract Pages
|
||||||
|
pageExtracter.submit=Extract
|
||||||
|
|
||||||
|
|
||||||
|
#getPdfInfo
|
||||||
|
getPdfInfo.title=Get Info on PDF
|
||||||
|
getPdfInfo.header=Get Info on PDF
|
||||||
|
getPdfInfo.submit=Get Info
|
||||||
|
getPdfInfo.downloadJson=Download JSON
|
||||||
|
|
||||||
|
|
||||||
|
#markdown-to-pdf
|
||||||
|
MarkdownToPDF.title=Markdown To PDF
|
||||||
|
MarkdownToPDF.header=Markdown To PDF
|
||||||
|
MarkdownToPDF.submit=Convert
|
||||||
|
MarkdownToPDF.help=Work in progress
|
||||||
|
MarkdownToPDF.credit=Uses WeasyPrint
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#url-to-pdf
|
#url-to-pdf
|
||||||
URLToPDF.title=URL To PDF
|
URLToPDF.title=URL To PDF
|
||||||
URLToPDF.header=URL To PDF
|
URLToPDF.header=URL To PDF
|
||||||
|
|
3
src/main/resources/static/css/prism.css
Normal file
3
src/main/resources/static/css/prism.css
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/* PrismJS 1.29.0
|
||||||
|
https://prismjs.com/download.html#themes=prism-coy&languages=clike+javascript */
|
||||||
|
code[class*=language-],pre[class*=language-]{color:#000;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{position:relative;margin:.5em 0;overflow:visible;padding:1px}pre[class*=language-]>code{position:relative;z-index:1;border-left:10px solid #358ccb;box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;background-color:#fdfdfd;background-image:linear-gradient(transparent 50%,rgba(69,142,209,.04) 50%);background-size:3em 3em;background-origin:content-box;background-attachment:local}code[class*=language-]{max-height:inherit;height:inherit;padding:0 1em;display:block;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdfdfd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em}:not(pre)>code[class*=language-]{position:relative;padding:.2em;border-radius:.3em;color:#c92c2c;border:1px solid rgba(0,0,0,.1);display:inline;white-space:normal}pre[class*=language-]:after,pre[class*=language-]:before{content:'';display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em;box-shadow:0 13px 8px #979797;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-ms-transform:rotate(-2deg);-o-transform:rotate(-2deg);transform:rotate(-2deg)}pre[class*=language-]:after{right:.75em;left:auto;-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg)}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59;background:rgba(255,255,255,.5)}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59;background:rgba(255,255,255,.5)}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.7}@media screen and (max-width:767px){pre[class*=language-]:after,pre[class*=language-]:before{bottom:14px;box-shadow:none}}pre[class*=language-].line-numbers.line-numbers{padding-left:0}pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}pre[class*=language-][data-line]{padding-top:0;padding-bottom:0;padding-left:0}pre[data-line] code{position:relative;padding-left:4em}pre .line-highlight{margin-top:0}
|
3
src/main/resources/static/images/extract.svg
Normal file
3
src/main/resources/static/images/extract.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-up-square" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M15 2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2zM0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2zm8.5 9.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 442 B |
4
src/main/resources/static/images/info.svg
Normal file
4
src/main/resources/static/images/info.svg
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
|
||||||
|
<path d="m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588zM9 4.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 474 B |
3
src/main/resources/static/images/js.svg
Normal file
3
src/main/resources/static/images/js.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-js" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H8v-1h4a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5L14 4.5ZM3.186 15.29a1.176 1.176 0 0 1-.111-.449h.765a.578.578 0 0 0 .255.384c.07.049.153.087.249.114.095.028.202.041.319.041.164 0 .302-.023.413-.07a.559.559 0 0 0 .255-.193.507.507 0 0 0 .085-.29.387.387 0 0 0-.153-.326c-.101-.08-.255-.144-.462-.193l-.619-.143a1.72 1.72 0 0 1-.539-.214 1.001 1.001 0 0 1-.351-.367 1.068 1.068 0 0 1-.123-.524c0-.244.063-.457.19-.639.127-.181.303-.322.528-.422.224-.1.483-.149.776-.149.305 0 .564.05.78.152.216.102.383.239.5.41.12.17.186.359.2.566h-.75a.56.56 0 0 0-.12-.258.624.624 0 0 0-.247-.181.923.923 0 0 0-.369-.068c-.217 0-.388.05-.513.152a.472.472 0 0 0-.184.384c0 .121.048.22.143.3a.97.97 0 0 0 .405.175l.62.143c.218.05.406.12.566.211.16.09.285.21.375.358.09.148.135.335.135.56 0 .247-.063.466-.188.656a1.216 1.216 0 0 1-.539.439c-.234.105-.52.158-.858.158-.254 0-.476-.03-.665-.09a1.404 1.404 0 0 1-.478-.252 1.13 1.13 0 0 1-.29-.375Zm-3.104-.033A1.32 1.32 0 0 1 0 14.791h.765a.576.576 0 0 0 .073.27.499.499 0 0 0 .454.246c.19 0 .33-.055.422-.164.092-.11.138-.265.138-.466v-2.745h.79v2.725c0 .44-.119.774-.357 1.005-.236.23-.564.345-.984.345a1.59 1.59 0 0 1-.569-.094 1.145 1.145 0 0 1-.407-.266 1.14 1.14 0 0 1-.243-.39Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
3
src/main/resources/static/images/markdown.svg
Normal file
3
src/main/resources/static/images/markdown.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-filetype-md" viewBox="0 0 16 16">
|
||||||
|
<path fill-rule="evenodd" d="M14 4.5V14a2 2 0 0 1-2 2H9v-1h3a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5L14 4.5ZM.706 13.189v2.66H0V11.85h.806l1.14 2.596h.026l1.14-2.596h.8v3.999h-.716v-2.66h-.038l-.946 2.159h-.516l-.952-2.16H.706Zm3.919 2.66V11.85h1.459c.406 0 .741.078 1.005.234.263.157.46.383.589.68.13.297.196.655.196 1.075 0 .422-.066.784-.196 1.084-.131.301-.33.53-.595.689-.264.158-.597.237-1 .237H4.626Zm1.353-3.354h-.562v2.707h.562c.186 0 .347-.028.484-.082a.8.8 0 0 0 .334-.252 1.14 1.14 0 0 0 .196-.422c.045-.168.067-.365.067-.592a2.1 2.1 0 0 0-.117-.753.89.89 0 0 0-.354-.454c-.159-.102-.362-.152-.61-.152Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 799 B |
4
src/main/resources/static/images/single-page.svg
Normal file
4
src/main/resources/static/images/single-page.svg
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-1-square" viewBox="0 0 16 16">
|
||||||
|
<path d="M9.283 4.002V12H7.971V5.338h-.065L6.072 6.656V5.385l1.899-1.383h1.312Z"/>
|
||||||
|
<path d="M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2Zm15 0a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 376 B |
|
@ -14,6 +14,13 @@ $(document).ready(function() {
|
||||||
const url = this.action;
|
const url = this.action;
|
||||||
const files = $('#fileInput-input')[0].files;
|
const files = $('#fileInput-input')[0].files;
|
||||||
const formData = new FormData(this);
|
const formData = new FormData(this);
|
||||||
|
|
||||||
|
// Remove empty file entries
|
||||||
|
for (let [key, value] of formData.entries()) {
|
||||||
|
if (value instanceof File && !value.name) {
|
||||||
|
formData.delete(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
const override = $('#override').val() || '';
|
const override = $('#override').val() || '';
|
||||||
const originalButtonText = $('#submitBtn').text();
|
const originalButtonText = $('#submitBtn').text();
|
||||||
$('#submitBtn').text('Processing...');
|
$('#submitBtn').text('Processing...');
|
||||||
|
@ -168,8 +175,12 @@ async function submitMultiPdfForm(url, files) {
|
||||||
}
|
}
|
||||||
//Remove file to reuse parameters for other runs
|
//Remove file to reuse parameters for other runs
|
||||||
formData.delete('fileInput');
|
formData.delete('fileInput');
|
||||||
|
// Remove empty file entries
|
||||||
|
for (let [key, value] of formData.entries()) {
|
||||||
|
if (value instanceof File && !value.name) {
|
||||||
|
formData.delete(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
const CONCURRENCY_LIMIT = 8;
|
const CONCURRENCY_LIMIT = 8;
|
||||||
const chunks = [];
|
const chunks = [];
|
||||||
for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) {
|
for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) {
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
document.querySelectorAll('.custom-file-chooser').forEach(setupFileInput);
|
||||||
|
});
|
||||||
|
|
||||||
|
function setupFileInput(chooser) {
|
||||||
|
const elementId = chooser.getAttribute('data-element-id');
|
||||||
|
const filesSelected = chooser.getAttribute('data-files-selected');
|
||||||
|
const pdfPrompt = chooser.getAttribute('data-pdf-prompt');
|
||||||
|
|
||||||
|
let allFiles = [];
|
||||||
let overlay;
|
let overlay;
|
||||||
let dragCounter = 0;
|
let dragCounter = 0;
|
||||||
|
|
||||||
const dragenterListener = function() {
|
const dragenterListener = function() {
|
||||||
dragCounter++;
|
dragCounter++;
|
||||||
if (!overlay) {
|
if (!overlay) {
|
||||||
// Create and show the overlay
|
|
||||||
overlay = document.createElement('div');
|
overlay = document.createElement('div');
|
||||||
overlay.style.position = 'fixed';
|
overlay.style.position = 'fixed';
|
||||||
overlay.style.top = 0;
|
overlay.style.top = 0;
|
||||||
|
@ -28,7 +35,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
const dragleaveListener = function() {
|
const dragleaveListener = function() {
|
||||||
dragCounter--;
|
dragCounter--;
|
||||||
if (dragCounter === 0) {
|
if (dragCounter === 0) {
|
||||||
// Hide and remove the overlay
|
|
||||||
if (overlay) {
|
if (overlay) {
|
||||||
overlay.remove();
|
overlay.remove();
|
||||||
overlay = null;
|
overlay = null;
|
||||||
|
@ -37,27 +43,30 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const dropListener = function(e) {
|
const dropListener = function(e) {
|
||||||
|
e.preventDefault();
|
||||||
const dt = e.dataTransfer;
|
const dt = e.dataTransfer;
|
||||||
const files = dt.files;
|
const files = dt.files;
|
||||||
|
|
||||||
// Access the file input element and assign dropped files
|
for (let i = 0; i < files.length; i++) {
|
||||||
const fileInput = document.getElementById(elementID);
|
allFiles.push(files[i]);
|
||||||
fileInput.files = files;
|
}
|
||||||
|
|
||||||
|
const dataTransfer = new DataTransfer();
|
||||||
|
allFiles.forEach(file => dataTransfer.items.add(file));
|
||||||
|
|
||||||
|
const fileInput = document.getElementById(elementId);
|
||||||
|
fileInput.files = dataTransfer.files;
|
||||||
|
|
||||||
// Hide and remove the overlay
|
|
||||||
if (overlay) {
|
if (overlay) {
|
||||||
overlay.remove();
|
overlay.remove();
|
||||||
overlay = null;
|
overlay = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset drag counter
|
|
||||||
dragCounter = 0;
|
dragCounter = 0;
|
||||||
|
|
||||||
//handleFileInputChange(fileInput);
|
|
||||||
fileInput.dispatchEvent(new Event('change', { bubbles: true }));
|
fileInput.dispatchEvent(new Event('change', { bubbles: true }));
|
||||||
};
|
};
|
||||||
|
|
||||||
// Prevent default behavior for drag events
|
|
||||||
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
||||||
document.body.addEventListener(eventName, preventDefaults, false);
|
document.body.addEventListener(eventName, preventDefaults, false);
|
||||||
});
|
});
|
||||||
|
@ -69,29 +78,27 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
document.body.addEventListener('dragenter', dragenterListener);
|
document.body.addEventListener('dragenter', dragenterListener);
|
||||||
document.body.addEventListener('dragleave', dragleaveListener);
|
document.body.addEventListener('dragleave', dragleaveListener);
|
||||||
// Add drop event listener
|
|
||||||
document.body.addEventListener('drop', dropListener);
|
document.body.addEventListener('drop', dropListener);
|
||||||
|
|
||||||
});
|
$("#" + elementId).on("change", function(e) {
|
||||||
|
allFiles = Array.from(e.target.files);
|
||||||
$("#"+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);
|
|
||||||
const selectedFilesContainer = $(inputElement).siblings(".selected-files");
|
|
||||||
selectedFilesContainer.empty();
|
|
||||||
fileNames.forEach(fileName => {
|
|
||||||
selectedFilesContainer.append("<div>" + fileName + "</div>");
|
|
||||||
});
|
});
|
||||||
if (fileNames.length === 1) {
|
|
||||||
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames[0]);
|
function handleFileInputChange(inputElement) {
|
||||||
} else if (fileNames.length > 1) {
|
const files = allFiles;
|
||||||
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames.length + " " + filesSelected);
|
const fileNames = files.map(f => f.name);
|
||||||
} else {
|
const selectedFilesContainer = $(inputElement).siblings(".selected-files");
|
||||||
$(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt);
|
selectedFilesContainer.empty();
|
||||||
}
|
fileNames.forEach(fileName => {
|
||||||
|
selectedFilesContainer.append("<div>" + fileName + "</div>");
|
||||||
|
});
|
||||||
|
if (fileNames.length === 1) {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames[0]);
|
||||||
|
} else if (fileNames.length > 1) {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames.length + " " + filesSelected);
|
||||||
|
} else {
|
||||||
|
$(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@ class PdfContainer {
|
||||||
this.pagesContainerWrapper = document.getElementById(wrapperId);
|
this.pagesContainerWrapper = document.getElementById(wrapperId);
|
||||||
this.movePageTo = this.movePageTo.bind(this);
|
this.movePageTo = this.movePageTo.bind(this);
|
||||||
this.addPdfs = this.addPdfs.bind(this);
|
this.addPdfs = this.addPdfs.bind(this);
|
||||||
|
this.addPdfsFromFiles = this.addPdfsFromFiles.bind(this);
|
||||||
this.rotateElement = this.rotateElement.bind(this);
|
this.rotateElement = this.rotateElement.bind(this);
|
||||||
this.rotateAll = this.rotateAll.bind(this);
|
this.rotateAll = this.rotateAll.bind(this);
|
||||||
this.exportPdf = this.exportPdf.bind(this);
|
this.exportPdf = this.exportPdf.bind(this);
|
||||||
|
@ -57,22 +58,25 @@ class PdfContainer {
|
||||||
input.type = 'file';
|
input.type = 'file';
|
||||||
input.multiple = true;
|
input.multiple = true;
|
||||||
input.setAttribute("accept", "application/pdf");
|
input.setAttribute("accept", "application/pdf");
|
||||||
|
|
||||||
input.onchange = async(e) => {
|
input.onchange = async(e) => {
|
||||||
const files = e.target.files;
|
const files = e.target.files;
|
||||||
this.fileName = files[0].name;
|
this.addPdfsFromFiles(files, nextSiblingElement);
|
||||||
for (var i=0; i < files.length; i++) {
|
|
||||||
await this.addPdfFile(files[i], nextSiblingElement);
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll(".enable-on-file").forEach(element => {
|
|
||||||
element.disabled = false;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.click();
|
input.click();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async addPdfsFromFiles(files, nextSiblingElement) {
|
||||||
|
this.fileName = files[0].name;
|
||||||
|
for (var i=0; i < files.length; i++) {
|
||||||
|
await this.addPdfFile(files[i], nextSiblingElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelectorAll(".enable-on-file").forEach(element => {
|
||||||
|
element.disabled = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
rotateElement(element, deg) {
|
rotateElement(element, deg) {
|
||||||
var lastTransform = element.style.rotate;
|
var lastTransform = element.style.rotate;
|
||||||
if (!lastTransform) {
|
if (!lastTransform) {
|
||||||
|
|
69
src/main/resources/static/js/multitool/fileInput.js
Normal file
69
src/main/resources/static/js/multitool/fileInput.js
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
const addFileDragListener = (callback) => {
|
||||||
|
let overlay;
|
||||||
|
let dragCounter = 0;
|
||||||
|
|
||||||
|
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 = '<p>Drop files anywhere to upload</p>';
|
||||||
|
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;
|
||||||
|
callback(files).catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
//maybe
|
||||||
|
}).finally(() => {
|
||||||
|
if (overlay) {
|
||||||
|
overlay.remove();
|
||||||
|
overlay = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default addFileDragListener;
|
5
src/main/resources/static/js/thirdParty/prism.js
vendored
Normal file
5
src/main/resources/static/js/thirdParty/prism.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -22,7 +22,7 @@
|
||||||
<li th:text="#{autoSplitPDF.selectText.3}"></li>
|
<li th:text="#{autoSplitPDF.selectText.3}"></li>
|
||||||
<li th:text="#{autoSplitPDF.selectText.4}"></li>
|
<li th:text="#{autoSplitPDF.selectText.4}"></li>
|
||||||
</ul>
|
</ul>
|
||||||
<form method="post" enctype="multipart/form-data">
|
<form method="post" enctype="multipart/form-data" th:action="@{auto-split-pdf}">
|
||||||
<p th:text="#{autoSplitPDF.formPrompt}"></p>
|
<p th:text="#{autoSplitPDF.formPrompt}"></p>
|
||||||
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
|
|
30
src/main/resources/templates/convert/markdown-to-pdf.html
Normal file
30
src/main/resources/templates/convert/markdown-to-pdf.html
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
|
<th:block th:insert="~{fragments/common :: head(title=#{MarkdownToPDF.title})}"></th:block>
|
||||||
|
<body>
|
||||||
|
<th:block th:insert="~{fragments/common :: game}"></th:block>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<div th:insert="~{fragments/navbar.html :: navbar}"></div>
|
||||||
|
<br> <br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h2 th:text="#{MarkdownToPDF.header}"></h2>
|
||||||
|
<form method="post" enctype="multipart/form-data" th:action="@{markdown-to-pdf}">
|
||||||
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
|
||||||
|
<br>
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<p class="mt-3" th:text="#{MarkdownToPDF.help}"></p>
|
||||||
|
<p class="mt-3" th:text="#{MarkdownToPDF.credit}"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div th:insert="~{fragments/footer.html :: footer}"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
33
src/main/resources/templates/extract-page.html
Normal file
33
src/main/resources/templates/extract-page.html
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
|
<th:block th:insert="~{fragments/common :: head(title=#{pageExtracter.title})}"></th:block>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<div th:insert="~{fragments/navbar.html :: navbar}"></div>
|
||||||
|
<br> <br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h2 th:text="#{pageExtracter.header}"></h2>
|
||||||
|
<form th:action="@{rearrange-pages}" method="post" enctype="multipart/form-data">
|
||||||
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
|
||||||
|
<input type="hidden" id="customMode" name="customMode" value="">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="pageOrder" th:text="#{pageOrderPrompt}"></label>
|
||||||
|
<input type="text" class="form-control" id="pageOrder" name="pageOrder" placeholder="(e.g. 1,2,8 or 4,7,12-16 or 2n-1)" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pageExtracter.submit}"></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div th:insert="~{fragments/footer.html :: footer}"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -98,7 +98,10 @@
|
||||||
</script>
|
</script>
|
||||||
<script src="js/downloader.js"></script>
|
<script src="js/downloader.js"></script>
|
||||||
|
|
||||||
<div class="custom-file-chooser">
|
<div class="custom-file-chooser" th:attr="data-unique-id=${name},
|
||||||
|
data-element-id=${name+'-input'},
|
||||||
|
data-files-selected=#{filesSelected},
|
||||||
|
data-pdf-prompt=#{pdfPrompt}">
|
||||||
<div class="custom-file">
|
<div class="custom-file">
|
||||||
<input type="file" class="custom-file-input" th:name="${name}" th:id="${name}+'-input'" th:accept="${accept}" multiple th:classappend="${notRequired ? '' : 'required'}">
|
<input type="file" class="custom-file-input" th:name="${name}" th:id="${name}+'-input'" th:accept="${accept}" multiple th:classappend="${notRequired ? '' : 'required'}">
|
||||||
<label class="custom-file-label" th:for="${name}+'-input'" th:text="${inputText}"></label>
|
<label class="custom-file-label" th:for="${name}+'-input'" th:text="${inputText}"></label>
|
||||||
|
@ -115,11 +118,6 @@
|
||||||
<button type="button" class="btn btn-primary" id="show-game-btn" style="display:none;">Bored waiting?</button>
|
<button type="button" class="btn btn-primary" id="show-game-btn" style="display:none;">Bored waiting?</button>
|
||||||
|
|
||||||
|
|
||||||
<script th:inline="javascript">
|
|
||||||
const elementID = /*[[${name+"-input"}]]*/ '';
|
|
||||||
const filesSelected = /*[[#{filesSelected}]]*/ '';
|
|
||||||
const pdfPrompt = /*[[#{pdfPrompt}]]*/ '';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script src="js/fileInput.js"></script>
|
<script src="js/fileInput.js"></script>
|
||||||
<link rel="stylesheet" href="css/fileSelect.css">
|
<link rel="stylesheet" href="css/fileSelect.css">
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
</li>-->
|
</li>-->
|
||||||
|
|
||||||
<li class="nav-item nav-item-separator"></li>
|
<li class="nav-item nav-item-separator"></li>
|
||||||
<li class="nav-item dropdown" th:classappend="${currentPage}=='remove-pages' OR ${currentPage}=='merge-pdfs' OR ${currentPage}=='split-pdfs' OR ${currentPage}=='crop' OR ${currentPage}=='adjust-contrast' OR ${currentPage}=='pdf-organizer' OR ${currentPage}=='rotate-pdf' OR ${currentPage}=='multi-page-layout' OR ${currentPage}=='scale-pages' ? 'active' : ''">
|
<li class="nav-item dropdown" th:classappend="${currentPage}=='remove-pages' OR ${currentPage}=='merge-pdfs' OR ${currentPage}=='split-pdfs' OR ${currentPage}=='crop' OR ${currentPage}=='adjust-contrast' OR ${currentPage}=='pdf-organizer' OR ${currentPage}=='rotate-pdf' OR ${currentPage}=='multi-page-layout' OR ${currentPage}=='scale-pages' OR ${currentPage}=='auto-split-pdf' OR ${currentPage}=='extract-page' OR ${currentPage}=='pdf-to-single-page' ? 'active' : ''">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<img class="icon" src="images/file-earmark-pdf.svg" alt="icon">
|
<img class="icon" src="images/file-earmark-pdf.svg" alt="icon">
|
||||||
<span class="icon-text" th:text="#{navbar.pageOps}"></span>
|
<span class="icon-text" th:text="#{navbar.pageOps}"></span>
|
||||||
|
@ -57,6 +57,8 @@
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ( 'auto-split-pdf', 'images/layout-split.svg', 'home.autoSplitPDF.title', 'home.autoSplitPDF.desc', 'autoSplitPDF.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ( 'auto-split-pdf', 'images/layout-split.svg', 'home.autoSplitPDF.title', 'home.autoSplitPDF.desc', 'autoSplitPDF.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('adjust-contrast', 'images/adjust-contrast.svg', 'home.adjust-contrast.title', 'home.adjust-contrast.desc', 'adjust-contrast.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('adjust-contrast', 'images/adjust-contrast.svg', 'home.adjust-contrast.title', 'home.adjust-contrast.desc', 'adjust-contrast.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('crop', 'images/crop.svg', 'home.crop.title', 'home.crop.desc', 'crop.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('crop', 'images/crop.svg', 'home.crop.title', 'home.crop.desc', 'crop.tags')}"></div>
|
||||||
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('extract-page', 'images/extract.svg', 'home.extractPage.title', 'home.extractPage.desc', 'extractPage.tags')}"></div>
|
||||||
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-single-page', 'images/single-page.svg', 'home.PdfToSinglePage.title', 'home.PdfToSinglePage.desc', 'PdfToSinglePage.tags')}"></div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -73,7 +75,7 @@
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('file-to-pdf', 'images/file.svg', 'home.fileToPDF.title', 'home.fileToPDF.desc', 'fileToPDF.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('file-to-pdf', 'images/file.svg', 'home.fileToPDF.title', 'home.fileToPDF.desc', 'fileToPDF.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('html-to-pdf', 'images/html.svg', 'home.HTMLToPDF.title', 'home.HTMLToPDF.desc', 'HTMLToPDF.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('html-to-pdf', 'images/html.svg', 'home.HTMLToPDF.title', 'home.HTMLToPDF.desc', 'HTMLToPDF.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('url-to-pdf', 'images/url.svg', 'home.URLToPDF.title', 'home.URLToPDF.desc', 'URLToPDF.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('url-to-pdf', 'images/url.svg', 'home.URLToPDF.title', 'home.URLToPDF.desc', 'URLToPDF.tags')}"></div>
|
||||||
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('markdown-to-pdf', 'images/markdown.svg', 'home.MarkdownToPDF.title', 'home.MarkdownToPDF.desc', 'MarkdownToPDF.tags')}"></div>
|
||||||
<hr class="dropdown-divider">
|
<hr class="dropdown-divider">
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-img', 'images/image.svg', 'home.pdfToImage.title', 'home.pdfToImage.desc', 'pdfToImage.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-img', 'images/image.svg', 'home.pdfToImage.title', 'home.pdfToImage.desc', 'pdfToImage.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-word', 'images/file-earmark-word.svg', 'home.PDFToWord.title', 'home.PDFToWord.desc', 'PDFToWord.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('pdf-to-word', 'images/file-earmark-word.svg', 'home.PDFToWord.title', 'home.PDFToWord.desc', 'PDFToWord.tags')}"></div>
|
||||||
|
@ -91,7 +93,7 @@
|
||||||
|
|
||||||
<li class="nav-item nav-item-separator"></li>
|
<li class="nav-item nav-item-separator"></li>
|
||||||
|
|
||||||
<li class="nav-item dropdown" th:classappend="${currentPage}=='add-password' OR ${currentPage}=='remove-password' OR ${currentPage}=='add-watermark' OR ${currentPage}=='cert-sign' ? 'active' : ''">
|
<li class="nav-item dropdown" th:classappend="${currentPage}=='add-password' OR ${currentPage}=='remove-password' OR ${currentPage}=='add-watermark' OR ${currentPage}=='cert-sign' OR ${currentPage}=='sanitize-pdf' ? 'active' : ''">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<img class="icon" src="images/shield-check.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{navbar.security}"></span>
|
<img class="icon" src="images/shield-check.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;"> <span class="icon-text" th:text="#{navbar.security}"></span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -102,11 +104,12 @@
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('add-watermark', 'images/droplet.svg', 'home.watermark.title', 'home.watermark.desc', 'watermark.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('add-watermark', 'images/droplet.svg', 'home.watermark.title', 'home.watermark.desc', 'watermark.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('cert-sign', 'images/award.svg', 'home.certSign.title', 'home.certSign.desc', 'certSign.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('cert-sign', 'images/award.svg', 'home.certSign.title', 'home.certSign.desc', 'certSign.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('sanitize-pdf', 'images/sanitize.svg', 'home.sanitizePdf.title', 'home.sanitizePdf.desc', 'sanitizePdf.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('sanitize-pdf', 'images/sanitize.svg', 'home.sanitizePdf.title', 'home.sanitizePdf.desc', 'sanitizePdf.tags')}"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item nav-item-separator"></li>
|
<li class="nav-item nav-item-separator"></li>
|
||||||
<li class="nav-item dropdown" th:classappend="${currentPage}=='sign' OR ${currentPage}=='repair' OR ${currentPage}=='compare' OR ${currentPage}=='flatten' OR ${currentPage}=='remove-blanks' OR ${currentPage}=='extract-image-scans' OR ${currentPage}=='change-metadata' OR ${currentPage}=='add-image' OR ${currentPage}=='ocr-pdf' OR ${currentPage}=='change-permissions' OR ${currentPage}=='extract-images' OR ${currentPage}=='compress-pdf' OR ${currentPage}=='add-page-numbers' OR ${currentPage}=='auto-rename' ? 'active' : ''">
|
<li class="nav-item dropdown" th:classappend="${currentPage}=='sign' OR ${currentPage}=='repair' OR ${currentPage}=='compare' OR ${currentPage}=='show-javascript' OR ${currentPage}=='flatten' OR ${currentPage}=='remove-blanks' OR ${currentPage}=='extract-image-scans' OR ${currentPage}=='change-metadata' OR ${currentPage}=='add-image' OR ${currentPage}=='ocr-pdf' OR ${currentPage}=='change-permissions' OR ${currentPage}=='extract-images' OR ${currentPage}=='compress-pdf' OR ${currentPage}=='add-page-numbers' OR ${currentPage}=='auto-rename' OR ${currentPage}=='get-info-on-pdf' ? 'active' : ''">
|
||||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<img class="icon" src="images/card-list.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;">
|
<img class="icon" src="images/card-list.svg" alt="icon" style="width: 16px; height: 16px; vertical-align: middle;">
|
||||||
<span class="icon-text" th:text="#{navbar.other}"></span>
|
<span class="icon-text" th:text="#{navbar.other}"></span>
|
||||||
|
@ -127,6 +130,8 @@
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('compare', 'images/scales.svg', 'home.compare.title', 'home.compare.desc', 'compare.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('compare', 'images/scales.svg', 'home.compare.title', 'home.compare.desc', 'compare.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('add-page-numbers', 'images/add-page-numbers.svg', 'home.add-page-numbers.title', 'home.add-page-numbers.desc', 'add-page-numbers.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('add-page-numbers', 'images/add-page-numbers.svg', 'home.add-page-numbers.title', 'home.add-page-numbers.desc', 'add-page-numbers.tags')}"></div>
|
||||||
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('auto-rename', 'images/fonts.svg', 'home.auto-rename.title', 'home.auto-rename.desc', 'auto-rename.tags')}"></div>
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('auto-rename', 'images/fonts.svg', 'home.auto-rename.title', 'home.auto-rename.desc', 'auto-rename.tags')}"></div>
|
||||||
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('get-info-on-pdf', 'images/info.svg', 'home.getPdfInfo.title', 'home.getPdfInfo.desc', 'getPdfInfo.tags')}"></div>
|
||||||
|
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('show-javascript', 'images/js.svg', 'home.showJS.title', 'home.showJS.desc', 'showJS.tags')}"></div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,14 @@
|
||||||
|
|
||||||
<div th:replace="~{fragments/card :: card(id='url-to-pdf', cardTitle=#{home.URLToPDF.title}, cardText=#{home.URLToPDF.desc}, cardLink='url-to-pdf', svgPath='images/url.svg')}"></div>
|
<div th:replace="~{fragments/card :: card(id='url-to-pdf', cardTitle=#{home.URLToPDF.title}, cardText=#{home.URLToPDF.desc}, cardLink='url-to-pdf', svgPath='images/url.svg')}"></div>
|
||||||
<div th:replace="~{fragments/card :: card(id='html-to-pdf', cardTitle=#{home.HTMLToPDF.title}, cardText=#{home.HTMLToPDF.desc}, cardLink='html-to-pdf', svgPath='images/html.svg')}"></div>
|
<div th:replace="~{fragments/card :: card(id='html-to-pdf', cardTitle=#{home.HTMLToPDF.title}, cardText=#{home.HTMLToPDF.desc}, cardLink='html-to-pdf', svgPath='images/html.svg')}"></div>
|
||||||
|
<div th:replace="~{fragments/card :: card(id='markdown-to-pdf', cardTitle=#{home.MarkdownToPDF.title}, cardText=#{home.MarkdownToPDF.desc}, cardLink='markdown-to-pdf', svgPath='images/markdown.svg')}"></div>
|
||||||
|
<div th:replace="~{fragments/card :: card(id='get-info-on-pdf', cardTitle=#{home.getPdfInfo.title}, cardText=#{home.getPdfInfo.desc}, cardLink='get-info-on-pdf', svgPath='images/info.svg')}"></div>
|
||||||
|
<div th:replace="~{fragments/card :: card(id='extract-page', cardTitle=#{home.extractPage.title}, cardText=#{home.extractPage.desc}, cardLink='extract-page', svgPath='images/extract.svg')}"></div>
|
||||||
|
<div th:replace="~{fragments/card :: card(id='pdf-to-single-page', cardTitle=#{home.PdfToSinglePage.title}, cardText=#{home.PdfToSinglePage.desc}, cardLink='pdf-to-single-page', svgPath='images/single-page.svg')}"></div>
|
||||||
|
<div th:replace="~{fragments/card :: card(id='show-javascript', cardTitle=#{home.showJS.title}, cardText=#{home.showJS.desc}, cardLink='show-javascript', svgPath='images/js.svg')}"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div> </div>
|
</div> </div>
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
import scrollDivHorizontally from "./js/multitool/horizontalScroll.js";
|
import scrollDivHorizontally from "./js/multitool/horizontalScroll.js";
|
||||||
import ImageHighlighter from "./js/multitool/ImageHighlighter.js";
|
import ImageHighlighter from "./js/multitool/ImageHighlighter.js";
|
||||||
import PdfActionsManager from './js/multitool/PdfActionsManager.js';
|
import PdfActionsManager from './js/multitool/PdfActionsManager.js';
|
||||||
|
import addFileInputListener from './js/multitool/fileInput.js';
|
||||||
// enables drag and drop
|
// enables drag and drop
|
||||||
const dragDropManager = new DragDropManager('drag-container', 'pages-container');
|
const dragDropManager = new DragDropManager('drag-container', 'pages-container');
|
||||||
// enables image highlight on click
|
// enables image highlight on click
|
||||||
|
@ -86,6 +86,9 @@
|
||||||
pdfActionsManager,
|
pdfActionsManager,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
addFileInputListener(async (files) => {
|
||||||
|
pdfContainer.addPdfsFromFiles(files);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<h2 th:text="#{compare.header}"></h2>
|
<h2 th:text="#{compare.header}"></h2>
|
||||||
|
|
||||||
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf', remoteCall='false')}"></div>
|
||||||
<div th:replace="~{fragments/common :: fileSelector(name='fileInput2', multiple=false, accept='application/pdf')}"></div>
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput2', multiple=false, accept='application/pdf', remoteCall='false')}"></div>
|
||||||
<button class="btn btn-primary" onclick="comparePDFs()" th:text="#{compare.submit}"></button>
|
<button class="btn btn-primary" onclick="comparePDFs()" th:text="#{compare.submit}"></button>
|
||||||
|
|
||||||
|
|
||||||
|
|
89
src/main/resources/templates/other/show-javascript.html
Normal file
89
src/main/resources/templates/other/show-javascript.html
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.toString()}"
|
||||||
|
th:lang-direction="#{language.direction}"
|
||||||
|
xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<th:block
|
||||||
|
th:insert="~{fragments/common :: head(title=#{showJS.title})}"></th:block>
|
||||||
|
<body>
|
||||||
|
<link href="css/prism.css" rel="stylesheet" />
|
||||||
|
<script src="js/thirdParty/prism.js"></script>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<div th:insert="~{fragments/navbar.html :: navbar}"></div>
|
||||||
|
<br> <br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<h2 th:text="#{showJS.header}"></h2>
|
||||||
|
<form id="pdfInfoForm" method="post" enctype="multipart/form-data"
|
||||||
|
th:action="@{show-javascript}">
|
||||||
|
<div
|
||||||
|
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false')}"></div>
|
||||||
|
<br>
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary"
|
||||||
|
th:text="#{showJS.submit}"></button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div class="container mt-5">
|
||||||
|
<!-- Iterate over each main section in the JSON -->
|
||||||
|
<div id="script-content">
|
||||||
|
<!-- JavaScript will populate this section -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Button to download the JSON -->
|
||||||
|
<a href="#" id="downloadJS" class="btn btn-primary mt-3"
|
||||||
|
style="display: none;" th:text="#{showJS.downloadJS}">Download
|
||||||
|
JSON</a>
|
||||||
|
</div>
|
||||||
|
<style>
|
||||||
|
/* Add a max-height and make it scrollable */
|
||||||
|
#script-content {
|
||||||
|
max-height: 1000px; /* Adjust this to your preferred maximum height */
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
document.querySelector('#pdfInfoForm').addEventListener('submit', function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// Fetch the formData
|
||||||
|
const formData = new FormData(event.target);
|
||||||
|
|
||||||
|
fetch('show-javascript', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
}).then(response => response.text())
|
||||||
|
.then(data => {
|
||||||
|
// Escape < and > characters
|
||||||
|
let escapedData = data.replace(/</g, '<').replace(/>/g, '>');
|
||||||
|
|
||||||
|
// Wrap the JavaScript content in a pre and code tag and add it to the div
|
||||||
|
document.querySelector('#script-content').innerHTML = '<pre><code class="language-javascript">' + escapedData + '</code></pre>';
|
||||||
|
|
||||||
|
// Highlight the code using Prism.js
|
||||||
|
Prism.highlightAll();
|
||||||
|
|
||||||
|
// Create a blob object from the data and create a URL for it
|
||||||
|
let blob = new Blob([data], {type: 'application/javascript'});
|
||||||
|
let url = URL.createObjectURL(blob);
|
||||||
|
|
||||||
|
// Set the URL as the href of the download button and provide a download name
|
||||||
|
let downloadButton = document.querySelector('#downloadJS');
|
||||||
|
downloadButton.href = url;
|
||||||
|
downloadButton.download = 'extracted.js';
|
||||||
|
downloadButton.style.display = 'block';
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div th:insert="~{fragments/footer.html :: footer}"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
28
src/main/resources/templates/pdf-to-single-page.html
Normal file
28
src/main/resources/templates/pdf-to-single-page.html
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.toString()}" th:lang-direction="#{language.direction}" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
|
||||||
|
<th:block th:insert="~{fragments/common :: head(title=#{pdfToSinglePage.title})}"></th:block>
|
||||||
|
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<div th:insert="~{fragments/navbar.html :: navbar}"></div>
|
||||||
|
<br> <br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h2 th:text="#{pdfToSinglePage.header}"></h2>
|
||||||
|
<form method="post" enctype="multipart/form-data" th:action="@{pdf-to-single-page}">
|
||||||
|
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div>
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToSinglePage.submit}"></button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div th:insert="~{fragments/footer.html :: footer}"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
151
src/main/resources/templates/security/get-info-on-pdf.html
Normal file
151
src/main/resources/templates/security/get-info-on-pdf.html
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html th:lang="${#locale.toString()}"
|
||||||
|
th:lang-direction="#{language.direction}"
|
||||||
|
xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<th:block
|
||||||
|
th:insert="~{fragments/common :: head(title=#{getPdfInfo.title})}"></th:block>
|
||||||
|
<body>
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="content-wrap">
|
||||||
|
<div th:insert="~{fragments/navbar.html :: navbar}"></div>
|
||||||
|
<br> <br>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<h2 th:text="#{getPdfInfo.header}"></h2>
|
||||||
|
<form id="pdfInfoForm" method="post" enctype="multipart/form-data"
|
||||||
|
th:action="@{get-info-on-pdf}">
|
||||||
|
<div
|
||||||
|
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false')}"></div>
|
||||||
|
<br>
|
||||||
|
<button type="submit" id="submitBtn" class="btn btn-primary"
|
||||||
|
th:text="#{getPdfInfo.submit}"></button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<div class="container mt-5">
|
||||||
|
<!-- Iterate over each main section in the JSON -->
|
||||||
|
<div id="json-content">
|
||||||
|
<!-- JavaScript will populate this section -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Button to download the JSON -->
|
||||||
|
<a href="#" id="downloadJson" class="btn btn-primary mt-3"
|
||||||
|
style="display: none;" th:text="#{getPdfInfo.downloadJson}">Download
|
||||||
|
JSON</a>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
// Prevent the form from submitting the traditional way
|
||||||
|
document.getElementById("pdfInfoForm").addEventListener("submit", function(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// Fetch the formData
|
||||||
|
const formData = new FormData(event.target);
|
||||||
|
|
||||||
|
fetch('get-info-on-pdf', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
displayJsonData(data); // Display the data
|
||||||
|
setDownloadLink(data); // Set download link
|
||||||
|
document.getElementById("downloadJson").style.display = "block";
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function displayJsonData(jsonData) {
|
||||||
|
let content = '';
|
||||||
|
for (const key in jsonData) {
|
||||||
|
content += renderJsonSection(key, jsonData[key]);
|
||||||
|
}
|
||||||
|
document.getElementById('json-content').innerHTML = content;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDownloadLink(jsonData) {
|
||||||
|
const downloadLink = document.getElementById('downloadJson');
|
||||||
|
const dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(jsonData, null, 4));
|
||||||
|
downloadLink.setAttribute("href", dataStr);
|
||||||
|
downloadLink.setAttribute("download", "data.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function renderJsonSection(key, value, depth = 0) {
|
||||||
|
let safeKey = (typeof key === "string") ? key.replace(/[^a-zA-Z0-9]/g, '_') : key;
|
||||||
|
|
||||||
|
let output = `<div class="card mb-3">
|
||||||
|
<div class="card-header" id="${safeKey}-heading-${depth}">
|
||||||
|
<h5 class="mb-0">`;
|
||||||
|
|
||||||
|
if (key === 'XMPMetadata' && typeof value === "string") {
|
||||||
|
output += `<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#${safeKey}-content-${depth}" aria-expanded="true" aria-controls="${safeKey}-content-${depth}">
|
||||||
|
${key}
|
||||||
|
</button>`;
|
||||||
|
} else if (value && typeof value === 'object') {
|
||||||
|
if (Array.isArray(value) && value.length === 0) {
|
||||||
|
output += `${key}: Empty array`;
|
||||||
|
} else if (!Array.isArray(value) && Object.keys(value).length === 0) {
|
||||||
|
output += `${key}: Empty object`;
|
||||||
|
} else {
|
||||||
|
output += `<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#${safeKey}-content-${depth}" aria-expanded="true" aria-controls="${safeKey}-content-${depth}">
|
||||||
|
${key}
|
||||||
|
</button>`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
output += `${key}: ${value}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
output += `
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
<div id="${safeKey}-content-${depth}" class="collapse" aria-labelledby="${safeKey}-heading-${depth}">`;
|
||||||
|
|
||||||
|
if (key === 'XMPMetadata' && typeof value === "string") {
|
||||||
|
output += `<div class="card-body"><pre>${escapeHTML(value)}</pre></div>`;
|
||||||
|
} else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
||||||
|
output += '<div class="card-body">';
|
||||||
|
if (Object.keys(value).length) {
|
||||||
|
for (const subKey in value) {
|
||||||
|
output += renderJsonSection(subKey, value[subKey], depth + 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
output += '<p class="text-muted">Empty</p>';
|
||||||
|
}
|
||||||
|
output += '</div>';
|
||||||
|
} else if (value && typeof value === 'object' && Array.isArray(value)) {
|
||||||
|
output += '<div class="card-body">';
|
||||||
|
if (value.length) {
|
||||||
|
value.forEach((val, index) => {
|
||||||
|
const arrayKey = `${key}[${index}]`;
|
||||||
|
output += renderJsonSection(arrayKey, val, depth + 1);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
output += '<p class="text-muted">Empty</p>';
|
||||||
|
}
|
||||||
|
output += '</div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
output += '</div></div>';
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function escapeHTML(s) {
|
||||||
|
if(s)
|
||||||
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div th:insert="~{fragments/footer.html :: footer}"></div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in a new issue