Merge branch 'main' into dependabot/gradle/org.apache.pdfbox-pdfbox-2.0.29

This commit is contained in:
Anthony Stirling 2023-08-08 19:57:32 +01:00 committed by GitHub
commit bb025dc2a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
72 changed files with 3392 additions and 2189 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View 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);

View file

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

View file

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

View file

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

View file

@ -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;
@ -76,6 +79,22 @@ public class SanitizeController {
} }
} }
private void sanitizeJavaScript(PDDocument document) throws IOException { private void sanitizeJavaScript(PDDocument document) throws IOException {
// 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 (PDPage page : document.getPages()) {
for (PDAnnotation annotation : page.getAnnotations()) { for (PDAnnotation annotation : page.getAnnotations()) {
if (annotation instanceof PDAnnotationWidget) { if (annotation instanceof PDAnnotationWidget) {
@ -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();

View file

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

View file

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

View file

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

View file

@ -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,17 +53,24 @@ 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) {
if (!isEndpointEnabled) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
}
try { 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) {
if (!isEndpointEnabled) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled.");
}
try { try {
Counter counter; 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.isPresent() && !endpoint.get().isBlank()) {
if(!endpoint.get().startsWith("/")) { if (!endpoint.get().startsWith("/")) {
endpoint = Optional.of("/" + endpoint.get()); endpoint = Optional.of("/" + endpoint.get());
} }
if (endpoint.get().equals(meter.getId().getTag("uri"))) {
System.out.println("loads " + endpoint.get() + " vs " + meterRegistry.get("http.requests").tags("uri", endpoint.get()).toString()); if (meter instanceof Counter) {
counter = meterRegistry.get("http.requests") count += ((Counter) meter).count();
.tags("method", "POST", "uri", endpoint.get()).counter(); }
}
} else { } else {
counter = meterRegistry.get("http.requests") if (meter instanceof Counter) {
.tags("method", "POST").counter(); count += ((Counter) meter).count();
} }
return counter.count(); }
}
}
}
return ResponseEntity.ok(count);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); return ResponseEntity.ok(-1);
return 0.0; }
} }
@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);
}
} }

View file

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

View file

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

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

View file

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

View file

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

View file

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

View file

@ -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:/}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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=将几乎所有文件转换为PDFDOCX、PNG、XLS、PPT、TXT等 home.fileToPDF.desc=将几乎所有文件转换为PDFDOCX、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

View 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}

View 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

View 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

View 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

View 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

View 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

View file

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

View file

@ -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,19 +78,16 @@ 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) {
function handleFileInputChange(inputElement) { const files = allFiles;
const files = $(inputElement).get(0).files; const fileNames = files.map(f => f.name);
const fileNames = Array.from(files).map(f => f.name);
const selectedFilesContainer = $(inputElement).siblings(".selected-files"); const selectedFilesContainer = $(inputElement).siblings(".selected-files");
selectedFilesContainer.empty(); selectedFilesContainer.empty();
fileNames.forEach(fileName => { fileNames.forEach(fileName => {
@ -94,4 +100,5 @@ function handleFileInputChange(inputElement) {
} else { } else {
$(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt); $(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt);
} }
}
} }

View file

@ -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,9 +58,15 @@ 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.addPdfsFromFiles(files, nextSiblingElement);
}
input.click();
}
async addPdfsFromFiles(files, nextSiblingElement) {
this.fileName = files[0].name; this.fileName = files[0].name;
for (var i=0; i < files.length; i++) { for (var i=0; i < files.length; i++) {
await this.addPdfFile(files[i], nextSiblingElement); await this.addPdfFile(files[i], nextSiblingElement);
@ -70,9 +77,6 @@ class PdfContainer {
}); });
} }
input.click();
}
rotateElement(element, deg) { rotateElement(element, deg) {
var lastTransform = element.style.rotate; var lastTransform = element.style.rotate;
if (!lastTransform) { if (!lastTransform) {

View 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;

File diff suppressed because one or more lines are too long

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View 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, '&lt;').replace(/>/g, '&gt;');
// 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>

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

View 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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
return null;
}
</script>
</div>
</div>
</div>
</div>
<div th:insert="~{fragments/footer.html :: footer}"></div>
</div>
</body>
</html>