Merge branch 'main' into main

This commit is contained in:
Eric 2024-02-01 00:13:14 -05:00 committed by GitHub
commit a884f1b3d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
72 changed files with 2373 additions and 599 deletions

View file

@ -1,4 +1,18 @@
# License Agreement for Contributions # Description
By submitting this pull request, I acknowledge and agree that my contributions will be included in Stirling-PDF and that they can be relicensed in the future under MPL 2.0 (Mozilla Public License Version 2.0) license.
Please provide a summary of the changes, including relevant motivation and context.
Closes #(issue_number)
## Checklist:
- [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] My changes generate no new warnings
## Contributor License Agreement
By submitting this pull request, I acknowledge and agree that my contributions will be included in Stirling-PDF and that they can be relicensed in the future under the MPL 2.0 (Mozilla Public License Version 2.0) license.
(This does not change the general open-source nature of Stirling-PDF, simply moving from one license to another license) (This does not change the general open-source nature of Stirling-PDF, simply moving from one license to another license)

View file

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

View file

@ -12,7 +12,7 @@ plugins {
import com.github.jk1.license.render.* import com.github.jk1.license.render.*
group = 'stirling.software' group = 'stirling.software'
version = '0.20.0' version = '0.20.1'
sourceCompatibility = '17' sourceCompatibility = '17'
repositories { repositories {

View file

@ -21,7 +21,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "true" DOCKER_ENABLE_SECURITY: "true"
SECURITY_ENABLELOGIN: "true" SECURITY_ENABLELOGIN: "true"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF-Lite UI_APPNAME: Stirling-PDF-Lite
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security
UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest

View file

@ -20,7 +20,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "false" DOCKER_ENABLE_SECURITY: "false"
SECURITY_ENABLELOGIN: "false" SECURITY_ENABLELOGIN: "false"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF-Lite UI_APPNAME: Stirling-PDF-Lite
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest
UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest

View file

@ -21,7 +21,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "true" DOCKER_ENABLE_SECURITY: "true"
SECURITY_ENABLELOGIN: "true" SECURITY_ENABLELOGIN: "true"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF UI_APPNAME: Stirling-PDF
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest with Security UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest with Security
UI_APPNAMENAVBAR: Stirling-PDF Latest UI_APPNAMENAVBAR: Stirling-PDF Latest

View file

@ -21,7 +21,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "true" DOCKER_ENABLE_SECURITY: "true"
SECURITY_ENABLELOGIN: "true" SECURITY_ENABLELOGIN: "true"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF-Lite UI_APPNAME: Stirling-PDF-Lite
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Lite Latest with Security
UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest UI_APPNAMENAVBAR: Stirling-PDF-Lite Latest

View file

@ -20,7 +20,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "false" DOCKER_ENABLE_SECURITY: "false"
SECURITY_ENABLELOGIN: "false" SECURITY_ENABLELOGIN: "false"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF-Ultra-lite UI_APPNAME: Stirling-PDF-Ultra-lite
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Ultra-lite Latest UI_HOMEDESCRIPTION: Demo site for Stirling-PDF-Ultra-lite Latest
UI_APPNAMENAVBAR: Stirling-PDF-Ultra-lite Latest UI_APPNAMENAVBAR: Stirling-PDF-Ultra-lite Latest

View file

@ -21,7 +21,7 @@ services:
environment: environment:
DOCKER_ENABLE_SECURITY: "false" DOCKER_ENABLE_SECURITY: "false"
SECURITY_ENABLELOGIN: "false" SECURITY_ENABLELOGIN: "false"
SYSTEM_DEFAULTLOCALE: en_US SYSTEM_DEFAULTLOCALE: en-US
UI_APPNAME: Stirling-PDF UI_APPNAME: Stirling-PDF
UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest
UI_APPNAMENAVBAR: Stirling-PDF Latest UI_APPNAMENAVBAR: Stirling-PDF Latest

View file

@ -12,7 +12,7 @@ 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.model.api.GeneralFile; import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest;
import stirling.software.SPDF.utils.FileToPdf; import stirling.software.SPDF.utils.FileToPdf;
import stirling.software.SPDF.utils.WebResponseUtils; import stirling.software.SPDF.utils.WebResponseUtils;
@ -30,7 +30,8 @@ public class ConvertHtmlToPDF {
summary = "Convert an HTML or ZIP (containing HTML and CSS) to PDF", summary = "Convert an HTML or ZIP (containing HTML and CSS) to PDF",
description = description =
"This endpoint takes an HTML or ZIP file input and converts it to a PDF format.") "This endpoint takes an HTML or ZIP file input and converts it to a PDF format.")
public ResponseEntity<byte[]> HtmlToPdf(@ModelAttribute GeneralFile request) throws Exception { public ResponseEntity<byte[]> HtmlToPdf(@ModelAttribute HTMLToPdfRequest request)
throws Exception {
MultipartFile fileInput = request.getFileInput(); MultipartFile fileInput = request.getFileInput();
if (fileInput == null) { if (fileInput == null) {
@ -45,7 +46,7 @@ public class ConvertHtmlToPDF {
} }
byte[] pdfBytes = byte[] pdfBytes =
FileToPdf.convertHtmlToPdf( FileToPdf.convertHtmlToPdf(
fileInput.getBytes(), originalFilename, htmlFormatsInstalled); request, fileInput.getBytes(), originalFilename, htmlFormatsInstalled);
String outputFilename = String outputFilename =
originalFilename.replaceFirst("[.][^.]+$", "") originalFilename.replaceFirst("[.][^.]+$", "")

View file

@ -96,7 +96,7 @@ public class ConvertImgPDFController {
@Operation( @Operation(
summary = "Convert images to a PDF file", summary = "Convert images to a PDF file",
description = description =
"This endpoint converts one or more images to a PDF file. Users can specify whether to stretch the images to fit the PDF page, and whether to automatically rotate the images. Input:Image Output:PDF Type:SISO?") "This endpoint converts one or more images to a PDF file. Users can specify whether to stretch the images to fit the PDF page, and whether to automatically rotate the images. Input:Image Output:PDF Type:MISO")
public ResponseEntity<byte[]> convertToPdf(@ModelAttribute ConvertToPdfRequest request) public ResponseEntity<byte[]> convertToPdf(@ModelAttribute ConvertToPdfRequest request)
throws IOException { throws IOException {
MultipartFile[] file = request.getFileInput(); MultipartFile[] file = request.getFileInput();

View file

@ -39,7 +39,7 @@ public class ConvertMarkdownToPdf {
@Operation( @Operation(
summary = "Convert a Markdown file to PDF", summary = "Convert a Markdown file to PDF",
description = description =
"This endpoint takes a Markdown file input, converts it to HTML, and then to PDF format.") "This endpoint takes a Markdown file input, converts it to HTML, and then to PDF format. Input:MARKDOWN Output:PDF Type:SISO")
public ResponseEntity<byte[]> markdownToPdf(@ModelAttribute GeneralFile request) public ResponseEntity<byte[]> markdownToPdf(@ModelAttribute GeneralFile request)
throws Exception { throws Exception {
MultipartFile fileInput = request.getFileInput(); MultipartFile fileInput = request.getFileInput();
@ -68,7 +68,7 @@ public class ConvertMarkdownToPdf {
byte[] pdfBytes = byte[] pdfBytes =
FileToPdf.convertHtmlToPdf( FileToPdf.convertHtmlToPdf(
htmlContent.getBytes(), "converted.html", htmlFormatsInstalled); null, htmlContent.getBytes(), "converted.html", htmlFormatsInstalled);
String outputFilename = String outputFilename =
originalFilename.replaceFirst("[.][^.]+$", "") originalFilename.replaceFirst("[.][^.]+$", "")

View file

@ -43,6 +43,7 @@ import stirling.software.SPDF.utils.WebResponseUtils;
public class AutoSplitPdfController { public class AutoSplitPdfController {
private static final String QR_CONTENT = "https://github.com/Stirling-Tools/Stirling-PDF"; private static final String QR_CONTENT = "https://github.com/Stirling-Tools/Stirling-PDF";
private static final String QR_CONTENT_OLD = "https://github.com/Frooodle/Stirling-PDF";
@PostMapping(value = "/auto-split-pdf", consumes = "multipart/form-data") @PostMapping(value = "/auto-split-pdf", consumes = "multipart/form-data")
@Operation( @Operation(
@ -63,12 +64,13 @@ public class AutoSplitPdfController {
for (int page = 0; page < document.getNumberOfPages(); ++page) { for (int page = 0; page < document.getNumberOfPages(); ++page) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150); BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150);
String result = decodeQRCode(bim); String result = decodeQRCode(bim);
if ((QR_CONTENT.equals(result) || QR_CONTENT_OLD.equals(result)) && page != 0) {
if (QR_CONTENT.equals(result) && page != 0) {
splitDocuments.add(new PDDocument()); splitDocuments.add(new PDDocument());
} }
if (!splitDocuments.isEmpty() && !QR_CONTENT.equals(result)) { if (!splitDocuments.isEmpty()
&& !QR_CONTENT.equals(result)
&& !QR_CONTENT_OLD.equals(result)) {
splitDocuments.get(splitDocuments.size() - 1).addPage(document.getPage(page)); splitDocuments.get(splitDocuments.size() - 1).addPage(document.getPage(page));
} else if (page == 0) { } else if (page == 0) {
PDDocument firstDocument = new PDDocument(); PDDocument firstDocument = new PDDocument();
@ -77,7 +79,7 @@ public class AutoSplitPdfController {
} }
// If duplexMode is true and current page is a divider, then skip next page // If duplexMode is true and current page is a divider, then skip next page
if (duplexMode && QR_CONTENT.equals(result)) { if (duplexMode && (QR_CONTENT.equals(result) || QR_CONTENT_OLD.equals(result))) {
page++; page++;
} }
} }

View file

@ -33,7 +33,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest; import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest;
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
@ -85,7 +84,7 @@ public class BlankPageController {
List<String> command = List<String> command =
new ArrayList<>( new ArrayList<>(
Arrays.asList( Arrays.asList(
"python3", "python",
System.getProperty("user.dir") System.getProperty("user.dir")
+ "/scripts/detect-blank-pages.py", + "/scripts/detect-blank-pages.py",
tempFile.toString(), tempFile.toString(),
@ -94,18 +93,25 @@ public class BlankPageController {
"--white_percent", "--white_percent",
String.valueOf(whitePercent))); String.valueOf(whitePercent)));
Boolean blank = false;
// Run CLI command // Run CLI command
ProcessExecutorResult returnCode = try {
ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV) ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV)
.runCommandWithOutputHandling(command); .runCommandWithOutputHandling(command);
} catch (IOException e) {
// From detect-blank-pages.py
// Return code 1: The image is considered blank.
// Return code 0: The image is not considered blank.
// Since the process returned with a failure code, it should be blank.
blank = true;
}
// does contain data if (blank) {
if (returnCode.getRc() == 0) { System.out.println("Skipping, Image was blank for page #" + pageIndex);
} else {
System.out.println( System.out.println(
"page " + pageIndex + " has image which is not blank"); "page " + pageIndex + " has image which is not blank");
pagesToKeepIndex.add(pageIndex); pagesToKeepIndex.add(pageIndex);
} else {
System.out.println("Skipping, Image was blank for page #" + pageIndex);
} }
} }
} }

View file

@ -29,7 +29,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
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;
@ -50,7 +49,7 @@ public class FakeScanControllerWIP {
// TODO // TODO
@Hidden @Hidden
@PostMapping(consumes = "multipart/form-data", value = "/fakeScan") // @PostMapping(consumes = "multipart/form-data", value = "/fakeScan")
@Operation( @Operation(
summary = "Repair a PDF file", summary = "Repair a PDF file",
description = description =

View file

@ -30,7 +30,7 @@ public class OverlayImageController {
@Operation( @Operation(
summary = "Overlay image onto a PDF file", summary = "Overlay image onto a PDF file",
description = description =
"This endpoint overlays an image onto a PDF file at the specified coordinates. The image can be overlaid on every page of the PDF if specified. Input:PDF/IMAGE Output:PDF Type:MF-SISO") "This endpoint overlays an image onto a PDF file at the specified coordinates. The image can be overlaid on every page of the PDF if specified. Input:PDF/IMAGE Output:PDF Type:SISO")
public ResponseEntity<byte[]> overlayImage(@ModelAttribute OverlayImageRequest request) { public ResponseEntity<byte[]> overlayImage(@ModelAttribute OverlayImageRequest request) {
MultipartFile pdfFile = request.getFileInput(); MultipartFile pdfFile = request.getFileInput();
MultipartFile imageFile = request.getImageFile(); MultipartFile imageFile = request.getImageFile();

View file

@ -0,0 +1,311 @@
package stirling.software.SPDF.controller.api.misc;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.apache.commons.io.IOUtils;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;
import org.apache.pdfbox.util.Matrix;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import stirling.software.SPDF.model.api.misc.AddStampRequest;
import stirling.software.SPDF.utils.WebResponseUtils;
@RestController
@RequestMapping("/api/v1/misc")
@Tag(name = "Misc", description = "Miscellaneous APIs")
public class StampController {
@PostMapping(consumes = "multipart/form-data", value = "/add-stamp")
@Operation(
summary = "Add stamp to a PDF file",
description =
"This endpoint adds a stamp 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[]> addStamp(@ModelAttribute AddStampRequest request)
throws IOException, Exception {
MultipartFile pdfFile = request.getFileInput();
String watermarkType = request.getStampType();
String watermarkText = request.getStampText();
MultipartFile watermarkImage = request.getStampImage();
String alphabet = request.getAlphabet();
float fontSize = request.getFontSize();
float rotation = request.getRotation();
float opacity = request.getOpacity();
int position = request.getPosition(); // Updated to use 1-9 positioning logic
float overrideX = request.getOverrideX(); // New field for X override
float overrideY = request.getOverrideY(); // New field for Y override
String customColor = request.getCustomColor();
float marginFactor;
switch (request.getCustomMargin().toLowerCase()) {
case "small":
marginFactor = 0.02f;
break;
case "medium":
marginFactor = 0.035f;
break;
case "large":
marginFactor = 0.05f;
break;
case "x-large":
marginFactor = 0.075f;
break;
default:
marginFactor = 0.035f;
break;
}
// Load the input PDF
PDDocument document = Loader.loadPDF(pdfFile.getBytes());
for (PDPage page : document.getPages()) {
PDPageContentStream contentStream =
new PDPageContentStream(
document, page, PDPageContentStream.AppendMode.APPEND, true, true);
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
graphicsState.setNonStrokingAlphaConstant(opacity);
contentStream.setGraphicsStateParameters(graphicsState);
if (watermarkType.equalsIgnoreCase("text")) {
addTextStamp(
contentStream,
watermarkText,
document,
page,
rotation,
position,
fontSize,
alphabet,
overrideX,
overrideY,
marginFactor,
customColor);
} else if (watermarkType.equalsIgnoreCase("image")) {
addImageStamp(
contentStream,
watermarkImage,
document,
page,
rotation,
position,
fontSize,
overrideX,
overrideY,
marginFactor);
}
contentStream.close();
}
return WebResponseUtils.pdfDocToWebResponse(
document,
pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_watermarked.pdf");
}
private void addTextStamp(
PDPageContentStream contentStream,
String watermarkText,
PDDocument document,
PDPage page,
float rotation,
int position, // 1-9 positioning logic
float fontSize,
String alphabet,
float overrideX, // X override
float overrideY,
float marginFactor,
String colorString) // Y override
throws IOException {
String resourceDir = "";
PDFont font = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
switch (alphabet) {
case "arabic":
resourceDir = "static/fonts/NotoSansArabic-Regular.ttf";
break;
case "japanese":
resourceDir = "static/fonts/Meiryo.ttf";
break;
case "korean":
resourceDir = "static/fonts/malgun.ttf";
break;
case "chinese":
resourceDir = "static/fonts/SimSun.ttf";
break;
case "roman":
default:
resourceDir = "static/fonts/NotoSans-Regular.ttf";
break;
}
if (!resourceDir.equals("")) {
ClassPathResource classPathResource = new ClassPathResource(resourceDir);
String fileExtension = resourceDir.substring(resourceDir.lastIndexOf("."));
File tempFile = File.createTempFile("NotoSansFont", fileExtension);
try (InputStream is = classPathResource.getInputStream();
FileOutputStream os = new FileOutputStream(tempFile)) {
IOUtils.copy(is, os);
}
font = PDType0Font.load(document, tempFile);
tempFile.deleteOnExit();
}
contentStream.setFont(font, fontSize);
Color redactColor;
try {
if (!colorString.startsWith("#")) {
colorString = "#" + colorString;
}
redactColor = Color.decode(colorString);
} catch (NumberFormatException e) {
redactColor = Color.LIGHT_GRAY;
}
contentStream.setNonStrokingColor(redactColor);
PDRectangle pageSize = page.getMediaBox();
float x, y;
if (overrideX >= 0 && overrideY >= 0) {
// Use override values if provided
x = overrideX;
y = overrideY;
} else {
x =
calculatePositionX(
pageSize,
position,
fontSize,
font,
fontSize,
watermarkText,
marginFactor);
y = calculatePositionY(pageSize, position, fontSize, marginFactor);
}
contentStream.beginText();
contentStream.setTextMatrix(Matrix.getRotateInstance(Math.toRadians(rotation), x, y));
contentStream.showText(watermarkText);
contentStream.endText();
}
private void addImageStamp(
PDPageContentStream contentStream,
MultipartFile watermarkImage,
PDDocument document,
PDPage page,
float rotation,
int position, // 1-9 positioning logic
float fontSize,
float overrideX,
float overrideY,
float marginFactor)
throws IOException {
// Load the watermark image
BufferedImage image = ImageIO.read(watermarkImage.getInputStream());
// Compute width based on original aspect ratio
float aspectRatio = (float) image.getWidth() / (float) image.getHeight();
// Desired physical height (in PDF points)
float desiredPhysicalHeight = fontSize;
// Desired physical width based on the aspect ratio
float desiredPhysicalWidth = desiredPhysicalHeight * aspectRatio;
// Convert the BufferedImage to PDImageXObject
PDImageXObject xobject = LosslessFactory.createFromImage(document, image);
PDRectangle pageSize = page.getMediaBox();
float x, y;
if (overrideX >= 0 && overrideY >= 0) {
// Use override values if provided
x = overrideX;
y = overrideY;
} else {
x =
calculatePositionX(
pageSize, position, desiredPhysicalWidth, null, 0, null, marginFactor);
y = calculatePositionY(pageSize, position, fontSize, marginFactor);
}
contentStream.saveGraphicsState();
contentStream.transform(Matrix.getTranslateInstance(x, y));
contentStream.transform(Matrix.getRotateInstance(Math.toRadians(rotation), 0, 0));
contentStream.drawImage(xobject, 0, 0, desiredPhysicalWidth, desiredPhysicalHeight);
contentStream.restoreGraphicsState();
}
private float calculatePositionX(
PDRectangle pageSize,
int position,
float contentWidth,
PDFont font,
float fontSize,
String text,
float marginFactor)
throws IOException {
float actualWidth =
(text != null) ? calculateTextWidth(text, font, fontSize) : contentWidth;
switch (position % 3) {
case 1: // Left
return pageSize.getLowerLeftX() + marginFactor * pageSize.getWidth();
case 2: // Center
return (pageSize.getWidth() - actualWidth) / 2;
case 0: // Right
return pageSize.getUpperRightX() - actualWidth - marginFactor * pageSize.getWidth();
default:
return 0;
}
}
private float calculateTextWidth(String text, PDFont font, float fontSize) throws IOException {
return font.getStringWidth(text) / 1000 * fontSize;
}
private float calculatePositionY(
PDRectangle pageSize, int position, float height, float marginFactor) {
switch ((position - 1) / 3) {
case 0: // Top
return pageSize.getUpperRightY() - height - marginFactor * pageSize.getHeight();
case 1: // Middle
return (pageSize.getHeight() - height) / 2;
case 2: // Bottom
return pageSize.getLowerLeftY() + marginFactor * pageSize.getHeight();
default:
return 0;
}
}
}

View file

@ -1,6 +1,8 @@
package stirling.software.SPDF.controller.api.pipeline; package stirling.software.SPDF.controller.api.pipeline;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -39,6 +41,57 @@ public class ApiDocService {
return "http://localhost:" + port + contextPath + "/v1/api-docs"; return "http://localhost:" + port + contextPath + "/v1/api-docs";
} }
Map<String, List<String>> outputToFileTypes = new HashMap<>();
public List getExtensionTypes(boolean output, String operationName) {
if (outputToFileTypes.size() == 0) {
outputToFileTypes.put("PDF", Arrays.asList("pdf"));
outputToFileTypes.put(
"IMAGE",
Arrays.asList(
"png", "jpg", "jpeg", "gif", "webp", "bmp", "tif", "tiff", "svg", "psd",
"ai", "eps"));
outputToFileTypes.put(
"ZIP",
Arrays.asList("zip", "rar", "7z", "tar", "gz", "bz2", "xz", "lz", "lzma", "z"));
outputToFileTypes.put("WORD", Arrays.asList("doc", "docx", "odt", "rtf"));
outputToFileTypes.put("CSV", Arrays.asList("csv"));
outputToFileTypes.put("JS", Arrays.asList("js", "jsx"));
outputToFileTypes.put("HTML", Arrays.asList("html", "htm", "xhtml"));
outputToFileTypes.put("JSON", Arrays.asList("json"));
outputToFileTypes.put("TXT", Arrays.asList("txt", "text", "md", "markdown"));
outputToFileTypes.put("PPT", Arrays.asList("ppt", "pptx", "odp"));
outputToFileTypes.put("XML", Arrays.asList("xml", "xsd", "xsl"));
outputToFileTypes.put(
"BOOK", Arrays.asList("epub", "mobi", "azw3", "fb2", "txt", "docx"));
// type.
}
if (apiDocsJsonRootNode == null || apiDocumentation.size() == 0) {
loadApiDocumentation();
}
if (!apiDocumentation.containsKey(operationName)) {
return null;
}
ApiEndpoint endpoint = apiDocumentation.get(operationName);
String description = endpoint.getDescription();
Pattern pattern = null;
if (output) {
pattern = Pattern.compile("Output:(\\w+)");
} else {
pattern = Pattern.compile("Input:(\\w+)");
}
Matcher matcher = pattern.matcher(description);
while (matcher.find()) {
String type = matcher.group(1).toUpperCase();
if (outputToFileTypes.containsKey(type)) {
return outputToFileTypes.get(type);
}
}
return null;
}
@Autowired(required = false) @Autowired(required = false)
private UserServiceInterface userService; private UserServiceInterface userService;

View file

@ -11,6 +11,7 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -82,15 +83,11 @@ public class PipelineProcessor {
operation, operation,
isMultiInputOperation); isMultiInputOperation);
Map<String, Object> parameters = pipelineOperation.getParameters(); Map<String, Object> parameters = pipelineOperation.getParameters();
String inputFileExtension = ""; List<String> inputFileTypes = apiDocService.getExtensionTypes(false, operation);
if (inputFileTypes == null) {
// TODO inputFileTypes = new ArrayList<String>(Arrays.asList("ALL"));
// if (operationNode.has("inputFileType")) { }
// inputFileExtension = operationNode.get("inputFileType").asText(); // List outputFileTypes = apiDocService.getExtensionTypes(true, operation);
// } else {
inputFileExtension = ".pdf";
// }
final String finalInputFileExtension = inputFileExtension;
String url = getBaseUrl() + operation; String url = getBaseUrl() + operation;
@ -98,7 +95,8 @@ public class PipelineProcessor {
if (!isMultiInputOperation) { if (!isMultiInputOperation) {
for (Resource file : outputFiles) { for (Resource file : outputFiles) {
boolean hasInputFileType = false; boolean hasInputFileType = false;
if (file.getFilename().endsWith(inputFileExtension)) { for (String extension : inputFileTypes) {
if (extension.equals("ALL") || file.getFilename().endsWith(extension)) {
hasInputFileType = true; hasInputFileType = true;
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("fileInput", file); body.add("fileInput", file);
@ -109,11 +107,13 @@ public class PipelineProcessor {
ResponseEntity<byte[]> response = sendWebRequest(url, body); ResponseEntity<byte[]> response = sendWebRequest(url, body);
// If the operation is filter and the response body is null or empty, skip // If the operation is filter and the response body is null or empty,
// skip
// this // this
// file // file
if (operation.startsWith("filter-") if (operation.startsWith("filter-")
&& (response.getBody() == null || response.getBody().length == 0)) { && (response.getBody() == null
|| response.getBody().length == 0)) {
logger.info("Skipping file due to failing {}", operation); logger.info("Skipping file due to failing {}", operation);
continue; continue;
} }
@ -123,13 +123,14 @@ public class PipelineProcessor {
hasErrors = true; hasErrors = true;
continue; continue;
} }
processOutputFiles(operation, file.getFilename(), response, newOutputFiles); processOutputFiles(operation, response, newOutputFiles);
}
} }
if (!hasInputFileType) { if (!hasInputFileType) {
logPrintStream.println( logPrintStream.println(
"No files with extension " "No files with extension "
+ inputFileExtension + String.join(", ", inputFileTypes)
+ " found for operation " + " found for operation "
+ operation); + operation);
hasErrors = true; hasErrors = true;
@ -138,13 +139,19 @@ public class PipelineProcessor {
} else { } else {
// Filter and collect all files that match the inputFileExtension // Filter and collect all files that match the inputFileExtension
List<Resource> matchingFiles = List<Resource> matchingFiles;
if (inputFileTypes.contains("ALL")) {
matchingFiles = new ArrayList<>(outputFiles);
} else {
final List<String> finalinputFileTypes = inputFileTypes;
matchingFiles =
outputFiles.stream() outputFiles.stream()
.filter( .filter(
file -> file ->
file.getFilename() finalinputFileTypes.stream()
.endsWith(finalInputFileExtension)) .anyMatch(file.getFilename()::endsWith))
.collect(Collectors.toList()); .collect(Collectors.toList());
}
// Check if there are matching files // Check if there are matching files
if (!matchingFiles.isEmpty()) { if (!matchingFiles.isEmpty()) {
@ -164,11 +171,7 @@ public class PipelineProcessor {
// Handle the response // Handle the response
if (response.getStatusCode().equals(HttpStatus.OK)) { if (response.getStatusCode().equals(HttpStatus.OK)) {
processOutputFiles( processOutputFiles(operation, response, newOutputFiles);
operation,
matchingFiles.get(0).getFilename(),
response,
newOutputFiles);
} else { } else {
// Log error if the response status is not OK // Log error if the response status is not OK
logPrintStream.println( logPrintStream.println(
@ -178,7 +181,7 @@ public class PipelineProcessor {
} else { } else {
logPrintStream.println( logPrintStream.println(
"No files with extension " "No files with extension "
+ inputFileExtension + String.join(", ", inputFileTypes)
+ " found for multi-input operation " + " found for multi-input operation "
+ operation); + operation);
hasErrors = true; hasErrors = true;
@ -211,11 +214,29 @@ public class PipelineProcessor {
return restTemplate.exchange(url, HttpMethod.POST, entity, byte[].class); return restTemplate.exchange(url, HttpMethod.POST, entity, byte[].class);
} }
public static String removeTrailingNaming(String filename) {
// Splitting filename into name and extension
int dotIndex = filename.lastIndexOf(".");
if (dotIndex == -1) {
// No extension found
return filename;
}
String name = filename.substring(0, dotIndex);
String extension = filename.substring(dotIndex);
// Finding the last underscore
int underscoreIndex = name.lastIndexOf("_");
if (underscoreIndex == -1) {
// No underscore found
return filename;
}
// Removing the last part and reattaching the extension
return name.substring(0, underscoreIndex) + extension;
}
private List<Resource> processOutputFiles( private List<Resource> processOutputFiles(
String operation, String operation, ResponseEntity<byte[]> response, List<Resource> newOutputFiles)
String fileName,
ResponseEntity<byte[]> response,
List<Resource> newOutputFiles)
throws IOException { throws IOException {
// Define filename // Define filename
String newFilename; String newFilename;
@ -227,7 +248,7 @@ public class PipelineProcessor {
newFilename = extractFilename(response); newFilename = extractFilename(response);
} else { } else {
// Otherwise, keep the original filename. // Otherwise, keep the original filename.
newFilename = fileName; newFilename = removeTrailingNaming(extractFilename(response));
} }
// Check if the response body is a zip file // Check if the response body is a zip file

View file

@ -74,7 +74,7 @@ public class CertSignController {
@Operation( @Operation(
summary = "Sign PDF with a Digital Certificate", summary = "Sign PDF with a Digital Certificate",
description = description =
"This endpoint accepts a PDF file, a digital certificate and related information to sign the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF Type:MF-SISO") "This endpoint accepts a PDF file, a digital certificate and related information to sign the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF Type:SISO")
public ResponseEntity<byte[]> signPDFWithCert(@ModelAttribute SignPDFWithCertRequest request) public ResponseEntity<byte[]> signPDFWithCert(@ModelAttribute SignPDFWithCertRequest request)
throws Exception { throws Exception {
MultipartFile pdf = request.getFileInput(); MultipartFile pdf = request.getFileInput();

View file

@ -155,9 +155,16 @@ public class WatermarkController {
contentStream.setFont(font, fontSize); contentStream.setFont(font, fontSize);
contentStream.setNonStrokingColor(Color.LIGHT_GRAY); contentStream.setNonStrokingColor(Color.LIGHT_GRAY);
String[] textLines = watermarkText.split("\\\\n");
float maxLineWidth = 0;
for (int i = 0; i < textLines.length; ++i) {
maxLineWidth = Math.max(maxLineWidth, font.getStringWidth(textLines[i]));
}
// Set size and location of text watermark // Set size and location of text watermark
float watermarkWidth = widthSpacer + font.getStringWidth(watermarkText) * fontSize / 1000; float watermarkWidth = widthSpacer + maxLineWidth * fontSize / 1000;
float watermarkHeight = heightSpacer + fontSize; float watermarkHeight = heightSpacer + fontSize * textLines.length;
float pageWidth = page.getMediaBox().getWidth(); float pageWidth = page.getMediaBox().getWidth();
float pageHeight = page.getMediaBox().getHeight(); float pageHeight = page.getMediaBox().getHeight();
int watermarkRows = (int) (pageHeight / watermarkHeight + 1); int watermarkRows = (int) (pageHeight / watermarkHeight + 1);
@ -172,7 +179,12 @@ public class WatermarkController {
(float) Math.toRadians(rotation), (float) Math.toRadians(rotation),
j * watermarkWidth, j * watermarkWidth,
i * watermarkHeight)); i * watermarkHeight));
contentStream.showText(watermarkText);
for (int k = 0; k < textLines.length; ++k) {
contentStream.showText(textLines[k]);
contentStream.newLineAtOffset(0, -fontSize);
}
contentStream.endText(); contentStream.endText();
} }
} }

View file

@ -39,6 +39,13 @@ public class OtherWebController {
return "misc/show-javascript"; return "misc/show-javascript";
} }
@GetMapping("/stamp")
@Hidden
public String stampForm(Model model) {
model.addAttribute("currentPage", "stamp");
return "misc/stamp";
}
@GetMapping("/add-page-numbers") @GetMapping("/add-page-numbers")
@Hidden @Hidden
public String addPageNumbersForm(Model model) { public String addPageNumbersForm(Model model) {

View file

@ -0,0 +1,52 @@
package stirling.software.SPDF.model.api.converters;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import stirling.software.SPDF.model.api.PDFFile;
@Data
@EqualsAndHashCode(callSuper = true)
public class HTMLToPdfRequest extends PDFFile {
@Schema(
description = "Zoom level for displaying the website. Default is '1'.",
defaultValue = "1")
private float zoom;
@Schema(description = "Width of the page in centimeters.")
private Float pageWidth;
@Schema(description = "Height of the page in centimeters.")
private Float pageHeight;
@Schema(description = "Top margin of the page in millimeters.")
private Float marginTop;
@Schema(description = "Bottom margin of the page in millimeters.")
private Float marginBottom;
@Schema(description = "Left margin of the page in millimeters.")
private Float marginLeft;
@Schema(description = "Right margin of the page in millimeters.")
private Float marginRight;
@Schema(
description = "Enable or disable rendering of website background.",
allowableValues = {"Yes", "No"})
private String printBackground;
@Schema(
description =
"Enable or disable the default header. The default header includes the name of the page on the left and the page number on the right.",
allowableValues = {"Yes", "No"})
private String defaultHeader;
@Schema(
description = "Change the CSS media type of the page. Defaults to 'print'.",
allowableValues = {"none", "print", "screen"},
defaultValue = "print")
private String cssMediaType;
}

View file

@ -0,0 +1,68 @@
package stirling.software.SPDF.model.api.misc;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import stirling.software.SPDF.model.api.PDFFile;
@Data
@EqualsAndHashCode(callSuper = true)
public class AddStampRequest extends PDFFile {
@Schema(
description = "The stamp type (text or image)",
allowableValues = {"text", "image"},
required = true)
private String stampType;
@Schema(description = "The stamp text")
private String stampText;
@Schema(description = "The stamp image")
private MultipartFile stampImage;
@Schema(
description = "The selected alphabet",
allowableValues = {"roman", "arabic", "japanese", "korean", "chinese"},
defaultValue = "roman")
private String alphabet = "roman";
@Schema(description = "The font size of the stamp text", example = "30")
private float fontSize = 30;
@Schema(description = "The rotation of the stamp in degrees", example = "0")
private float rotation = 0;
@Schema(description = "The opacity of the stamp (0.0 - 1.0)", example = "0.5")
private float opacity;
@Schema(
description =
"Position for stamp placement based on a 1-9 grid (1: bottom-left, 2: bottom-center, ..., 9: top-right)",
example = "1")
private int position;
@Schema(
description =
"Override X coordinate for stamp placement. If set, it will override the position-based calculation. Negative value means no override.",
example = "-1")
private float overrideX = -1; // Default to -1 indicating no override
@Schema(
description =
"Override Y coordinate for stamp placement. If set, it will override the position-based calculation. Negative value means no override.",
example = "-1")
private float overrideY = -1; // Default to -1 indicating no override
@Schema(
description = "Specifies the margin size for the stamp.",
allowableValues = {"small", "medium", "large", "x-large"},
defaultValue = "medium")
private String customMargin = "medium";
@Schema(description = "The color for stamp", defaultValue = "#d3d3d3")
private String customColor = "#d3d3d3";
}

View file

@ -1,131 +0,0 @@
package stirling.software.SPDF.pdf;
import java.awt.geom.Point2D;
import java.io.IOException;
import java.util.List;
import org.apache.pdfbox.contentstream.operator.Operator;
import org.apache.pdfbox.contentstream.operator.OperatorName;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
import org.apache.pdfbox.pdmodel.graphics.image.PDImage;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
public class ImageFinder extends org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine {
private boolean hasImages = false;
public ImageFinder(PDPage page) {
super(page);
}
public boolean hasImages() {
return hasImages;
}
@Override
protected void processOperator(Operator operator, List<COSBase> operands) throws IOException {
String operation = operator.getName();
if (operation.equals(OperatorName.DRAW_OBJECT)) {
COSBase base = operands.get(0);
if (base instanceof COSName) {
COSName objectName = (COSName) base;
PDXObject xobject = getResources().getXObject(objectName);
if (xobject instanceof PDImageXObject) {
hasImages = true;
} else if (xobject instanceof PDFormXObject) {
PDFormXObject form = (PDFormXObject) xobject;
ImageFinder innerFinder = new ImageFinder(getPage());
innerFinder.processPage(getPage());
if (innerFinder.hasImages()) {
hasImages = true;
}
}
}
}
super.processOperator(operator, operands);
}
@Override
public void appendRectangle(Point2D p0, Point2D p1, Point2D p2, Point2D p3) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void drawImage(PDImage pdImage) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void clip(int windingRule) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void moveTo(float x, float y) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void lineTo(float x, float y) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
throws IOException {
// TODO Auto-generated method stub
}
@Override
public Point2D getCurrentPoint() throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public void closePath() throws IOException {
// TODO Auto-generated method stub
}
@Override
public void endPath() throws IOException {
// TODO Auto-generated method stub
}
@Override
public void strokePath() throws IOException {
// TODO Auto-generated method stub
}
@Override
public void fillPath(int windingRule) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void fillAndStrokePath(int windingRule) throws IOException {
// TODO Auto-generated method stub
}
@Override
public void shadingFill(COSName shadingName) throws IOException {
// TODO Auto-generated method stub
}
// ... rest of the overridden methods
}

View file

@ -2,6 +2,7 @@ package stirling.software.SPDF.utils;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
@ -11,12 +12,16 @@ import java.util.stream.Stream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest;
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
public class FileToPdf { public class FileToPdf {
public static byte[] convertHtmlToPdf( public static byte[] convertHtmlToPdf(
byte[] fileBytes, String fileName, boolean htmlFormatsInstalled) HTMLToPdfRequest request,
byte[] fileBytes,
String fileName,
boolean htmlFormatsInstalled)
throws IOException, InterruptedException { throws IOException, InterruptedException {
Path tempOutputFile = Files.createTempFile("output_", ".pdf"); Path tempOutputFile = Files.createTempFile("output_", ".pdf");
@ -36,6 +41,65 @@ public class FileToPdf {
} else { } else {
command.add("wkhtmltopdf"); command.add("wkhtmltopdf");
command.add("--enable-local-file-access"); command.add("--enable-local-file-access");
command.add("--load-error-handling");
command.add("ignore");
command.add("--load-media-error-handling");
command.add("ignore");
command.add("--zoom");
command.add(String.valueOf(request.getZoom()));
// if custom zoom add zoom style direct to html
// https://github.com/wkhtmltopdf/wkhtmltopdf/issues/4900
if (request.getZoom() != 1.0) {
String htmlContent = new String(Files.readAllBytes(tempInputFile));
String zoomStyle = "<style>body { zoom: " + request.getZoom() + "; }</style>";
// Check for <head> tag, add style tag to associated tag
if (htmlContent.contains("<head>")) {
htmlContent = htmlContent.replace("<head>", "<head>" + zoomStyle);
} else if (htmlContent.contains("<html>")) {
// If no <head> tag, but <html> tag exists
htmlContent = htmlContent.replace("<html>", "<html>" + zoomStyle);
} else {
// If neither <head> nor <html> tags exist
htmlContent = zoomStyle + htmlContent;
}
// rewrite new html to file
Files.write(tempInputFile, htmlContent.getBytes(StandardCharsets.UTF_8));
}
if (request.getPageWidth() != null) {
command.add("--page-width");
command.add(request.getPageWidth() + "cm");
}
if (request.getPageHeight() != null) {
command.add("--page-height");
command.add(request.getPageHeight() + "cm");
}
if (request.getMarginTop() != null) {
command.add("--margin-top");
command.add(request.getMarginTop() + "mm");
}
// Repeat similar pattern for marginBottom, marginLeft, marginRight
if ("Yes".equalsIgnoreCase(request.getPrintBackground())) {
command.add("--background");
} else {
command.add("--no-background");
}
if ("Yes".equalsIgnoreCase(request.getDefaultHeader())) {
command.add("--default-header");
}
if ("print".equalsIgnoreCase(request.getCssMediaType())) {
command.add("--print-media-type");
} else if ("screen".equalsIgnoreCase(request.getCssMediaType())) {
command.add("--no-print-media-type");
}
} }
command.add(tempInputFile.toString()); command.add(tempInputFile.toString());
@ -59,7 +123,13 @@ public class FileToPdf {
} }
pdfBytes = Files.readAllBytes(tempOutputFile); pdfBytes = Files.readAllBytes(tempOutputFile);
} catch (IOException e) {
pdfBytes = Files.readAllBytes(tempOutputFile);
if (pdfBytes.length < 1) {
throw e;
}
} finally { } finally {
// Clean up temporary files // Clean up temporary files
Files.delete(tempOutputFile); Files.delete(tempOutputFile);
Files.delete(tempInputFile); Files.delete(tempInputFile);
@ -130,7 +200,6 @@ public class FileToPdf {
command.add("ebook-convert"); command.add("ebook-convert");
command.add(tempInputFile.toString()); command.add(tempInputFile.toString());
command.add(tempOutputFile.toString()); command.add(tempOutputFile.toString());
ProcessExecutorResult returnCode = ProcessExecutorResult returnCode =
ProcessExecutor.getInstance(ProcessExecutor.Processes.CALIBRE) ProcessExecutor.getInstance(ProcessExecutor.Processes.CALIBRE)
.runCommandWithOutputHandling(command); .runCommandWithOutputHandling(command);

View file

@ -2,8 +2,10 @@ package stirling.software.SPDF.utils;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@ -16,11 +18,15 @@ import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.ImageOutputStream;
import org.apache.pdfbox.Loader; import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode; import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.PDXObject;
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory; import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory; import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
@ -31,8 +37,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import stirling.software.SPDF.pdf.ImageFinder;
public class PdfUtils { public class PdfUtils {
private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class); private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class);
@ -62,6 +66,23 @@ public class PdfUtils {
} }
} }
public static List<RenderedImage> getAllImages(PDResources resources) throws IOException {
List<RenderedImage> images = new ArrayList<>();
for (COSName name : resources.getXObjectNames()) {
PDXObject object = resources.getXObject(name);
if (object instanceof PDImageXObject) {
images.add(((PDImageXObject) object).getImage());
} else if (object instanceof PDFormXObject) {
images.addAll(getAllImages(((PDFormXObject) object).getResources()));
}
}
return images;
}
public static boolean hasImages(PDDocument document, String pagesToCheck) throws IOException { public static boolean hasImages(PDDocument document, String pagesToCheck) throws IOException {
String[] pageOrderArr = pagesToCheck.split(","); String[] pageOrderArr = pagesToCheck.split(",");
List<Integer> pageList = List<Integer> pageList =
@ -94,9 +115,7 @@ public class PdfUtils {
} }
public static boolean hasImagesOnPage(PDPage page) throws IOException { public static boolean hasImagesOnPage(PDPage page) throws IOException {
ImageFinder imageFinder = new ImageFinder(page); return getAllImages(page.getResources()).size() > 0;
imageFinder.processPage(page);
return imageFinder.hasImages();
} }
public static boolean hasTextOnPage(PDPage page, String phrase) throws IOException { public static boolean hasTextOnPage(PDPage page, String phrase) throws IOException {

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Синьо
custom=Персонализиране... custom=Персонализиране...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Идентификационните данни са променени! changedCredsMessage=Идентификационните данни са променени!
notAuthenticatedMessage=Потребителят не е автентикиран. notAuthenticatedMessage=Потребителят не е автентикиран.
userNotFoundMessage=Потребителят не е намерен userNotFoundMessage=Потребителят не е намерен
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML към PDF
HTMLToPDF.help=Приема HTML файлове и ZIP файлове, съдържащи html/css/изображения и т.н HTMLToPDF.help=Приема HTML файлове и ZIP файлове, съдържащи html/css/изображения и т.н
HTMLToPDF.submit=Преобразуване HTMLToPDF.submit=Преобразуване
HTMLToPDF.credit=Използва WeasyPrint HTMLToPDF.credit=Използва WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Дезинфектирай PDF sanitizePDF.title=Дезинфектирай PDF
sanitizePDF.header=Дезинфектира PDF файл sanitizePDF.header=Дезинфектира PDF файл

View file

@ -44,7 +44,8 @@ blue=Blau
custom=Personalitzat... custom=Personalitzat...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -1,4 +1,4 @@
########### ###########
# Generic # # Generic #
########### ###########
# the direction that the language is written (ltr=left to right, rtl = right to left) # the direction that the language is written (ltr=left to right, rtl = right to left)
@ -44,7 +44,8 @@ blue=Blau
custom=benutzerdefiniert... custom=benutzerdefiniert...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Anmeldedaten geändert! changedCredsMessage=Anmeldedaten geändert!
notAuthenticatedMessage=Benutzer nicht authentifiziert. notAuthenticatedMessage=Benutzer nicht authentifiziert.
userNotFoundMessage=Benutzer nicht gefunden. userNotFoundMessage=Benutzer nicht gefunden.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -340,22 +342,22 @@ HTMLToPDF.tags=markup,web-content,transformation,convert
home.MarkdownToPDF.title=Markdown zu PDF home.MarkdownToPDF.title=Markdown zu PDF
home.MarkdownToPDF.desc=Konvertiert jede Markdown-Datei zu PDF home.MarkdownToPDF.desc=Konvertiert jede Markdown-Datei zu PDF
MarkdownToPDF.tags=markup,web-content,transformation,convert MarkdownToPDF.tags=markup,web-content,transformation,konvertieren
home.getPdfInfo.title=Alle Informationen anzeigen home.getPdfInfo.title=Alle Informationen anzeigen
home.getPdfInfo.desc=Erfasst alle möglichen Informationen in einer PDF home.getPdfInfo.desc=Erfasst alle möglichen Informationen in einer PDF
getPdfInfo.tags=infomation,data,stats,statistics getPdfInfo.tags=infomation,daten,statistik
home.extractPage.title=Seite(n) extrahieren home.extractPage.title=Seite(n) extrahieren
home.extractPage.desc=Extrahiert ausgewählte Seiten aus einer PDF home.extractPage.desc=Extrahiert ausgewählte Seiten aus einer PDF
extractPage.tags=extract extractPage.tags=extrahieren
home.PdfToSinglePage.title=PDF zu einer Seite zusammenfassen home.PdfToSinglePage.title=PDF zu einer Seite zusammenfassen
home.PdfToSinglePage.desc=Fügt alle PDF-Seiten zu einer einzigen großen Seite zusammen home.PdfToSinglePage.desc=Fügt alle PDF-Seiten zu einer einzigen großen Seite zusammen
PdfToSinglePage.tags=single page PdfToSinglePage.tags=einzelseite
home.showJS.title=Javascript anzeigen home.showJS.title=Javascript anzeigen
@ -363,26 +365,31 @@ home.showJS.desc=Alle Javascript Funktionen in einer PDF anzeigen
showJS.tags=JS showJS.tags=JS
home.autoRedact.title=Automatisch zensieren/schwärzen home.autoRedact.title=Automatisch zensieren/schwärzen
home.autoRedact.desc=Automatisches zensierten (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text home.autoRedact.desc=Automatisches Zensieren (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text
showJS.tags=JS showJS.tags=zensieren,schwärzen
home.tableExtraxt.title=Tabelle extrahieren home.tableExtraxt.title=Tabelle extrahieren
home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren
tableExtraxt.tags=CSV tableExtraxt.tags=CSV
home.autoSizeSplitPDF.title=Auto Split by Size/Count home.autoSizeSplitPDF.title=Teilen nach Größe/Anzahl
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count home.autoSizeSplitPDF.desc=Teilen Sie ein einzelnes PDF basierend auf Größe, Seitenanzahl oder Dokumentanzahl in mehrere Dokumente auf
autoSizeSplitPDF.tags=pdf,split,document,organization autoSizeSplitPDF.tags=pdf,teilen,dokument,organisation
home.overlay-pdfs.title=Overlay PDFs home.overlay-pdfs.title=PDF mit Overlay versehen
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF home.overlay-pdfs.desc=Überlagert eine PDF über eine andere PDF
overlay-pdfs.tags=Overlay overlay-pdfs.tags=overlay,überlagern
home.split-by-sections.title=PDF in Abschnitte teilen
home.split-by-sections.desc=Teilen Sie jede Seite einer PDF-Datei in kleinere horizontale und vertikale Abschnitte auf
split-by-sections.tags=abschnitte,teilen,bearbeiten
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize
########################### ###########################
# # # #
@ -408,7 +415,7 @@ autoRedact.useRegexLabel=Regex verwenden
autoRedact.wholeWordSearchLabel=Ganzes Wort suchen autoRedact.wholeWordSearchLabel=Ganzes Wort suchen
autoRedact.customPaddingLabel=Benutzerdefinierte Extra-Padding autoRedact.customPaddingLabel=Benutzerdefinierte Extra-Padding
autoRedact.convertPDFToImageLabel=PDF in PDF-Bild konvertieren (zum Entfernen von Text hinter dem Kasten) autoRedact.convertPDFToImageLabel=PDF in PDF-Bild konvertieren (zum Entfernen von Text hinter dem Kasten)
autoRedact.submitButton=zensieren autoRedact.submitButton=Zensieren
#showJS #showJS
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML zu PDF
HTMLToPDF.help=Akzeptiert HTML-Dateien und ZIPs mit html/css/images etc. HTMLToPDF.help=Akzeptiert HTML-Dateien und ZIPs mit html/css/images etc.
HTMLToPDF.submit=Konvertieren HTMLToPDF.submit=Konvertieren
HTMLToPDF.credit=Verwendet WeasyPrint HTMLToPDF.credit=Verwendet WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF Bereinigen sanitizePDF.title=PDF Bereinigen
sanitizePDF.header=PDF Bereinigen sanitizePDF.header=PDF Bereinigen
@ -572,9 +609,9 @@ removeBlanks.submit=Leere Seiten entfernen
#removeAnnotations #removeAnnotations
removeAnnotations.title=Remove Annotations removeAnnotations.title=Kommentare entfernen
removeAnnotations.header=Remove Annotations removeAnnotations.header=Kommentare entfernen
removeAnnotations.submit=Remove removeAnnotations.submit=Entfernen
#compare #compare
@ -591,7 +628,7 @@ sign.header=PDFs signieren
sign.upload=Bild hochladen sign.upload=Bild hochladen
sign.draw=Signatur zeichnen sign.draw=Signatur zeichnen
sign.text=Texteingabe sign.text=Texteingabe
sign.clear=Klar sign.clear=Leeren
sign.add=Signieren sign.add=Signieren
@ -883,44 +920,44 @@ PDFToXML.submit=Konvertieren
#PDFToCSV #PDFToCSV
PDFToCSV.title=PDF zu CSV PDFToCSV.title=PDF zu CSV
PDFToCSV.header=PDF zu CSV PDFToCSV.header=PDF zu CSV
PDFToCSV.prompt=Choose page to extract table PDFToCSV.prompt=Seite mit der zu extrahierenden Tabelle wählen
PDFToCSV.submit=Extrakt PDFToCSV.submit=Extrahieren
#split-by-size-or-count #split-by-size-or-count
split-by-size-or-count.header=Split PDF by Size or Count split-by-size-or-count.header=PDF nach Größe oder Anzahl teilen
split-by-size-or-count.type.label=Select Split Type split-by-size-or-count.type.label=Teil-Modus wählen
split-by-size-or-count.type.size=By Size split-by-size-or-count.type.size=Nach Größe
split-by-size-or-count.type.pageCount=By Page Count split-by-size-or-count.type.pageCount=Nach Anzahl Seiten
split-by-size-or-count.type.docCount=By Document Count split-by-size-or-count.type.docCount=Nach Anzahl Dokumenten
split-by-size-or-count.value.label=Enter Value split-by-size-or-count.value.label=Wert eingeben
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5) split-by-size-or-count.value.placeholder=Größe eingeben (z. B.: 2MB oder 3KB) oder Anzahl (z. B.: 5)
split-by-size-or-count.submit=Submit split-by-size-or-count.submit=Erstellen
#overlay-pdfs #overlay-pdfs
overlay-pdfs.header=Overlay PDF Files overlay-pdfs.header=PDF mit Overlay versehen
overlay-pdfs.baseFile.label=Select Base PDF File overlay-pdfs.baseFile.label=Basis-PDF-Datei auswählen
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files overlay-pdfs.overlayFiles.label=Overlay-PDF-Datei auswählen
overlay-pdfs.mode.label=Select Overlay Mode overlay-pdfs.mode.label=Overlay-Modus auswählen
overlay-pdfs.mode.sequential=Sequential Overlay overlay-pdfs.mode.sequential=Sequentielles Overlay
overlay-pdfs.mode.interleaved=Interleaved Overlay overlay-pdfs.mode.interleaved=Verschachteltes Overlay
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay overlay-pdfs.mode.fixedRepeat=Feste-Wiederholung Overlay
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode) overlay-pdfs.counts.label=Overlay Anzahl (für Feste-Wiederholung)
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1) overlay-pdfs.counts.placeholder=Komma-separierte Anzahl eingeben (z. B.: 2,3,1)
overlay-pdfs.position.label=Select Overlay Position overlay-pdfs.position.label=Overlay Position auswählen
overlay-pdfs.position.foreground=Foreground overlay-pdfs.position.foreground=Vordergrund
overlay-pdfs.position.background=Background overlay-pdfs.position.background=Hintergrund
overlay-pdfs.submit=Submit overlay-pdfs.submit=Erstellen
#split-by-sections #split-by-sections
split-by-sections.title=Split PDF by Sections split-by-sections.title=PDF in Abschnitte teilen
split-by-sections.header=Split PDF into Sections split-by-sections.header=PDF in Abschnitte teilen
split-by-sections.horizontal.label=Horizontal Divisions split-by-sections.horizontal.label=Horizontale Teiler
split-by-sections.vertical.label=Vertical Divisions split-by-sections.vertical.label=Vertikale Teiler
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.horizontal.placeholder=Anzahl horizontaler Teiler eingeben
split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.vertical.placeholder=Anzahl vertikaler Teiler eingeben
split-by-sections.submit=Split PDF split-by-sections.submit=PDF teilen
#licenses #licenses
@ -931,4 +968,3 @@ licenses.module=Module
licenses.version=Version licenses.version=Version
licenses.license=License licenses.license=License

View file

@ -44,7 +44,8 @@ blue=\u039C\u03C0\u03BB\u03AD
custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE... custom=\u03A0\u03C1\u03BF\u03C3\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=\u03A4\u03B1 \u03B4\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03AE\u03C1\u03B9\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9! changedCredsMessage=\u03A4\u03B1 \u03B4\u03B9\u03B1\u03C0\u03B9\u03C3\u03C4\u03B5\u03C5\u03C4\u03AE\u03C1\u03B9\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03B9!
notAuthenticatedMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C5\u03B8\u03B5\u03BD\u03C4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF. notAuthenticatedMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B1\u03C5\u03B8\u03B5\u03BD\u03C4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF.
userNotFoundMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5. userNotFoundMessage=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML \u03C3\u03B5 PDF
HTMLToPDF.help=\u0394\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C4\u03CD\u03C0\u03BF\u03C5 HTML \u03BA\u03B1\u03B9 \u03C4\u03CD\u03C0\u03BF\u03C5 ZIP \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03BF\u03C5\u03BD html/css/\u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2 \u03BA.\u03BB\u03C0. \u03C0\u03BF\u03C5 \u03B1\u03C0\u03B1\u03B9\u03C4\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 HTMLToPDF.help=\u0394\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C4\u03CD\u03C0\u03BF\u03C5 HTML \u03BA\u03B1\u03B9 \u03C4\u03CD\u03C0\u03BF\u03C5 ZIP \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03BF\u03C5\u03BD html/css/\u03B5\u03B9\u03BA\u03CC\u03BD\u03B5\u03C2 \u03BA.\u03BB\u03C0. \u03C0\u03BF\u03C5 \u03B1\u03C0\u03B1\u03B9\u03C4\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9
HTMLToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE HTMLToPDF.submit=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE
HTMLToPDF.credit=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF WeasyPrint HTMLToPDF.credit=\u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF sanitizePDF.title=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 PDF
sanitizePDF.header=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 sanitizePDF.header=\u0391\u03C0\u03BF\u03BB\u03CD\u03BC\u03B1\u03BD\u03C3\u03B7 \u03B5\u03BD\u03CC\u03C2 PDF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -385,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -460,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Azul
custom=Personalizado... custom=Personalizado...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Se cambiaron las credenciales! changedCredsMessage=Se cambiaron las credenciales!
notAuthenticatedMessage=Usuario no autentificado. notAuthenticatedMessage=Usuario no autentificado.
userNotFoundMessage=Usuario no encontrado. userNotFoundMessage=Usuario no encontrado.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Dividir PDF por Secciones
home.split-by-sections.desc=Dividir cada página de un PDF en secciones verticales y horizontales más pequeñas home.split-by-sections.desc=Dividir cada página de un PDF en secciones verticales y horizontales más pequeñas
split-by-sections.tags=Dividir sección, Dividir, Personalizar split-by-sections.tags=Dividir sección, Dividir, Personalizar
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML a PDF
HTMLToPDF.help=Acepta archivos HTML y ZIPs conteniendo los html/css/imágenes, etc, requeridas HTMLToPDF.help=Acepta archivos HTML y ZIPs conteniendo los html/css/imágenes, etc, requeridas
HTMLToPDF.submit=Convertir HTMLToPDF.submit=Convertir
HTMLToPDF.credit=Utiliza WeasyPrint HTMLToPDF.credit=Utiliza WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Desinfectar archivo PDF sanitizePDF.title=Desinfectar archivo PDF
sanitizePDF.header=Desinfectar un archivo PDF sanitizePDF.header=Desinfectar un archivo PDF

View file

@ -44,7 +44,8 @@ blue=Urdina
custom=Pertsonalizatu... custom=Pertsonalizatu...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML bat PDF-ra
HTMLToPDF.help=Html/css/images etab dituen HTML eta Zip fitxategiak onartzen ditu HTMLToPDF.help=Html/css/images etab dituen HTML eta Zip fitxategiak onartzen ditu
HTMLToPDF.submit=Bihurtu HTMLToPDF.submit=Bihurtu
HTMLToPDF.credit=WeasyPrint darabil HTMLToPDF.credit=WeasyPrint darabil
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF-a desinfektatu sanitizePDF.title=PDF-a desinfektatu
sanitizePDF.header=PDF fitxategi bat desinfektatu sanitizePDF.header=PDF fitxategi bat desinfektatu

View file

@ -44,7 +44,8 @@ blue=Bleu
custom=Personnalisé\u2026 custom=Personnalisé\u2026
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Les identifiants ont été mis à jour\u00a0! changedCredsMessage=Les identifiants ont été mis à jour\u00a0!
notAuthenticatedMessage=Utilisateur non authentifié. notAuthenticatedMessage=Utilisateur non authentifié.
userNotFoundMessage=Utilisateur non trouvé. userNotFoundMessage=Utilisateur non trouvé.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML en PDF
HTMLToPDF.help=Accepte les fichiers HTML et les ZIP contenant du HTML, du CSS, des images, etc. (requis). HTMLToPDF.help=Accepte les fichiers HTML et les ZIP contenant du HTML, du CSS, des images, etc. (requis).
HTMLToPDF.submit=Convertir HTMLToPDF.submit=Convertir
HTMLToPDF.credit=Utilise WeasyPrint. HTMLToPDF.credit=Utilise WeasyPrint.
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Assainir sanitizePDF.title=Assainir
sanitizePDF.header=Assainir sanitizePDF.header=Assainir

View file

@ -44,7 +44,8 @@ blue=नीला
custom=कस्टम... custom=कस्टम...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=क्रेडेंशियल्स बदल दी गईं! changedCredsMessage=क्रेडेंशियल्स बदल दी गईं!
notAuthenticatedMessage=उपयोगकर्ता प्रमाणित नहीं है। notAuthenticatedMessage=उपयोगकर्ता प्रमाणित नहीं है।
userNotFoundMessage=उपयोगकर्ता नहीं मिला। userNotFoundMessage=उपयोगकर्ता नहीं मिला।
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=खंडों से पीडीएफ़ वि
home.split-by-sections.desc=पीडीएफ़ के प्रत्येक पृष्ठ को छोटे से छोटे क्षैतिज और ऊर्ध्वाधर खंडों में विभाजित करें home.split-by-sections.desc=पीडीएफ़ के प्रत्येक पृष्ठ को छोटे से छोटे क्षैतिज और ऊर्ध्वाधर खंडों में विभाजित करें
split-by-sections.tags=खंड विभाजन, विभाजित करें, अनुकूलित split-by-sections.tags=खंड विभाजन, विभाजित करें, अनुकूलित
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML से पीडीएफ़
HTMLToPDF.help=HTML फ़ाइलों और html/css/images आदि को आत्मसात करने वाले ZIPs को स्वीकार करता है HTMLToPDF.help=HTML फ़ाइलों और html/css/images आदि को आत्मसात करने वाले ZIPs को स्वीकार करता है
HTMLToPDF.submit=रूपांतरित करें HTMLToPDF.submit=रूपांतरित करें
HTMLToPDF.credit=WeasyPrint का प्रयोग होता है HTMLToPDF.credit=WeasyPrint का प्रयोग होता है
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=पीडीएफ़ को सफाई करें sanitizePDF.title=पीडीएफ़ को सफाई करें
sanitizePDF.header=एक पीडीएफ़ फ़ाइल को सफाई करें sanitizePDF.header=एक पीडीएफ़ फ़ाइल को सफाई करें

View file

@ -44,7 +44,8 @@ blue=Kék
custom=Egyedi... custom=Egyedi...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=A hitelek megváltoztak! changedCredsMessage=A hitelek megváltoztak!
notAuthenticatedMessage=Felhasználó nincs hitelesítve. notAuthenticatedMessage=Felhasználó nincs hitelesítve.
userNotFoundMessage=A felhasználó nem található. userNotFoundMessage=A felhasználó nem található.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=PDF Szakaszokra osztása
home.split-by-sections.desc=Minden oldal felosztása kisebb vízszintes és függőleges szakaszokra home.split-by-sections.desc=Minden oldal felosztása kisebb vízszintes és függőleges szakaszokra
split-by-sections.tags=Szakasz elosztás, felosztás, testreszabás split-by-sections.tags=Szakasz elosztás, felosztás, testreszabás
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML >> PDF
HTMLToPDF.help=Elfogad HTML fájlokat és ZIP-fájlokat, amelyek tartalmaznak html/css/képeket stb. HTMLToPDF.help=Elfogad HTML fájlokat és ZIP-fájlokat, amelyek tartalmaznak html/css/képeket stb.
HTMLToPDF.submit=Átalakítás HTMLToPDF.submit=Átalakítás
HTMLToPDF.credit=WeasyPrint alkalmazása HTMLToPDF.credit=WeasyPrint alkalmazása
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF tisztítása sanitizePDF.title=PDF tisztítása
sanitizePDF.header=PDF fájl megtisztítása sanitizePDF.header=PDF fájl megtisztítása

View file

@ -44,7 +44,8 @@ blue=Biru
custom=Kustom... custom=Kustom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Kredensial berubah!! changedCredsMessage=Kredensial berubah!!
notAuthenticatedMessage=Pengguna tidak ter-autentikasi. notAuthenticatedMessage=Pengguna tidak ter-autentikasi.
userNotFoundMessage=Pengguna tidak ditemukan. userNotFoundMessage=Pengguna tidak ditemukan.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Membagi PDF berdasarkan Bagian
home.split-by-sections.desc=Membagi setiap halaman PDF menjadi beberapa bagian horizontal dan vertikal yang lebih kecil home.split-by-sections.desc=Membagi setiap halaman PDF menjadi beberapa bagian horizontal dan vertikal yang lebih kecil
split-by-sections.tags=Membagi Bagian, Membagi, Menyesuaikan split-by-sections.tags=Membagi Bagian, Membagi, Menyesuaikan
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML Ke PDF
HTMLToPDF.help=Menerima berkas HTML dan ZIP yang berisi html / css / gambar, dll yang diperlukan HTMLToPDF.help=Menerima berkas HTML dan ZIP yang berisi html / css / gambar, dll yang diperlukan
HTMLToPDF.submit=Konversi HTMLToPDF.submit=Konversi
HTMLToPDF.credit=Menggunakan WeasyPrint HTMLToPDF.credit=Menggunakan WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Bersihkan PDF sanitizePDF.title=Bersihkan PDF
sanitizePDF.header=Membersihkan berkas PDF sanitizePDF.header=Membersihkan berkas PDF

View file

@ -44,7 +44,8 @@ blue=Blu
custom=Personalizzato custom=Personalizzato
WorkInProgess=Lavori in corso, potrebbe non funzionare o essere difettoso, segnalare eventuali problemi! WorkInProgess=Lavori in corso, potrebbe non funzionare o essere difettoso, segnalare eventuali problemi!
poweredBy=Alimentato da poweredBy=Alimentato da
yes=Si
no=No
changedCredsMessage=Credenziali cambiate! changedCredsMessage=Credenziali cambiate!
notAuthenticatedMessage=Utente non autenticato. notAuthenticatedMessage=Utente non autenticato.
userNotFoundMessage=Utente non trovato. userNotFoundMessage=Utente non trovato.
@ -68,6 +69,7 @@ pipelineOptions.header=Configurazione Pipeline
pipelineOptions.pipelineNameLabel=Nome della Pipeline pipelineOptions.pipelineNameLabel=Nome della Pipeline
pipelineOptions.saveSettings=Salva Impostazioni pipelineOptions.saveSettings=Salva Impostazioni
pipelineOptions.pipelineNamePrompt=Inserisci qui il nome della pipeline pipelineOptions.pipelineNamePrompt=Inserisci qui il nome della pipeline
pipelineOptions.selectOperation=Seleziona operazione
pipelineOptions.addOperationButton=Aggiungi operazione pipelineOptions.addOperationButton=Aggiungi operazione
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -234,7 +236,7 @@ ocr.tags=riconoscimento,testo,immagine,scansione,lettura,identificazione,rilevam
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.
extractImages.tags=picture,photo,save,archive,zip,capture,grab extractImages.tags=immagine,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.
@ -311,7 +313,7 @@ add-page-numbers.tags=impaginare,etichettare,organizzare,indicizzare
home.auto-rename.title=Rinomina automaticamente il file PDF home.auto-rename.title=Rinomina automaticamente il file PDF
home.auto-rename.desc=Rinomina automaticamente un file PDF in base all'intestazione rilevata home.auto-rename.desc=Rinomina automaticamente un file PDF in base all'intestazione rilevata
auto-rename.tags=arilevamento automatico,basato su intestazione,organizzazione,rietichettatura auto-rename.tags=rilevamento automatico,basato su intestazione,organizzazione,rietichettatura
home.adjust-contrast.title=Regola colori/contrasto home.adjust-contrast.title=Regola colori/contrasto
home.adjust-contrast.desc=Regola contrasto, saturazione e luminosità di un PDF home.adjust-contrast.desc=Regola contrasto, saturazione e luminosità di un PDF
@ -384,6 +386,11 @@ home.split-by-sections.title=Dividi PDF per sezioni
home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole home.split-by-sections.desc=Dividi ciascuna pagina di un PDF in sezioni orizzontali e verticali più piccole
split-by-sections.tags=Dividi sezione, dividi, personalizza split-by-sections.tags=Dividi sezione, dividi, personalizza
home.AddStampRequest.title=Aggiungi timbro al PDF
home.AddStampRequest.desc=Aggiungi testo o aggiungi timbri immagine nelle posizioni prestabilite
AddStampRequest.tags=Timbro, Aggiungi immagine, Centra immagine, Filigrana, PDF, Incorpora, Personalizza
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML a PDF
HTMLToPDF.help=Accetta file HTML e ZIP contenenti html/css/immagini ecc. richiesti HTMLToPDF.help=Accetta file HTML e ZIP contenenti html/css/immagini ecc. richiesti
HTMLToPDF.submit=Converti HTMLToPDF.submit=Converti
HTMLToPDF.credit=Utilizza WeasyPrint HTMLToPDF.credit=Utilizza WeasyPrint
HTMLToPDF.zoom=Livello di zoom per la visualizzazione del sito web.
HTMLToPDF.pageWidth=Larghezza della pagina in centimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.pageHeight=Altezza della pagina in centimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.marginTop=Margine superiore della pagina in millimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.marginBottom=Margine inferiore della pagina in millimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.marginLeft=Margine sinistro della pagina in millimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.marginRight=Margine destro della pagina in millimetri. (Vuoto per impostazione predefinita)
HTMLToPDF.printBackground=Rendering dello sfondo dei siti Web.
HTMLToPDF.defaultHeader=Abilita intestazione predefinita (nome e numero di pagina)
HTMLToPDF.cssMediaType=Cambia il tipo di supporto CSS della pagina.
HTMLToPDF.none=Nessuno
HTMLToPDF.print=Stampa
HTMLToPDF.screen=Schermo
#AddStampRequest
AddStampRequest.header=Timbro PDF
AddStampRequest.title=Timbro PDF
AddStampRequest.stampType=Tipo di timbro
AddStampRequest.stampText=Testo del timbro
AddStampRequest.stampImage=Immagine del timbro
AddStampRequest.alphabet=Alfabeto
AddStampRequest.fontSize=Dimensione carattere/immagine
AddStampRequest.rotation=Rotazione
AddStampRequest.opacity=Opacità
AddStampRequest.position=Posizione
AddStampRequest.overrideX=Sostituisci la coordinata X
AddStampRequest.overrideY=Sostituisci la coordinata Y
AddStampRequest.customMargin=Margine personalizzato
AddStampRequest.customColor=Colore testo personalizzato
AddStampRequest.submit=Invia
#sanitizePDF #sanitizePDF
sanitizePDF.title=Pulire PDF sanitizePDF.title=Pulire PDF
sanitizePDF.header=Pulisci un file PDF sanitizePDF.header=Pulisci un file PDF

View file

@ -44,7 +44,8 @@ blue=青
custom=カスタム... custom=カスタム...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=資格情報が変更されました! changedCredsMessage=資格情報が変更されました!
notAuthenticatedMessage=ユーザーが認証されていません。 notAuthenticatedMessage=ユーザーが認証されていません。
userNotFoundMessage=ユーザーが見つかりません。 userNotFoundMessage=ユーザーが見つかりません。
@ -68,6 +69,7 @@ pipelineOptions.header=パイプライン設定
pipelineOptions.pipelineNameLabel=パイプライン名 pipelineOptions.pipelineNameLabel=パイプライン名
pipelineOptions.saveSettings=動作設定の保存 pipelineOptions.saveSettings=動作設定の保存
pipelineOptions.pipelineNamePrompt=ここにパイプライン名を入力 pipelineOptions.pipelineNamePrompt=ここにパイプライン名を入力
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=動作の追加 pipelineOptions.addOperationButton=動作の追加
pipelineOptions.pipelineHeader=パイプライン: pipelineOptions.pipelineHeader=パイプライン:
pipelineOptions.saveButton=ダウンロード pipelineOptions.saveButton=ダウンロード
@ -384,6 +386,11 @@ home.split-by-sections.title=PDFをセクションで分割
home.split-by-sections.desc=PDFの各ページを縦横に分割します。 home.split-by-sections.desc=PDFの各ページを縦横に分割します。
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTMLをPDFに変換
HTMLToPDF.help=HTMLファイルと必要なhtml/css/画像などを含むZIPを受け入れます HTMLToPDF.help=HTMLファイルと必要なhtml/css/画像などを含むZIPを受け入れます
HTMLToPDF.submit=変換 HTMLToPDF.submit=変換
HTMLToPDF.credit=WeasyPrintを使用 HTMLToPDF.credit=WeasyPrintを使用
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDFをサニタイズ sanitizePDF.title=PDFをサニタイズ
sanitizePDF.header=PDFファイルをサニタイズ sanitizePDF.header=PDFファイルをサニタイズ

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=계정 정보 변경 성공! changedCredsMessage=계정 정보 변경 성공!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=사용자를 찾을 수 없습니다. userNotFoundMessage=사용자를 찾을 수 없습니다.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML 파일을 PDF 문서로 변환
HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다. HTMLToPDF.help=HTML 파일, 또는 html/css/이미지 등을 포함한 ZIP 파일을 받습니다.
HTMLToPDF.submit=변환 HTMLToPDF.submit=변환
HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다. HTMLToPDF.credit=이 기능은 WeasyPrint를 사용합니다.
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF 정제 sanitizePDF.title=PDF 정제
sanitizePDF.header=PDF 문서 정제 sanitizePDF.header=PDF 문서 정제

View file

@ -4,7 +4,7 @@
# the direction that the language is written (ltr=left to right, rtl = right to left) # the direction that the language is written (ltr=left to right, rtl = right to left)
language.direction=ltr language.direction=ltr
pdfPrompt=Selecteer PDF(s) pdfPrompt=Selecteer PDF('s)
multiPdfPrompt=Selecteer PDFs (2+) multiPdfPrompt=Selecteer PDFs (2+)
multiPdfDropPrompt=Selecteer (of sleep & zet neer) alle PDFs die je nodig hebt multiPdfDropPrompt=Selecteer (of sleep & zet neer) alle PDFs die je nodig hebt
imgPrompt=Selecteer afbeelding(en) imgPrompt=Selecteer afbeelding(en)
@ -29,49 +29,51 @@ pageNum=Paginanummer
sizes.small=Klein sizes.small=Klein
sizes.medium=Medium sizes.medium=Medium
sizes.large=Groot sizes.large=Groot
sizes.x-large=Extra Groot sizes.x-large=Extra groot
error.pdfPassword=Het PDF document is beveiligd met een wachtwoord en het wachtwoord is niet ingevoerd of was onjuist error.pdfPassword=Het PDF document is beveiligd met een wachtwoord en het wachtwoord is niet ingevoerd of is onjuist
delete=Verwijderen delete=Verwijderen
username=Gebruikersnaam username=Gebruikersnaam
password=Wachtwoord password=Wachtwoord
welcome=Welkom welcome=Welkom
property=Property property=Eigenschap
black=Black black=Zwart
white=White white=Wit
red=Red red=Rood
green=Green green=Groen
blue=Blue blue=Blauw
custom=Custom... custom=Aangepast...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Werk in uitvoering. Werkt mogelijk niet of bevat fouten. Meld eventuele problemen!
poweredBy=Powered by poweredBy=Mogelijk gemaakt door
yes=Ja
changedCredsMessage=Credentials changed! no=Nee
notAuthenticatedMessage=User not authenticated. changedCredsMessage=Inloggegevens gewijzigd!
userNotFoundMessage=User not found. notAuthenticatedMessage=Gebruiker niet ingelogd.
incorrectPasswordMessage=Current password is incorrect. userNotFoundMessage=Gebruiker niet gevonden.
usernameExistsMessage=New Username already exists. incorrectPasswordMessage=Huidige wachtwoord is onjuist.
usernameExistsMessage=Nieuwe gebruikersnaam bestaat al.
############### ###############
# Pipeline # # Pipeline #
############### ###############
pipeline.header=Pipeline Menu (Alpha) pipeline.header=Pijplijn menu (Alpha)
pipeline.uploadButton=Upload Custom pipeline.uploadButton=Aangepast uploaden
pipeline.configureButton=Configure pipeline.configureButton=Configureren
pipeline.defaultOption=Custom pipeline.defaultOption=Aangepast
pipeline.submitButton=Submit pipeline.submitButton=Opslaan
###################### ######################
# Pipeline Options # # Pipeline Options #
###################### ######################
pipelineOptions.header=Pipeline Configuration pipelineOptions.header=Pijplijn onfiguratie
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pijplijn naam
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Instellingen voor bewerking opslaan
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Voer hier de naam van de pijplijn in
pipelineOptions.addOperationButton=Add operation pipelineOptions.selectOperation=Selecteer bewerking
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.addOperationButton=Bewerking toevoegen
pipelineOptions.saveButton=Download pipelineOptions.pipelineHeader=Pijplijn:
pipelineOptions.validateButton=Validate pipelineOptions.saveButton=Downloaden
pipelineOptions.validateButton=Valideren
@ -83,7 +85,7 @@ navbar.convert=Converteren
navbar.security=Beveiliging navbar.security=Beveiliging
navbar.other=Overige navbar.other=Overige
navbar.darkmode=Donkere modus navbar.darkmode=Donkere modus
navbar.pageOps=Pagina operaties navbar.pageOps=Pagina bewerkingen
navbar.settings=Instellingen navbar.settings=Instellingen
############# #############
@ -96,20 +98,20 @@ settings.downloadOption.title=Kies download optie (Voor enkelvoudige bestanddown
settings.downloadOption.1=Open in hetzelfde venster settings.downloadOption.1=Open in hetzelfde venster
settings.downloadOption.2=Open in nieuw venster settings.downloadOption.2=Open in nieuw venster
settings.downloadOption.3=Download bestand settings.downloadOption.3=Download bestand
settings.zipThreshold=Zip bestanden wanneer het aantal gedownloade bestanden overschrijdt settings.zipThreshold=Bestanden zippen wanneer het aantal gedownloade bestanden meer is dan
settings.signOut=Uitloggen settings.signOut=Uitloggen
settings.accountSettings=Account instellingen settings.accountSettings=Account instellingen
changeCreds.title=Change Credentials changeCreds.title=Inloggegevens wijzigen
changeCreds.header=Update Your Account Details changeCreds.header=Werk je accountgegevens bij
changeCreds.changeUserAndPassword=You are using default login credentials. Please enter a new password (and username if wanted) changeCreds.changeUserAndPassword=Je gebruikt de standaard inloggegevens. Voer een nieuw wachtwoord in (en eventueel een gebruikersnaam)
changeCreds.newUsername=New Username changeCreds.newUsername=Nieuwe gebruikersnaam
changeCreds.oldPassword=Current Password changeCreds.oldPassword=Huidige wachtwoord
changeCreds.newPassword=New Password changeCreds.newPassword=Nieuw wachtwoord
changeCreds.confirmNewPassword=Confirm New Password changeCreds.confirmNewPassword=Bevestig nieuw wachtwoord
changeCreds.submit=Submit Changes changeCreds.submit=Wijzigingen opslaan
@ -129,13 +131,13 @@ account.yourApiKey=Jouw API sleutel
account.syncTitle=Synchroniseer browserinstellingen met account account.syncTitle=Synchroniseer browserinstellingen met account
account.settingsCompare=Instellingen vergelijking: account.settingsCompare=Instellingen vergelijking:
account.property=Eigenschap account.property=Eigenschap
account.webBrowserSettings=Web Browser instelling account.webBrowserSettings=Webbrowser instelling
account.syncToBrowser=Synchroniseer account -> browser account.syncToBrowser=Synchroniseer account -> browser
account.syncToAccount=Synchroniseer account <- browser account.syncToAccount=Synchroniseer account <- browser
adminUserSettings.title=Gebruikerscontrole instellingen adminUserSettings.title=Gebruikersbeheer
adminUserSettings.header=Beheer Gebruikerscontrole instellingen adminUserSettings.header=Beheer gebruikers
adminUserSettings.admin=Beheerder adminUserSettings.admin=Beheerder
adminUserSettings.user=Gebruiker adminUserSettings.user=Gebruiker
adminUserSettings.addUser=Voeg nieuwe gebruiker toe adminUserSettings.addUser=Voeg nieuwe gebruiker toe
@ -144,35 +146,35 @@ adminUserSettings.role=Rol
adminUserSettings.actions=Acties adminUserSettings.actions=Acties
adminUserSettings.apiUser=Beperkte API gebruiker adminUserSettings.apiUser=Beperkte API gebruiker
adminUserSettings.webOnlyUser=Alleen web gebruiker adminUserSettings.webOnlyUser=Alleen web gebruiker
adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen)
adminUserSettings.forceChange=Force user to change username/password on login adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen
adminUserSettings.submit=Sla gebruiker op adminUserSettings.submit=Gebruiker opslaan
############# #############
# HOME-PAGE # # HOME-PAGE #
############# #############
home.desc=Jouw lokaal gehoste one-stop-shop voor al je PDF-behoeften. home.desc=Jouw lokaal gehoste one-stop-shop voor al je PDF-behoeften.
home.searchBar=Search for features... home.searchBar=Zoeken naar functies...
home.viewPdf.title=View PDF home.viewPdf.title=PDF bekijken
home.viewPdf.desc=View, annotate, add text or images home.viewPdf.desc=Bekijk, annoteer, voeg tekst of afbeeldingen toe
viewPdf.tags=view,read,annotate,text,image viewPdf.tags=bekijken,lezen,annoteren,tekst,afbeelding
home.multiTool.title=PDF Multitool home.multiTool.title=PDF multitool
home.multiTool.desc=Samenvoegen, draaien, herschikken en pagina''s verwijderen home.multiTool.desc=Pagina's samenvoegen, draaien, herschikken en verwijderen
multiTool.tags=Multitool,Multi bewerking,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats multiTool.tags=Multitool,Multi bewerking,UI,klik sleep,voorkant,clientzijde,interactief,beweegbaar,verplaats
home.merge.title=Samenvoegen home.merge.title=Samenvoegen
home.merge.desc=Voeg eenvoudig meerdere PDF''s samen tot één. home.merge.desc=Voeg eenvoudig meerdere PDF's samen tot één.
merge.tags=samenvoegen,Pagina operaties,Serverkant merge.tags=samenvoegen,Pagina bewerkingen,Serverkant
home.split.title=Splitsen home.split.title=Splitsen
home.split.desc=Splits PDF''s in meerdere documenten home.split.desc=Splits PDF's in meerdere documenten
split.tags=Pagina operaties,verdelen,meerdere pagina''s,knippen,serverzijde split.tags=Pagina bewerkingen,verdelen,meerdere pagina's,knippen,serverzijde
home.rotate.title=Roteren home.rotate.title=Roteren
home.rotate.desc=Roteer eenvoudig je PDF''s. home.rotate.desc=Roteer eenvoudig je PDF's.
rotate.tags=serverzijde rotate.tags=serverzijde
@ -185,7 +187,7 @@ home.pdfToImage.desc=Converteer een PDF naar een afbeelding. (PNG, JPEG, GIF)
pdfToImage.tags=conversie,img,jpg,foto pdfToImage.tags=conversie,img,jpg,foto
home.pdfOrganiser.title=Organiseren home.pdfOrganiser.title=Organiseren
home.pdfOrganiser.desc=Verwijder/Herschik pagina''s in een volgorde naar keus home.pdfOrganiser.desc=Verwijder/herschik pagina's in een volgorde naar keus
pdfOrganiser.tags=duplex,even oneven,sorteren,verplaatsen pdfOrganiser.tags=duplex,even oneven,sorteren,verplaatsen
@ -203,8 +205,8 @@ permissions.tags=lezen,schrijven,bewerken,printen
home.removePages.title=Verwijderen home.removePages.title=Verwijderen
home.removePages.desc=Verwijder ongewenste pagina''s uit je PDF-document. home.removePages.desc=Verwijder ongewenste pagina's uit je PDF-document.
removePages.tags=Pagina''s verwijderen removePages.tags=Pagina's verwijderen
home.addPassword.title=Wachtwoord toevoegen home.addPassword.title=Wachtwoord toevoegen
home.addPassword.desc=Versleutel je PDF-document met een wachtwoord. home.addPassword.desc=Versleutel je PDF-document met een wachtwoord.
@ -220,7 +222,7 @@ compressPdfs.tags=comprimeren,klein
home.changeMetadata.title=Metadata wijzigen home.changeMetadata.title=Metadata wijzigen
home.changeMetadata.desc=Wijzig/Verwijder/Voeg metadata toe van een PDF-document home.changeMetadata.desc=Wijzig/verwijder/voeg metadata toe van een PDF-document
changeMetadata.tags=Titel,auteur,datum,creatie,tijd,uitgever,producent,statistieken changeMetadata.tags=Titel,auteur,datum,creatie,tijd,uitgever,producent,statistieken
home.fileToPDF.title=Bestand naar PDF converteren home.fileToPDF.title=Bestand naar PDF converteren
@ -261,8 +263,8 @@ home.PDFToXML.title=PDF naar XML
home.PDFToXML.desc=Converteer PDF naar XML formaat home.PDFToXML.desc=Converteer PDF naar XML formaat
PDFToXML.tags=data-extractie,gestructureerd,code PDFToXML.tags=data-extractie,gestructureerd,code
home.ScannerImageSplit.title=Detecteer/Split gescande foto''s home.ScannerImageSplit.title=Detecteer/Split gescande foto's
home.ScannerImageSplit.desc=Splits meerdere foto''s van binnen een foto/PDF home.ScannerImageSplit.desc=Splits meerdere foto's van binnen een foto/PDF
ScannerImageSplit.tags=scheiden,auto-detecteren,scans,meer-foto,organiseren ScannerImageSplit.tags=scheiden,auto-detecteren,scans,meer-foto,organiseren
home.sign.title=Ondertekenen home.sign.title=Ondertekenen
@ -277,16 +279,16 @@ home.repair.title=Repareren
home.repair.desc=Probeert een corrupt/beschadigd PDF te herstellen home.repair.desc=Probeert een corrupt/beschadigd PDF te herstellen
repair.tags=repareren,herstellen,correctie,terughalen repair.tags=repareren,herstellen,correctie,terughalen
home.removeBlanks.title=Verwijder lege pagina''s home.removeBlanks.title=Verwijder lege pagina's
home.removeBlanks.desc=Detecteert en verwijdert lege pagina''s uit een document home.removeBlanks.desc=Detecteert en verwijdert lege pagina's uit een document
removeBlanks.tags=opruimen,stroomlijnen,geen-inhoud,organiseren removeBlanks.tags=opruimen,stroomlijnen,geen-inhoud,organiseren
home.removeAnnotations.title=Remove Annotations home.removeAnnotations.title=Annotaties verwijderen
home.removeAnnotations.desc=Removes all comments/annotations from a PDF home.removeAnnotations.desc=Verwijdert alle opmerkingen/annotaties uit een PDF
removeAnnotations.tags=comments,highlight,notes,markup,remove removeAnnotations.tags=opmerkingen,highlight,notities,opmaak,verwijderen
home.compare.title=Vergelijken home.compare.title=Vergelijken
home.compare.desc=Vergelijkt en toont de verschillen tussen 2 PDF-documenten home.compare.desc=Vergelijkt en toont de verschillen tussen twee PDF-documenten
compare.tags=onderscheiden,contrasteren,veranderingen,analyse compare.tags=onderscheiden,contrasteren,veranderingen,analyse
home.certSign.title=Ondertekenen met certificaat home.certSign.title=Ondertekenen met certificaat
@ -294,7 +296,7 @@ home.certSign.desc=Ondertekent een PDF met een certificaat/sleutel (PEM/P12)
certSign.tags=authenticeren,PEM,P12,officieel,versleutelen certSign.tags=authenticeren,PEM,P12,officieel,versleutelen
home.pageLayout.title=Multi-pagina indeling home.pageLayout.title=Multi-pagina indeling
home.pageLayout.desc=Voeg meerdere pagina''s van een PDF-document samen op één pagina home.pageLayout.desc=Voeg meerdere pagina's van een PDF-document samen op één pagina
pageLayout.tags=samenvoegen,composiet,enkel-zicht,organiseren pageLayout.tags=samenvoegen,composiet,enkel-zicht,organiseren
home.scalePages.title=Aanpassen paginaformaat/schaal home.scalePages.title=Aanpassen paginaformaat/schaal
@ -302,7 +304,7 @@ home.scalePages.desc=Wijzig de grootte/schaal van een pagina en/of de inhoud erv
scalePages.tags=resize,aanpassen,dimensie,aanpassen scalePages.tags=resize,aanpassen,dimensie,aanpassen
home.pipeline.title=Pijplijn (Geavanceerd) home.pipeline.title=Pijplijn (Geavanceerd)
home.pipeline.desc=Voer meerdere acties uit op PDF''s door pipelinescripts te definiëren home.pipeline.desc=Voer meerdere acties uit op PDF's door pipelinescripts te definiëren
pipeline.tags=automatiseren,volgorde,gescrript,batch-verwerking pipeline.tags=automatiseren,volgorde,gescrript,batch-verwerking
home.add-page-numbers.title=Paginanummers toevoegen home.add-page-numbers.title=Paginanummers toevoegen
@ -313,15 +315,15 @@ home.auto-rename.title=Automatisch hernoemen PDF-bestand
home.auto-rename.desc=Hernoemt automatisch een PDF-bestand op basis van de gedetecteerde header home.auto-rename.desc=Hernoemt automatisch een PDF-bestand op basis van de gedetecteerde header
auto-rename.tags=auto-detecteren,op-header-gebaseerd,organiseren,herlabelen auto-rename.tags=auto-detecteren,op-header-gebaseerd,organiseren,herlabelen
home.adjust-contrast.title=Kleuren/Contrast aanpassen home.adjust-contrast.title=Kleuren/contrast aanpassen
home.adjust-contrast.desc=Pas Contrast, Verzadiging en Helderheid van een PDF aan home.adjust-contrast.desc=Pas contrast, verzadiging en helderheid van een PDF aan
adjust-contrast.tags=kleur-correctie,afstemmen,aanpassen,verbeteren adjust-contrast.tags=kleur-correctie,afstemmen,aanpassen,verbeteren
home.crop.title=PDF bijsnijden home.crop.title=PDF bijsnijden
home.crop.desc=Snijd een PDF bij om de grootte te verkleinen (behoudt tekst!) home.crop.desc=Snijd een PDF bij om de grootte te verkleinen (behoudt tekst!)
crop.tags=trimmen,verkleinen,bewerken,vorm crop.tags=trimmen,verkleinen,bewerken,vorm
home.autoSplitPDF.title=Automatisch splitsen pagina''s home.autoSplitPDF.title=Automatisch splitsen pagina's
home.autoSplitPDF.desc=Automatisch splitsen van gescande PDF met fysieke gescande paginasplitter QR-code home.autoSplitPDF.desc=Automatisch splitsen van gescande PDF met fysieke gescande paginasplitter QR-code
autoSplitPDF.tags=QR-gebaseerd,scheiden,scan-segment,organiseren autoSplitPDF.tags=QR-gebaseerd,scheiden,scan-segment,organiseren
@ -329,7 +331,7 @@ home.sanitizePdf.title=Opschonen
home.sanitizePdf.desc=Verwijder scripts en andere elementen uit PDF-bestanden home.sanitizePdf.desc=Verwijder scripts en andere elementen uit PDF-bestanden
sanitizePdf.tags=schoonmaken,veilig,veilig,bedreigingen verwijderen sanitizePdf.tags=schoonmaken,veilig,veilig,bedreigingen verwijderen
home.URLToPDF.title=URL/Website naar PDF home.URLToPDF.title=URL/website naar PDF
home.URLToPDF.desc=Zet http(s)URL om naar PDF home.URLToPDF.desc=Zet http(s)URL om naar PDF
URLToPDF.tags=web-capture,pagina opslaan,web-naar-doc,archief URLToPDF.tags=web-capture,pagina opslaan,web-naar-doc,archief
@ -344,17 +346,17 @@ MarkdownToPDF.tags=markup,web-inhoud,transformatie,omzetten
home.getPdfInfo.title=Haal ALLE informatie op over PDF home.getPdfInfo.title=Haal ALLE informatie op over PDF
home.getPdfInfo.desc=Haalt alle mogelijke informatie op van PDF''s home.getPdfInfo.desc=Haalt alle mogelijke informatie op van PDF's
getPdfInfo.tags=informatie,data,statistieken getPdfInfo.tags=informatie,data,statistieken
home.extractPage.title=Pagina(''s) extraheren home.extractPage.title=Pagina('s) extraheren
home.extractPage.desc=Extraheert geselecteerde pagina''s uit PDF home.extractPage.desc=Extraheert geselecteerde pagina's uit PDF
extractPage.tags=extraheren extractPage.tags=extraheren
home.PdfToSinglePage.title=PDF naar één grote pagina home.PdfToSinglePage.title=PDF naar één grote pagina
home.PdfToSinglePage.desc=Voegt alle PDF-pagina''s samen tot één grote pagina home.PdfToSinglePage.desc=Voegt alle PDF-pagina's samen tot één grote pagina
PdfToSinglePage.tags=één pagina PdfToSinglePage.tags=één pagina
@ -362,27 +364,32 @@ home.showJS.title=Toon Javascript
home.showJS.desc=Zoekt en toont ieder script dat in een PDF is geïnjecteerd home.showJS.desc=Zoekt en toont ieder script dat in een PDF is geïnjecteerd
showJS.tags=JS showJS.tags=JS
home.autoRedact.title=Auto Redact home.autoRedact.title=Automatisch censureren
home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text home.autoRedact.desc=Automatisch censureren (onherkenbaar maken) van tekst in een PDF op basis van ingevoerde tekst
showJS.tags=JS showJS.tags=JS
home.tableExtraxt.title=PDF to CSV home.tableExtraxt.title=PDF naar CSV
home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV home.tableExtraxt.desc=Haalt tabellen uit een PDF en converteert ze naar CSV
tableExtraxt.tags=CSV,Table Extraction,extract,convert tableExtraxt.tags=CSV,tabel extractie,extractie,converteren
home.autoSizeSplitPDF.title=Auto Split by Size/Count home.autoSizeSplitPDF.title=Automatisch splitsen op grootte/aantal
home.autoSizeSplitPDF.desc=Split a single PDF into multiple documents based on size, page count, or document count home.autoSizeSplitPDF.desc=Splits een enkele PDF in meerdere documenten op basis van grootte, aantal pagina's of aantal documenten
autoSizeSplitPDF.tags=pdf,split,document,organization autoSizeSplitPDF.tags=pdf,splitsen,document,organiseren
home.overlay-pdfs.title=Overlay PDFs home.overlay-pdfs.title=PDF's overlappen
home.overlay-pdfs.desc=Overlays PDFs on-top of another PDF home.overlay-pdfs.desc=Plaatst PDF's over een andere PDF heen
overlay-pdfs.tags=Overlay overlay-pdfs.tags=Overlappen
home.split-by-sections.title=PDF in secties splitsen
home.split-by-sections.desc=Verdeel elke pagina van een PDF in kleinere horizontale en verticale secties
split-by-sections.tags=Sectie splitsen, Verdelen, Aanpassen
home.AddStampRequest.title=Stempel toevoegen aan PDF
home.AddStampRequest.desc=Voeg tekst of afbeeldingsstempels toe op vaste locaties
AddStampRequest.tags=Stempel, Afbeelding toevoegen, afbeelding centreren, watermerk, PDF, Insluiten, Aanpassen
home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize
########################### ###########################
# # # #
@ -390,25 +397,25 @@ split-by-sections.tags=Section Split, Divide, Customize
# # # #
########################### ###########################
#login #login
login.title=Sign in login.title=Inloggen
login.signin=Sign in login.signin=Inloggen
login.rememberme=Remember me login.rememberme=Onthoud mij
login.invalid=Invalid username or password. login.invalid=Ongeldige gebruikersnaam of wachtwoord.
login.locked=Your account has been locked. login.locked=Je account is geblokkeerd.
login.signinTitle=Please sign in login.signinTitle=Gelieve in te loggen
#auto-redact #auto-redact
autoRedact.title=Auto Redact autoRedact.title=Automatisch censureren
autoRedact.header=Auto Redact autoRedact.header=Automatisch censureren
autoRedact.colorLabel=Colour autoRedact.colorLabel=Kleur
autoRedact.textsToRedactLabel=Text to Redact (line-separated) autoRedact.textsToRedactLabel=Tekst om te censureren (gescheiden door regels)
autoRedact.textsToRedactPlaceholder=e.g. \nConfidential \nTop-Secret autoRedact.textsToRedactPlaceholder=bijv.\Vertrouwelijk \nTopgeheim
autoRedact.useRegexLabel=Use Regex autoRedact.useRegexLabel=Gebruik regex
autoRedact.wholeWordSearchLabel=Whole Word Search autoRedact.wholeWordSearchLabel=Zoeken op hele woorden
autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.customPaddingLabel=Aangepaste extra ruimtevulling
autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) autoRedact.convertPDFToImageLabel=Converteer PDF naar PDF-afbeelding (wordt gebruikt om tekst achter het vak te verwijderen)
autoRedact.submitButton=Submit autoRedact.submitButton=Indienen
#showJS #showJS
@ -425,8 +432,8 @@ pdfToSinglePage.submit=Converteren naar enkele pagina
#pageExtracter #pageExtracter
pageExtracter.title=Pagina''s extraheren pageExtracter.title=Pagina's extraheren
pageExtracter.header=Pagina''s extraheren pageExtracter.header=Pagina's extraheren
pageExtracter.submit=Extraheren pageExtracter.submit=Extraheren
@ -456,11 +463,41 @@ URLToPDF.credit=Gebruikt WeasyPrint
#html-to-pdf #html-to-pdf
HTMLToPDF.title=HTML naar PDF HTMLToPDF.title=HTML naar PDF
HTMLToPDF.header=HTML naar PDF HTMLToPDF.header=HTML naar PDF
HTMLToPDF.help=Accepteert HTML-bestanden en ZIP''s die html/css/afbeeldingen etc. bevatten HTMLToPDF.help=Accepteert HTML-bestanden en ZIP's die html/css/afbeeldingen etc. bevatten
HTMLToPDF.submit=Converteren HTMLToPDF.submit=Converteren
HTMLToPDF.credit=Gebruikt WeasyPrint HTMLToPDF.credit=Gebruikt WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Breedte van de pagina in centimeters. (leeg voor standaard)
HTMLToPDF.pageHeight=Hoogte van de pagina in centimeters. (leeg voor standaard)
HTMLToPDF.marginTop=Marge bovenaan de pagina in millimeters. (leeg voor standaard)
HTMLToPDF.marginBottom=Marge onderaan de pagina in millimeters. (leeg voor standaard)
HTMLToPDF.marginLeft=Marge links van de pagina in millimeters. (leeg voor standaard)
HTMLToPDF.marginRight=Marge rechts van de pagina in millimeters. (leeg voor standaard)
HTMLToPDF.printBackground=De achtergrond van websites weergeven.
HTMLToPDF.defaultHeader=Standaard koptekst weergeven (naam en paginanummer)
HTMLToPDF.cssMediaType=Wijzig het CSS-mediatype van de pagina.
HTMLToPDF.none=Geen
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stempel PDF
AddStampRequest.title=Stempel PDF
AddStampRequest.stampType=Soort stempel
AddStampRequest.stampText=Stempel tekst
AddStampRequest.stampImage=Stempel afbeelding
AddStampRequest.alphabet=Alfabet
AddStampRequest.fontSize=Tekst/afbeelding grootte
AddStampRequest.rotation=Rotatie
AddStampRequest.opacity=Transparantie
AddStampRequest.position=Positie
AddStampRequest.overrideX=X coördinaat overschrijven
AddStampRequest.overrideY=Y coördinaat overschrijven
AddStampRequest.customMargin=Aangepate marge
AddStampRequest.customColor=Aangepaste tekstkleur
AddStampRequest.submit=Indienen
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF opschonen sanitizePDF.title=PDF opschonen
sanitizePDF.header=Een PDF-bestand opschonen sanitizePDF.header=Een PDF-bestand opschonen
@ -479,11 +516,11 @@ addPageNumbers.selectText.1=Selecteer PDF-bestand:
addPageNumbers.selectText.2=Margegrootte addPageNumbers.selectText.2=Margegrootte
addPageNumbers.selectText.3=Positie addPageNumbers.selectText.3=Positie
addPageNumbers.selectText.4=Startnummer addPageNumbers.selectText.4=Startnummer
addPageNumbers.selectText.5=Pagina''s om te nummeren addPageNumbers.selectText.5=Pagina's om te nummeren
addPageNumbers.selectText.6=Aangepaste tekst addPageNumbers.selectText.6=Aangepaste tekst
addPageNumbers.customTextDesc=Custom Text addPageNumbers.customTextDesc=Aangepaste tekst
addPageNumbers.numberPagesDesc=Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc addPageNumbers.numberPagesDesc=Welke pagina's genummerd moeten worden, standaard 'all', accepteert ook 1-5 of 2,5,9 etc
addPageNumbers.customNumberDesc=Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} addPageNumbers.customNumberDesc=Standaard {n}, accepteert ook 'Pagina {n} van {total}', 'Tekst-{n}', '{filename}-{n}
addPageNumbers.submit=Paginanummers toevoegen addPageNumbers.submit=Paginanummers toevoegen
@ -515,7 +552,7 @@ autoSplitPDF.description=Print, Voeg in, Scan, upload, en laat ons je documenten
autoSplitPDF.selectText.1=Print enkele scheidingsbladen van hieronder (Zwart-wit is prima). autoSplitPDF.selectText.1=Print enkele scheidingsbladen van hieronder (Zwart-wit is prima).
autoSplitPDF.selectText.2=Scan al je documenten tegelijk door het scheidingsblad ertussen te plaatsen. autoSplitPDF.selectText.2=Scan al je documenten tegelijk door het scheidingsblad ertussen te plaatsen.
autoSplitPDF.selectText.3=Upload het enkele grote gescande PDF-bestand en laat Stirling PDF de rest afhandelen. autoSplitPDF.selectText.3=Upload het enkele grote gescande PDF-bestand en laat Stirling PDF de rest afhandelen.
autoSplitPDF.selectText.4=Scheidingspagina''s worden automatisch gedetecteerd en verwijderd, wat een net einddocument garandeert. autoSplitPDF.selectText.4=Scheidingspagina's worden automatisch gedetecteerd en verwijderd, wat een net einddocument garandeert.
autoSplitPDF.formPrompt=Dien PDF in met Stirling-PDF Pagina-scheiders: autoSplitPDF.formPrompt=Dien PDF in met Stirling-PDF Pagina-scheiders:
autoSplitPDF.duplexMode=Duplex Modus (voor- en achterkant scannen) autoSplitPDF.duplexMode=Duplex Modus (voor- en achterkant scannen)
autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf'
@ -530,8 +567,8 @@ pipeline.title=Pijplijn
#pageLayout #pageLayout
pageLayout.title=Meerdere pagina indeling pageLayout.title=Meerdere pagina indeling
pageLayout.header=Meerdere pagina indeling pageLayout.header=Meerdere pagina indeling
pageLayout.pagesPerSheet=Pagina''s per vel: pageLayout.pagesPerSheet=Pagina's per vel:
pageLayout.addBorder=Add Borders pageLayout.addBorder=Randen toevoegen
pageLayout.submit=Indienen pageLayout.submit=Indienen
@ -562,24 +599,24 @@ certSign.submit=PDF ondertekenen
#removeBlanks #removeBlanks
removeBlanks.title=Verwijder blanco''s removeBlanks.title=Verwijder blanco's
removeBlanks.header=Verwijder lege pagina''s removeBlanks.header=Verwijder lege pagina's
removeBlanks.threshold=Pixel witheid drempel: removeBlanks.threshold=Pixel witheid drempel:
removeBlanks.thresholdDesc=Drempel voor het bepalen hoe wit een witte pixel moet zijn om als ''Wit'' te worden geclassificeerd. 0 = Zwart, 255 zuiver wit. removeBlanks.thresholdDesc=Drempel voor het bepalen hoe wit een witte pixel moet zijn om als 'Wit' te worden geclassificeerd. 0 = Zwart, 255 zuiver wit.
removeBlanks.whitePercent=Wit percentage (%): removeBlanks.whitePercent=Wit percentage (%):
removeBlanks.whitePercentDesc=Percentage van de pagina dat ''witte'' pixels moet zijn om verwijderd te worden removeBlanks.whitePercentDesc=Percentage van de pagina dat 'witte' pixels moet zijn om verwijderd te worden
removeBlanks.submit=Blanco''s verwijderen removeBlanks.submit=Blanco's verwijderen
#removeAnnotations #removeAnnotations
removeAnnotations.title=Remove Annotations removeAnnotations.title=Verwijder annotaties
removeAnnotations.header=Remove Annotations removeAnnotations.header=Verwijder annotaties
removeAnnotations.submit=Remove removeAnnotations.submit=Verwijderen
#compare #compare
compare.title=Vergelijken compare.title=Vergelijken
compare.header=PDF''s vergelijken compare.header=PDF's vergelijken
compare.document.1=Document 1 compare.document.1=Document 1
compare.document.2=Document 2 compare.document.2=Document 2
compare.submit=Vergelijken compare.submit=Vergelijken
@ -587,7 +624,7 @@ compare.submit=Vergelijken
#sign #sign
sign.title=Ondertekenen sign.title=Ondertekenen
sign.header=PDF''s ondertekenen sign.header=PDF's ondertekenen
sign.upload=Upload afbeelding sign.upload=Upload afbeelding
sign.draw=Handtekening tekenen sign.draw=Handtekening tekenen
sign.text=Tekstinvoer sign.text=Tekstinvoer
@ -597,13 +634,13 @@ sign.add=Toevoegen
#repair #repair
repair.title=Repareren repair.title=Repareren
repair.header=PDF''s repareren repair.header=PDF's repareren
repair.submit=Repareren repair.submit=Repareren
#flatten #flatten
flatten.title=Afvlakken flatten.title=Afvlakken
flatten.header=PDF''s afvlakken flatten.header=PDF's afvlakken
flatten.submit=Afvlakken flatten.submit=Afvlakken
@ -624,12 +661,12 @@ ScannerImageSplit.selectText.10=Stelt de grootte van de toegevoegde en verwijder
ocr.title=OCR / Scan opruimen ocr.title=OCR / Scan opruimen
ocr.header=Scans opruimen / OCR (Optical Character Recognition) ocr.header=Scans opruimen / OCR (Optical Character Recognition)
ocr.selectText.1=Selecteer talen die binnen de PDF gedetecteerd moeten worden (De vermelde zijn de momenteel gedetecteerde): ocr.selectText.1=Selecteer talen die binnen de PDF gedetecteerd moeten worden (De vermelde zijn de momenteel gedetecteerde):
ocr.selectText.2=Produceer tekstbestand met OCR-tekst naast de OCR''d PDF ocr.selectText.2=Produceer tekstbestand met OCR-tekst naast de OCR'd PDF
ocr.selectText.3=Corrigeer pagina''s die onder een scheve hoek zijn gescand door ze terug te draaien ocr.selectText.3=Corrigeer pagina's die onder een scheve hoek zijn gescand door ze terug te draaien
ocr.selectText.4=Maak de pagina schoon, zodat het minder waarschijnlijk is dat OCR tekst in achtergrondruis vindt. (Geen uitvoerverandering) ocr.selectText.4=Maak de pagina schoon, zodat het minder waarschijnlijk is dat OCR tekst in achtergrondruis vindt. (Geen uitvoerverandering)
ocr.selectText.5=Maak de pagina schoon zodat OCR waarschijnlijk geen tekst in achtergrondruis vindt, behoudt opruiming in uitvoer. ocr.selectText.5=Maak de pagina schoon zodat OCR waarschijnlijk geen tekst in achtergrondruis vindt, behoudt opruiming in uitvoer.
ocr.selectText.6=Negeert pagina''s met interactieve tekst, OCR''s alleen pagina''s die afbeeldingen zijn ocr.selectText.6=Negeert pagina's met interactieve tekst, OCR's alleen pagina's die afbeeldingen zijn
ocr.selectText.7=Forceer OCR, zal elke pagina OCR''en en alle originele tekstelementen verwijderen ocr.selectText.7=Forceer OCR, zal elke pagina OCR'en en alle originele tekstelementen verwijderen
ocr.selectText.8=Normaal (Zal een fout geven als de PDF tekst bevat) ocr.selectText.8=Normaal (Zal een fout geven als de PDF tekst bevat)
ocr.selectText.9=Aanvullende instellingen ocr.selectText.9=Aanvullende instellingen
ocr.selectText.10=OCR-modus ocr.selectText.10=OCR-modus
@ -677,7 +714,7 @@ addImage.submit=Afbeelding toevoegen
#merge #merge
merge.title=Samenvoegen merge.title=Samenvoegen
merge.header=Meerdere PDF''s samenvoegen (2+) merge.header=Meerdere PDF's samenvoegen (2+)
merge.sortByName=Sorteer op naam merge.sortByName=Sorteer op naam
merge.sortByDate=Sorteer op datum merge.sortByDate=Sorteer op datum
merge.submit=Samenvoegen merge.submit=Samenvoegen
@ -686,7 +723,7 @@ merge.submit=Samenvoegen
#pdfOrganiser #pdfOrganiser
pdfOrganiser.title=Pagina organisator pdfOrganiser.title=Pagina organisator
pdfOrganiser.header=PDF pagina organisator pdfOrganiser.header=PDF pagina organisator
pdfOrganiser.submit=Pagina''s herschikken pdfOrganiser.submit=Pagina's herschikken
#multiTool #multiTool
@ -694,14 +731,14 @@ multiTool.title=PDF Multitool
multiTool.header=PDF Multitool multiTool.header=PDF Multitool
#view pdf #view pdf
viewPdf.title=View PDF viewPdf.title=PDF bekijken
viewPdf.header=View PDF viewPdf.header=PDF bekijken
#pageRemover #pageRemover
pageRemover.title=Pagina verwijderaar pageRemover.title=Pagina verwijderaar
pageRemover.header=PDF pagina verwijderaar pageRemover.header=PDF pagina verwijderaar
pageRemover.pagesToDelete=Te verwijderen pagina''s (Voer een door komma''s gescheiden lijst met paginanummers in): pageRemover.pagesToDelete=Te verwijderen pagina's (Voer een door komma's gescheiden lijst met paginanummers in):
pageRemover.submit=Pagina''s verwijderen pageRemover.submit=Pagina's verwijderen
#rotate #rotate
@ -715,14 +752,14 @@ rotate.submit=Roteren
split.title=PDF splitsen split.title=PDF splitsen
split.header=PDF splitsen split.header=PDF splitsen
split.desc.1=De nummers die je kiest zijn de paginanummers waarop je een splitsing wilt uitvoeren split.desc.1=De nummers die je kiest zijn de paginanummers waarop je een splitsing wilt uitvoeren
split.desc.2=Als zodanig selecteren van 1,3,7-8 zou een 10 pagina''s tellend document splitsen in 6 aparte PDF''s met: split.desc.2=Als zodanig selecteren van 1,3,7-8 zou een 10 pagina's tellend document splitsen in 6 aparte PDF's met:
split.desc.3=Document #1: Pagina 1 split.desc.3=Document #1: Pagina 1
split.desc.4=Document #2: Pagina 2 en 3 split.desc.4=Document #2: Pagina 2 en 3
split.desc.5=Document #3: Pagina 4, 5 en 6 split.desc.5=Document #3: Pagina 4, 5 en 6
split.desc.6=Document #4: Pagina 7 split.desc.6=Document #4: Pagina 7
split.desc.7=Document #5: Pagina 8 split.desc.7=Document #5: Pagina 8
split.desc.8=Document #6: Pagina 9 en 10 split.desc.8=Document #6: Pagina 9 en 10
split.splitPages=Voer pagina''s in om op te splitsen: split.splitPages=Voer pagina's in om op te splitsen:
split.submit=Splitsen split.submit=Splitsen
@ -730,14 +767,14 @@ split.submit=Splitsen
imageToPDF.title=Afbeelding naar PDF imageToPDF.title=Afbeelding naar PDF
imageToPDF.header=Afbeelding naar PDF imageToPDF.header=Afbeelding naar PDF
imageToPDF.submit=Omzetten imageToPDF.submit=Omzetten
imageToPDF.selectLabel=Image Fit Options imageToPDF.selectLabel=Opties voor afbeelding passend maken
imageToPDF.fillPage=Fill Page imageToPDF.fillPage=Pagina vullen
imageToPDF.fitDocumentToImage=Fit Page to Image imageToPDF.fitDocumentToImage=Pagina passend maken voor afbeelding
imageToPDF.maintainAspectRatio=Maintain Aspect Ratios imageToPDF.maintainAspectRatio=Beeldverhoudingen behouden
imageToPDF.selectText.2=PDF automatisch draaien imageToPDF.selectText.2=PDF automatisch draaien
imageToPDF.selectText.3=Meervoudige bestandslogica (Alleen ingeschakeld bij werken met meerdere afbeeldingen) imageToPDF.selectText.3=Meervoudige bestandslogica (Alleen ingeschakeld bij werken met meerdere afbeeldingen)
imageToPDF.selectText.4=Voeg samen in één PDF imageToPDF.selectText.4=Voeg samen in één PDF
imageToPDF.selectText.5=Zet om naar afzonderlijke PDF''s imageToPDF.selectText.5=Zet om naar afzonderlijke PDF's
#pdfToImage #pdfToImage
@ -745,7 +782,7 @@ pdfToImage.title=PDF naar afbeelding
pdfToImage.header=PDF naar afbeelding pdfToImage.header=PDF naar afbeelding
pdfToImage.selectText=Afbeeldingsformaat pdfToImage.selectText=Afbeeldingsformaat
pdfToImage.singleOrMultiple=Resultaattype van pagina naar afbeelding pdfToImage.singleOrMultiple=Resultaattype van pagina naar afbeelding
pdfToImage.single=Eén grote afbeelding die alle pagina''s combineert pdfToImage.single=Eén grote afbeelding die alle pagina's combineert
pdfToImage.multi=Meerdere afbeeldingen, één afbeelding per pagina pdfToImage.multi=Meerdere afbeeldingen, één afbeelding per pagina
pdfToImage.colorType=Kleurtype pdfToImage.colorType=Kleurtype
pdfToImage.color=Kleur pdfToImage.color=Kleur
@ -887,48 +924,48 @@ PDFToCSV.prompt=Choose page to extract table
PDFToCSV.submit=Extract PDFToCSV.submit=Extract
#split-by-size-or-count #split-by-size-or-count
split-by-size-or-count.header=Split PDF by Size or Count split-by-size-or-count.header=PDF splitsen op grootte of aantal
split-by-size-or-count.type.label=Select Split Type split-by-size-or-count.type.label=Selecteer splits type
split-by-size-or-count.type.size=By Size split-by-size-or-count.type.size=Op grootte
split-by-size-or-count.type.pageCount=By Page Count split-by-size-or-count.type.pageCount=Op pagina aantal
split-by-size-or-count.type.docCount=By Document Count split-by-size-or-count.type.docCount=Op document aantal
split-by-size-or-count.value.label=Enter Value split-by-size-or-count.value.label=Voer waarde in
split-by-size-or-count.value.placeholder=Enter size (e.g., 2MB or 3KB) or count (e.g., 5) split-by-size-or-count.value.placeholder=Voer grootte (bijv., 2MB of 3KB) of aantal (bijv., 5)
split-by-size-or-count.submit=Submit split-by-size-or-count.submit=Indienen
#overlay-pdfs #overlay-pdfs
overlay-pdfs.header=Overlay PDF Files overlay-pdfs.header=PDF bestanden overlappen
overlay-pdfs.baseFile.label=Select Base PDF File overlay-pdfs.baseFile.label=Selecteer basis PDF-bestand
overlay-pdfs.overlayFiles.label=Select Overlay PDF Files overlay-pdfs.overlayFiles.label=Selecteer overlappende PDF-bestanden
overlay-pdfs.mode.label=Select Overlay Mode overlay-pdfs.mode.label=Selecteer overlappingsmodus
overlay-pdfs.mode.sequential=Sequential Overlay overlay-pdfs.mode.sequential=Sequentieel overlappen
overlay-pdfs.mode.interleaved=Interleaved Overlay overlay-pdfs.mode.interleaved=Geïnterlinieerd overlappen
overlay-pdfs.mode.fixedRepeat=Fixed Repeat Overlay overlay-pdfs.mode.fixedRepeat=Overlappen met vaste herhaling
overlay-pdfs.counts.label=Overlay Counts (for Fixed Repeat Mode) overlay-pdfs.counts.label=Aantal keren overlappen (voor vaste herhalings modus)
overlay-pdfs.counts.placeholder=Enter comma-separated counts (e.g., 2,3,1) overlay-pdfs.counts.placeholder=Voer door komma's gescheiden aantallen in (bijv., 2,3,1)
overlay-pdfs.position.label=Select Overlay Position overlay-pdfs.position.label=Selecteer overlappingspositie
overlay-pdfs.position.foreground=Foreground overlay-pdfs.position.foreground=Voorgrond
overlay-pdfs.position.background=Background overlay-pdfs.position.background=Achtergrond
overlay-pdfs.submit=Submit overlay-pdfs.submit=Indienen
#split-by-sections #split-by-sections
split-by-sections.title=Split PDF by Sections split-by-sections.title=PDF in secties splitsen
split-by-sections.header=Split PDF into Sections split-by-sections.header=PDF in secties splitsen
split-by-sections.horizontal.label=Horizontal Divisions split-by-sections.horizontal.label=Horizontale secties
split-by-sections.vertical.label=Vertical Divisions split-by-sections.vertical.label=Verticale secties
split-by-sections.horizontal.placeholder=Enter number of horizontal divisions split-by-sections.horizontal.placeholder=Voer het aantal horizontale secties in
split-by-sections.vertical.placeholder=Enter number of vertical divisions split-by-sections.vertical.placeholder=Voer het aantal verticale secties in
split-by-sections.submit=Split PDF split-by-sections.submit=PDF splitsen
#licenses #licenses
licenses.nav=Licenses licenses.nav=Licensies
licenses.title=3rd Party Licenses licenses.title=Licensies van derden
licenses.header=3rd Party Licenses licenses.header=Licensies van derden
licenses.module=Module licenses.module=Module
licenses.version=Version licenses.version=Versie
licenses.license=License licenses.license=Licensie

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML para PDF
HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html/css/imagens etc necessários HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html/css/imagens etc necessários
HTMLToPDF.submit=Converter HTMLToPDF.submit=Converter
HTMLToPDF.credit=Usa o WeasyPrint HTMLToPDF.credit=Usa o WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitizar PDF sanitizePDF.title=Sanitizar PDF
sanitizePDF.header=Sanitizar um arquivo PDF sanitizePDF.header=Sanitizar um arquivo PDF

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML в PDF
HTMLToPDF.help=Принимает файлы HTML и ZIP-файлы, содержащие html/css/изображения и т. д. HTMLToPDF.help=Принимает файлы HTML и ZIP-файлы, содержащие html/css/изображения и т. д.
HTMLToPDF.submit=Конвертировать HTMLToPDF.submit=Конвертировать
HTMLToPDF.credit=Использует WeasyPrint HTMLToPDF.credit=Использует WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Дезинфицировать PDF sanitizePDF.title=Дезинфицировать PDF
sanitizePDF.header=Дезинфицировать PDF файл sanitizePDF.header=Дезинфицировать PDF файл

View file

@ -44,7 +44,8 @@ blue=Plavo
custom=Prilagođeno... custom=Prilagođeno...
WorkInProgess=Radovi u toku, možda neće raditi ili će biti grešaka, molimo prijavite sve probleme ! WorkInProgess=Radovi u toku, možda neće raditi ili će biti grešaka, molimo prijavite sve probleme !
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Podaci za prijavu uspešno promenjeni! changedCredsMessage=Podaci za prijavu uspešno promenjeni!
notAuthenticatedMessage=Korisnik nije autentifikovan. notAuthenticatedMessage=Korisnik nije autentifikovan.
userNotFoundMessage=Korisnik nije pronađen. userNotFoundMessage=Korisnik nije pronađen.
@ -68,6 +69,7 @@ pipelineOptions.header=Konfiguracija Pipeline-a
pipelineOptions.pipelineNameLabel=Ime Pipeline-a pipelineOptions.pipelineNameLabel=Ime Pipeline-a
pipelineOptions.saveSettings=Sačuvaj podešavanja pipelineOptions.saveSettings=Sačuvaj podešavanja
pipelineOptions.pipelineNamePrompt=Unesite ime pipeline-a ovde pipelineOptions.pipelineNamePrompt=Unesite ime pipeline-a ovde
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Dodaj operaciju pipelineOptions.addOperationButton=Dodaj operaciju
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Preuzmi pipelineOptions.saveButton=Preuzmi
@ -384,6 +386,11 @@ home.split-by-sections.title=Deljenje PDF-a po Odeljcima
home.split-by-sections.desc=Deljenje svake stranice PDF-a na manje horizontalne i vertikalne odeljke home.split-by-sections.desc=Deljenje svake stranice PDF-a na manje horizontalne i vertikalne odeljke
split-by-sections.tags=Deljenje odeljaka,Deljenje,Podešavanje split-by-sections.tags=Deljenje odeljaka,Deljenje,Podešavanje
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML u PDF
HTMLToPDF.help=Prihvata HTML fajlove i ZIP-ove koji sadrže html/css/slike itd. potrebno HTMLToPDF.help=Prihvata HTML fajlove i ZIP-ove koji sadrže html/css/slike itd. potrebno
HTMLToPDF.submit=Konvertuj HTMLToPDF.submit=Konvertuj
HTMLToPDF.credit=Koristi WeasyPrint HTMLToPDF.credit=Koristi WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitizacija PDF-a sanitizePDF.title=Sanitizacija PDF-a
sanitizePDF.header=Sanitizacija PDF fajla sanitizePDF.header=Sanitizacija PDF fajla

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Credentials changed! changedCredsMessage=Credentials changed!
notAuthenticatedMessage=User not authenticated. notAuthenticatedMessage=User not authenticated.
userNotFoundMessage=User not found. userNotFoundMessage=User not found.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ 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
HTMLToPDF.submit=Convert HTMLToPDF.submit=Convert
HTMLToPDF.credit=Uses WeasyPrint HTMLToPDF.credit=Uses WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=Sanitize PDF sanitizePDF.title=Sanitize PDF
sanitizePDF.header=Sanitize a PDF file sanitizePDF.header=Sanitize a PDF file

View file

@ -44,7 +44,8 @@ blue=Mavi
custom=Özel custom=Özel
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=Bilgiler değiştirildi! changedCredsMessage=Bilgiler değiştirildi!
notAuthenticatedMessage=Kullanıcı doğrulanmadı. notAuthenticatedMessage=Kullanıcı doğrulanmadı.
userNotFoundMessage=Kullanıcı bulunamadı. userNotFoundMessage=Kullanıcı bulunamadı.
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=Split PDF by Sections
home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections
split-by-sections.tags=Section Split, Divide, Customize split-by-sections.tags=Section Split, Divide, Customize
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML'den PDF'e
HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder HTMLToPDF.help=HTML dosyalarını ve html/css/görsel vb. içeren ZIP'leri kabul eder
HTMLToPDF.submit=Dönüştür HTMLToPDF.submit=Dönüştür
HTMLToPDF.credit=WeasyPrint Kullanıyor HTMLToPDF.credit=WeasyPrint Kullanıyor
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=PDF'i Temizle sanitizePDF.title=PDF'i Temizle
sanitizePDF.header=PDF dosyasını temizle sanitizePDF.header=PDF dosyasını temizle

View file

@ -44,7 +44,8 @@ blue=Blue
custom=Custom... custom=Custom...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=凭证已更改! changedCredsMessage=凭证已更改!
notAuthenticatedMessage=用户未经过身份验证。 notAuthenticatedMessage=用户未经过身份验证。
userNotFoundMessage=未找到用户。 userNotFoundMessage=未找到用户。
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=拆分PDF成小块
home.split-by-sections.desc=将PDF的每一页分割成更小的水平和垂直的部分 home.split-by-sections.desc=将PDF的每一页分割成更小的水平和垂直的部分
split-by-sections.tags=章节拆分、分割、自定义 split-by-sections.tags=章节拆分、分割、自定义
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML转PDF
HTMLToPDF.help=接受HTML文件和包含所需的html/css/images等的ZIP文件 HTMLToPDF.help=接受HTML文件和包含所需的html/css/images等的ZIP文件
HTMLToPDF.submit=转换 HTMLToPDF.submit=转换
HTMLToPDF.credit=使用WeasyPrint HTMLToPDF.credit=使用WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=清理PDF sanitizePDF.title=清理PDF
sanitizePDF.header=清理PDF文件 sanitizePDF.header=清理PDF文件

View file

@ -44,7 +44,8 @@ blue=藍色
custom=自訂... custom=自訂...
WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems! WorkInProgess=Work in progress, May not work or be buggy, Please report any ploblems!
poweredBy=Powered by poweredBy=Powered by
yes=Yes
no=No
changedCredsMessage=憑證已變更! changedCredsMessage=憑證已變更!
notAuthenticatedMessage=使用者未認證。 notAuthenticatedMessage=使用者未認證。
userNotFoundMessage=找不到使用者。 userNotFoundMessage=找不到使用者。
@ -68,6 +69,7 @@ pipelineOptions.header=Pipeline Configuration
pipelineOptions.pipelineNameLabel=Pipeline Name pipelineOptions.pipelineNameLabel=Pipeline Name
pipelineOptions.saveSettings=Save Operation Settings pipelineOptions.saveSettings=Save Operation Settings
pipelineOptions.pipelineNamePrompt=Enter pipeline name here pipelineOptions.pipelineNamePrompt=Enter pipeline name here
pipelineOptions.selectOperation=Select Operation
pipelineOptions.addOperationButton=Add operation pipelineOptions.addOperationButton=Add operation
pipelineOptions.pipelineHeader=Pipeline: pipelineOptions.pipelineHeader=Pipeline:
pipelineOptions.saveButton=Download pipelineOptions.saveButton=Download
@ -384,6 +386,11 @@ home.split-by-sections.title=依區段分割 PDF
home.split-by-sections.desc=將 PDF 的每一頁分割為較小的水平和垂直區段 home.split-by-sections.desc=將 PDF 的每一頁分割為較小的水平和垂直區段
split-by-sections.tags=區段分割, 劃分, 自訂 split-by-sections.tags=區段分割, 劃分, 自訂
home.AddStampRequest.title=Add Stamp to PDF
home.AddStampRequest.desc=Add text or add image stamps at set locations
AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize
########################### ###########################
# # # #
# WEB PAGES # # WEB PAGES #
@ -459,8 +466,38 @@ HTMLToPDF.header=HTML 轉 PDF
HTMLToPDF.help=接受 HTML 文件和包含所需 html/css/images 等的 ZIP HTMLToPDF.help=接受 HTML 文件和包含所需 html/css/images 等的 ZIP
HTMLToPDF.submit=轉換 HTMLToPDF.submit=轉換
HTMLToPDF.credit=使用 WeasyPrint HTMLToPDF.credit=使用 WeasyPrint
HTMLToPDF.zoom=Zoom level for displaying the website.
HTMLToPDF.pageWidth=Width of the page in centimeters. (Blank to default)
HTMLToPDF.pageHeight=Height of the page in centimeters. (Blank to default)
HTMLToPDF.marginTop=Top margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginBottom=Bottom margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginLeft=Left margin of the page in millimeters. (Blank to default)
HTMLToPDF.marginRight=Right margin of the page in millimeters. (Blank to default)
HTMLToPDF.printBackground=Render the background of websites.
HTMLToPDF.defaultHeader=Enable Default Header (Name and page number)
HTMLToPDF.cssMediaType=Change the CSS media type of the page.
HTMLToPDF.none=None
HTMLToPDF.print=Print
HTMLToPDF.screen=Screen
#AddStampRequest
AddStampRequest.header=Stamp PDF
AddStampRequest.title=Stamp PDF
AddStampRequest.stampType=Stamp Type
AddStampRequest.stampText=Stamp Text
AddStampRequest.stampImage=Stamp Image
AddStampRequest.alphabet=Alphabet
AddStampRequest.fontSize=Font/Image Size
AddStampRequest.rotation=Rotation
AddStampRequest.opacity=Opacity
AddStampRequest.position=Position
AddStampRequest.overrideX=Override X Coordinate
AddStampRequest.overrideY=Override Y Coordinate
AddStampRequest.customMargin=Custom Margin
AddStampRequest.customColor=Custom Text Color
AddStampRequest.submit=Submit
#sanitizePDF #sanitizePDF
sanitizePDF.title=清理 PDF sanitizePDF.title=清理 PDF
sanitizePDF.header=清理 PDF 檔案 sanitizePDF.header=清理 PDF 檔案

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-postage-heart" viewBox="0 0 16 16">
<path d="M3.5 1a1 1 0 0 0 1-1h1a1 1 0 0 0 2 0h1a1 1 0 0 0 2 0h1a1 1 0 1 0 2 0H15v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1a1 1 0 1 0 0 2v1h-1.5a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0h-1a1 1 0 1 0-2 0H1v-1a1 1 0 1 0 0-2v-1a1 1 0 1 0 0-2V9a1 1 0 1 0 0-2V6a1 1 0 0 0 0-2V3a1 1 0 0 0 0-2V0h1.5a1 1 0 0 0 1 1M3 3v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1"/>
<path d="M8 11C2.175 7.236 6.336 4.31 8 5.982 9.664 4.309 13.825 7.236 8 11"/>
</svg>

After

Width:  |  Height:  |  Size: 630 B

View file

@ -1,7 +1,20 @@
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
setLanguageForDropdown('.lang_dropdown-item'); setLanguageForDropdown('.lang_dropdown-item');
const defaultLocale = document.documentElement.lang || 'en_GB';
// Detect the browser's preferred language
let browserLang = navigator.language || navigator.userLanguage;
// Convert to a format consistent with your language codes (e.g., en-GB, fr-FR)
browserLang = browserLang.replace('-', '_');
// Check if the dropdown contains the browser's language
const dropdownLangExists = document.querySelector(`.lang_dropdown-item[data-language-code="${browserLang}"]`);
// Set the default language to browser's language or 'en_GB' if not found in the dropdown
const defaultLocale = dropdownLangExists ? browserLang : 'en_GB';
const storedLocale = localStorage.getItem('languageCode') || defaultLocale; const storedLocale = localStorage.getItem('languageCode') || defaultLocale;
const dropdownItems = document.querySelectorAll('.lang_dropdown-item'); const dropdownItems = document.querySelectorAll('.lang_dropdown-item');
for (let i = 0; i < dropdownItems.length; i++) { for (let i = 0; i < dropdownItems.length; i++) {

View file

@ -8,11 +8,18 @@ document.getElementById("fileInput-input").addEventListener("change", function()
displayFiles(files); displayFiles(files);
}); });
/**
* @param {FileList} files
*/
function displayFiles(files) { function displayFiles(files) {
var list = document.getElementById("selectedFiles"); const list = document.getElementById("selectedFiles");
for (var i = 0; i < files.length; i++) { while (list.firstChild) {
var item = document.createElement("li"); list.removeChild(list.firstChild);
}
for (let i = 0; i < files.length; i++) {
const item = document.createElement("li");
item.className = "list-group-item"; item.className = "list-group-item";
item.innerHTML = ` item.innerHTML = `
<div class="d-flex justify-content-between align-items-center w-100"> <div class="d-flex justify-content-between align-items-center w-100">

View file

@ -26,6 +26,7 @@ class PdfContainer {
movePageTo: this.movePageTo, movePageTo: this.movePageTo,
addPdfs: this.addPdfs, addPdfs: this.addPdfs,
rotateElement: this.rotateElement, rotateElement: this.rotateElement,
updateFilename: this.updateFilename
}) })
}) })
@ -38,7 +39,7 @@ class PdfContainer {
filenameInput.onkeyup = this.updateFilename; filenameInput.onkeyup = this.updateFilename;
filenameInput.onkeydown = this.preventIllegalChars; filenameInput.onkeydown = this.preventIllegalChars;
filenameInput.disabled = true; filenameInput.disabled = false;
filenameInput.innerText = ""; filenameInput.innerText = "";
downloadBtn.disabled = true; downloadBtn.disabled = true;
} }
@ -73,30 +74,9 @@ class PdfContainer {
input.setAttribute("accept", "application/pdf"); input.setAttribute("accept", "application/pdf");
input.onchange = async(e) => { input.onchange = async(e) => {
const files = e.target.files; const files = e.target.files;
if (files.length > 0) {
const filenameInput = document.getElementById('filename-input');
const pagesContainer = document.getElementById('pages-container');
const downloadBtn = document.getElementById('export-button');
filenameInput.disabled = false;
if (pagesContainer.childElementCount === 0) {
filenameInput.value = "";
this.filename = null;
downloadBtn.disabled = true;
} else {
this.filename = filenameInput.value;
}
if (this.filename === null || this.filename === undefined) {
filenameInput.value = files[0].name;
} else {
filenameInput.value = this.filename;
}
}
this.addPdfsFromFiles(files, nextSiblingElement); this.addPdfsFromFiles(files, nextSiblingElement);
this.updateFilename(files ? files[0].name : "");
} }
input.click(); input.click();
@ -242,12 +222,12 @@ class PdfContainer {
} }
filenameInput.value = inputArr.join(''); filenameInput.value = inputArr.join('');
this.filename = filenameInput.value; this.fileName = filenameInput.value;
} }
if (!filenameInput.value.includes('.pdf')) { if (!filenameInput.value.includes('.pdf')) {
filenameInput.value = filenameInput.value + '.pdf'; filenameInput.value = filenameInput.value + '.pdf';
this.filename = filenameInput.value; this.fileName = filenameInput.value;
} }
if (downloadOption === 'sameWindow') { if (downloadOption === 'sameWindow') {
@ -263,7 +243,7 @@ class PdfContainer {
this.downloadLink.href = url; this.downloadLink.href = url;
// downloadLink.download = this.fileName ? this.fileName : 'managed.pdf'; // downloadLink.download = this.fileName ? this.fileName : 'managed.pdf';
// downloadLink.download = this.fileName; // downloadLink.download = this.fileName;
this.downloadLink.setAttribute('download', this.filename ? this.fileName : 'managed.pdf'); this.downloadLink.setAttribute('download', this.fileName ? this.fileName : 'managed.pdf');
this.downloadLink.setAttribute('target', '_blank'); this.downloadLink.setAttribute('target', '_blank');
this.downloadLink.onclick = this.setDownloadAttribute; this.downloadLink.onclick = this.setDownloadAttribute;
this.downloadLink.click(); this.downloadLink.click();
@ -271,20 +251,23 @@ class PdfContainer {
} }
setDownloadAttribute() { setDownloadAttribute() {
this.downloadLink.setAttribute("download", this.filename ? this.filename : 'managed.pdf'); this.downloadLink.setAttribute("download", this.fileName ? this.fileName : 'managed.pdf');
} }
updateFilename() { updateFilename(fileName = "") {
const filenameInput = document.getElementById('filename-input'); const filenameInput = document.getElementById('filename-input');
const pagesContainer = document.getElementById('pages-container');
const downloadBtn = document.getElementById('export-button'); const downloadBtn = document.getElementById('export-button');
if (filenameInput.value === "") { downloadBtn.disabled = pagesContainer.childElementCount === 0
downloadBtn.disabled = true;
return; if (!this.fileName) {
this.fileName = fileName;
} }
downloadBtn.disabled = false; if (!filenameInput.value) {
this.filename = filenameInput.value; filenameInput.value = this.fileName;
}
} }
preventIllegalChars(e) { preventIllegalChars(e) {

View file

@ -1,54 +1,11 @@
const addFileDragListener = (callback) => { class FileDragManager {
let overlay; overlay;
let dragCounter = 0; dragCounter;
updateFilename;
const dragenterListener = function() { constructor(cb = null) {
dragCounter++; this.dragCounter = 0;
if (!overlay) { this.setCallback(cb);
// 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 // Prevent default behavior for drag events
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
@ -60,10 +17,78 @@ const addFileDragListener = (callback) => {
e.stopPropagation(); e.stopPropagation();
} }
document.body.addEventListener('dragenter', dragenterListener); this.dragenterListener = this.dragenterListener.bind(this);
document.body.addEventListener('dragleave', dragleaveListener); this.dragleaveListener = this.dragleaveListener.bind(this);
this.dropListener = this.dropListener.bind(this);
document.body.addEventListener('dragenter', this.dragenterListener);
document.body.addEventListener('dragleave', this.dragleaveListener);
// Add drop event listener // Add drop event listener
document.body.addEventListener('drop', dropListener); document.body.addEventListener('drop', this.dropListener);
} }
export default addFileDragListener; setActions({ updateFilename }) {
this.updateFilename = updateFilename;
}
setCallback(cb) {
if (cb) {
this.callback = cb;
} else {
this.callback = (files) => console.warn("FileDragManager not set");
}
}
dragenterListener() {
this.dragCounter++;
if (!this.overlay) {
// Create and show the overlay
this.overlay = document.createElement('div');
this.overlay.style.position = 'fixed';
this.overlay.style.top = 0;
this.overlay.style.left = 0;
this.overlay.style.width = '100%';
this.overlay.style.height = '100%';
this.overlay.style.background = 'rgba(0, 0, 0, 0.5)';
this.overlay.style.color = '#fff';
this.overlay.style.zIndex = '1000';
this.overlay.style.display = 'flex';
this.overlay.style.alignItems = 'center';
this.overlay.style.justifyContent = 'center';
this.overlay.style.pointerEvents = 'none';
this.overlay.innerHTML = '<p>Drop files anywhere to upload</p>';
document.getElementById('content-wrap').appendChild(this.overlay);
}
};
dragleaveListener() {
this.dragCounter--;
if (this.dragCounter === 0) {
// Hide and remove the overlay
if (this.overlay) {
this.overlay.remove();
this.overlay = null;
}
}
};
dropListener(e) {
const dt = e.dataTransfer;
const files = dt.files;
this.callback(files).catch((err) => {
console.error(err);
//maybe
}).finally(() => {
// Hide and remove the overlay
if (this.overlay) {
this.overlay.remove();
this.overlay = null;
}
this.updateFilename(files ? files[0].name : "");
});
};
}
export default FileDragManager;

View file

@ -24,7 +24,7 @@
</ul> </ul>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/auto-split-pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{api/v1/misc/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, accept='application/pdf')}"></div>
<div class="form-check"> <div class="form-check">
<input type="checkbox" class="form-check-input" name="duplexMode" id="duplexMode"> <input type="checkbox" class="form-check-input" name="duplexMode" id="duplexMode">
<label class="ms-3" for="duplexMode" th:text=#{autoSplitPDF.duplexMode}></label> <label class="ms-3" for="duplexMode" th:text=#{autoSplitPDF.duplexMode}></label>

View file

@ -10,10 +10,73 @@
<br> <br> <br> <br>
<div class="container"> <div class="container">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6"> <div class="mb-3">
<h2 th:text="#{HTMLToPDF.header}"></h2> <h2 th:text="#{HTMLToPDF.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/html/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/html/pdf}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/html,application/zip' )}"></div>
<div class="mb-3">
<label for="zoom" th:text="#{HTMLToPDF.zoom}" class="form-label"></label>
<input type="number" step="0.1" class="form-control" id="zoom" name="zoom" value="1" />
</div>
<div class="mb-3">
<label for="pageWidth" th:text="#{HTMLToPDF.pageWidth}" class="form-label"></label>
<input type="number" class="form-control" id="pageWidth" name="pageWidth" />
</div>
<div class="mb-3">
<label for="pageHeight" th:text="#{HTMLToPDF.pageHeight}" class="form-label"></label>
<input type="number" class="form-control" id="pageHeight" name="pageHeight" />
</div>
<div class="mb-3">
<label for="marginTop" th:text="#{HTMLToPDF.marginTop}" class="form-label"></label>
<input type="number" class="form-control" id="marginTop" name="marginTop" />
</div>
<div class="mb-3">
<label for="marginBottom" th:text="#{HTMLToPDF.marginBottom}" class="form-label"></label>
<input type="number" class="form-control" id="marginBottom" name="marginBottom" />
</div>
<div class="mb-3">
<label for="marginLeft" th:text="#{HTMLToPDF.marginLeft}" class="form-label"></label>
<input type="number" class="form-control" id="marginLeft" name="marginLeft" />
</div>
<div class="mb-3">
<label for="marginRight" th:text="#{HTMLToPDF.marginRight}" class="form-label"></label>
<input type="number" class="form-control" id="marginRight" name="marginRight" />
</div>
<div class="mb-3">
<label th:text="#{HTMLToPDF.printBackground}" class="form-label"></label>
<select class="form-select" name="printBackground">
<option value="Yes" th:text="#{yes}">Yes</option>
<option value="No" th:text="#{no}">No</option>
</select>
</div>
<div class="mb-3">
<label th:text="#{HTMLToPDF.defaultHeader}" class="form-label"></label>
<select class="form-select" name="defaultHeader">
<option value="No" th:text="#{no}">No</option>
<option value="Yes" th:text="#{yes}">Yes</option>
</select>
</div>
<div class="mb-3">
<label th:text="#{HTMLToPDF.cssMediaType}" class="form-label"></label>
<select class="form-select" name="cssMediaType">
<option value="screen" th:text="#{HTMLToPDF.screen}">Screen</option>
<option value="none" th:text="#{HTMLToPDF.none}">None</option>
<option value="print" th:text="#{HTMLToPDF.print}">Print</option>
</select>
</div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{HTMLToPDF.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{HTMLToPDF.submit}"></button>

View file

@ -13,7 +13,7 @@
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{MarkdownToPDF.header}"></h2> <h2 th:text="#{MarkdownToPDF.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/markdown/pdf}"> <form method="post" enctype="multipart/form-data" th:action="@{api/v1/convert/markdown/pdf}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='text/markdown')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{MarkdownToPDF.submit}"></button>

View file

@ -120,7 +120,7 @@
data-bs-files-selected=#{filesSelected}, data-bs-files-selected=#{filesSelected},
data-bs-pdf-prompt=#{pdfPrompt}"> data-bs-pdf-prompt=#{pdfPrompt}">
<div class="mb-3"> <div class="mb-3">
<input type="file" class="form-control" th:name="${name}" th:id="${name}+'-input'" th:accept="${accept}" multiple th:classappend="${notRequired ? '' : 'required'}"> <input type="file" class="form-control" th:name="${name}" th:id="${name}+'-input'" th:accept="${accept}" multiple th:required="${notRequired} ? null : 'required'">
</div> </div>
<div class="selected-files"></div> <div class="selected-files"></div>
</div> </div>

View file

@ -133,6 +133,7 @@
<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 ('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 th:replace="~{fragments/navbarEntry :: navbarEntry ('show-javascript', 'images/js.svg', 'home.showJS.title', 'home.showJS.desc', 'showJS.tags')}"></div>
<div th:replace="~{fragments/navbarEntry :: navbarEntry ('stamp', 'images/stamp.svg', 'home.AddStampRequest.title', 'home.AddStampRequest.desc', 'AddStampRequest.tags')}"></div>
</div> </div>
</li> </li>

View file

@ -101,6 +101,8 @@
<div th:replace="~{fragments/card :: card(id='split-pdf-by-sections', cardTitle=#{home.split-by-sections.title}, cardText=#{home.split-by-sections.desc}, cardLink='split-pdf-by-sections', svgPath='images/layout-split.svg')}"></div> <div th:replace="~{fragments/card :: card(id='split-pdf-by-sections', cardTitle=#{home.split-by-sections.title}, cardText=#{home.split-by-sections.desc}, cardLink='split-pdf-by-sections', svgPath='images/layout-split.svg')}"></div>
<div th:replace="~{fragments/card :: card(id='book-to-pdf', cardTitle=#{home.BookToPDF.title}, cardText=#{home.BookToPDF.desc}, cardLink='book-to-pdf', svgPath='images/book.svg')}"></div> <div th:replace="~{fragments/card :: card(id='book-to-pdf', cardTitle=#{home.BookToPDF.title}, cardText=#{home.BookToPDF.desc}, cardLink='book-to-pdf', svgPath='images/book.svg')}"></div>
<div th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', svgPath='images/book.svg')}"></div> <div th:replace="~{fragments/card :: card(id='pdf-to-book', cardTitle=#{home.PDFToBook.title}, cardText=#{home.PDFToBook.desc}, cardLink='pdf-to-book', svgPath='images/book.svg')}"></div>
<div th:replace="~{fragments/card :: card(id='stamp', cardTitle=#{home.AddStampRequest.title}, cardText=#{home.AddStampRequest.desc}, cardLink='stamp', svgPath='images/stamp.svg')}"></div>

View file

@ -18,7 +18,7 @@
<form id="pdfInfoForm" method="post" enctype="multipart/form-data" <form id="pdfInfoForm" method="post" enctype="multipart/form-data"
th:action="@{show-javascript}"> th:action="@{show-javascript}">
<div <div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false')}"></div> th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" <button type="submit" id="submitBtn" class="btn btn-primary"
th:text="#{showJS.submit}"></button> th:text="#{showJS.submit}"></button>

View file

@ -0,0 +1,216 @@
<!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=#{AddStampRequest.title}, header=#{AddStampRequest.header})}"></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="#{AddStampRequest.header}"></h2>
<form method="post" enctype="multipart/form-data"
th:action="@{api/v1/misc/add-stamp}">
<div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<br>
<div class="mb-3">
<label for="customMargin" class="form-label" th:text="#{AddStampRequest.customMargin}">Custom Margin</label>
<select class="form-select" id="customMargin" name="customMargin">
<option value="small" th:text="#{sizes.small}"></option>
<option value="medium" selected th:text="#{sizes.medium}"></option>
<option value="large" th:text="#{sizes.large}"></option>
<option value="x-large" th:text="#{sizes.x-large}"></option>
</select>
</div>
<style>
.a4container {
position: relative;
width: 50%;
aspect-ratio: 0.707;
border: 1px solid #ddd;
box-sizing: border-box;
background-color: white;
}
.pageNumber {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
font-size: 1em;
color: #333;
cursor: pointer;
background-color: #ccc;
width: 15%;
height: 15%;
transform: translate(-50%, -50%);
}
.pageNumber:hover {
background-color: #eee;
}
#myForm {
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
}
.selectedPosition {
background-color: #0a0;
}
.selectedPosition.selectedHovered {
background-color: #006600;
}
</style>
<div class="mb-3">
<label for="position" th:text="#{AddStampRequest.position}"></label>
<div class="a4container">
<div class="pageNumber" id="1" style="top: 10%; left: 10%;">1</div>
<div class="pageNumber" id="2" style="top: 10%; left: 50%;">2</div>
<div class="pageNumber" id="3" style="top: 10%; left: 90%;">3</div>
<div class="pageNumber" id="4" style="top: 50%; left: 10%;">4</div>
<div class="pageNumber" id="5" style="top: 50%; left: 50%;">5</div>
<div class="pageNumber" id="6" style="top: 50%; left: 90%;">6</div>
<div class="pageNumber" id="7" style="top: 90%; left: 10%;">7</div>
<div class="pageNumber selectedPosition" id="8" style="top: 90%; left: 50%;">8</div>
<div class="pageNumber" id="9" style="top: 90%; left: 90%;">9</div>
</div>
</div>
<input type="hidden" id="numberInput" name="position" min="1"
max="9" value="8" required />
<div class="mb-3">
<label for="stampType" class="form-label" th:text="#{AddStampRequest.stampType}">Stamp Type</label>
<select class="form-select" id="stampType" name="stampType" onchange="toggleFileOption()" required>
<option value="text">Text</option>
<option value="image">Image</option>
</select>
</div>
<div id="stampTextGroup" class="mb-3">
<label for="stampText" class="form-label" th:text="#{AddStampRequest.stampText}">Stamp Text</label>
<input type="text" class="form-control" id="stampText" name="stampText">
</div>
<div id="stampImageGroup" class="mb-3" style="display: none;">
<label for="stampImage" class="form-label" th:text="#{AddStampRequest.stampImage}">Stamp Image</label>
<input type="file" class="form-control" id="stampImage" name="stampImage" accept="image/*" >
</div>
<div id="alphabetGroup" class="mb-3">
<label for="alphabet" class="form-label" th:text="#{AddStampRequest.alphabet}">Alphabet</label>
<select class="form-select" id="alphabet" name="alphabet">
<option value="roman">Roman</option>
<option value="arabic">العربية</option>
<option value="japanese">日本語</option>
<option value="korean">한국어</option>
<option value="chinese">简体中文</option>
</select>
</div>
<div class="mb-3">
<label for="fontSize" class="form-label" th:text="#{AddStampRequest.fontSize}">Font Size</label>
<input type="number" class="form-control" id="fontSize" name="fontSize" value="30">
</div>
<div class="mb-3">
<label for="rotation" class="form-label" th:text="#{AddStampRequest.rotation}">Rotation</label>
<input type="number" class="form-control" id="rotation" name="rotation" value="0">
</div>
<div class="mb-3">
<label for="opacity" class="form-label" th:text="#{AddStampRequest.opacity}">Opacity</label>
<input type="number" class="form-control" id="opacity" name="opacity" step="0.1" value="0.5">
</div>
<div class="mb-3">
<label for="overrideX" class="form-label" th:text="#{AddStampRequest.overrideX}">Override X</label>
<input type="number" class="form-control" id="overrideX" name="overrideX" value="-1">
</div>
<div class="mb-3">
<label for="overrideY" class="form-label" th:text="#{AddStampRequest.overrideY}">Override Y</label>
<input type="number" class="form-control" id="overrideY" name="overrideY" value="-1">
</div>
<div class="mb-3">
<label for="customColor" class="form-label" th:text="#{AddStampRequest.customColor}">Custom Color</label>
<input type="color" class="form-control form-control-color" id="customColor" name="customColor" value="#d3d3d3">
</div>
<button type="submit" id="submitBtn" class="btn btn-primary"
th:text="#{AddStampRequest.submit}"></button>
</form>
</div>
</div>
</div>
<script>
let cells = document.querySelectorAll('.pageNumber');
let inputField = document.getElementById('numberInput');
cells.forEach(cell => {
cell.addEventListener('click', function(e) {
cells.forEach(cell => {
cell.classList.remove('selectedPosition'); // Remove selected class from all cells
cell.classList.remove('selectedHovered'); // Also remove selectedHovered class
});
let selectedLocation = e.target.id;
inputField.value = selectedLocation;
e.target.classList.add('selectedPosition'); // Add selected class to clicked cell
e.target.classList.add('selectedHovered'); // Add selectedHovered class
});
cell.addEventListener('mouseenter', function(e) {
if(e.target.classList.contains('selectedPosition')) {
e.target.classList.add('selectedHovered');
}
});
cell.addEventListener('mouseleave', function(e) {
if(e.target.classList.contains('selectedPosition')) {
e.target.classList.remove('selectedHovered');
}
});
});
function toggleFileOption() {
const stampType = document.getElementById('stampType').value;
const stampTextGroup = document.getElementById('stampTextGroup');
const stampImageGroup = document.getElementById('stampImageGroup');
const alphabetGroup = document.getElementById('alphabetGroup');
if (stampType === 'text') {
stampTextGroup.style.display = 'block';
stampImageGroup.style.display = 'none';
alphabetGroup.style.display = 'block';
} else if (stampType === 'image') {
stampTextGroup.style.display = 'none';
stampImageGroup.style.display = 'block';
alphabetGroup.style.display = 'none';
}
}
</script>
</div>
<div th:insert="~{fragments/footer.html :: footer}"></div>
</div>
</body>
</html>

View file

@ -79,13 +79,14 @@
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'; import FileDragManager 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
const imageHighlighter = new ImageHighlighter('image-highlighter'); const imageHighlighter = new ImageHighlighter('image-highlighter');
// enables the default action buttons on each pdf // enables the default action buttons on each pdf
const pdfActionsManager = new PdfActionsManager('pages-container'); const pdfActionsManager = new PdfActionsManager('pages-container');
const fileDragManager = new FileDragManager();
// Scroll the wrapper horizontally // Scroll the wrapper horizontally
scrollDivHorizontally('pages-container-wrapper'); scrollDivHorizontally('pages-container-wrapper');
@ -98,11 +99,11 @@
dragDropManager, dragDropManager,
imageHighlighter, imageHighlighter,
pdfActionsManager, pdfActionsManager,
fileDragManager
] ]
) )
addFileInputListener(async (files) => {
pdfContainer.addPdfsFromFiles(files); fileDragManager.setCallback(async (files) => pdfContainer.addPdfsFromFiles(files));
});
</script> </script>
<style> <style>

View file

@ -14,7 +14,7 @@
<div class="col-md-6"> <div class="col-md-6">
<h2 th:text="#{pdfToSinglePage.header}"></h2> <h2 th:text="#{pdfToSinglePage.header}"></h2>
<form method="post" enctype="multipart/form-data" th:action="@{api/v1/general/pdf-to-single-page}"> <form method="post" enctype="multipart/form-data" th:action="@{api/v1/general/pdf-to-single-page}">
<div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false)}"></div> <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div>
<button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToSinglePage.submit}"></button> <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pdfToSinglePage.submit}"></button>
</form> </form>
</div> </div>

View file

@ -16,7 +16,7 @@
<form id="pdfInfoForm" method="post" enctype="multipart/form-data" <form id="pdfInfoForm" method="post" enctype="multipart/form-data"
th:action="@{api/v1/security/get-info-on-pdf}"> th:action="@{api/v1/security/get-info-on-pdf}">
<div <div
th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false')}"></div> th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, remoteCall='false', accept='application/pdf')}"></div>
<br> <br>
<button type="submit" id="submitBtn" class="btn btn-primary" <button type="submit" id="submitBtn" class="btn btn-primary"
th:text="#{getPdfInfo.submit}"></button> th:text="#{getPdfInfo.submit}"></button>

View file

@ -30,7 +30,6 @@ See https://github.com/adobe-type-tools/cmap-resources
<!-- Bootstrap --> <!-- Bootstrap -->
<script src="js/thirdParty/popper.min.js"></script> <script src="js/thirdParty/popper.min.js"></script>
<script src="js/thirdParty/bootstrap.min.js"></script> <script src="js/thirdParty/bootstrap.min.js"></script>
<link rel="stylesheet" href="css/bootstrap.min.css">
<!-- This snippet is used in production (included from view-pdf.html) --> <!-- This snippet is used in production (included from view-pdf.html) -->
<link rel="resource" type="application/l10n" href="pdfjs/locale/locale.properties"> <link rel="resource" type="application/l10n" href="pdfjs/locale/locale.properties">